예제 #1
0
 def pre_build(self, installed, dep):
     log.log("autoconf : pre-build step for "+dep.name)
     ret = False
     if os.path.isfile("../configure"):
         ret = execute_cmd_dump_output("../configure --prefix="+get_temp_dir()+"/"+dep.name+".tmp "+dep.pre_build_cmds)
     elif os.path.isfile("../config"):
         ret = execute_cmd_dump_output("../config --prefix="+get_temp_dir()+"/"+dep.name+".tmp "+dep.pre_build_cmds)
     return ret
예제 #2
0
 def check_dependency(self, dep):
     packman = str_to_class(get_package_manager_name())()
     res, path = packman.check_dependency(dep)
     if res == package_manager.installed:
         log.log("Dependency (" + dep.name + ") found!")
         self.installed_deps[dep.name] = installed_dependency(
             dep, False, path, None)
         return True
     elif res == package_manager.not_installed:
         warn.log("Dependency (" + dep.name + " : " +
                  dep.version.to_string() + ") not found!")
         if (self.source_only or not packman.install_dependency(dep)
                 and not self.check_only):
             ### fallback
             self.download_dependency_and_unpack(dep, len(dep.bin_url) > 0)
             sb = source_builder()
             installed = None
             if dep.bin_url:
                 installed = sb.install_binary(self.installed_deps, dep,
                                               self.prefix)
             else:
                 sb.build(self.installed_deps, dep)
                 installed = sb.install(self.installed_deps, dep,
                                        self.prefix)
             self.installed_deps[dep.name] = installed
         else:
             self.installed_deps[dep.name] = installed_dependency(
                 dep, True, packman.prefix(dep), "")
         return True
     elif res == package_manager.not_satisfiable:
         if (not self.check_only):
             warn.log("Dependency (" + dep.name + " : " +
                      dep.version.to_string() +
                      ") not satisfiable, doing a source install!")
             self.download_dependency_and_unpack(dep, len(dep.bin_url) > 0)
             sb = source_builder()
             installed = None
             if dep.bin_url:
                 installed = sb.install_binary(self.installed_deps, dep,
                                               self.prefix)
             else:
                 sb.build(self.installed_deps, dep)
                 installed = sb.install(self.installed_deps, dep,
                                        self.prefix)
             self.installed_deps[dep.name] = installed
             return True
         else:
             warn.log("Dependency (" + dep.name + " : " +
                      dep.version.to_string() + ") not satisfiable!")
         return False
     else:
         err.log("Dependency (" + dep.name +
                 ") installed but version is too low (" +
                 packman.get_version(dep).to_string() + ")")
         return False
예제 #3
0
    def download_dependency_and_unpack(self, dep, use_bin):
        log.log("Downloading " + dep.name)
        url = ""
        if use_bin:
            url = dep.bin_url
        else:
            url = dep.source_url
        if not url:
            err.log("Can't do a source build for dependency (" + dep.name +
                    ")")
        base_name = os.path.basename(url)
        urllib.request.urlretrieve(url, os.path.join(self.temp_dir, base_name))
        shutil.unpack_archive(os.path.join(self.temp_dir, base_name),
                              os.path.join(self.temp_dir, dep.name))

        log.log("Unpacked " + base_name)
        os.remove(os.path.join(self.temp_dir, base_name))
예제 #4
0
 def remove_dependency(self, dep_name, strict):
     packman = str_to_class(get_package_manager_name())()
     if not dep_name in self.installed_deps:
         err.log("Dependency (" + dep_name + ") not installed")
     dep = self.installed_deps[dep_name].dep
     if self.installed_deps[dep_name].files:
         log.log("Removing " + dep.name + " " + dep.package_name)
         for f in self.installed_deps[dep_name].files:
             try:
                 os.remove(f)
                 os.rmdir(os.path.dirname(f))
             except:
                 pass
     elif self.installed_deps[dep_name].provided:
         packman.remove_dependency(dep)
     else:
         if strict:
             err.log("Dependency (" + dep_name +
                     ") was not installed via eosio.depman")
     self.installed_deps.pop(dep.name, None)
예제 #5
0
    def check_dependencies_helper(self, dep):
        dep_check = True
        log.log("Checking dep " + dep.name)
        if dep.name in self.installed_deps and self.installed_deps[
                dep.name].provided == True:
            if self.installed_deps[dep.name].dep.version.eq(
                    self.deps_dict[dep.name].version):
                log.log("Dependency (" + dep.name + ") found!")
                return dep_check
            else:
                err.log(
                    "Dependency (" + dep.name +
                    ") installed but dependency needs a different version!")

        if dep.is_executable():
            installed_dep = dep.find_executable()
            if installed_dep:
                if installed_dep.dep.version.eq(dep.version):
                    log.log("Dependency (" + dep.name + ") found!")
                    self.installed_deps[dep.name] = dep.find_executable()
                else:
                    res = self.check_dependency(dep)
                    dep_check = dep_check and res
            else:
                res = self.check_dependency(dep)
                dep_check = dep_check and res
        else:
            res = self.check_dependency(dep)
            dep_check = dep_check and res
        return dep_check
