1
0
Fork 1
mirror of https://gitlab.postmarketos.org/postmarketOS/pmbootstrap.git synced 2025-07-13 03:19:47 +03:00
pmbootstrap/pmb/helpers/lint.py
Caleb Connolly 34dd9d42ba
WIP: start ripping out args (MR 2252)
Cease merging pmbootstrap.cfg into args, implement a Context type to let
us pull globals out of thin air (as an intermediate workaround) and rip
args out of a lot of the codebase.

This is just a first pass, after this we can split all the state that
leaked over into Context into types with narrower scopes (like a
BuildContext(), etc).

Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
2024-06-23 12:38:38 +02:00

47 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.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
"""
pmb.chroot.apk.install(["atools"])
# 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(args, pmaports)
# 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)})