mirror of
https://gitlab.postmarketos.org/postmarketOS/pmbootstrap.git
synced 2025-07-13 03:19:47 +03:00
Continue removing args and do some other optimisations. Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
# Copyright 2023 Danct12 <danct12@disroot.org>
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
from pathlib import Path
|
|
from pmb.core.chroot import Chroot
|
|
from pmb.helpers import logging
|
|
import os
|
|
|
|
import pmb.chroot
|
|
import pmb.chroot.apk
|
|
import pmb.build
|
|
from pmb.types import PmbArgs
|
|
import pmb.helpers.run
|
|
import pmb.helpers.pmaports
|
|
|
|
|
|
def check(args: PmbArgs, pkgnames):
|
|
"""Run apkbuild-lint on the supplied packages.
|
|
|
|
:param pkgnames: Names of the packages to lint
|
|
"""
|
|
chroot = Chroot.native()
|
|
pmb.chroot.apk.install(["atools"], chroot)
|
|
|
|
# Mount pmaports.git inside the chroot so that we don't have to copy the
|
|
# package folders
|
|
pmaports = Path("/mnt/pmaports")
|
|
pmb.build.mount_pmaports(pmaports, chroot)
|
|
|
|
# Locate all APKBUILDs and make the paths be relative to the pmaports
|
|
# root
|
|
apkbuilds = []
|
|
for pkgname in pkgnames:
|
|
aport = pmb.helpers.pmaports.find(pkgname)
|
|
if not (aport / "APKBUILD").exists():
|
|
raise ValueError(f"Path does not contain an APKBUILD file: {aport}")
|
|
relpath = os.path.relpath(aport, args.aports)
|
|
apkbuilds.append(f"{relpath}/APKBUILD")
|
|
|
|
# Run apkbuild-lint in chroot from the pmaports mount point. This will
|
|
# print a nice source identifier à la "./cross/grub-x86/APKBUILD" for
|
|
# each violation.
|
|
pkgstr = ", ".join(pkgnames)
|
|
logging.info(f"(native) linting {pkgstr} with apkbuild-lint")
|
|
options = pmb.config.apkbuild_custom_valid_options
|
|
return pmb.chroot.root(["apkbuild-lint"] + apkbuilds,
|
|
check=False, output="stdout",
|
|
output_return=True,
|
|
working_dir=pmaports,
|
|
env={"CUSTOM_VALID_OPTIONS": " ".join(options)})
|