diff options
author | Markus Lehtonen <markus.lehtonen@linux.intel.com> | 2015-09-08 11:39:12 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-09-09 14:25:06 +0100 |
commit | 9b9733b7d74032aef4979bec553019421e77da14 (patch) | |
tree | 457be0064b602e48c06cd221280fce1ec1c60ee9 /meta/lib | |
parent | 0bf2e4b3edfc43e7a2e8d3387a9370d110533b7c (diff) | |
download | openembedded-core-9b9733b7d74032aef4979bec553019421e77da14.tar.gz openembedded-core-9b9733b7d74032aef4979bec553019421e77da14.tar.bz2 openembedded-core-9b9733b7d74032aef4979bec553019421e77da14.zip |
devtool: update-recipe: better 'auto' mode
Enhance the logic behind the 'auto' mode a bit by only updating the
SRCREV if the changes are already found upstream. The logic is simple:
update SRCREV only if the current local HEAD commit is found in the
remote branch (i.e. 'origin/<branch_name>'). Otherwise resort to
patching.
This affects a couple of the oe-selftest tests so update those as well.
[YOCTO #7907]
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib')
-rw-r--r-- | meta/lib/oeqa/selftest/devtool.py | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/meta/lib/oeqa/selftest/devtool.py b/meta/lib/oeqa/selftest/devtool.py index 255f2c3820..6e731d6777 100644 --- a/meta/lib/oeqa/selftest/devtool.py +++ b/meta/lib/oeqa/selftest/devtool.py @@ -547,8 +547,8 @@ class DevtoolTests(DevtoolBase): result = runCmd('echo "A new file" > devtool-new-file', cwd=tempdir) result = runCmd('git add devtool-new-file', cwd=tempdir) result = runCmd('git commit -m "Add a new file"', cwd=tempdir) - self.add_command_to_tearDown('cd %s; git checkout %s %s' % (os.path.dirname(recipefile), testrecipe, os.path.basename(recipefile))) - result = runCmd('devtool update-recipe %s' % testrecipe) + self.add_command_to_tearDown('cd %s; rm -rf %s; git checkout %s %s' % (os.path.dirname(recipefile), testrecipe, testrecipe, os.path.basename(recipefile))) + result = runCmd('devtool update-recipe -m srcrev %s' % testrecipe) result = runCmd('git status . --porcelain', cwd=os.path.dirname(recipefile)) self.assertNotEqual(result.output.strip(), "", '%s recipe should be modified' % testrecipe) status = result.output.splitlines() @@ -585,6 +585,26 @@ class DevtoolTests(DevtoolBase): matched = True break self.assertTrue(matched, 'Unexpected diff remove line: %s' % line) + # Now try with auto mode + runCmd('cd %s; git checkout %s %s' % (os.path.dirname(recipefile), testrecipe, os.path.basename(recipefile))) + result = runCmd('devtool update-recipe %s' % testrecipe) + result = runCmd('git rev-parse --show-toplevel') + topleveldir = result.output.strip() + result = runCmd('git status . --porcelain', cwd=os.path.dirname(recipefile)) + status = result.output.splitlines() + relpatchpath = os.path.join(os.path.relpath(os.path.dirname(recipefile), topleveldir), testrecipe) + expectedstatus = [('M', os.path.relpath(recipefile, topleveldir)), + ('??', '%s/0001-Change-the-Makefile.patch' % relpatchpath), + ('??', '%s/0002-Add-a-new-file.patch' % relpatchpath)] + for line in status: + statusline = line.split(None, 1) + for fstatus, fn in expectedstatus: + if fn == statusline[1]: + if fstatus != statusline[0]: + self.fail('Unexpected status in line: %s' % line) + break + else: + self.fail('Unexpected modified file in line: %s' % line) @testcase(1170) def test_devtool_update_recipe_append(self): @@ -708,7 +728,7 @@ class DevtoolTests(DevtoolBase): self.add_command_to_tearDown('bitbake-layers remove-layer %s || true' % templayerdir) result = runCmd('bitbake-layers add-layer %s' % templayerdir, cwd=self.builddir) # Create the bbappend - result = runCmd('devtool update-recipe %s -a %s' % (testrecipe, templayerdir)) + result = runCmd('devtool update-recipe -m srcrev %s -a %s' % (testrecipe, templayerdir)) self.assertNotIn('WARNING:', result.output) # Check recipe is still clean result = runCmd('git status . --porcelain', cwd=os.path.dirname(recipefile)) @@ -729,12 +749,12 @@ class DevtoolTests(DevtoolBase): self.assertEqual(expectedlines, f.readlines()) # Check we can run it again and bbappend isn't modified - result = runCmd('devtool update-recipe %s -a %s' % (testrecipe, templayerdir)) + result = runCmd('devtool update-recipe -m srcrev %s -a %s' % (testrecipe, templayerdir)) with open(bbappendfile, 'r') as f: self.assertEqual(expectedlines, f.readlines()) # Drop new commit and check SRCREV changes result = runCmd('git reset HEAD^', cwd=tempsrcdir) - result = runCmd('devtool update-recipe %s -a %s' % (testrecipe, templayerdir)) + result = runCmd('devtool update-recipe -m srcrev %s -a %s' % (testrecipe, templayerdir)) self.assertFalse(os.path.exists(os.path.join(appenddir, testrecipe)), 'Patch directory should not be created') result = runCmd('git rev-parse HEAD', cwd=tempsrcdir) expectedlines = ['SRCREV = "%s"\n' % result.output, @@ -747,7 +767,7 @@ class DevtoolTests(DevtoolBase): os.remove(bbappendfile) result = runCmd('git commit -a -m "Change the Makefile"', cwd=tempsrcdir) result = runCmd('bitbake-layers remove-layer %s' % templayerdir, cwd=self.builddir) - result = runCmd('devtool update-recipe %s -a %s' % (testrecipe, templayerdir)) + result = runCmd('devtool update-recipe -m srcrev %s -a %s' % (testrecipe, templayerdir)) self.assertIn('WARNING: Specified layer is not currently enabled in bblayers.conf', result.output) self.assertFalse(os.path.exists(os.path.join(appenddir, testrecipe)), 'Patch directory should not be created') result = runCmd('git rev-parse HEAD', cwd=tempsrcdir) |