Skip to content

Commit 35fdf6c

Browse files
committed
Include 'sources' key to entries in list returned by collect_exts_file_info
The returned dict per extension has a 'patches' key but no 'sources'. Add this incoorporating `source_tmpl` or the default value. Add test for that and also for `nosource: True` and `sources` being a list.
1 parent a656d9e commit 35fdf6c

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
@@ -725,6 +725,11 @@ def collect_exts_file_info(self, fetch_files=True, verify_checksums=True):
725725
# copy 'path' entry to 'src' for use with extensions
726726
'src': src['path'],
727727
})
728+
filename = src['name']
729+
else:
730+
filename = source.get('filename')
731+
if filename is not None:
732+
ext_src['sources'] = [filename]
728733

729734
else:
730735

@@ -738,6 +743,7 @@ def collect_exts_file_info(self, fetch_files=True, verify_checksums=True):
738743
raise EasyBuildError(error_msg, type(src_fn).__name__, src_fn)
739744

740745
src_fn = resolve_template(src_fn, template_values)
746+
ext_src['sources'] = [src_fn]
741747

742748
if fetch_files:
743749
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
@@ -2350,17 +2350,25 @@ def test_collect_exts_file_info(self):
23502350
toy_sources = os.path.join(testdir, 'sandbox', 'sources', 'toy')
23512351
toy_ext_sources = os.path.join(toy_sources, 'extensions')
23522352
toy_ec_file = os.path.join(testdir, 'easyconfigs', 'test_ecs', 't', 'toy', 'toy-0.0-gompi-2018a-test.eb')
2353-
toy_ec = process_easyconfig(toy_ec_file)[0]
2353+
2354+
test_ec = os.path.join(self.test_prefix, 'test.eb')
2355+
new_ext_txt = "('baz', '0.0', {'nosource': True})," # With nosource option
2356+
new_ext_txt += "('barbar', '0.0', {'sources': [SOURCE_TAR_GZ]})," # With sources containing a list
2357+
test_ectxt = re.sub(r'\(name, version', new_ext_txt+r"\g<0>", read_file(toy_ec_file))
2358+
write_file(test_ec, test_ectxt)
2359+
2360+
toy_ec = process_easyconfig(test_ec)[0]
23542361
toy_eb = EasyBlock(toy_ec['ec'])
23552362

23562363
exts_file_info = toy_eb.collect_exts_file_info()
23572364

23582365
self.assertIsInstance(exts_file_info, list)
2359-
self.assertEqual(len(exts_file_info), 4)
2366+
self.assertEqual(len(exts_file_info), 6)
23602367

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

23632370
self.assertEqual(exts_file_info[1]['name'], 'bar')
2371+
self.assertEqual(exts_file_info[1]['sources'], ['bar-0.0.tar.gz'])
23642372
self.assertEqual(exts_file_info[1]['src'], os.path.join(toy_ext_sources, 'bar-0.0.tar.gz'))
23652373
bar_patch1 = 'bar-0.0_fix-silly-typo-in-printf-statement.patch'
23662374
self.assertEqual(exts_file_info[1]['patches'][0]['name'], bar_patch1)
@@ -2370,36 +2378,63 @@ def test_collect_exts_file_info(self):
23702378
self.assertEqual(exts_file_info[1]['patches'][1]['path'], os.path.join(toy_ext_sources, bar_patch2))
23712379

23722380
self.assertEqual(exts_file_info[2]['name'], 'barbar')
2381+
self.assertEqual(exts_file_info[2]['sources'], ['barbar-1.2.tar.gz'])
23732382
self.assertEqual(exts_file_info[2]['src'], os.path.join(toy_ext_sources, 'barbar-1.2.tar.gz'))
23742383
self.assertNotIn('patches', exts_file_info[2])
23752384

