On 06.11.22 12:38, Michał Górny wrote:
On Sun, 2022-11-06 at 12:19 +0100, Florian Schmaus wrote:
On 06.11.22 12:03, Michał Górny wrote:
Mark all checkout directories as "safe" to avoid dubious ownership
errors with newer git versions when the checkout directory is accessed
from src_install().

Bug: https://bugs.gentoo.org/879353
Signed-off-by: Michał Górny <mgo...@gentoo.org>
---
   eclass/git-r3.eclass | 5 +++++
   1 file changed, 5 insertions(+)

diff --git a/eclass/git-r3.eclass b/eclass/git-r3.eclass
index 59d4f9a0038f..bdb28565e2f9 100644
--- a/eclass/git-r3.eclass
+++ b/eclass/git-r3.eclass
@@ -887,6 +887,11 @@ git-r3_checkout() {
                        cp "${orig_repo}"/packed-refs "${GIT_DIR}"/packed-refs 
|| die
                fi
+ # mark this directory as "safe" so that src_install() can access it
+               # https://bugs.gentoo.org/879353
+               git config --global --add safe.directory \
+                       "$(cd "${out_dir}" && echo "${PWD}")" || die

I guess there is no way we can avoid the --global and use --local instead?


safe.directory works only in protected scoeps, i.e. system, global and
command.  See git-config(1).

That said, the check wouldn't really make sense if the repository were
able to declare itself safe.


Fair point, and I suspected as much.

Am I right that this does modify ~portage/.gitconfig (so usually /var/lib/portage/home/.gitconfig)? If so, I wonder if this could be avoided, e.g., by setting XDG_CONFIG_HOME to $T/.config. But I guess that has the potential to break other things. And having some eclass modifying the home directory of the portage user is not probably something we could live with. It would just we be nice if the save.directory setting would be just temporary during the emerge, e.g., set somewhere under T.

- Flow

Reply via email to