diff --git a/master.py b/master.py index eba8978..73dd744 100644 --- a/master.py +++ b/master.py @@ -29,6 +29,7 @@ regex_pkg_repo = re.compile(r"^(.*)-.*-.*-(?:x86_64|any)\.pkg\.tar\.zst(?:\.sig) fp = None update_last = time.time() copy_l = Lock() +failed_l = Lock() repos = [] @@ -59,7 +60,7 @@ def build(pkgbuild: str, repo: str) -> None: logging.warning("[%s/%s/%s] Build failed. Check repo/logs for more information.", process_name, repo, name) # write packagename to failed list - with open(os.path.join(config["basedir"]["repo"], repo + "_failed.txt"), "a") as f: + with failed_l, open(os.path.join(config["basedir"]["repo"], repo + "_failed.txt"), "a") as f: f.write(name + "==" + str(parse_pkgbuild_ver(parsed=parsed)) + "\n") # write logs @@ -194,6 +195,13 @@ def is_package_failed(package: str, ver: LegacyVersion, repo: str): if s[0] == package: if ver > LegacyVersion(s[1]): + with failed_l, open(os.path.join(config["basedir"]["repo"], repo + "_failed.txt")) as f: + d = f.readlines() + f.seek(0) + f.truncate() + for i in d: + if i.strip("\n") != p: + f.write(i) return False else: return True @@ -202,8 +210,8 @@ def is_package_failed(package: str, ver: LegacyVersion, repo: str): 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: - return p.read().splitlines() + with failed_l, open(os.path.join(config["basedir"]["repo"], repo + "_failed.txt")) as p: + return p.readlines() else: return [] @@ -383,7 +391,7 @@ if __name__ == '__main__': time.sleep(300) do_repo_work() except KeyboardInterrupt: - with copy_l: + with copy_l, failed_l: pool.close() pool.terminate() q.close() diff --git a/utils.py b/utils.py index 5298e1e..4a720aa 100644 --- a/utils.py +++ b/utils.py @@ -33,7 +33,7 @@ def increase_pkgrel(pkgbuild_file: str, parsed: dict = None) -> None: with open(pkgbuild_file, "r+", errors='ignore') as p: pkgbuild_str = p.read() p.truncate(0) - p.seek(0, 0) + p.seek(0) pkgbuild_str = regex_pkgrel.sub("pkgrel=" + parsed["pkgrel"] + ".1", pkgbuild_str) p.write(pkgbuild_str)