forked from semios/ports
@@ -6,12 +6,7 @@ import sys
|
||||
import typing
|
||||
|
||||
import hooks
|
||||
import lib.arch
|
||||
import lib.atombuild
|
||||
import lib.make
|
||||
import lib.packie
|
||||
import lib.pkgcomposer
|
||||
import lib.sources
|
||||
import lib
|
||||
|
||||
os.chdir(os.path.dirname(__file__))
|
||||
sys.path.append(os.path.abspath("lib"))
|
||||
@@ -35,6 +30,9 @@ parser_list.add_argument("ITEM", choices=("all", "built", "new"))
|
||||
parser_repo_push = subparsers.add_parser("repo-push")
|
||||
parser_repo_push.add_argument("REPO_DIR")
|
||||
parser_repo_push.add_argument("REPO_PUSH_PKGNAME", nargs="*")
|
||||
parser_vendor_src = subparsers.add_parser("vendor-src")
|
||||
parser_vendor_src.add_argument("REPO_DIR")
|
||||
parser_vendor_src.add_argument("VENDOR_PKGNAME")
|
||||
args = argparser.parse_args()
|
||||
|
||||
if args.target:
|
||||
@@ -43,6 +41,22 @@ else:
|
||||
lib.arch.set_target(lib.arch.get_target())
|
||||
|
||||
|
||||
def load_pkgbuild(pkgname):
|
||||
# Declare necessary paths
|
||||
repo_root = os.getcwd()
|
||||
package_dir = f"{repo_root}/packages/{pkgname}"
|
||||
target_dir = f"{package_dir}/target"
|
||||
|
||||
try:
|
||||
os.chdir(package_dir)
|
||||
os.makedirs(target_dir, exist_ok=True)
|
||||
except Exception:
|
||||
print(f"No such package {pkgname}")
|
||||
exit(1)
|
||||
importlib.import_module(f"packages.{pkgname}.pkgbuild")
|
||||
os.chdir(repo_root)
|
||||
|
||||
|
||||
def run_hooks(map, arg: typing.Any = None):
|
||||
current_dir = os.getcwd()
|
||||
for n in map.keys():
|
||||
@@ -190,15 +204,8 @@ def cmd_build_atom(pkgname: str):
|
||||
build_env_root = f"{target_dir}/atombuild_root"
|
||||
|
||||
# Read `pkgbuild.py` of that package
|
||||
lib.make._in_atombuild = True
|
||||
try:
|
||||
os.chdir(package_dir)
|
||||
os.makedirs(target_dir, exist_ok=True)
|
||||
except Exception:
|
||||
print(f"No such package {pkgname}")
|
||||
exit(1)
|
||||
importlib.import_module(f"packages.{pkgname}.pkgbuild")
|
||||
os.chdir(repo_root)
|
||||
lib.make._dry_run = True
|
||||
load_pkgbuild(pkgname)
|
||||
|
||||
# Initialize build environment
|
||||
lib.atombuild.prepare_build_env(build_env_root, lib.make._builddep)
|
||||
@@ -238,6 +245,24 @@ def cmd_repo_push(repo_dir: str, pkgname: list[str]):
|
||||
print(f"error: failed to add '{pkg}': see the output above")
|
||||
|
||||
|
||||
def cmd_vendor_src(repo_dir, pkgname):
|
||||
package_dir = f"{os.getcwd()}/packages/{pkgname}"
|
||||
target_dir = f"{package_dir}/target"
|
||||
lib.make._dry_run = True
|
||||
load_pkgbuild(pkgname)
|
||||
if lib.make._managed_source_url is None:
|
||||
print(f"error: '{pkgname}' declared not managed sources")
|
||||
exit(1)
|
||||
os.chdir(package_dir)
|
||||
from_path = lib.managed_source.create_srcpkg(
|
||||
lib.make._managed_source_url,
|
||||
lib.make._managed_source_postprocess,
|
||||
)
|
||||
filename = lib.managed_source.get_repo_filename(lib.make._managed_source_url)
|
||||
to_path = f"{repo_dir}/{filename}"
|
||||
shutil.copy2(from_path, to_path)
|
||||
|
||||
|
||||
if args.subcommand == "build":
|
||||
if args.atombuild:
|
||||
cmd_build_atom(args.BUILD_PKGNAME)
|
||||
@@ -253,6 +278,8 @@ elif args.subcommand == "list":
|
||||
cmd_list(args.ITEM)
|
||||
elif args.subcommand == "repo-push":
|
||||
cmd_repo_push(args.REPO_DIR, args.REPO_PUSH_PKGNAME)
|
||||
elif args.subcommand == "vendor-src":
|
||||
cmd_vendor_src(args.REPO_DIR, args.VENDOR_PKGNAME)
|
||||
else:
|
||||
print("error: no action specified", file=sys.stderr)
|
||||
exit(1)
|
||||
|
||||
Reference in New Issue
Block a user