commit: cf604f442d2a2aebfbaab1c2d8419c7dada0de7a
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Jan 21 16:12:07 2026 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Jan 21 16:21:17 2026 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=cf604f44
doebuild: fix unexported_env_vars chown call
With PORTAGE_USERNAME and PORTAGE_GRPNAME set, we try to chown a tmpdir
in /tmp to portage and fail:
```
Exception in callback EbuildMetadataPhase._async_start_done(<Task finishe...t
permitted')>)
handle: <Handle EbuildMetadataPhase._async_start_done(<Task finishe...t
permitted')>)>
Traceback (most recent call last):
File "/usr/lib/python3.12/asyncio/events.py", line 88, in _run
self._context.run(self._callback, *self._args)
File "/usr/lib/python3.12/site-packages/_emerge/EbuildMetadataPhase.py", line
162, in _async_start_done
future.cancelled() or future.result()
^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/_emerge/EbuildMetadataPhase.py", line
129, in _async_start
retval = doebuild(
^^^^^^^^^
File "/usr/lib/python3.12/site-packages/portage/package/ebuild/doebuild.py",
line 1117, in doebuild
return _spawn_phase(
^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/portage/package/ebuild/doebuild.py",
line 309, in _spawn_phase
return _doebuild_spawn(
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/portage/package/ebuild/doebuild.py",
line 292, in _doebuild_spawn
return spawn(cmd, settings, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/portage/package/ebuild/doebuild.py",
line 2251, in spawn
os.chown(_emerge_tmpdir, -1, int(portage_gid))
PermissionError: [Errno 1] Operation not permitted:
'/tmp/portage-tmpdir-717664-garvzxqz'
Sandboxed process killed by signal: Broken pipe
Sandboxed process killed by signal: Broken pipe
```
Use the Portage build gid instead.
Signed-off-by: Sam James <sam <AT> gentoo.org>
lib/portage/package/ebuild/doebuild.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/portage/package/ebuild/doebuild.py
b/lib/portage/package/ebuild/doebuild.py
index e55a56e7cb..c0c9f17db4 100644
--- a/lib/portage/package/ebuild/doebuild.py
+++ b/lib/portage/package/ebuild/doebuild.py
@@ -2248,7 +2248,7 @@ def spawn(
prefix=f"portage-tmpdir-{portage.getpid()}-"
)
os.chmod(_emerge_tmpdir, 0o1775)
- os.chown(_emerge_tmpdir, -1, int(portage_gid))
+ os.chown(_emerge_tmpdir, -1, int(portage_build_gid))
portage.process.atexit_register(shutil.rmtree, _emerge_tmpdir)
ebuild_extra_source_fd, ebuild_extra_source_path =
tempfile.mkstemp(
prefix=f"portage-ebuild-extra-source-{phase}-",