def install_R_package(self, cmd, inp=None): """Install R package as specified, and check for errors.""" cmdttdouterr, _ = run_cmd(cmd, log_all=True, simple=False, inp=inp, regexp=False) cmderrors = parse_log_for_error(cmdttdouterr, regExp="^ERROR:") if cmderrors: cmd = "R -q --no-save" stdin = """ remove.library(%s) """ % self.name # remove package if errors were detected # it's possible that some of the dependencies failed, but the package itself was installed run_cmd(cmd, log_all=False, log_ok=False, simple=False, inp=stdin, regexp=False) self.log.error( "Errors detected during installation of R package %s!" % self.name) else: self.log.debug("R package %s installed succesfully" % self.name)
def sanity_check_step(self, *args, **kwargs): """ Custom sanity check for Julia packages """ #NOTE: we don't use Pkg.status with arguments as only supported for Julia >=v1.1 cmd = "unset EBJULIA_USER_DEPOT_PATH && export EBJULIA_ADMIN_DEPOT_PATH=%s && export JULIA_DEPOT_PATH=%s && export JULIA_PROJECT=%s && julia --eval 'using Pkg; Pkg.status()'" % (self.depot, self.depot, self.projectdir) cmdttdouterr, _ = run_cmd(cmd, log_all=True, simple=False, regexp=False) self.log.error("Julia package %s sanity returned %s" % (self.name, cmdttdouterr)) return len(parse_log_for_error(cmdttdouterr, regExp="%s\s+v%s" % (self.package_name, self.version))) != 0
def install_step(self): """Install procedure for Julia packages.""" cmd = self.make_julia_cmd(remove=False) cmdttdouterr, _ = run_cmd(cmd, log_all=True, simple=False, regexp=False) cmderrors = parse_log_for_error(cmdttdouterr, regExp="^ERROR:") if cmderrors: cmd = self.make_julia_cmd(remove=True) run_cmd(cmd, log_all=False, log_ok=False, simple=False, inp=stdin, regexp=False) raise EasyBuildError("Errors detected during installation of Julia package %s!", self.name) else: self.log.info("Julia package %s installed succesfully" % self.name)
def install_R_package(self, cmd, inp=None): """Install R package as specified, and check for errors.""" cmdttdouterr, _ = run_cmd(cmd, log_all=True, simple=False, inp=inp, regexp=False) cmderrors = parse_log_for_error(cmdttdouterr, regExp="^ERROR:") if cmderrors: cmd = "R -q --no-save" stdin = """ remove.library(%s) """ % self.name # remove package if errors were detected # it's possible that some of the dependencies failed, but the package itself was installed run_cmd(cmd, log_all=False, log_ok=False, simple=False, inp=stdin, regexp=False) raise EasyBuildError("Errors detected during installation of R package %s!", self.name) else: self.log.debug("R package %s installed succesfully" % self.name)
def check_install_output(self, output): """ Check output of installation command, and clean up installation if needed. """ errors = parse_log_for_error(output, regExp="^ERROR:") if errors: self.handle_installation_errors() cmd = "R -q --no-save" stdin = """ remove.library(%s) """ % self.name # remove package if errors were detected # it's possible that some of the dependencies failed, but the package itself was installed run_cmd(cmd, log_all=False, log_ok=False, simple=False, inp=stdin, regexp=False) raise EasyBuildError( "Errors detected during installation of R package %s!", self.name) else: self.log.debug("R package %s installed succesfully", self.name)
def test_parse_log_error(self): """Test basic parse_log_for_error functionality.""" errors = parse_log_for_error("error failed", True) self.assertEqual(len(errors), 1)
def parse_log_for_error(txt, regExp=None, stdout=True, msg=None): """Legacy wrapper/placeholder for run.parse_log_for_error""" return run.parse_log_for_error(txt, regExp=regExp, stdout=stdout, msg=msg)
def parse_log_for_error(txt, regExp=None, stdout=True, msg=None): """Legacy wrapper/placeholder for run.parse_log_for_error""" _log.deprecated("parse_log_for_error was moved from tools.filetools to tools.run", '2.0') return run.parse_log_for_error(txt, regExp=regExp, stdout=stdout, msg=msg)