Compare commits

..

2 Commits

Author SHA1 Message Date
Levente Polyak
37ae4f0498 Merge branch 'feat/license-check-no-source-pkgbuild' into 'master'
chore(license): avoid sourcing PKGBUILD in check subcommand

See merge request archlinux/devtools!322
2025-08-06 05:56:31 +02:00
Levente Polyak
7a64d33b88 chore(license): avoid sourcing PKGBUILD in check subcommand
We don't actually need any data from the package, except the pkgbase
which is exclusively used during logging. Simply grep the pkgbase name
and use the path during early code path issues.

Component: pkgctl license check
2025-08-02 06:30:25 +02:00
8 changed files with 16 additions and 68 deletions

View File

@@ -312,7 +312,7 @@ pkgctl_build() {
# Update pacman cache for auto-detection # Update pacman cache for auto-detection
if [[ -z ${REPO} ]]; then if [[ -z ${REPO} ]]; then
update_pacman_repo_cache stable update_pacman_repo_cache multilib
# Check valid repos if not resolved dynamically # Check valid repos if not resolved dynamically
elif ! in_array "${REPO}" "${DEVTOOLS_VALID_REPOS[@]}"; then elif ! in_array "${REPO}" "${DEVTOOLS_VALID_REPOS[@]}"; then
die "Invalid repository target: %s" "${REPO}" die "Invalid repository target: %s" "${REPO}"

View File

@@ -51,6 +51,7 @@ pkgctl_db_remove() {
local partial=0 local partial=0
local confirm=1 local confirm=1
local dbscripts_options=() local dbscripts_options=()
local lookup_repo=multilib
local pkgname local pkgname
# option checking # option checking
@@ -105,13 +106,13 @@ pkgctl_db_remove() {
update_pacman_repo_cache unstable update_pacman_repo_cache unstable
;; ;;
*-staging) *-staging)
update_pacman_repo_cache staging update_pacman_repo_cache multilib-staging
;; ;;
*-testing) *-testing)
update_pacman_repo_cache testing update_pacman_repo_cache multilib-testing
;; ;;
*) *)
update_pacman_repo_cache stable update_pacman_repo_cache multilib
;; ;;
esac esac

View File

