def runTest(self): ver = "1.2.3" verpref = "myprefix" versuff = "mysuffix" tcname = "mytc" tcver = "4.1.2" extra_patches = ['t5.patch', 't6.patch'] homepage = "http://www.justatest.com" tweaks = { 'version': ver, 'versionprefix': verpref, 'versionsuffix': versuff, 'toolchain_version': tcver, 'patches': extra_patches } tweak(self.eb_file, self.tweaked_fn, tweaks) eb = EasyConfig(self.tweaked_fn, valid_stops=self.all_stops) self.assertEqual(eb['version'], ver) self.assertEqual(eb['versionprefix'], verpref) self.assertEqual(eb['versionsuffix'], versuff) self.assertEqual(eb['toolchain']['version'], tcver) self.assertEqual(eb['patches'], extra_patches + self.patches) eb = EasyConfig(self.eb_file, valid_stops=self.all_stops) # eb['toolchain']['version'] = tcver does not work as expected with templating enabled eb.enable_templating = False eb['version'] = ver eb['toolchain']['version'] = tcver eb.enable_templating = True eb.dump(self.eb_file) tweaks = { 'toolchain_name': tcname, 'patches': extra_patches[0:1], 'homepage': homepage, 'foo': "bar" } tweak(self.eb_file, self.tweaked_fn, tweaks) eb = EasyConfig(self.tweaked_fn, valid_stops=self.all_stops) self.assertEqual(eb['toolchain']['name'], tcname) self.assertEqual(eb['toolchain']['version'], tcver) self.assertEqual(eb['patches'], extra_patches[0:1] + self.patches) self.assertEqual(eb['version'], ver) self.assertEqual(eb['homepage'], homepage)
def test_tweaking(self): """test tweaking ability of easyconfigs""" fd, tweaked_fn = tempfile.mkstemp(prefix='easybuild-tweaked-', suffix='.eb') os.close(fd) patches = ["t1.patch", ("t2.patch", 1), ("t3.patch", "test"), ("t4.h", "include")] self.contents = '\n'.join([ 'name = "pi"', 'homepage = "http://www.google.com"', 'description = "dummy description"', 'version = "3.14"', 'toolchain = {"name":"GCC", "version": "4.6.3"}', 'patches = %s', ]) % str(patches) self.prep() ver = "1.2.3" verpref = "myprefix" versuff = "mysuffix" tcname = "mytc" tcver = "4.1.2" new_patches = ['t5.patch', 't6.patch'] homepage = "http://www.justatest.com" tweaks = { 'version': ver, 'versionprefix': verpref, 'versionsuffix': versuff, 'toolchain_version': tcver, 'patches': new_patches } tweak(self.eb_file, tweaked_fn, tweaks) eb = EasyConfig(tweaked_fn, valid_stops=self.all_stops) self.assertEqual(eb['version'], ver) self.assertEqual(eb['versionprefix'], verpref) self.assertEqual(eb['versionsuffix'], versuff) self.assertEqual(eb['toolchain']['version'], tcver) self.assertEqual(eb['patches'], new_patches) eb = EasyConfig(self.eb_file, valid_stops=self.all_stops) # eb['toolchain']['version'] = tcver does not work as expected with templating enabled eb.enable_templating = False eb['version'] = ver eb['toolchain']['version'] = tcver eb.enable_templating = True eb.dump(self.eb_file) tweaks = { 'toolchain_name': tcname, 'patches': new_patches[:1], 'homepage': homepage, 'foo': "bar" } tweak(self.eb_file, tweaked_fn, tweaks) eb = EasyConfig(tweaked_fn, valid_stops=self.all_stops) self.assertEqual(eb['toolchain']['name'], tcname) self.assertEqual(eb['toolchain']['version'], tcver) self.assertEqual(eb['patches'], new_patches[:1]) self.assertEqual(eb['version'], ver) self.assertEqual(eb['homepage'], homepage) # specify patches as string, eb should promote it to a list because original value was a list tweaks['patches'] = new_patches[0] eb = EasyConfig(tweaked_fn, valid_stops=self.all_stops) self.assertEqual(eb['patches'], [new_patches[0]]) # cleanup os.remove(tweaked_fn)
def test_tweaking(self): """test tweaking ability of easyconfigs""" fd, tweaked_fn = tempfile.mkstemp(prefix='easybuild-tweaked-', suffix='.eb') os.close(fd) patches = ["t1.patch", ("t2.patch", 1), ("t3.patch", "test"), ("t4.h", "include")] self.contents = '\n'.join([ 'name = "pi"', 'homepage = "http://www.example.com"', 'description = "dummy description"', 'version = "3.14"', 'toolchain = {"name":"GCC", "version": "4.6.3"}', 'patches = %s', ]) % str(patches) self.prep() ver = "1.2.3" verpref = "myprefix" versuff = "mysuffix" tcname = "mytc" tcver = "4.1.2" new_patches = ['t5.patch', 't6.patch'] homepage = "http://www.justatest.com" tweaks = { 'version': ver, 'versionprefix': verpref, 'versionsuffix': versuff, 'toolchain_version': tcver, 'patches': new_patches } tweak_one(self.eb_file, tweaked_fn, tweaks) eb = EasyConfig(tweaked_fn) self.assertEqual(eb['version'], ver) self.assertEqual(eb['versionprefix'], verpref) self.assertEqual(eb['versionsuffix'], versuff) self.assertEqual(eb['toolchain']['version'], tcver) self.assertEqual(eb['patches'], new_patches) eb = EasyConfig(self.eb_file) # eb['toolchain']['version'] = tcver does not work as expected with templating enabled eb.enable_templating = False eb['version'] = ver eb['toolchain']['version'] = tcver eb.enable_templating = True eb.dump(self.eb_file) tweaks = { 'toolchain_name': tcname, 'patches': new_patches[:1], 'homepage': homepage, 'foo': "bar" } tweak_one(self.eb_file, tweaked_fn, tweaks) eb = EasyConfig(tweaked_fn) self.assertEqual(eb['toolchain']['name'], tcname) self.assertEqual(eb['toolchain']['version'], tcver) self.assertEqual(eb['patches'], new_patches[:1]) self.assertEqual(eb['version'], ver) self.assertEqual(eb['homepage'], homepage) # specify patches as string, eb should promote it to a list because original value was a list tweaks['patches'] = new_patches[0] eb = EasyConfig(tweaked_fn) self.assertEqual(eb['patches'], [new_patches[0]]) # cleanup os.remove(tweaked_fn)
# add versionsuffix if Python is specified as a dependency if any(dep[0] == 'Python' for dep in cfg.get('dependencies', [])): if not_found_yet('versionsuffix'): cfg['versionsuffix'] = '-Python-%(pyver)s' # add empty sanity_check_paths if 'sanity_check_paths' not in cfg: cfg['sanity_check_paths'] = {'files': [], 'dirs': []} # enable use_pip & sanity_pip_check if cfg.get('easyblock') in ['PythonBundle', 'PythonPackage']: cfg.update({ 'use_pip': True, 'sanity_pip_check': True, }) # enable download_dep_fail if cfg.get('easyblock') == 'PythonPackage': cfg['download_dep_fail'] = True pprint.pprint(cfg) ec_raw = '\n'.join("%s = %s" % (key, quote_str(cfg[key])) for key in cfg) ec = EasyConfig(None, rawtxt=ec_raw) full_ec_ver = det_full_ec_version(ec) fn = os.path.join('%s-%s.eb' % (cfg['name'], full_ec_ver)) ec.dump(fn) info("Easyconfig file created: %s" % fn)