diff options
Diffstat (limited to 'scripts/lib/devtool/__init__.py')
-rw-r--r-- | scripts/lib/devtool/__init__.py | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/scripts/lib/devtool/__init__.py b/scripts/lib/devtool/__init__.py index 702db669de..6133c1c5b4 100644 --- a/scripts/lib/devtool/__init__.py +++ b/scripts/lib/devtool/__init__.py | |||
@@ -78,12 +78,15 @@ def exec_fakeroot(d, cmd, **kwargs): | |||
78 | """Run a command under fakeroot (pseudo, in fact) so that it picks up the appropriate file permissions""" | 78 | """Run a command under fakeroot (pseudo, in fact) so that it picks up the appropriate file permissions""" |
79 | # Grab the command and check it actually exists | 79 | # Grab the command and check it actually exists |
80 | fakerootcmd = d.getVar('FAKEROOTCMD') | 80 | fakerootcmd = d.getVar('FAKEROOTCMD') |
81 | fakerootenv = d.getVar('FAKEROOTENV') | ||
82 | exec_fakeroot_no_d(fakerootcmd, fakerootenv, cmd, kwargs) | ||
83 | |||
84 | def exec_fakeroot_no_d(fakerootcmd, fakerootenv, cmd, **kwargs): | ||
81 | if not os.path.exists(fakerootcmd): | 85 | if not os.path.exists(fakerootcmd): |
82 | logger.error('pseudo executable %s could not be found - have you run a build yet? pseudo-native should install this and if you have run any build then that should have been built') | 86 | logger.error('pseudo executable %s could not be found - have you run a build yet? pseudo-native should install this and if you have run any build then that should have been built') |
83 | return 2 | 87 | return 2 |
84 | # Set up the appropriate environment | 88 | # Set up the appropriate environment |
85 | newenv = dict(os.environ) | 89 | newenv = dict(os.environ) |
86 | fakerootenv = d.getVar('FAKEROOTENV') | ||
87 | for varvalue in fakerootenv.split(): | 90 | for varvalue in fakerootenv.split(): |
88 | if '=' in varvalue: | 91 | if '=' in varvalue: |
89 | splitval = varvalue.split('=', 1) | 92 | splitval = varvalue.split('=', 1) |
@@ -233,6 +236,28 @@ def setup_git_repo(repodir, version, devbranch, basetag='devtool-base', d=None): | |||
233 | bb.process.run('git checkout -b %s' % devbranch, cwd=repodir) | 236 | bb.process.run('git checkout -b %s' % devbranch, cwd=repodir) |
234 | bb.process.run('git tag -f %s' % basetag, cwd=repodir) | 237 | bb.process.run('git tag -f %s' % basetag, cwd=repodir) |
235 | 238 | ||
239 | # if recipe unpacks another git repo inside S, we need to declare it as a regular git submodule now, | ||
240 | # so we will be able to tag branches on it and extract patches when doing finish/update on the recipe | ||
241 | stdout, _ = bb.process.run("git status --porcelain", cwd=repodir) | ||
242 | found = False | ||
243 | for line in stdout.splitlines(): | ||
244 | if line.endswith("/"): | ||
245 | new_dir = line.split()[1] | ||
246 | for root, dirs, files in os.walk(os.path.join(repodir, new_dir)): | ||
247 | if ".git" in dirs + files: | ||
248 | (stdout, _) = bb.process.run('git remote', cwd=root) | ||
249 | remote = stdout.splitlines()[0] | ||
250 | (stdout, _) = bb.process.run('git remote get-url %s' % remote, cwd=root) | ||
251 | remote_url = stdout.splitlines()[0] | ||
252 | logger.error(os.path.relpath(os.path.join(root, ".."), root)) | ||
253 | bb.process.run('git submodule add %s %s' % (remote_url, os.path.relpath(root, os.path.join(root, ".."))), cwd=os.path.join(root, "..")) | ||
254 | found = True | ||
255 | if found: | ||
256 | oe.patch.GitApplyTree.commitIgnored("Add additional submodule from SRC_URI", dir=os.path.join(root, ".."), d=d) | ||
257 | found = False | ||
258 | if os.path.exists(os.path.join(repodir, '.gitmodules')): | ||
259 | bb.process.run('git submodule foreach --recursive "git tag -f %s"' % basetag, cwd=repodir) | ||
260 | |||
236 | def recipe_to_append(recipefile, config, wildcard=False): | 261 | def recipe_to_append(recipefile, config, wildcard=False): |
237 | """ | 262 | """ |
238 | Convert a recipe file to a bbappend file path within the workspace. | 263 | Convert a recipe file to a bbappend file path within the workspace. |