Compare commits

..

6 Commits

Author SHA1 Message Date
Levente Polyak
1b808b8e32 chore(release): version v1.0.1 2023-05-24 03:19:26 +02:00
Chih-Hsuan Yen
e4c40a9802 fix(completion): incorporate repo layout into offload-build completion
Use new repo names for build targets. This follows /usr/bin/*-build
links other than x86_64_v3 ones.
2023-05-24 03:06:03 +02:00
Levente Polyak
a08bc2acf4 feature(clone): add protocol option to force cloning over HTTPS
This is a rather quick and simple implementation to override the current
logic and force clone with HTTPS. Allowing to explicitly clone over HTTPS
is currently required to unblock reproducible builds where no ssh keys
and GitLab user accounts are set up as of now. Hence this quick solution
comes into play to mitigate the regression on reproducible builds
builders.

Revisit the overall auto detection and protocol logic approach for a
later release related to some ideas floating around in pending
merge-requests.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-24 02:50:08 +02:00
Morten Linderud
f11cb9018e feature(commitpkg): auto generate .SRCINFO if present
This currently makes .SRCINFO files opt-in and helps to keep the file up
to date if already present.

Signed-off-by: Morten Linderud <foxboron@archlinux.org>
2023-05-23 03:03:39 +02:00
Jan Alexander Steffens (heftig)
d759eadb50 fix(diffpkg): Fix scoping of DIFFOPTIONS when comparing split pkgs
`diff_pkgs` needs to use a local variable for its options, otherwise
they will accumulate for each package diffed.

Whem comparing split packages this lead to earlier mutated DIFFOPTIONS
containing too many labels which resulted in a failure.
2023-05-23 02:20:03 +02:00
Jan Alexander Steffens (heftig)
1c399778f9 fix(commitpkg): reliably check tree status regardless of configuration
Check git status --porcelain, not --short.

`--short` is influenced by user configuration like `status.branch`
making it non-empty even on a clean tree. Use `--porcelain` to avoid
this.
2023-05-23 01:47:00 +02:00
10 changed files with 63 additions and 10 deletions

View File

@@ -1,6 +1,6 @@
SHELL=/bin/bash
V=1.0.0
V=1.0.1
BUILDTOOLVER ?= $(V)
PREFIX = /usr/local

View File

@@ -265,6 +265,7 @@ _pkgctl_repo_cmds=(
_pkgctl_repo_clone_args=(
-m --maintainer
--protocol
--switch
-u --unprivileged
--universe
@@ -273,6 +274,7 @@ _pkgctl_repo_clone_args=(
)
_pkgctl_repo_clone_args__maintainer_opts() { :; }
_pkgctl_repo_clone_args_m_opts() { _pkgctl_repo_clone_args__maintainer_opts; }
_pkgctl_repo_clone_args__protocol_opts() { _devtools_completions_protocol; }
_pkgctl_repo_clone_args__switch_opts() { :; }
_pkgctl_repo_clone_args__jobs_opts() { :; }
_pkgctl_repo_clone_args_j_opts() { _pkgctl_repo_clone_args__jobs_opts; }
@@ -280,9 +282,11 @@ _pkgctl_repo_clone_opts() { _devtools_completions_all_packages; }
_pkgctl_repo_configure_args=(
--protocol
-j --jobs
-h --help
)
_pkgctl_repo_configure_args__protocol_opts() { _devtools_completions_protocol; }
_pkgctl_repo_configure_args__jobs_opts() { :; }
_pkgctl_repo_configure_args_j_opts() { _pkgctl_repo_clone_args__jobs_opts; }
_pkgctl_repo_configure_opts() { _filedir -d; }
@@ -363,6 +367,9 @@ _devtools_completions_build_repo() {
_devtools_completions_all_packages() {
mapfile -t COMPREPLY < <(compgen -W "$(pacman -Sql)" -- "$cur")
}
_devtools_completions_protocol() {
mapfile -t COMPREPLY < <(compgen -W "https" -- "$cur")
}
__devtools_complete() {
local service=$1

View File

@@ -108,6 +108,7 @@ _pkgctl_repo_switch_args=(
_pkgctl_repo_clone_args=(
'(-m --maintainer=)'{-m,--maintainer=}'[Clone all packages of the named maintainer]:maintainer:'
'--protocol[Clone the repository over https]:proto:(https)'
'--switch=[Switch the current working tree to a specified version]'
'--universe[Clone all existing packages, useful for cache warming]'
'(-j --jobs)'{-j,--jobs}'[Run up to N jobs in parallel (default: number of processing units)]:jobs:'
@@ -116,6 +117,7 @@ _pkgctl_repo_clone_args=(
)
_pkgctl_repo_configure_args=(
'--protocol[Configure remote url to use https]:proto:(https)'
'(-j --jobs)'{-j,--jobs}'[Run up to N jobs in parallel (default: number of processing units)]:jobs:'
'(-h --help)'{-h,--help}'[Display usage]'
'*:git_dir:_files -/'

View File

@@ -25,6 +25,9 @@ Options
*-m, --maintainer* 'NAME'::
Clone all packages of the named maintainer
*--protocol* 'https'::
Clone the repository over https
*--universe*::
Clone all existing packages, useful for cache warming

View File

@@ -25,6 +25,9 @@ read-only HTTPS otherwise.
Options
-------
*--protocol* 'https'::
Configure remote url to use https
*-j, --jobs* 'N'::
Run up to N jobs in parallel. By default the number of jobs is equal to the
number of available processing units. For sequential processing this option

View File

@@ -173,7 +173,15 @@ done
# check for PKGBUILD standards
check_pkgbuild_validity
if [[ -n $(git status --short --untracked-files=no) ]]; then
# auto generate .SRCINFO if present
if [[ -f .SRCINFO ]]; then
stat_busy 'Generating .SRCINFO'
makepkg --printsrcinfo > .SRCINFO
git add .SRCINFO
stat_done
fi
if [[ -n $(git status --porcelain --untracked-files=no) ]]; then
stat_busy 'Staging files'
for f in $(git ls-files --modified); do
git add "$f"

View File

@@ -215,7 +215,8 @@ diff_pkgs() {
[[ -f $oldpkg ]] || die "No such file: %s" "${oldpkg}"
[[ -f $newpkg ]] || die "No such file: %s" "${newpkg}"
DIFFOPTIONS+=(--label "${oldpkg}" --label "${newpkg}")
local -a diffoptions
diffoptions=("${DIFFOPTIONS[@]}" --label "${oldpkg}" --label "${newpkg}")
if (( TARLIST )); then
tar_list "$oldpkg" > "$TMPDIR/old"
@@ -236,7 +237,7 @@ diff_pkgs() {
# Resolve dynamic auto width one we know the content to diff
if [[ $DIFFWIDTH == --width=auto ]]; then
AUTOLENGTH=$(file_diff_columns "$TMPDIR/old" "$TMPDIR/new")
DIFFOPTIONS+=("--width=${AUTOLENGTH}")
diffoptions+=("--width=${AUTOLENGTH}")
fi
# Print a header for side-by-side view as it lacks labels
@@ -244,7 +245,7 @@ diff_pkgs() {
printf -- "--- %s\n+++ %s\n" "${oldpkg}" "${newpkg}"
fi
diff "${DIFFOPTIONS[@]}" "$TMPDIR/old" "$TMPDIR/new"
diff "${diffoptions[@]}" "$TMPDIR/old" "$TMPDIR/new"
fi
if (( DIFFOSCOPE )); then

View File

@@ -26,12 +26,13 @@ pkgctl_repo_clone_usage() {
Clone Git packaging repositories from the canonical namespace.
The configure command is subsequently invoked to synchronize the distro
specs and makepkg.conf settings. The unprivileged option can be used
specs and makepkg.conf settings. The protocol option can be used
for cloning packaging repositories without SSH access using read-only
HTTPS.
OPTIONS
-m, --maintainer=NAME Clone all packages of the named maintainer
--protocol https Clone the repository over https
--switch VERSION Switch the current working tree to a specified version
--universe Clone all existing packages, useful for cache warming
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
@@ -69,11 +70,21 @@ pkgctl_repo_clone() {
pkgctl_repo_clone_usage
exit 0
;;
-u|--unprivileged)
--protocol=https)
GIT_REPO_BASE_URL=${GIT_PACKAGING_URL_HTTPS}
CONFIGURE_OPTIONS+=("$1")
shift
;;
--protocol)
(( $# <= 1 )) && die "missing argument for %s" "$1"
if [[ $2 == https ]]; then
GIT_REPO_BASE_URL=${GIT_PACKAGING_URL_HTTPS}
else
die "unsupported protocol: %s" "$2"
fi
CONFIGURE_OPTIONS+=("$1" "$2")
shift 2
;;
-m|--maintainer)
(( $# <= 1 )) && die "missing argument for %s" "$1"
MAINTAINER="$2"

View File

@@ -33,6 +33,7 @@ pkgctl_repo_configure_usage() {
read-only HTTPS otherwise.
OPTIONS
--protocol https Configure remote url to use https
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
-h, --help Show this help text
@@ -94,6 +95,7 @@ pkgctl_repo_configure() {
local GIT_REPO_BASE_URL=${GIT_PACKAGING_URL_HTTPS}
local official=0
local proto=https
local proto_force=0
local jobs=
jobs=$(nproc)
local paths=()
@@ -109,6 +111,19 @@ pkgctl_repo_configure() {
pkgctl_repo_configure_usage
exit 0
;;
--protocol=https)
proto_force=1
shift
;;
--protocol)
(( $# <= 1 )) && die "missing argument for %s" "$1"
if [[ $2 == https ]]; then
proto_force=1
else
die "unsupported protocol: %s" "$2"
fi
shift 2
;;
-j|--jobs)
(( $# <= 1 )) && die "missing argument for %s" "$1"
jobs=$2
@@ -152,8 +167,10 @@ pkgctl_repo_configure() {
fi
if is_packager_email_official "${packager_email}"; then
official=1
proto=ssh
GIT_REPO_BASE_URL=${GIT_PACKAGING_URL_SSH}
if (( ! proto_force )); then
proto=ssh
GIT_REPO_BASE_URL=${GIT_PACKAGING_URL_SSH}
fi
fi
fi

View File

@@ -14,7 +14,8 @@ _repos=(
# shellcheck disable=2034
_build_repos=(
extra staging testing
core-staging core-testing
extra extra-staging extra-testing
multilib multilib-staging multilib-testing
gnome-unstable
kde-unstable