def upgrade(self): """ Upgrade packages """ for pkg in self.upgrade_all: check_md5(pkg_checksum(pkg, "slack_patches"), self.patch_path + pkg) pkg_ver = "{0}-{1}".format( split_package(pkg)[0], split_package(pkg)[1]) if find_package( split_package(pkg)[0] + self.meta.sp, self.meta.pkg_path): print("[ {0}upgrading{1} ] --> {2}".format( self.meta.color["YELLOW"], self.meta.color["ENDC"], pkg[:-4])) PackageManager( (self.patch_path + pkg).split()).upgrade("--install-new") self.upgraded.append(pkg_ver) else: print("[ {0}installing{1} ] --> {2}".format( self.meta.color["GREEN"], self.meta.color["ENDC"], pkg[:-4])) PackageManager( (self.patch_path + pkg).split()).upgrade("--install-new") self.installed.append(pkg_ver)
def build(self): """ Build package from source and create log file in path /var/log/slpkg/sbo/build_logs/. Also check md5sum calculates. """ try: self._delete_dir() try: tar = tarfile.open(self.script) except Exception as err: print err raise SystemExit() tar.extractall() tar.close() self._makeflags() self._delete_sbo_tar_gz() self._create_md5_dict() if not self.auto: os.chdir(self._SOURCES) for src in self.sources: if not os.path.isfile(src): continue # fix build sources with spaces src = src.replace("%20", " ") check_md5(self.sbo_md5[src], src) # copy source and fix passing char '+' from file name shutil.copy2(src.replace("%2B", "+"), self.path + self.prgnam) os.chdir(self.path + self.prgnam) # change permissions subprocess.call("chmod +x {0}.SlackBuild".format(self.prgnam), shell=True) pass_var = self._pass_variable() if self.meta.sbo_build_log in ["on", "ON"]: if os.path.isfile(self.build_logs + self.log_file): os.remove(self.build_logs + self.log_file) # start log write log_head(self.build_logs, self.log_file, self.start_log_time) subprocess.Popen("{0} ./{1}.SlackBuild 2>&1 | tee -a " "{2}{3}".format(" ".join(pass_var), self.prgnam, self.build_logs, self.log_file), shell=True, stdout=sys.stdout).communicate() sum_time = build_time(self.start_time) # write end in log file log_end(self.build_logs, self.log_file, sum_time) print("Total build time for package {0} : {1}\n".format( self.prgnam, sum_time)) else: subprocess.call("{0} ./{1}.SlackBuild".format( " ".join(pass_var), self.prgnam), shell=True) os.chdir(self.path) except KeyboardInterrupt: # (OSError, IOError): self.msg.pkg_not_found("\n", self.prgnam, "Wrong file", "\n")
def it_self_update(): """Check from GitHub slpkg repository if new version is available download and update itself """ __new_version__ = "" repository = "github" branch = "master" ver_link = ("https://raw.{0}usercontent.com/{1}/{2}/" "{3}/{4}/__metadata__.py".format(repository, _meta_.__author__, _meta_.__all__, branch, _meta_.__all__)) version_data = URL(ver_link).reading() for line in version_data.splitlines(): line = line.strip() if line.startswith("__version_info__"): __new_version__ = ".".join(re.findall(r"\d+", line)) if __new_version__ > _meta_.__version__: if _meta_.default_answer in ["y", "Y"]: answer = _meta_.default_answer else: print("\nNew version '{0}-{1}' is available !\n".format( _meta_.__all__, __new_version__)) try: answer = raw_input("Would you like to upgrade [y/N]? ") except EOFError: print("") raise SystemExit() if answer in ["y", "Y"]: print("") # new line after answer else: raise SystemExit() dwn_link = [ "https://{0}.com/{1}/{2}/archive/" "v{3}.tar.gz".format(repository, _meta_.__author__, _meta_.__all__, __new_version__) ] if not os.path.exists(_meta_.build_path): os.makedirs(_meta_.build_path) Download(_meta_.build_path, dwn_link, repo="").start() os.chdir(_meta_.build_path) slpkg_tar_file = "v" + __new_version__ + ".tar.gz" tar = tarfile.open(slpkg_tar_file) tar.extractall() tar.close() file_name = "{0}-{1}".format(_meta_.__all__, __new_version__) os.chdir(file_name) check_md5( pkg_checksum(_meta_.__all__ + "-" + slpkg_tar_file[1:], _meta_.__all__), _meta_.build_path + slpkg_tar_file) subprocess.call("chmod +x {0}".format("install.sh"), shell=True) subprocess.call("sh install.sh", shell=True) else: print("\n{0}: There is no new version, already used the last !" "\n".format(_meta_.__all__)) raise SystemExit()
def it_self_update(): """ Check from GitHub slpkg repository if new version is available download and update itself """ __new_version__ = "" repository = "github" branch = "master" ver_link = ("https://raw.{0}usercontent.com/{1}/{2}/" "{3}/{4}/__metadata__.py".format(repository, _meta_.__author__, _meta_.__all__, branch, _meta_.__all__)) version_data = URL(ver_link).reading() for line in version_data.splitlines(): line = line.strip() if line.startswith("__version_info__"): __new_version__ = ".".join(re.findall(r"\d+", line)) if __new_version__ > _meta_.__version__: if _meta_.default_answer in ["y", "Y"]: answer = _meta_.default_answer else: print("\nNew version '{0}-{1}' is available !\n".format( _meta_.__all__, __new_version__)) try: answer = raw_input("Would you like to upgrade [y/N]? ") except EOFError: print("") raise SystemExit() if answer in ["y", "Y"]: print("") # new line after answer else: raise SystemExit() dwn_link = ["https://{0}.com/{1}/{2}/archive/" "v{3}.tar.gz".format(repository, _meta_.__author__, _meta_.__all__, __new_version__)] if not os.path.exists(_meta_.build_path): os.makedirs(_meta_.build_path) Download(_meta_.build_path, dwn_link, repo="").start() os.chdir(_meta_.build_path) slpkg_tar_file = "v" + __new_version__ + ".tar.gz" tar = tarfile.open(slpkg_tar_file) tar.extractall() tar.close() file_name = "{0}-{1}".format(_meta_.__all__, __new_version__) os.chdir(file_name) check_md5(pkg_checksum(_meta_.__all__ + "-" + slpkg_tar_file[1:], _meta_.__all__), _meta_.build_path + slpkg_tar_file) subprocess.call("chmod +x {0}".format("install.sh"), shell=True) subprocess.call("sh install.sh", shell=True) else: print("\n{0}: There is no new version, already used the last !" "\n".format(_meta_.__all__)) raise SystemExit()
def build(self): """ Build package from source and create log file in path /var/log/slpkg/sbo/build_logs/. Also check md5sum calculates. """ try: self._delete_dir() try: tar = tarfile.open(self.script) except Exception as err: print err raise SystemExit() tar.extractall() tar.close() self._makeflags() self._delete_sbo_tar_gz() self._create_md5_dict() if not self.auto: os.chdir(self._SOURCES) for src in self.sources: if not os.path.isfile(src): continue # fix build sources with spaces src = src.replace("%20", " ") check_md5(self.sbo_md5[src], src) # copy source and fix passing char '+' from file name shutil.copy2(src.replace("%2B", "+"), self.path + self.prgnam) os.chdir(self.path + self.prgnam) # change permissions subprocess.call("chmod +x {0}.SlackBuild".format(self.prgnam), shell=True) pass_var = self._pass_variable() if self.meta.sbo_build_log in ["on", "ON"]: if os.path.isfile(self.build_logs + self.log_file): os.remove(self.build_logs + self.log_file) # start log write log_head(self.build_logs, self.log_file, self.start_log_time) subprocess.Popen("{0} ./{1}.SlackBuild 2>&1 | tee -a " "{2}{3}".format(" ".join(pass_var), self.prgnam, self.build_logs, self.log_file), shell=True, stdout=sys.stdout).communicate() sum_time = build_time(self.start_time) # write end in log file log_end(self.build_logs, self.log_file, sum_time) print("Total build time for the package {0} : {1}\n".format( self.prgnam, sum_time)) else: subprocess.call("{0} ./{1}.SlackBuild".format( " ".join(pass_var), self.prgnam), shell=True) os.chdir(self.path) except KeyboardInterrupt: # (OSError, IOError): self.msg.pkg_not_found("\n", self.prgnam, "Wrong file", "\n")
def build(self): """ Build package from source and create log file in path /var/log/slpkg/sbo/build_logs/. Also check md5sum calculates. """ try: tar = tarfile.open(self.script) tar.extractall() tar.close() self._makeflags() self._delete_sbo() sbo_md5_list = SBoGrep(self.prgnam).checksum() for src, sbo_md5 in zip(self.sources, sbo_md5_list): # fix build sources with spaces src = src.replace("%20", " ") check_md5(sbo_md5, src) shutil.copy2(src, self.prgnam) os.chdir(self.path + self.prgnam) # change permissions subprocess.call("chmod +x {0}.SlackBuild".format(self.prgnam), shell=True) pass_var = self._pass_variable() if self.meta.sbo_build_log in ["on", "ON"]: if os.path.isfile(self.build_logs + self.log_file): os.remove(self.build_logs + self.log_file) # start log write log_head(self.build_logs, self.log_file, self.start_log_time) subprocess.Popen("{0} ./{1}.SlackBuild 2>&1 | tee -a " "{2}{3}".format(" ".join(pass_var), self.prgnam, self.build_logs, self.log_file), shell=True, stdout=sys.stdout).communicate() sum_time = build_time(self.start_time) # write end in log file log_end(self.build_logs, self.log_file, sum_time) print("Total build time for package {0} : {1}\n".format( self.prgnam, sum_time)) else: subprocess.call("{0} ./{1}.SlackBuild".format( " ".join(pass_var), self.prgnam, shell=True)) os.chdir(self.path) except (OSError, IOError): Msg().pkg_not_found("\n", self.prgnam, "Wrong file", "\n") except KeyboardInterrupt: print("") # new line at exit sys.exit(0)
def upgrade(self): """ Upgrade packages """ for pkg in self.upgrade_all: check_md5(pkg_checksum(pkg, "slack_patches"), self.patch_path + pkg) pkg_ver = "{0}-{1}".format(split_package(pkg)[0], split_package(pkg)[1]) if find_package(split_package(pkg)[0] + "-", self.meta.pkg_path): print("[ {0}upgrading{1} ] --> {2}".format( self.meta.color["YELLOW"], self.meta.color["ENDC"], pkg[:-4])) PackageManager((self.patch_path + pkg).split()).upgrade( "--install-new") self.upgraded.append(pkg_ver) else: print("[ {0}installing{1} ] --> {2}".format( self.meta.color["GREEN"], self.meta.color["ENDC"], pkg[:-4])) PackageManager((self.patch_path + pkg).split()).upgrade( "--install-new") self.installed.append(pkg_ver)
def checksums(self, install): """Checksums before install """ check_md5(pkg_checksum(install, self.repo), self.tmp_path + install)