feat: refactor ./x script

Signed-off-by: sisungo <[email protected]>
This commit is contained in:
2026-06-22 17:38:23 +08:00
parent 95a92ddae2
commit 9ca10cb556
2 changed files with 59 additions and 9 deletions
+14 -3
View File
@@ -3,7 +3,18 @@ import os
from . import packie
all: dict[str, dict[str, str]] = {
"aarch64-semios-linux": {},
"aarch64-semios-linux": {
"CC": "clang -target aarch64-semios-linux-musl",
"CXX": "clang++ -target aarch64-semios-linux-musl",
},
"x86_64-semios-linux": {
"CC": "clang -target x86_64-semios-linux-musl",
"CXX": "clang++ -target x86_64-semios-linux-musl",
},
"riscv64-semios-linux": {
"CC": "clang -target riscv64-semios-linux-musl",
"CXX": "clang++ -target riscv64-semios-linux-musl",
},
}
_target: str = packie.host_arch()
@@ -15,5 +26,5 @@ def get_target():
def set_target(arch: str):
global _target
_target = arch
for key, val in all[_target]:
os.environ[key] = val
for key in all[_target].keys():
os.environ[key] = all[_target][key]
+45 -6
View File
@@ -20,8 +20,13 @@ argparser = argparse.ArgumentParser(
argparser.add_argument(
"--target", type=str, help="Target architecture to build the package for"
)
argparser.add_argument("--build", type=str, help="Package to build")
argparser.add_argument("--clean", type=str, help="Package to clean")
subparsers = argparser.add_subparsers(dest="subcommand")
parser_build = subparsers.add_parser("build")
parser_build.add_argument("BUILD_PKGNAME")
parser_clean = subparsers.add_parser("clean")
parser_clean.add_argument("CLEAN_PKGNAME")
parser_list = subparsers.add_parser("list")
parser_list.add_argument("ITEM", choices=("all", "built", "new"))
args = argparser.parse_args()
if args.target:
@@ -105,6 +110,10 @@ def run_build_package(package: str):
composer.write_manifest(manifest)
composer.compose()
# Build success
with open(f"{package_dir}/target/build-ok.tag", "wt+") as file:
file.write("OK")
def run_clean_package(package: str):
try:
@@ -113,7 +122,37 @@ def run_clean_package(package: str):
pass
if args.build:
run_build_package(args.build)
if args.clean:
run_clean_package(args.clean)
def run_list(item):
if item == "all":
for i in os.listdir("packages"):
if i.startswith("."):
continue
print(i)
elif item == "built":
for i in os.listdir("packages"):
if i.startswith("."):
continue
if os.path.exists(f"packages/{i}/target/build-ok.tag"):
print(i)
elif item == "new":
for i in os.listdir("packages"):
if i.startswith("."):
continue
try:
pkgbuild_mtime = os.path.getmtime(f"packages/{i}/pkgbuild.py")
target_mtime = os.path.getmtime(f"packages/{i}/target/build-ok.tag")
if target_mtime < pkgbuild_mtime:
print(i)
except Exception:
print(i)
if args.subcommand == "build":
run_build_package(args.BUILD_PKGNAME)
elif args.subcommand == "clean":
run_clean_package(args.CLEAN_PKGNAME)
elif args.subcommand == "list":
run_list(args.ITEM)
else:
print("error: no action specified", file=sys.stderr)
exit(1)