diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-02-07 13:16:39 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-02-17 17:51:03 +0000 |
commit | ebfa1700f41b3411aec040144605166c35b8dd14 (patch) | |
tree | 37e9b4aba5a8c07e677bf1b982091ad835479821 /bitbake/lib/bb/tests/fetch.py | |
parent | d09e2e05a0391ad4d718214516d92a160f89767e (diff) | |
download | poky-ebfa1700f41b3411aec040144605166c35b8dd14.tar.gz |
bitbake: fetch2/cooker: Fix source revision handling with floating upstreams
Where a git url uses a tag instead of a full source revision, breakage
can currently occur in builds. Issues include:
* the revision being looked up in multiple tasks (fetch and unpack)
* the risk a different revision may be obtained in those tasks
* that some tasks may not be allowed to access the network
* that a revision may not be consistent throughout a given build
* rerunning a specific task may given inconsistent results
To fix this, stop the workers from cleaning out the source revision store. This
should only be done in the cooker itself (based on current policy).
Also, where the code "sees" an upstream access, mark the recipe as not to be
cached. The reparse re-triggers the upstream lookup by the server.
Add a test to ensure that if get_srcrev isn't called, the user is told they're
using a configuration that is known to break.
(Bitbake rev: 4b5eed1626709ef3dc06b32fd55d40a2a6edd179)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/tests/fetch.py')
-rw-r--r-- | bitbake/lib/bb/tests/fetch.py | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/bitbake/lib/bb/tests/fetch.py b/bitbake/lib/bb/tests/fetch.py index f368cd02b0..f0d417a50d 100644 --- a/bitbake/lib/bb/tests/fetch.py +++ b/bitbake/lib/bb/tests/fetch.py | |||
@@ -728,6 +728,7 @@ class FetcherLocalTest(FetcherTest): | |||
728 | 728 | ||
729 | # Fetch and check revision | 729 | # Fetch and check revision |
730 | self.d.setVar("SRCREV", "AUTOINC") | 730 | self.d.setVar("SRCREV", "AUTOINC") |
731 | self.d.setVar("__BBSEENSRCREV", "1") | ||
731 | url = "git://" + self.gitdir + ";branch=master;protocol=file;" + suffix | 732 | url = "git://" + self.gitdir + ";branch=master;protocol=file;" + suffix |
732 | fetcher = bb.fetch.Fetch([url], self.d) | 733 | fetcher = bb.fetch.Fetch([url], self.d) |
733 | fetcher.download() | 734 | fetcher.download() |
@@ -1581,6 +1582,7 @@ class GitShallowTest(FetcherTest): | |||
1581 | self.d.setVar('BB_GIT_SHALLOW', '1') | 1582 | self.d.setVar('BB_GIT_SHALLOW', '1') |
1582 | self.d.setVar('BB_GENERATE_MIRROR_TARBALLS', '0') | 1583 | self.d.setVar('BB_GENERATE_MIRROR_TARBALLS', '0') |
1583 | self.d.setVar('BB_GENERATE_SHALLOW_TARBALLS', '1') | 1584 | self.d.setVar('BB_GENERATE_SHALLOW_TARBALLS', '1') |
1585 | self.d.setVar("__BBSEENSRCREV", "1") | ||
1584 | 1586 | ||
1585 | def assertRefs(self, expected_refs, cwd=None): | 1587 | def assertRefs(self, expected_refs, cwd=None): |
1586 | if cwd is None: | 1588 | if cwd is None: |
@@ -2138,6 +2140,7 @@ class GitLfsTest(FetcherTest): | |||
2138 | 2140 | ||
2139 | self.d.setVar('SRCREV', '${AUTOREV}') | 2141 | self.d.setVar('SRCREV', '${AUTOREV}') |
2140 | self.d.setVar('AUTOREV', '${@bb.fetch2.get_autorev(d)}') | 2142 | self.d.setVar('AUTOREV', '${@bb.fetch2.get_autorev(d)}') |
2143 | self.d.setVar("__BBSEENSRCREV", "1") | ||
2141 | 2144 | ||
2142 | bb.utils.mkdirhier(self.srcdir) | 2145 | bb.utils.mkdirhier(self.srcdir) |
2143 | self.git_init(cwd=self.srcdir) | 2146 | self.git_init(cwd=self.srcdir) |
@@ -2746,6 +2749,7 @@ class GitSharedTest(FetcherTest): | |||
2746 | super(GitSharedTest, self).setUp() | 2749 | super(GitSharedTest, self).setUp() |
2747 | self.recipe_url = "git://git.openembedded.org/bitbake;branch=master" | 2750 | self.recipe_url = "git://git.openembedded.org/bitbake;branch=master" |
2748 | self.d.setVar('SRCREV', '82ea737a0b42a8b53e11c9cde141e9e9c0bd8c40') | 2751 | self.d.setVar('SRCREV', '82ea737a0b42a8b53e11c9cde141e9e9c0bd8c40') |
2752 | self.d.setVar("__BBSEENSRCREV", "1") | ||
2749 | 2753 | ||
2750 | @skipIfNoNetwork() | 2754 | @skipIfNoNetwork() |
2751 | def test_shared_unpack(self): | 2755 | def test_shared_unpack(self): |