From 6d2e37150096cf55492135e9b942ac16ff9196e5 Mon Sep 17 00:00:00 2001 From: Giovanni Harting <539@idlegandalf.com> Date: Thu, 3 Jun 2021 20:01:45 +0200 Subject: [PATCH] add version to failed package lists, so that a later version may be build again --- master.py | 30 +++++++++++++++++++++++++----- utils.py | 5 +++-- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/master.py b/master.py index a6f119c..eba8978 100644 --- a/master.py +++ b/master.py @@ -34,7 +34,8 @@ repos = [] def build(pkgbuild: str, repo: str) -> None: start_time = time.time() - name = pathlib.Path(pkgbuild).parts[-4] + parsed = parse_pkgbuild(pkgbuild) + name = parsed["pkgbase"] process_name = current_process().name logging.info("[%s/%s/%s] Build starting (Queue ~= %s)", process_name, repo, name, q.qsize()) @@ -45,7 +46,7 @@ def build(pkgbuild: str, repo: str) -> None: import_keys(pkgbuild) # increase pkgrel - increase_pkgrel(pkgbuild) + increase_pkgrel(pkgbuild, parsed) # build with devtools os.chdir(pathlib.Path(pkgbuild).parent) @@ -59,7 +60,7 @@ def build(pkgbuild: str, repo: str) -> None: # write packagename to failed list with open(os.path.join(config["basedir"]["repo"], repo + "_failed.txt"), "a") as f: - f.write(name + "\n") + f.write(name + "==" + str(parse_pkgbuild_ver(parsed=parsed)) + "\n") # write logs if not os.path.exists(os.path.join(config["basedir"]["repo"], "logs", repo)): @@ -96,6 +97,10 @@ def build(pkgbuild: str, repo: str) -> None: logging.debug("[GIT] %s", subprocess.run(["git", "clean", "-xdff"], check=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode(errors="ignore")) + logpath = pathlib.Path(os.path.join(config["basedir"]["repo"], "logs", repo, name + ".log")) + if logpath.exists(): + os.remove(logpath) + logging.info("[%s/%s/%s] Build successful (%s)", process_name, repo, name, format_timespan(time.time() - start_time)) @@ -180,6 +185,21 @@ def find_package_files(name: str, repo: list[AnyStr]) -> list[AnyStr]: return pkgs +def is_package_failed(package: str, ver: LegacyVersion, repo: str): + pkgs = get_failed_packages(repo) + + p: str + for p in pkgs: + s = p.split("==") + + if s[0] == package: + if ver > LegacyVersion(s[1]): + return False + else: + return True + return False + + def get_failed_packages(repo: str) -> list: if os.path.exists(os.path.join(config["basedir"]["repo"], repo + "_failed.txt")): with open(os.path.join(config["basedir"]["repo"], repo + "_failed.txt")) as p: @@ -297,13 +317,13 @@ def fill_queue() -> None: else: for march in config["march"]: repo = path_split[-2].split("-")[0] + "-" + march + ver = parse_pkgbuild_ver(parsed=parsed_pkgb) - if parsed_pkgb["pkgbase"] in get_failed_packages(repo): + if is_package_failed(parsed_pkgb["pkgbase"], ver, repo): logging.info("[%s/%s] Skipped due to failing build", repo, parsed_pkgb["pkgbase"]) delete_package(parsed_pkgb, [repo, ]) continue - ver = parse_pkgbuild_ver(parsed=parsed_pkgb) packages = list(parsed_pkgb["packages"]) pkg_f = find_package_files(packages[0], [repo, ]) if pkg_f: diff --git a/utils.py b/utils.py index 3e90638..5298e1e 100644 --- a/utils.py +++ b/utils.py @@ -27,8 +27,9 @@ def import_keys(pkgbuild: str) -> bool: return True -def increase_pkgrel(pkgbuild_file) -> None: - parsed = parse_pkgbuild(pkgbuild_file) +def increase_pkgrel(pkgbuild_file: str, parsed: dict = None) -> None: + if not parsed: + parsed = parse_pkgbuild(pkgbuild_file) with open(pkgbuild_file, "r+", errors='ignore') as p: pkgbuild_str = p.read() p.truncate(0)