mirror of
				https://gitlab.archlinux.org/archlinux/devtools.git
				synced 2025-11-04 01:34:42 +01:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			master
			...
			eb6601c6e1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					eb6601c6e1 | ||
| 
						 | 
					f77b767971 | 
@@ -3,7 +3,7 @@ pkgctl-auth(1)
 | 
			
		||||
 | 
			
		||||
Name
 | 
			
		||||
----
 | 
			
		||||
pkgctl-auth - Authenticate with services like GitLab.
 | 
			
		||||
pkgctl-auth - Authenticate with serivces like GitLab.
 | 
			
		||||
 | 
			
		||||
Synopsis
 | 
			
		||||
--------
 | 
			
		||||
 
 | 
			
		||||
@@ -39,17 +39,6 @@ placed in the `$XDG_CONFIG_HOME`/nvchecker` directory. This keyfile is
 | 
			
		||||
used for providing the necessary authentication tokens required for
 | 
			
		||||
accessing the GitHub or GitLab API.
 | 
			
		||||
 | 
			
		||||
Combiner Source
 | 
			
		||||
---------------
 | 
			
		||||
 | 
			
		||||
To utilize the combiner source, the `pkgbase` section must be declared as the
 | 
			
		||||
combiner source. Additionally, individual sections should be added using a
 | 
			
		||||
quoted table key consisting of the `pkgbase` followed by the stage name,
 | 
			
		||||
separated by double colons. For example: `["sudo:stage1"]`.
 | 
			
		||||
 | 
			
		||||
This allows to chain different sources together into one result, or allow
 | 
			
		||||
multi stage transformation of our source via multiple regex.
 | 
			
		||||
 | 
			
		||||
Options
 | 
			
		||||
-------
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -49,9 +49,6 @@ pkgctl diff::
 | 
			
		||||
pkgctl issue::
 | 
			
		||||
	Work with GitLab packaging issues
 | 
			
		||||
 | 
			
		||||
pkgctl license::
 | 
			
		||||
	Check and manage package licenses
 | 
			
		||||
 | 
			
		||||
pkgctl release::
 | 
			
		||||
	Release step to commit, tag and upload build artifacts
 | 
			
		||||
 | 
			
		||||
@@ -73,7 +70,6 @@ pkgctl-build(1)
 | 
			
		||||
pkgctl-db(1)
 | 
			
		||||
pkgctl-diff(1)
 | 
			
		||||
pkgctl-issue(1)
 | 
			
		||||
pkgctl-license(1)
 | 
			
		||||
pkgctl-release(1)
 | 
			
		||||
pkgctl-repo(1)
 | 
			
		||||
pkgctl-search(1)
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,8 @@ _DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@}
 | 
			
		||||
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh
 | 
			
		||||
# shellcheck source=src/lib/util/srcinfo.sh
 | 
			
		||||
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/util/srcinfo.sh
 | 
			
		||||
# shellcheck source=src/lib/state.sh
 | 
			
		||||
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/state.sh
 | 
			
		||||
 | 
			
		||||
source /usr/share/makepkg/util/util.sh
 | 
			
		||||
 | 
			
		||||
@@ -246,6 +248,9 @@ declare -a uploads
 | 
			
		||||
declare -a commit_arches
 | 
			
		||||
declare -a skip_arches
 | 
			
		||||
 | 
			
		||||
BUILD_STATE_DIR=$(get_state_folder "build-state")
 | 
			
		||||
state_file=
 | 
			
		||||
 | 
			
		||||
for _arch in "${arch[@]}"; do
 | 
			
		||||
	if [[ -n $commit_arch && ${_arch} != "$commit_arch" ]]; then
 | 
			
		||||
		skip_arches+=("$_arch")
 | 
			
		||||
@@ -259,6 +264,12 @@ for _arch in "${arch[@]}"; do
 | 
			
		||||
			skip_arches+=("$_arch")
 | 
			
		||||
			continue 2
 | 
			
		||||
		fi
 | 
			
		||||
 | 
			
		||||
		state_file="${BUILD_STATE_DIR}/$(basename "${pkgfile}").txt"
 | 
			
		||||
		if [[ -f "${state_file}" ]] && [[ $(cat "${state_file}") != "${repo}" ]]; then
 | 
			
		||||
			error "%s was not built against '%s', aborting" "${pkgfile}" "${repo}"
 | 
			
		||||
			exit 1
 | 
			
		||||
		fi
 | 
			
		||||
		uploads+=("$pkgfile")
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -12,6 +12,8 @@ source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh
 | 
			
		||||
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/db/update.sh
 | 
			
		||||
# shellcheck source=src/lib/release.sh
 | 
			
		||||
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/release.sh
 | 
			
		||||
# shellcheck source=src/lib/state.sh
 | 
			
		||||
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/state.sh
 | 
			
		||||
# shellcheck source=src/lib/util/git.sh
 | 
			
		||||
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/util/git.sh
 | 
			
		||||
# shellcheck source=src/lib/util/srcinfo.sh
 | 
			
		||||
@@ -129,6 +131,7 @@ pkgctl_build() {
 | 
			
		||||
	local PKGVER=
 | 
			
		||||
	local PKGREL=
 | 
			
		||||
	local MESSAGE=
 | 
			
		||||
	local BUILD_STATE_DIR=
 | 
			
		||||
 | 
			
		||||
	local paths=()
 | 
			
		||||
	local BUILD_ARCH=()
 | 
			
		||||
@@ -304,6 +307,8 @@ pkgctl_build() {
 | 
			
		||||
		fi
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	BUILD_STATE_DIR=$(get_state_folder "build-state")
 | 
			
		||||
 | 
			
		||||
	# assign default worker slot
 | 
			
		||||
	if [[ -z ${WORKER_SLOT} ]] && ! WORKER_SLOT="$(tty | sed 's|/dev/pts/||')"; then
 | 
			
		||||
		WORKER_SLOT=$(( RANDOM % $(nproc) + 1 ))
 | 
			
		||||
@@ -481,25 +486,26 @@ pkgctl_build() {
 | 
			
		||||
		# shellcheck disable=SC2119
 | 
			
		||||
		write_srcinfo_file
 | 
			
		||||
 | 
			
		||||
		# test-install (some of) the produced packages
 | 
			
		||||
		if [[ ${INSTALL_TO_HOST} == auto ]] || [[ ${INSTALL_TO_HOST} == all ]]; then
 | 
			
		||||
			# shellcheck disable=2119
 | 
			
		||||
			load_makepkg_config
 | 
			
		||||
		# shellcheck disable=2119
 | 
			
		||||
		load_makepkg_config
 | 
			
		||||
 | 
			
		||||
			# this is inspired by print_all_package_names from libmakepkg
 | 
			
		||||
			local version pkg_architecture pkg pkgfile
 | 
			
		||||
			version=$(get_full_version)
 | 
			
		||||
		# this is inspired by print_all_package_names from libmakepkg
 | 
			
		||||
		local version pkg_architecture pkg pkgfile
 | 
			
		||||
		version=$(get_full_version)
 | 
			
		||||
 | 
			
		||||
			for pkg in "${pkgname[@]}"; do
 | 
			
		||||
				pkg_architecture=$(get_pkg_arch "$pkg")
 | 
			
		||||
				pkgfile=$(realpath "$(printf "%s/%s-%s-%s%s\n" "${PKGDEST:-.}" "$pkg" "$version" "$pkg_architecture" "$PKGEXT")")
 | 
			
		||||
		for pkg in "${pkgname[@]}"; do
 | 
			
		||||
			pkg_architecture=$(get_pkg_arch "$pkg")
 | 
			
		||||
			pkgpath=$(realpath "$(printf "%s\n" "${PKGDEST:-.}")")
 | 
			
		||||
			pkgfile=$(printf "%s-%s-%s%s\n" "$pkg" "$version" "$pkg_architecture" "$PKGEXT")
 | 
			
		||||
 | 
			
		||||
				# check if we install all packages or if the (split-)package is already installed
 | 
			
		||||
				if [[ ${INSTALL_TO_HOST} == all ]] || ( [[ ${INSTALL_TO_HOST} == auto ]] && pacman -Qq -- "$pkg" &>/dev/null ); then
 | 
			
		||||
					INSTALL_HOST_PACKAGES+=("$pkgfile")
 | 
			
		||||
				fi
 | 
			
		||||
			done
 | 
			
		||||
		fi
 | 
			
		||||
			# check if we install all packages or if the (split-)package is already installed
 | 
			
		||||
			if [[ ${INSTALL_TO_HOST} == all ]] || ( [[ ${INSTALL_TO_HOST} == auto ]] && pacman -Qq -- "$pkg" &>/dev/null ); then
 | 
			
		||||
				INSTALL_HOST_PACKAGES+=("${pkgpath}/${pkgfile}")
 | 
			
		||||
			fi
 | 
			
		||||
 | 
			
		||||
			# save against which repo we have built the package
 | 
			
		||||
			printf "%s" "${pkgrepo}" > "${BUILD_STATE_DIR}/${pkgfile}.txt"
 | 
			
		||||
		done
 | 
			
		||||
 | 
			
		||||
		# release the build
 | 
			
		||||
		if (( RELEASE )); then
 | 
			
		||||
 
 | 
			
		||||
@@ -54,8 +54,7 @@ export RSYNC_OPTS=(
 | 
			
		||||
  --human-readable
 | 
			
		||||
  --progress
 | 
			
		||||
  --partial
 | 
			
		||||
  # suffix the partial dir with the PID in order to avoid clashes
 | 
			
		||||
  --partial-dir=.partial.$$
 | 
			
		||||
  --partial-dir=.partial
 | 
			
		||||
  --delay-updates
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -442,10 +441,3 @@ relative_date_unit() {
 | 
			
		||||
	done
 | 
			
		||||
	printf "1 second"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# escapes regex metacharacters in a given string
 | 
			
		||||
regex_escape() {
 | 
			
		||||
	# shellcheck disable=SC2001,SC2016
 | 
			
		||||
	sed 's/[\^.\[$()|*+?{\\]/\\&/g' <<<"$1"
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -94,19 +94,19 @@ pkgctl_license_check() {
 | 
			
		||||
		pushd "${path}" >/dev/null
 | 
			
		||||
 | 
			
		||||
		if [[ ! -f PKGBUILD ]]; then
 | 
			
		||||
			msg_error "${BOLD}${path}:${ALL_OFF} no PKGBUILD found"
 | 
			
		||||
			msg_error "${BOLD}${pkgbase}:${ALL_OFF} no PKGBUILD found"
 | 
			
		||||
			return 1
 | 
			
		||||
		fi
 | 
			
		||||
 | 
			
		||||
		if [[ ! -f .SRCINFO ]]; then
 | 
			
		||||
			msg_error "${BOLD}${path}:${ALL_OFF} no .SRCINFO found"
 | 
			
		||||
			return 1
 | 
			
		||||
		fi
 | 
			
		||||
		# reset common PKGBUILD variables
 | 
			
		||||
		unset pkgbase
 | 
			
		||||
 | 
			
		||||
		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"
 | 
			
		||||
		# shellcheck source=contrib/makepkg/PKGBUILD.proto
 | 
			
		||||
		if ! . ./PKGBUILD; then
 | 
			
		||||
			msg_error "${BOLD}${pkgbase}:${ALL_OFF} failed to source PKGBUILD"
 | 
			
		||||
			return 1
 | 
			
		||||
		fi
 | 
			
		||||
		pkgbase=${pkgbase:-$pkgname}
 | 
			
		||||
 | 
			
		||||
		if [[ ! -e LICENSE ]]; then
 | 
			
		||||
			msg_error "${BOLD}${pkgbase}:${ALL_OFF} is missing the LICENSE file"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								src/lib/state.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/lib/state.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
#!/hint/bash
 | 
			
		||||
#
 | 
			
		||||
# SPDX-License-Identifier: GPL-3.0-or-later
 | 
			
		||||
 | 
			
		||||
[[ -z ${DEVTOOLS_INCLUDE_STATE_SH:-} ]] || return 0
 | 
			
		||||
DEVTOOLS_INCLUDE_STATE_SH=1
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
readonly XDG_DEVTOOLS_STATE_DIR="${XDG_STATE_HOME:-$HOME/.local/state}/devtools"
 | 
			
		||||
 | 
			
		||||
get_state_folder() {
 | 
			
		||||
	local foldername=$1
 | 
			
		||||
	local path="${XDG_DEVTOOLS_STATE_DIR}/${foldername}"
 | 
			
		||||
 | 
			
		||||
	mkdir --parents -- "$path"
 | 
			
		||||
	printf '%s' "${path}"
 | 
			
		||||
}
 | 
			
		||||
@@ -6,8 +6,6 @@
 | 
			
		||||
DEVTOOLS_INCLUDE_UTIL_PKGBUILD_SH=1
 | 
			
		||||
 | 
			
		||||
_DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@}
 | 
			
		||||
# shellcheck source=src/lib/common.sh
 | 
			
		||||
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh
 | 
			
		||||
# shellcheck source=src/lib/util/makepkg.sh
 | 
			
		||||
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/util/makepkg.sh
 | 
			
		||||
 | 
			
		||||
@@ -23,8 +21,6 @@ pkgbuild_set_pkgver() {
 | 
			
		||||
	local new_pkgver=$1
 | 
			
		||||
	local pkgver=${pkgver}
 | 
			
		||||
 | 
			
		||||
	pkgver="$(regex_escape "${pkgver}")"
 | 
			
		||||
 | 
			
		||||
	if [[ $(type -t pkgver) == function ]]; then
 | 
			
		||||
		# TODO: check if die or warn, if we provide _commit _gitcommit setter maybe?
 | 
			
		||||
		warning 'setting pkgver variable has no effect if the PKGBUILD has a pkgver() function'
 | 
			
		||||
 
 | 
			
		||||
@@ -304,11 +304,6 @@ get_upstream_version() {
 | 
			
		||||
		return 1
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	if ! output=$(jq --raw-output --exit-status 'select(.name == "'"${pkgbase}"'")' <<< "${output}"); then
 | 
			
		||||
		printf "failed to select pkgbase result from output"
 | 
			
		||||
		return 1
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	if ! upstream_version=$(jq --raw-output --exit-status '.version' <<< "${output}"); then
 | 
			
		||||
		printf "failed to select version from result"
 | 
			
		||||
		return 1
 | 
			
		||||
@@ -351,16 +346,10 @@ nvchecker_check_config() {
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	# check if the config contains any section other than pkgbase
 | 
			
		||||
	if [[ -n ${pkgbase} ]] && property=$(grep --max-count=1 --perl-regexp "^\\[(?!\"?${pkgbase//+/\\+}(:.+)?\"?\\]).+\\]" < "${config}"); then
 | 
			
		||||
	if [[ -n ${pkgbase} ]] && property=$(grep --max-count=1 --perl-regexp "^\\[(?!\"?${pkgbase//+/\\+}\"?\\]).+\\]" < "${config}"); then
 | 
			
		||||
		printf "non-pkgbase section not supported in %s: %s" "${config}" "${property}"
 | 
			
		||||
		return 1
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	# check if the config is using the 'cmd' source
 | 
			
		||||
	if grep --extended-regexp --quiet '^\s*source\s*=\s*["'\'']cmd["'\''].*' "${config}"; then
 | 
			
		||||
		printf "using the 'cmd' source in %s is disallowed" "${config}"
 | 
			
		||||
		return 1
 | 
			
		||||
	fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nvchecker_check_error() {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user