diff options
| -rw-r--r-- | meta/conf/bitbake.conf | 1 | ||||
| -rw-r--r-- | meta/lib/oeqa/selftest/cases/sstatetests.py | 38 |
2 files changed, 38 insertions, 1 deletions
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index 15feb573db..93afb13166 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf | |||
| @@ -663,6 +663,7 @@ FETCHCMD_hg = "/usr/bin/env hg" | |||
| 663 | SRCDATE = "${DATE}" | 663 | SRCDATE = "${DATE}" |
| 664 | SRCREV ??= "INVALID" | 664 | SRCREV ??= "INVALID" |
| 665 | AUTOREV = "${@bb.fetch2.get_autorev(d)}" | 665 | AUTOREV = "${@bb.fetch2.get_autorev(d)}" |
| 666 | AUTOREV[vardepvalue] = "${SRCPV}" | ||
| 666 | # Set Dynamically in base.bbclass | 667 | # Set Dynamically in base.bbclass |
| 667 | # SRCPV = "${@bb.fetch2.get_srcrev(d)}" | 668 | # SRCPV = "${@bb.fetch2.get_srcrev(d)}" |
| 668 | SRCPV[vardepvalue] = "${SRCPV}" | 669 | SRCPV[vardepvalue] = "${SRCPV}" |
diff --git a/meta/lib/oeqa/selftest/cases/sstatetests.py b/meta/lib/oeqa/selftest/cases/sstatetests.py index 47900886a3..6735694263 100644 --- a/meta/lib/oeqa/selftest/cases/sstatetests.py +++ b/meta/lib/oeqa/selftest/cases/sstatetests.py | |||
| @@ -2,15 +2,51 @@ import os | |||
| 2 | import shutil | 2 | import shutil |
| 3 | import glob | 3 | import glob |
| 4 | import subprocess | 4 | import subprocess |
| 5 | import tempfile | ||
| 5 | 6 | ||
| 6 | from oeqa.selftest.case import OESelftestTestCase | 7 | from oeqa.selftest.case import OESelftestTestCase |
| 7 | from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_test_layer | 8 | from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_test_layer, create_temp_layer |
| 8 | from oeqa.selftest.cases.sstate import SStateBase | 9 | from oeqa.selftest.cases.sstate import SStateBase |
| 9 | from oeqa.core.decorator.oeid import OETestID | 10 | from oeqa.core.decorator.oeid import OETestID |
| 10 | 11 | ||
| 11 | import bb.siggen | 12 | import bb.siggen |
| 12 | 13 | ||
| 13 | class SStateTests(SStateBase): | 14 | class SStateTests(SStateBase): |
| 15 | def test_autorev_sstate_works(self): | ||
| 16 | # Test that a git repository which changes is correctly handled by SRCREV = ${AUTOREV} | ||
| 17 | # when PV does not contain SRCPV | ||
| 18 | |||
| 19 | tempdir = tempfile.mkdtemp(prefix='oeqa') | ||
| 20 | self.track_for_cleanup(tempdir) | ||
| 21 | create_temp_layer(tempdir, 'selftestrecipetool') | ||
| 22 | self.add_command_to_tearDown('bitbake-layers remove-layer %s' % tempdir) | ||
| 23 | runCmd('bitbake-layers add-layer %s' % tempdir) | ||
| 24 | |||
| 25 | # Use dbus-wait as a local git repo we can add a commit between two builds in | ||
| 26 | pn = 'dbus-wait' | ||
| 27 | srcrev = '6cc6077a36fe2648a5f993fe7c16c9632f946517' | ||
| 28 | url = 'git://git.yoctoproject.org/dbus-wait' | ||
| 29 | result = runCmd('git clone %s noname' % url, cwd=tempdir) | ||
| 30 | srcdir = os.path.join(tempdir, 'noname') | ||
| 31 | result = runCmd('git reset --hard %s' % srcrev, cwd=srcdir) | ||
| 32 | self.assertTrue(os.path.isfile(os.path.join(srcdir, 'configure.ac')), 'Unable to find configure script in source directory') | ||
| 33 | |||
| 34 | recipefile = os.path.join(tempdir, "recipes-test", "dbus-wait-test", 'dbus-wait-test_git.bb') | ||
| 35 | os.makedirs(os.path.dirname(recipefile)) | ||
| 36 | srcuri = 'git://' + srcdir + ';protocol=file' | ||
| 37 | result = runCmd(['recipetool', 'create', '-o', recipefile, srcuri]) | ||
| 38 | self.assertTrue(os.path.isfile(recipefile), 'recipetool did not create recipe file; output:\n%s' % result.output) | ||
| 39 | |||
| 40 | with open(recipefile, 'a') as f: | ||
| 41 | f.write('SRCREV = "${AUTOREV}"\n') | ||
| 42 | f.write('PV = "1.0"\n') | ||
| 43 | |||
| 44 | bitbake("dbus-wait-test -c fetch") | ||
| 45 | with open(os.path.join(srcdir, "bar.txt"), "w") as f: | ||
| 46 | f.write("foo") | ||
| 47 | result = runCmd('git add bar.txt; git commit -asm "add bar"', cwd=srcdir) | ||
| 48 | bitbake("dbus-wait-test -c unpack") | ||
| 49 | |||
| 14 | 50 | ||
| 15 | # Test sstate files creation and their location | 51 | # Test sstate files creation and their location |
| 16 | def run_test_sstate_creation(self, targets, distro_specific=True, distro_nonspecific=True, temp_sstate_location=True, should_pass=True): | 52 | def run_test_sstate_creation(self, targets, distro_specific=True, distro_nonspecific=True, temp_sstate_location=True, should_pass=True): |