2376-
self.assertEqual(exts_file_info[3]['name'], 'toy')
2377-
self.assertEqual(exts_file_info[3]['src'], os.path.join(toy_sources, 'toy-0.0.tar.gz'))
2385+
self.assertEqual(exts_file_info[3]['name'], 'baz')
2386+
self.assertNotIn('sources', exts_file_info[3])
2387+
self.assertNotIn('sources', exts_file_info[3]['options'])
2388+
self.assertNotIn('src', exts_file_info[3])
23782389
self.assertNotIn('patches', exts_file_info[3])
23792390

2391+
self.assertEqual(exts_file_info[4]['name'], 'barbar')
2392+
self.assertEqual(exts_file_info[4]['sources'], ['barbar-0.0.tar.gz'])
2393+
self.assertEqual(exts_file_info[4]['src'], os.path.join(toy_ext_sources, 'barbar-0.0.tar.gz'))
2394+
self.assertNotIn('patches', exts_file_info[4])
2395+
2396+
self.assertEqual(exts_file_info[5]['name'], 'toy')
2397+
self.assertEqual(exts_file_info[5]['sources'], ['toy-0.0.tar.gz'])
2398+
self.assertEqual(exts_file_info[5]['src'], os.path.join(toy_sources, 'toy-0.0.tar.gz'))
2399+
self.assertNotIn('patches', exts_file_info[5])
2400+
23802401
# location of files is missing when fetch_files is set to False
23812402
exts_file_info = toy_eb.collect_exts_file_info(fetch_files=False, verify_checksums=False)
23822403

23832404
self.assertIsInstance(exts_file_info, list)
2384-
self.assertEqual(len(exts_file_info), 4)
2405+
self.assertEqual(len(exts_file_info), 6)
23852406

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

23882409
self.assertEqual(exts_file_info[1]['name'], 'bar')
2410+
self.assertEqual(exts_file_info[1]['sources'], ['bar-0.0.tar.gz'])
23892411
self.assertNotIn('src', exts_file_info[1])
23902412
self.assertEqual(exts_file_info[1]['patches'][0]['name'], bar_patch1)
23912413
self.assertNotIn('path', exts_file_info[1]['patches'][0])
23922414
self.assertEqual(exts_file_info[1]['patches'][1]['name'], bar_patch2)
23932415
self.assertNotIn('path', exts_file_info[1]['patches'][1])
23942416

23952417
self.assertEqual(exts_file_info[2]['name'], 'barbar')
2418+
self.assertEqual(exts_file_info[2]['sources'], ['barbar-1.2.tar.gz'])
23962419
self.assertNotIn('src', exts_file_info[2])
23972420
self.assertNotIn('patches', exts_file_info[2])
23982421

2399-
self.assertEqual(exts_file_info[3]['name'], 'toy')
2422+
self.assertEqual(exts_file_info[3]['name'], 'baz')
2423+
self.assertNotIn('sources', exts_file_info[3])
2424+
self.assertNotIn('sources', exts_file_info[3]['options'])
24002425
self.assertNotIn('src', exts_file_info[3])
24012426
self.assertNotIn('patches', exts_file_info[3])
24022427

2428+
self.assertEqual(exts_file_info[4]['name'], 'barbar')
2429+
self.assertEqual(exts_file_info[4]['sources'], ['barbar-0.0.tar.gz'])
2430+
self.assertNotIn('src', exts_file_info[4])
2431+
self.assertNotIn('patches', exts_file_info[4])
2432+
2433+
self.assertEqual(exts_file_info[5]['name'], 'toy')
2434+
self.assertEqual(exts_file_info[5]['sources'], ['toy-0.0.tar.gz'])
2435+
self.assertNotIn('src', exts_file_info[5])
2436+
self.assertNotIn('patches', exts_file_info[5])
2437+
24032438
error_msg = "Can't verify checksums for extension files if they are not being fetched"
24042439
self.assertErrorRegex(EasyBuildError, error_msg, toy_eb.collect_exts_file_info, fetch_files=False)
24052440

0 commit comments

Comments
 (0)