diff --git a/lib/arch.py b/lib/arch.py index 9f73c67..c3702ce 100644 --- a/lib/arch.py +++ b/lib/arch.py @@ -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] diff --git a/x.py b/x.py index f31424a..b3af438 100644 --- a/x.py +++ b/x.py @@ -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)