+14
-3
@@ -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]
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user