def test_package(self): """Test package function.""" init_config(build_options={'silent': True}) test_easyconfigs = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'easyconfigs') ec = EasyConfig(os.path.join(test_easyconfigs, 'toy-0.0-gompi-1.3.12-test.eb'), validate=False) mock_fpm(self.test_prefix) # import needs to be done here, since test easyblocks are only included later from easybuild.easyblocks.toy import EB_toy easyblock = EB_toy(ec) # build & install first easyblock.run_all_steps(False) # package using default packaging configuration (FPM to build RPM packages) pkgdir = package(easyblock) pkgfile = os.path.join(pkgdir, 'toy-0.0-gompi-1.3.12-test-eb-%s.1.rpm' % EASYBUILD_VERSION) self.assertTrue(os.path.isfile(pkgfile), "Found %s" % pkgfile) pkgtxt = read_file(pkgfile) pkgtxt_regex = re.compile("Contents of installdir %s" % easyblock.installdir) self.assertTrue(pkgtxt_regex.search(pkgtxt), "Pattern '%s' found in: %s" % (pkgtxt_regex.pattern, pkgtxt)) if DEBUG: print read_file(os.path.join(self.test_prefix, DEBUG_FPM_FILE))
def test_package(self): """Test package function.""" init_config(build_options={'silent': True}) test_easyconfigs = os.path.join( os.path.dirname(os.path.abspath(__file__)), 'easyconfigs') ec = EasyConfig(os.path.join(test_easyconfigs, 'toy-0.0-gompi-1.3.12-test.eb'), validate=False) mock_fpm(self.test_prefix) # import needs to be done here, since test easyblocks are only included later from easybuild.easyblocks.toy import EB_toy easyblock = EB_toy(ec) # build & install first easyblock.run_all_steps(False) # package using default packaging configuration (FPM to build RPM packages) pkgdir = package(easyblock) pkgfile = os.path.join( pkgdir, 'toy-0.0-gompi-1.3.12-test-eb-%s.1.rpm' % EASYBUILD_VERSION) self.assertTrue(os.path.isfile(pkgfile), "Found %s" % pkgfile) pkgtxt = read_file(pkgfile) pkgtxt_regex = re.compile("Contents of installdir %s" % easyblock.installdir) self.assertTrue( pkgtxt_regex.search(pkgtxt), "Pattern '%s' found in: %s" % (pkgtxt_regex.pattern, pkgtxt))
def postrun(self): """ Wrap up installation of toy extension. """ super(Toy_Extension, self).postrun() EB_toy.install_step(self.master, name=self.name)
def prerun(self): """ Prepare installation of toy extension. """ super(Toy_Extension, self).prerun() if self.src: super(Toy_Extension, self).run(unpack_src=True) EB_toy.configure_step(self.master, name=self.name)
def test_package(self): """Test package function.""" init_config(build_options={'silent': True}) topdir = os.path.dirname(os.path.abspath(__file__)) test_easyconfigs = os.path.join(topdir, 'easyconfigs', 'test_ecs') ec = EasyConfig(os.path.join(test_easyconfigs, 't', 'toy', 'toy-0.0-gompi-1.3.12-test.eb'), validate=False) mock_fpm(self.test_prefix) # import needs to be done here, since test easyblocks are only included later from easybuild.easyblocks.toy import EB_toy easyblock = EB_toy(ec) # build & install first easyblock.run_all_steps(False) # write a dummy log and report file to make sure they don't get packaged logfile = os.path.join(easyblock.installdir, log_path(), "logfile.log") write_file(logfile, "I'm a logfile") reportfile = os.path.join(easyblock.installdir, log_path(), "report.md") write_file(reportfile, "I'm a reportfile") # package using default packaging configuration (FPM to build RPM packages) pkgdir = package(easyblock) pkgfile = os.path.join( pkgdir, 'toy-0.0-gompi-1.3.12-test-eb-%s.1.rpm' % EASYBUILD_VERSION) self.assertTrue(os.path.isfile(pkgfile), "Found %s" % pkgfile) pkgtxt = read_file(pkgfile) pkgtxt_regex = re.compile("STARTCONTENTS of installdir %s" % easyblock.installdir) self.assertTrue( pkgtxt_regex.search(pkgtxt), "Pattern '%s' found in: %s" % (pkgtxt_regex.pattern, pkgtxt)) no_logfiles_regex = re.compile( r'STARTCONTENTS.*\.(log|md)$.*ENDCONTENTS', re.DOTALL | re.MULTILINE) self.assertFalse( no_logfiles_regex.search(pkgtxt), "Pattern not '%s' found in: %s" % (no_logfiles_regex.pattern, pkgtxt)) if DEBUG: print "The FPM script debug output" print read_file(os.path.join(self.test_prefix, DEBUG_FPM_FILE)) print "The Package File" print read_file(pkgfile)
def run(self, *args, **kwargs): """ Install toy extension. """ if self.src: EB_toy.build_step(self.master, name=self.name, buildopts=self.cfg['buildopts']) if self.cfg['toy_ext_param']: run_cmd(self.cfg['toy_ext_param']) return self.module_generator.set_environment( 'TOY_EXT_%s' % self.name.upper().replace('-', '_'), self.name)
def test_extensions_sanity_check(self): """Test sanity check aspect of extensions.""" test_ecs_dir = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'easyconfigs', 'test_ecs') toy_ec = EasyConfig(os.path.join(test_ecs_dir, 't', 'toy', 'toy-0.0-gompi-1.3.12-test.eb')) # purposely put sanity check command in place that breaks the build, # to check whether sanity check is only run once; # sanity check commands are checked after checking sanity check paths, so this should work toy_ec.update('sanity_check_commands', [("%(installdir)s/bin/toy && rm %(installdir)s/bin/toy", '')]) # this import only works here, since EB_toy is a test easyblock from easybuild.easyblocks.toy import EB_toy eb = EB_toy(toy_ec) eb.silent = True eb.run_all_steps(True)
def extra_options(): """Custom easyconfig parameters for toytoy.""" extra_vars = { 'toytoy_extra1': [None, "first toytoy-specific easyconfig parameter", CUSTOM], } return EB_toy.extra_options(extra_vars)
def test_package(self): """Test package function.""" init_config(build_options={'silent': True}) topdir = os.path.dirname(os.path.abspath(__file__)) test_easyconfigs = os.path.join(topdir, 'easyconfigs', 'test_ecs') ec = EasyConfig(os.path.join(test_easyconfigs, 't', 'toy', 'toy-0.0-gompi-1.3.12-test.eb'), validate=False) mock_fpm(self.test_prefix) # import needs to be done here, since test easyblocks are only included later from easybuild.easyblocks.toy import EB_toy easyblock = EB_toy(ec) # build & install first easyblock.run_all_steps(False) # write a dummy log and report file to make sure they don't get packaged logfile = os.path.join(easyblock.installdir, log_path(), "logfile.log") write_file(logfile, "I'm a logfile") reportfile = os.path.join(easyblock.installdir, log_path(), "report.md") write_file(reportfile, "I'm a reportfile") # package using default packaging configuration (FPM to build RPM packages) pkgdir = package(easyblock) pkgfile = os.path.join(pkgdir, 'toy-0.0-gompi-1.3.12-test-eb-%s.1.rpm' % EASYBUILD_VERSION) self.assertTrue(os.path.isfile(pkgfile), "Found %s" % pkgfile) pkgtxt = read_file(pkgfile) pkgtxt_regex = re.compile("STARTCONTENTS of installdir %s" % easyblock.installdir) self.assertTrue(pkgtxt_regex.search(pkgtxt), "Pattern '%s' found in: %s" % (pkgtxt_regex.pattern, pkgtxt)) no_logfiles_regex = re.compile(r'STARTCONTENTS.*\.(log|md)$.*ENDCONTENTS', re.DOTALL|re.MULTILINE) self.assertFalse(no_logfiles_regex.search(pkgtxt), "Pattern not '%s' found in: %s" % (no_logfiles_regex.pattern, pkgtxt)) if DEBUG: print "The FPM script debug output" print read_file(os.path.join(self.test_prefix, DEBUG_FPM_FILE)) print "The Package File" print read_file(pkgfile)
def run(self): """Build toy extension.""" super(Toy_Extension, self).run(unpack_src=True) EB_toy.configure_step(self.master, name=self.name) EB_toy.build_step(self.master, name=self.name, buildopts=self.cfg['buildopts']) if self.cfg['toy_ext_param']: run_cmd(self.cfg['toy_ext_param']) EB_toy.install_step(self.master, name=self.name)
def run(self): """Build toy extension.""" super(Toy_Extension, self).run(unpack_src=True) EB_toy.configure_step(self.master, name=self.name) EB_toy.build_step(self.master, name=self.name, buildopts=self.cfg['buildopts']) if self.cfg['toy_ext_param']: run_cmd(self.cfg['toy_ext_param']) EB_toy.install_step(self.master, name=self.name) return self.module_generator.set_environment('TOY_EXT_%s' % self.name.upper(), self.name)
def run(self): """Build toy extension.""" if self.src: super(Toy_Extension, self).run(unpack_src=True) EB_toy.configure_step(self.master, name=self.name) EB_toy.build_step(self.master, name=self.name, buildopts=self.cfg['buildopts']) if self.cfg['toy_ext_param']: run_cmd(self.cfg['toy_ext_param']) EB_toy.install_step(self.master, name=self.name) return self.module_generator.set_environment('TOY_EXT_%s' % self.name.upper(), self.name)
def run(self): """Build toy extension.""" super(Toy_Extension, self).run(unpack_src=True) EB_toy.configure_step(self.master, name=self.name) EB_toy.build_step(self.master, name=self.name) EB_toy.install_step(self.master, name=self.name)
def test_package(self): """Test package function.""" build_options = { 'package_tool_options': '--foo bar', 'silent': True, } init_config(build_options=build_options) topdir = os.path.dirname(os.path.abspath(__file__)) test_easyconfigs = os.path.join(topdir, 'easyconfigs', 'test_ecs') ec = EasyConfig(os.path.join(test_easyconfigs, 't', 'toy', 'toy-0.0-gompi-2018a-test.eb'), validate=False) mock_fpm(self.test_prefix) # import needs to be done here, since test easyblocks are only included later from easybuild.easyblocks.toy import EB_toy easyblock = EB_toy(ec) # build & install first easyblock.run_all_steps(False) # write a dummy log and report file to make sure they don't get packaged logfile = os.path.join(easyblock.installdir, log_path(), "logfile.log") write_file(logfile, "I'm a logfile") reportfile = os.path.join(easyblock.installdir, log_path(), "report.md") write_file(reportfile, "I'm a reportfile") # package using default packaging configuration (FPM to build RPM packages) pkgdir = package(easyblock) pkgfile = os.path.join(pkgdir, 'toy-0.0-gompi-2018a-test-eb-%s.1.rpm' % EASYBUILD_VERSION) fpm_output = read_file(os.path.join(self.test_prefix, FPM_OUTPUT_FILE)) pkgtxt = read_file(pkgfile) self.assertTrue(os.path.isfile(pkgfile), "Found %s" % pkgfile) # check whether extra packaging options were passed down regex = re.compile("^got an unhandled option: --foo bar$", re.M) self.assertTrue(regex.search(fpm_output), "Pattern '%s' found in: %s" % (regex.pattern, fpm_output)) pkgtxt = read_file(pkgfile) pkgtxt_regex = re.compile("STARTCONTENTS of installdir %s" % easyblock.installdir) self.assertTrue(pkgtxt_regex.search(pkgtxt), "Pattern '%s' found in: %s" % (pkgtxt_regex.pattern, pkgtxt)) no_logfiles_regex = re.compile(r'STARTCONTENTS.*\.(log|md)$.*ENDCONTENTS', re.DOTALL | re.MULTILINE) res = no_logfiles_regex.search(pkgtxt) self.assertFalse(res, "Pattern not '%s' found in: %s" % (no_logfiles_regex.pattern, pkgtxt)) toy_txt = read_file(os.path.join(test_easyconfigs, 't', 'toy', 'toy-0.0-gompi-2018a-test.eb')) replace_str = '''description = """Toy C program, 100% toy. Now with `backticks'\n''' replace_str += '''and newlines"""''' toy_txt = re.sub('description = .*', replace_str, toy_txt) toy_file = os.path.join(self.test_prefix, 'toy-test-description.eb') write_file(toy_file, toy_txt) regex = re.compile(r"""`backticks'""") self.assertTrue(regex.search(toy_txt), "Pattern '%s' found in: %s" % (regex.pattern, toy_txt)) ec_desc = EasyConfig(toy_file, validate=False) easyblock_desc = EB_toy(ec_desc) easyblock_desc.run_all_steps(False) pkgdir = package(easyblock_desc) pkgfile = os.path.join(pkgdir, 'toy-0.0-gompi-2018a-test-eb-%s.1.rpm' % EASYBUILD_VERSION) self.assertTrue(os.path.isfile(pkgfile)) pkgtxt = read_file(pkgfile) regex_pkg = re.compile(r"""DESCRIPTION:.*`backticks'.*""") self.assertTrue(regex_pkg.search(pkgtxt), "Pattern '%s' not found in: %s" % (regex_pkg.pattern, pkgtxt)) regex_pkg = re.compile(r"""DESCRIPTION:.*\nand newlines""", re.MULTILINE) self.assertTrue(regex_pkg.search(pkgtxt), "Pattern '%s' not found in: %s" % (regex_pkg.pattern, pkgtxt))