summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/base.bbclass1
-rw-r--r--meta/classes/devshell.bbclass2
-rwxr-xr-xscripts/git-intercept/git19
3 files changed, 22 insertions, 0 deletions
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index 3515720bf9..b54b56d624 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -367,6 +367,7 @@ addtask install after do_compile
367do_install[dirs] = "${B}" 367do_install[dirs] = "${B}"
368# Remove and re-create ${D} so that is it guaranteed to be empty 368# Remove and re-create ${D} so that is it guaranteed to be empty
369do_install[cleandirs] = "${D}" 369do_install[cleandirs] = "${D}"
370PATH:prepend:task-install = "${COREBASE}/scripts/git-intercept:"
370 371
371base_do_install() { 372base_do_install() {
372 : 373 :
diff --git a/meta/classes/devshell.bbclass b/meta/classes/devshell.bbclass
index 62dc958d9a..75604d0c07 100644
--- a/meta/classes/devshell.bbclass
+++ b/meta/classes/devshell.bbclass
@@ -2,6 +2,8 @@ inherit terminal
2 2
3DEVSHELL = "${SHELL}" 3DEVSHELL = "${SHELL}"
4 4
5PATH:prepend:task-devshell = "${COREBASE}/scripts/git-intercept:"
6
5python do_devshell () { 7python do_devshell () {
6 if d.getVarFlag("do_devshell", "manualfakeroot"): 8 if d.getVarFlag("do_devshell", "manualfakeroot"):
7 d.prependVar("DEVSHELL", "pseudo ") 9 d.prependVar("DEVSHELL", "pseudo ")
diff --git a/scripts/git-intercept/git b/scripts/git-intercept/git
new file mode 100755
index 0000000000..8adf5c9ecb
--- /dev/null
+++ b/scripts/git-intercept/git
@@ -0,0 +1,19 @@
1#!/usr/bin/env python3
2#
3# Wrapper around 'git' that doesn't think we are root
4
5import os
6import shutil
7import sys
8
9os.environ['PSEUDO_UNLOAD'] = '1'
10
11# calculate path to the real 'git'
12path = os.environ['PATH']
13path = path.replace(os.path.dirname(sys.argv[0]), '')
14real_git = shutil.which('git', path=path)
15
16if len(sys.argv) == 1:
17 os.execl(real_git, 'git')
18
19os.execv(real_git, sys.argv)