Skip to content

Commit f040c55

Browse files
committed
Merge branch 'ext_sources' into ext-checksums-json
2 parents f037b85 + 35fdf6c commit f040c55

File tree

2 files changed

+47
-6
lines changed

2 files changed

+47
-6
lines changed

easybuild/framework/easyblock.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -728,6 +728,11 @@ def collect_exts_file_info(self, fetch_files=True, verify_checksums=True):
728728
# copy 'path' entry to 'src' for use with extensions
729729
'src': src['path'],
730730
})
731+
filename = src['name']
732+
else:
733+
filename = source.get('filename')
734+
if filename is not None:
735+
ext_src['sources'] = [filename]
731736

732737
else:
733738

@@ -741,6 +746,7 @@ def collect_exts_file_info(self, fetch_files=True, verify_checksums=True):
741746
raise EasyBuildError(error_msg, type(src_fn).__name__, src_fn)
742747

743748
src_fn = resolve_template(src_fn, template_values)
749+
ext_src['sources'] = [src_fn]
744750

745751
if fetch_files:
746752
src_path = self.obtain_file(src_fn, extension=True, urls=source_urls,

test/framework/easyblock.py

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2353,17 +2353,25 @@ def test_collect_exts_file_info(self):
23532353
toy_sources = os.path.join(testdir, 'sandbox', 'sources', 'toy')
23542354
toy_ext_sources = os.path.join(toy_sources, 'extensions')
23552355
toy_ec_file = os.path.join(testdir, 'easyconfigs', 'test_ecs', 't', 'toy', 'toy-0.0-gompi-2018a-test.eb')
2356-
toy_ec = process_easyconfig(toy_ec_file)[0]
2356+
2357+
test_ec = os.path.join(self.test_prefix, 'test.eb')
2358+
new_ext_txt = "('baz', '0.0', {'nosource': True})," # With nosource option
2359+
new_ext_txt += "('barbar', '0.0', {'sources': [SOURCE_TAR_GZ]})," # With sources containing a list
2360+
test_ectxt = re.sub(r'\(name, version', new_ext_txt+r"\g<0>", read_file(toy_ec_file))
2361+
write_file(test_ec, test_ectxt)
2362+
2363+
toy_ec = process_easyconfig(test_ec)[0]
23572364
toy_eb = EasyBlock(toy_ec['ec'])
23582365

23592366
exts_file_info = toy_eb.collect_exts_file_info()
23602367

23612368
self.assertIsInstance(exts_file_info, list)
2362-
self.assertEqual(len(exts_file_info), 4)
2369+
self.assertEqual(len(exts_file_info), 6)
23632370

23642371
self.assertEqual(exts_file_info[0], {'name': 'ulimit'})
23652372

23662373
self.assertEqual(exts_file_info[1]['name'], 'bar')
2374+
self.assertEqual(exts_file_info[1]['sources'], ['bar-0.0.tar.gz'])
23672375
self.assertEqual(exts_file_info[1]['src'], os.path.join(toy_ext_sources, 'bar-0.0.tar.gz'))
23682376
bar_patch1 = 'bar-0.0_fix-silly-typo-in-printf-statement.patch'
23692377
self.assertEqual(exts_file_info[1]['patches'][0]['name'], bar_patch1)
@@ -2374,38 +2382,65 @@ def test_collect_exts_file_info(self):
23742382
self.assertEqual(len(exts_file_info[1]['checksums']), 1)
23752383

23762384
self.assertEqual(exts_file_info[2]['name'], 'barbar')
2385+
self.assertEqual(exts_file_info[2]['sources'], ['barbar-1.2.tar.gz'])
23772386
self.assertEqual(exts_file_info[2]['src'], os.path.join(toy_ext_sources, 'barbar-1.2.tar.gz'))
23782387
self.assertNotIn('patches', exts_file_info[2])
23792388
self.assertEqual(len(exts_file_info[2]['checksums']), 0)
23802389

2381-
self.assertEqual(exts_file_info[3]['name'], 'toy')
2382-
self.assertEqual(exts_file_info[3]['src'], os.path.join(toy_sources, 'toy-0.0.tar.gz'))
2390+
self.assertEqual(exts_file_info[3]['name'], 'baz')
2391+
self.assertNotIn('sources', exts_file_info[3])
2392+
self.assertNotIn('sources', exts_file_info[3]['options'])
2393+
self.assertNotIn('src', exts_file_info[3])
23832394
self.assertNotIn('patches', exts_file_info[3])
23842395
self.assertEqual(len(exts_file_info[3]['checksums']), 1)
23852396

2397+
self.assertEqual(exts_file_info[4]['name'], 'barbar')
2398+
self.assertEqual(exts_file_info[4]['sources'], ['barbar-0.0.tar.gz'])
2399+
self.assertEqual(exts_file_info[4]['src'], os.path.join(toy_ext_sources, 'barbar-0.0.tar.gz'))
2400+
self.assertNotIn('patches', exts_file_info[4])
2401+
2402+
self.assertEqual(exts_file_info[5]['name'], 'toy')
2403+
self.assertEqual(exts_file_info[5]['sources'], ['toy-0.0.tar.gz'])
2404+
self.assertEqual(exts_file_info[5]['src'], os.path.join(toy_sources, 'toy-0.0.tar.gz'))
2405+
self.assertNotIn('patches', exts_file_info[5])
2406+
23862407
# location of files is missing when fetch_files is set to False
23872408
exts_file_info = toy_eb.collect_exts_file_info(fetch_files=False, verify_checksums=False)
23882409

23892410
self.assertIsInstance(exts_file_info, list)
2390-
self.assertEqual(len(exts_file_info), 4)
2411+
self.assertEqual(len(exts_file_info), 6)
23912412

23922413
self.assertEqual(exts_file_info[0], {'name': 'ulimit'})
23932414

23942415
self.assertEqual(exts_file_info[1]['name'], 'bar')
2416+
self.assertEqual(exts_file_info[1]['sources'], ['bar-0.0.tar.gz'])
23952417
self.assertNotIn('src', exts_file_info[1])
23962418
self.assertEqual(exts_file_info[1]['patches'][0]['name'], bar_patch1)
23972419
self.assertNotIn('path', exts_file_info[1]['patches'][0])
23982420
self.assertEqual(exts_file_info[1]['patches'][1]['name'], bar_patch2)
23992421
self.assertNotIn('path', exts_file_info[1]['patches'][1])
24002422

24012423
self.assertEqual(exts_file_info[2]['name'], 'barbar')
2424+
self.assertEqual(exts_file_info[2]['sources'], ['barbar-1.2.tar.gz'])
24022425
self.assertNotIn('src', exts_file_info[2])
24032426
self.assertNotIn('patches', exts_file_info[2])
24042427

2405-
self.assertEqual(exts_file_info[3]['name'], 'toy')
2428+
self.assertEqual(exts_file_info[3]['name'], 'baz')
2429+
self.assertNotIn('sources', exts_file_info[3])
2430+
self.assertNotIn('sources', exts_file_info[3]['options'])
24062431
self.assertNotIn('src', exts_file_info[3])
24072432
self.assertNotIn('patches', exts_file_info[3])
24082433

2434+
self.assertEqual(exts_file_info[4]['name'], 'barbar')
2435+
self.assertEqual(exts_file_info[4]['sources'], ['barbar-0.0.tar.gz'])
2436+
self.assertNotIn('src', exts_file_info[4])
2437+
self.assertNotIn('patches', exts_file_info[4])
2438+
2439+
self.assertEqual(exts_file_info[5]['name'], 'toy')
2440+
self.assertEqual(exts_file_info[5]['sources'], ['toy-0.0.tar.gz'])
2441+
self.assertNotIn('src', exts_file_info[5])
2442+
self.assertNotIn('patches', exts_file_info[5])
2443+
24092444
error_msg = "Can't verify checksums for extension files if they are not being fetched"
24102445
self.assertErrorRegex(EasyBuildError, error_msg, toy_eb.collect_exts_file_info, fetch_files=False)
24112446

0 commit comments

Comments
 (0)