예제 #6
0
 def build(self, installed, dep):
     log.log("bjam : build step for " + dep.name)
     return execute_cmd_dump_output("./b2 " + dep.build_cmds)
예제 #7
0
 def install(self, installed, dep):
     log.log("autoconf : install step for "+dep.name)
     return installed["make"].execute("install", dep.install_cmds)
예제 #8
0
 def build(self, installed, dep):
     log.log("autoconf : build step for "+dep.name)
     return installed["make"].execute("-j ", dep.build_cmds)
예제 #9
0
 def pre_build(self, installed, dep):
     log.log("cmake : pre-build step for " + dep.name)
     return installed["cmake"].execute(
         "..", "-DCMAKE_INSTALL_PREFIX=" + get_temp_dir() + "/" + dep.name +
         ".tmp", dep.pre_build_cmds)
예제 #10
0
 def remove_dependency(self, dep):
     log.log("Removing " + dep.name + " " + dep.package_name)
     eo, ee, ec = execute_cmd("brew remove " + dep.package_name)
     return eo and ec == 0
예제 #11
0
 def install(self, installed, dep):
     log.log("cmake : install step for " + dep.name)
     return execute_cmd_dump_output(
         os.join(installed["ninja"].path, "ninja") + dep.install_cmds)
예제 #12
0
 def install(self, dep, cmds):
     log.log("install step for "+dep.name)
예제 #13
0
        set_log_colorize(args.no_color)
        if not args.file:
            err.log("Must specify dependency file")
        deps_filename = args.file

        handler.read_dependency_file(deps_filename)
        handler.read_installed_deps_file()

        if args.check:
            handler.check_only = True
            if not handler.check_dependencies(args.install_group):
                exit(-1)
            exit(0)
        if args.query:
            log.log(args.query + " : version (" +
                    handler.deps_dict[args.query].version.to_string() +
                    ") -- installed at (" +
                    handler.get_prefix(strip(args.query)) + ")")
            exit(0)
        if args.install_dir:
            log.log(handler.get_prefix(strip(args.install_dir)))
            exit(0)
        if args.list:
            for k in handler.installed_deps.copy():
                log.log(k)
            exit(0)
        if args.remove:
            handler.remove_dependency(args.remove, True)
            exit(0)
        if args.remove_all:
            for k in handler.installed_deps.copy():
                handler.remove_dependency(k, False)
예제 #14
0
 def install(self, installed, dep):
     log.log("autoconf : install step for " + dep.name)
     os.chdir("..")
     return execute_cmd_dump_output("./b2 install -q -j8 " +
                                    dep.install_cmds)
예제 #15
0
 def install_dependency(self, dep):
     log.log("Installing " + dep.name + " " + dep.package_name)
     if (os.getuid() != 0):
         err.log("Installing via apt-get requires sudo!")
     eo, ee, ec = execute_cmd("apt-get --yes install " + dep.package_name)
     return ec == 0
예제 #16
0
 def pre_build(self, installed, dep):
     log.log("bjam : pre-build step for " + dep.name)
     os.chdir("..")
     return execute_cmd_dump_output("./bootstrap.sh --prefix=" +
                                    get_temp_dir() + "/" + dep.name +
                                    ".tmp " + dep.pre_build_cmds)
예제 #17
0
 def remove_dependency(self, dep):
     log.log("Removing " + dep.name + " " + dep.package_name)
     if (os.getuid() != 0):
         err.log("Removing via apt-get requires sudo!")
     eo, ee, ec = execute_cmd("apt-get --yes remove " + dep.package_name)
     return ec == 0
예제 #18
0
 def pre_build(self, installed, dep):
     log.log("cmake : pre-build step for " + dep.name)
     return execute_cmd_dump_output(
         os.join(installed["cmake"].path, "cmake") +
         " .. -G Ninja -DCMAKE_INSTALL_PREFIX=" + get_temp_dir() + "/" +
         dep.name + ".tmp " + dep.pre_build_cmds)
예제 #19
0
 def install_dependency(self, dep):
     log.log("Installing " + dep.name + " " + dep.package_name)
     eo, ee, ec = execute_cmd("brew install " + dep.package_name)
     return eo and ec == 0