summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorPaul Barker <pbarker@konsulko.com>2020-06-04 18:33:01 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-06-09 13:13:59 +0100
commit43f940172a6e8fd0af1101d7a3b11a918dfa10b0 (patch)
treed543a2ca7799828a78bff9efe4325ae7d1d6a67e /meta
parentc20cb1a00e0d9e65c10bc875c4ba8462e8ab798c (diff)
downloadpoky-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>
Diffstat (limited to 'meta')
-rw-r--r--meta/classes/archiver.bbclass13
-rw-r--r--meta/lib/oeqa/selftest/cases/archiver.py54
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))