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
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
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))
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)
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
def build(self, installed, dep): log.log("bjam : build step for " + dep.name) return execute_cmd_dump_output("./b2 " + dep.build_cmds)
def install(self, installed, dep): log.log("autoconf : install step for "+dep.name) return installed["make"].execute("install", dep.install_cmds)
def build(self, installed, dep): log.log("autoconf : build step for "+dep.name) return installed["make"].execute("-j ", dep.build_cmds)
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)
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
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)
def install(self, dep, cmds): log.log("install step for "+dep.name)
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)
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)
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
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)
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
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)
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