diff options
author | Paul Barker <pbarker@konsulko.com> | 2020-06-04 18:33:01 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-06-09 13:13:59 +0100 |
commit | 43f940172a6e8fd0af1101d7a3b11a918dfa10b0 (patch) | |
tree | d543a2ca7799828a78bff9efe4325ae7d1d6a67e | |
parent | c20cb1a00e0d9e65c10bc875c4ba8462e8ab798c (diff) | |
download | poky-43f940172a6e8fd0af1101d7a3b11a918dfa10b0.tar.gz |
archiver: Capture git submodules in mirror archiver
Using the new Fetch.expanded_urldata() function we can get URL data for
all git submodules.
(From OE-Core rev: d908ca51b72f4ba417e7573ae3d953535f53286c)
Signed-off-by: Paul Barker <pbarker@konsulko.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/classes/archiver.bbclass | 13 | ||||
-rw-r--r-- | meta/lib/oeqa/selftest/cases/archiver.py | 54 |
2 files changed, 60 insertions, 7 deletions
diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass index 780c562b68..c2c049c343 100644 --- a/meta/classes/archiver.bbclass +++ b/meta/classes/archiver.bbclass | |||
@@ -345,13 +345,12 @@ python do_ar_mirror() { | |||
345 | 345 | ||
346 | fetcher = bb.fetch2.Fetch(src_uri, d) | 346 | fetcher = bb.fetch2.Fetch(src_uri, d) |
347 | 347 | ||
348 | for url in fetcher.urls: | 348 | for ud in fetcher.expanded_urldata(): |
349 | if is_excluded(url): | 349 | if is_excluded(ud.url): |
350 | bb.note('Skipping excluded url: %s' % (url)) | 350 | bb.note('Skipping excluded url: %s' % (ud.url)) |
351 | continue | 351 | continue |
352 | 352 | ||
353 | bb.note('Archiving url: %s' % (url)) | 353 | bb.note('Archiving url: %s' % (ud.url)) |
354 | ud = fetcher.ud[url] | ||
355 | ud.setup_localpath(d) | 354 | ud.setup_localpath(d) |
356 | localpath = None | 355 | localpath = None |
357 | 356 | ||
@@ -367,7 +366,7 @@ python do_ar_mirror() { | |||
367 | if len(ud.mirrortarballs) and not localpath: | 366 | if len(ud.mirrortarballs) and not localpath: |
368 | bb.warn('Mirror tarballs are listed for a source but none are present. ' \ | 367 | bb.warn('Mirror tarballs are listed for a source but none are present. ' \ |
369 | 'Falling back to original download.\n' \ | 368 | 'Falling back to original download.\n' \ |
370 | 'SRC_URI = %s' % (url)) | 369 | 'SRC_URI = %s' % (ud.url)) |
371 | 370 | ||
372 | # Check original download | 371 | # Check original download |
373 | if not localpath: | 372 | if not localpath: |
@@ -376,7 +375,7 @@ python do_ar_mirror() { | |||
376 | 375 | ||
377 | if not localpath or not os.path.exists(localpath): | 376 | if not localpath or not os.path.exists(localpath): |
378 | bb.fatal('Original download is missing for a source.\n' \ | 377 | bb.fatal('Original download is missing for a source.\n' \ |
379 | 'SRC_URI = %s' % (url)) | 378 | 'SRC_URI = %s' % (ud.url)) |
380 | 379 | ||
381 | # We now have an appropriate localpath | 380 | # We now have an appropriate localpath |
382 | bb.note('Copying source mirror') | 381 | bb.note('Copying source mirror') |
diff --git a/meta/lib/oeqa/selftest/cases/archiver.py b/meta/lib/oeqa/selftest/cases/archiver.py index bc5447d2a3..37efed57c8 100644 --- a/meta/lib/oeqa/selftest/cases/archiver.py +++ b/meta/lib/oeqa/selftest/cases/archiver.py | |||
@@ -255,3 +255,57 @@ class Archiver(OESelftestTestCase): | |||
255 | glob_str = os.path.join(bb_vars['DEPLOY_DIR_SRC'], 'mirror', target_file_name) | 255 | glob_str = os.path.join(bb_vars['DEPLOY_DIR_SRC'], 'mirror', target_file_name) |
256 | glob_result = glob.glob(glob_str) | 256 | glob_result = glob.glob(glob_str) |
257 | self.assertTrue(glob_result, 'Missing archive file %s' % (target_file_name)) | 257 | self.assertTrue(glob_result, 'Missing archive file %s' % (target_file_name)) |
258 | |||
259 | def test_archiver_mode_mirror_gitsm(self): | ||
260 | """ | ||
261 | Test that the archiver correctly handles git submodules with | ||
262 | `ARCHIVER_MODE[src] = "mirror"`. | ||
263 | """ | ||
264 | features = 'INHERIT += "archiver"\n' | ||
265 | features += 'ARCHIVER_MODE[src] = "mirror"\n' | ||
266 | features += 'ARCHIVER_MODE[mirror] = "combined"\n' | ||
267 | features += 'BB_GENERATE_MIRROR_TARBALLS = "1"\n' | ||
268 | features += 'COPYLEFT_LICENSE_INCLUDE = "*"\n' | ||
269 | self.write_config(features) | ||
270 | |||
271 | bitbake('-c clean git-submodule-test') | ||
272 | bitbake('-c deploy_archives -f git-submodule-test') | ||
273 | |||
274 | bb_vars = get_bb_vars(['DEPLOY_DIR_SRC']) | ||
275 | for target_file_name in [ | ||
276 | 'git2_git.yoctoproject.org.git-submodule-test.tar.gz', | ||
277 | 'git2_git.yoctoproject.org.bitbake-gitsm-test1.tar.gz', | ||
278 | 'git2_git.yoctoproject.org.bitbake-gitsm-test2.tar.gz', | ||
279 | 'git2_git.openembedded.org.bitbake.tar.gz' | ||
280 | ]: | ||
281 | target_path = os.path.join(bb_vars['DEPLOY_DIR_SRC'], 'mirror', target_file_name) | ||
282 | self.assertTrue(os.path.exists(target_path)) | ||
283 | |||
284 | def test_archiver_mode_mirror_gitsm_shallow(self): | ||
285 | """ | ||
286 | Test that the archiver correctly handles git submodules with | ||
287 | `ARCHIVER_MODE[src] = "mirror"`. | ||
288 | """ | ||
289 | features = 'INHERIT += "archiver"\n' | ||
290 | features += 'ARCHIVER_MODE[src] = "mirror"\n' | ||
291 | features += 'ARCHIVER_MODE[mirror] = "combined"\n' | ||
292 | features += 'BB_GENERATE_MIRROR_TARBALLS = "1"\n' | ||
293 | features += 'COPYLEFT_LICENSE_INCLUDE = "*"\n' | ||
294 | features += 'BB_GIT_SHALLOW = "1"\n' | ||
295 | features += 'BB_GENERATE_SHALLOW_TARBALLS = "1"\n' | ||
296 | features += 'DL_DIR = "${TOPDIR}/downloads-shallow"\n' | ||
297 | self.write_config(features) | ||
298 | |||
299 | bitbake('-c clean git-submodule-test') | ||
300 | bitbake('-c deploy_archives -f git-submodule-test') | ||
301 | |||
302 | bb_vars = get_bb_vars(['DEPLOY_DIR_SRC']) | ||
303 | for target_file_name in [ | ||
304 | 'gitsmshallow_git.yoctoproject.org.git-submodule-test_a2885dd-1_master.tar.gz', | ||
305 | 'gitsmshallow_git.yoctoproject.org.bitbake-gitsm-test1_bare_120f4c7-1.tar.gz', | ||
306 | 'gitsmshallow_git.yoctoproject.org.bitbake-gitsm-test2_bare_f66699e-1.tar.gz', | ||
307 | 'gitsmshallow_git.openembedded.org.bitbake_bare_52a144a-1.tar.gz', | ||
308 | 'gitsmshallow_git.openembedded.org.bitbake_bare_c39b997-1.tar.gz' | ||
309 | ]: | ||
310 | target_path = os.path.join(bb_vars['DEPLOY_DIR_SRC'], 'mirror', target_file_name) | ||
311 | self.assertTrue(os.path.exists(target_path)) | ||