aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKunoiSayami <[email protected]>2022-10-27 04:07:13 +0800
committerKunoiSayami <[email protected]>2022-10-27 04:09:29 +0800
commite8ed4e075fa6e6d47ed0936d344e285b8a1b069a (patch)
tree2c51a5bb876a505c6c72d1ee09798276fdd7b2ab
parent4074afc97ca9feac6990f39cebb384135a752238 (diff)
fix(script): Fix dependency build successful cause exit
Signed-off-by: KunoiSayami <[email protected]>
-rw-r--r--README.md4
-rw-r--r--docker/docker.env.default7
-rwxr-xr-xutils/pkgbuild.py25
-rwxr-xr-xutils/update-db.py3
4 files changed, 25 insertions, 14 deletions
diff --git a/README.md b/README.md
index d279688..dc6e71d 100644
--- a/README.md
+++ b/README.md
@@ -21,8 +21,8 @@ sudo pacman-key --lsign-key 4A0F0C8BC709ACA4341767FB243975C8DB9656B9
### For developers:
-Use commit message starts with `fix(repo)` will let CI/CD rebuild all packages, or you can use `REBUILD`/`REBUILD_ALL` in commit title.
-`REBUILD_ALL` will ignore [verified_packages](repo/.verified_repos).
+~~Use commit message starts with `fix(repo)` will let CI/CD rebuild all packages, or you can use `REBUILD`/`REBUILD_ALL` in commit title.
+`REBUILD_ALL` will ignore [verified_packages](repo/.verified_repos).~~ (WIP: refactor build script)
You need to open a pull request for every add package request.
diff --git a/docker/docker.env.default b/docker/docker.env.default
index 14c7976..f8e35b6 100644
--- a/docker/docker.env.default
+++ b/docker/docker.env.default
@@ -1,4 +1,9 @@
GPG_PRIV_KEY=
REMOTE_PATH=
UPLOAD_TOKEN=
-CHECKOUT_BRANCH=master \ No newline at end of file
+CHECKOUT_BRANCH=master
+#REMOTE_DATABASE=
+#BUILD_OVERRIDE=
+# Only check if env is set
+#FORCE_BUILD_ALL=
+#BUILD_FAIL_FAST=
diff --git a/utils/pkgbuild.py b/utils/pkgbuild.py
index a36f620..9194285 100755
--- a/utils/pkgbuild.py
+++ b/utils/pkgbuild.py
@@ -24,7 +24,7 @@ CI_DEFAULT_BRANCH = os.getenv("CI_DEFAULT_BRANCH", "")
CI_COMMIT_TITLE = os.getenv("CI_COMMIT_TITLE", "")
BUILD_OVERRIDE = os.getenv("BUILD_OVERRIDE", "")
TRUST_GPG_SCRIPT = pathlib.Path("./utils/trust_gpg.sh").resolve()
-GNUPG_HOME = os.getenv("HOME")
+NO_UPLOAD = os.getenv("BUILD_NO_UPLOAD") is None
FAIL_REPOS = {}
@@ -315,11 +315,12 @@ async def do_build(target: PackageVersionWithPath) -> int:
if (dep_dir := target.path.parent.joinpath(dep).resolve()).is_dir():
os.chdir(str(dep_dir))
await run_hook(target.path, dep)
- if not (
+ if (
ret := await run_build_with_install(**BUILD_ENVS.get_dict())
):
logger.error(
- "Build dependencies package error, skipped next step"
+ "Build dependencies package error, skipped next step (%d)",
+ ret,
)
return ret
else:
@@ -346,6 +347,7 @@ async def do_build(target: PackageVersionWithPath) -> int:
if build_ret == 13:
logger.warning("Already build %s, skipped.", base_dir_name)
return 0
+ # TODO: Optimize fail_repos output
FAIL_REPOS.update({base_dir_name: build_ret})
logger.warning("Build %s fail: %d", base_dir_name, build_ret)
@@ -363,13 +365,13 @@ async def clean_installed_packages() -> int:
return p.returncode
-async def upload_packages() -> None:
+async def upload_packages() -> int:
remote_path = os.getenv("REMOTE_PATH")
upload_token = os.getenv("UPLOAD_TOKEN")
if remote_path is None or upload_token is None:
logger.error("$REMOTE_PATH OR $UPLOAD_TOKEN is None, skipped upload")
await (
- await asyncio.create_subprocess_exec(
+ p := await asyncio.create_subprocess_exec(
"./utils/upload.py",
remote_path,
upload_token,
@@ -379,6 +381,7 @@ async def upload_packages() -> None:
stdout=None,
)
).wait()
+ return p.returncode
async def do_work(
@@ -387,7 +390,7 @@ async def do_work(
build_target: list[str],
fail_fast: bool = False,
run_auto_remove: bool = True,
-) -> None:
+) -> int:
logger.info(
"build_all: %s, fail_fast: %s, auto_remove: %s",
@@ -439,7 +442,10 @@ async def do_work(
os.chdir(str(home_directory))
if ret := await upload_packages():
- exit(ret)
+ return ret
+
+ if len(FAIL_REPOS):
+ return 1
def check_build_target(args: argparse.Namespace) -> bool:
@@ -454,7 +460,7 @@ if __name__ == "__main__":
parser = argparse.ArgumentParser(description="pkgbuild.py")
parser.add_argument("db_file")
parser.add_argument("--build_all", action="store_true")
- parser.add_argument("--build_target", nargs="*")
+ parser.add_argument("--build_target", nargs="*", default=list())
parser.add_argument("--sign", action="store_true")
parser.add_argument("--fail_fast", action="store_true")
args_ = parser.parse_args()
@@ -475,7 +481,7 @@ if __name__ == "__main__":
BUILD_ENVS = BuildEnvs()
if args_.sign:
BUILD_ENVS.signing_arg = ["--sign"]
- asyncio.run(
+ ret_ = asyncio.run(
do_work(
args_.db_file,
check_build_target(args_),
@@ -483,3 +489,4 @@ if __name__ == "__main__":
args_.fail_fast,
)
)
+ exit(ret_)
diff --git a/utils/update-db.py b/utils/update-db.py
index b3c3113..71da6f8 100755
--- a/utils/update-db.py
+++ b/utils/update-db.py
@@ -5,7 +5,6 @@ import logging
import os
import pathlib
import shutil
-import subprocess
logger = logging.getLogger()
@@ -39,7 +38,7 @@ async def main(remote_dest: str, repo_base_name: str, sign_key: str) -> None:
shutil.copy(str(remote_dest.joinpath(file).joinpath()), str(cwd))
for file in os.listdir(str(remote_dest)):
- if ".pkg.tar.zst" in file and not file.endswith('.sig'):
+ if ".pkg.tar.zst" in file and not file.endswith(".sig"):
await add_package(database_dest, file, sign_key)