@@ -94,19 +94,19 @@ pkgctl_license_check() {
pushd "${path}" >/dev/null pushd "${path}" >/dev/null
if [[ ! -f PKGBUILD ]]; then if [[ ! -f PKGBUILD ]]; then
msg_error "${BOLD}${pkgbase}:${ALL_OFF} no PKGBUILD found" msg_error "${BOLD}${path}:${ALL_OFF} no PKGBUILD found"
return 1 return 1
fi fi
# reset common PKGBUILD variables if [[ ! -f .SRCINFO ]]; then
unset pkgbase msg_error "${BOLD}${path}:${ALL_OFF} no .SRCINFO found"
return 1
# shellcheck source=contrib/makepkg/PKGBUILD.proto fi
if ! . ./PKGBUILD; then
msg_error "${BOLD}${pkgbase}:${ALL_OFF} failed to source PKGBUILD" if ! pkgbase=$(grep --max-count=1 --extended-regexp "pkgbase = (.+)" .SRCINFO | awk '{print $3}'); then
msg_error "${BOLD}${path}:${ALL_OFF} pkgbase not found in .SRCINFO"
return 1 return 1
fi fi
pkgbase=${pkgbase:-$pkgname}
if [[ ! -e LICENSE ]]; then if [[ ! -e LICENSE ]]; then
msg_error "${BOLD}${pkgbase}:${ALL_OFF} is missing the LICENSE file" msg_error "${BOLD}${pkgbase}:${ALL_OFF} is missing the LICENSE file"

View File

@@ -188,7 +188,6 @@ path = [
"README.md", "README.md",
"keys/**", "keys/**",
".SRCINFO", ".SRCINFO",
".gitignore",
".nvchecker.toml", ".nvchecker.toml",
"*.install", "*.install",
"*.sysusers", "*.sysusers",

View File

@@ -124,7 +124,7 @@ pkgctl_release() {
# Update pacman cache for auto-detection # Update pacman cache for auto-detection
if [[ -z ${REPO} ]]; then if [[ -z ${REPO} ]]; then
update_pacman_repo_cache stable update_pacman_repo_cache multilib
# Check valid repos if not resolved dynamically # Check valid repos if not resolved dynamically
elif ! in_array "${REPO}" "${DEVTOOLS_VALID_REPOS[@]}"; then elif ! in_array "${REPO}" "${DEVTOOLS_VALID_REPOS[@]}"; then
die "Invalid repository target: %s" "${REPO}" die "Invalid repository target: %s" "${REPO}"

View File

@@ -1,26 +0,0 @@
#!/hint/bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
[[ -z ${DEVTOOLS_INCLUDE_UTIL_MACHINE_SH:-} ]] || return 0
DEVTOOLS_INCLUDE_UTIL_MACHINE_SH=1
_DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@}
# shellcheck source=src/lib/common.sh
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh
set -eo pipefail
machine_get_hardware_name() {
uname --machine
}
machine_has_multilib() {
case "$(machine_get_hardware_name)" in
x86_64*)
return 0
;;
esac
return 1
}

View File

@@ -8,8 +8,6 @@ DEVTOOLS_INCLUDE_UTIL_PACMAN_SH=1
_DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@} _DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@}
# shellcheck source=src/lib/common.sh # shellcheck source=src/lib/common.sh
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh
# shellcheck source=src/lib/util/machine.sh
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/util/machine.sh
set -e set -e
@@ -20,8 +18,7 @@ readonly _DEVTOOLS_MAKEPKG_CONF_DIR=${_DEVTOOLS_LIBRARY_DIR}/makepkg.conf.d
update_pacman_repo_cache() { update_pacman_repo_cache() {
local repo=${1:-stable} local repo=${1:-multilib}
repo=$(pacman_resolve_virtual_repo_name "${repo}")
mkdir -p "${_DEVTOOLS_PACMAN_CACHE_DIR}" mkdir -p "${_DEVTOOLS_PACMAN_CACHE_DIR}"
msg "Updating pacman database cache" msg "Updating pacman database cache"
@@ -35,8 +32,7 @@ update_pacman_repo_cache() {
get_pacman_repo_from_pkgbuild() { get_pacman_repo_from_pkgbuild() {
local path=${1:-PKGBUILD} local path=${1:-PKGBUILD}
local repo=${2:-stable} local repo=${2:-multilib}
repo=$(pacman_resolve_virtual_repo_name "${repo}")
local -a pkgnames local -a pkgnames
# shellcheck source=contrib/makepkg/PKGBUILD.proto # shellcheck source=contrib/makepkg/PKGBUILD.proto
@@ -76,7 +72,6 @@ get_pkgnames_from_repo_pkgbase() {
# update the pacman repo cache if it doesn't exist yet # update the pacman repo cache if it doesn't exist yet
if [[ ! -d "${_DEVTOOLS_PACMAN_CACHE_DIR}" ]]; then if [[ ! -d "${_DEVTOOLS_PACMAN_CACHE_DIR}" ]]; then
# TODO: universe includes multilib, switch for architecture
update_pacman_repo_cache universe update_pacman_repo_cache universe
fi fi
@@ -96,23 +91,3 @@ get_pkgnames_from_repo_pkgbase() {
printf "%s\n" "${pkgnames[@]}" printf "%s\n" "${pkgnames[@]}"
return 0 return 0
} }
pacman_resolve_virtual_repo_name() {
local repo=$1
local repo_class=extra
if machine_has_multilib; then
repo_class=multilib
fi
case "${repo}" in
stable)
repo=${repo_class}
;;
testing|staging)
repo="${repo_class}-${repo}"
;;
esac
printf "%s" "${repo}"
}

View File

@@ -6,7 +6,6 @@
# shellcheck disable=2034 # shellcheck disable=2034
DEVTOOLS_VALID_BINARY_ARCHES=( DEVTOOLS_VALID_BINARY_ARCHES=(
x86_64 x86_64
aarch64
) )
# shellcheck disable=2034 # shellcheck disable=2034