mirror of
https://gitlab.archlinux.org/archlinux/devtools.git
synced 2025-11-21 17:54:41 +01:00
Compare commits
13 Commits
179-build-
...
wip-testin
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
88b595433a | ||
|
|
e1401ce41c | ||
|
|
8612b41a20 | ||
|
|
fbb661645b | ||
|
|
f1dc2e18f7 | ||
|
|
c9d821448b | ||
|
|
a620250535 | ||
|
|
27eebe383d | ||
|
|
d6d416b653 | ||
|
|
9ff63503b9 | ||
|
|
3f02a1a24c | ||
|
|
1df0979da6 | ||
|
|
c1a3ed224b |
15
.editorconfig
Normal file
15
.editorconfig
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# EditorConfig configuration for devtools
|
||||||
|
# https://editorconfig.org
|
||||||
|
|
||||||
|
# Top-most EditorConfig file
|
||||||
|
root = true
|
||||||
|
|
||||||
|
# Unix-style newlines without trailing whitespaces, but with a newline
|
||||||
|
# ending every file, utf-8 charset, set indent to tabs
|
||||||
|
[*]
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
charset = utf-8
|
||||||
|
indent_style = tab
|
||||||
|
tab_width = 4
|
||||||
9
Makefile
9
Makefile
@@ -1,6 +1,6 @@
|
|||||||
SHELL=/bin/bash -o pipefail
|
SHELL=/bin/bash -o pipefail
|
||||||
|
|
||||||
V=1.2.0
|
V=1.2.1
|
||||||
BUILDTOOLVER ?= $(V)
|
BUILDTOOLVER ?= $(V)
|
||||||
|
|
||||||
PREFIX = /usr/local
|
PREFIX = /usr/local
|
||||||
@@ -184,6 +184,13 @@ coverage: binprogs library conf completion man
|
|||||||
jq -r '. | ["Percent covered", .percent_covered], ["Covered lines", .covered_lines], ["Total lines", .total_lines], ["Percent low", .percent_low], ["Percent high", .percent_high] | @tsv' \
|
jq -r '. | ["Percent covered", .percent_covered], ["Covered lines", .covered_lines], ["Total lines", .total_lines], ["Percent low", .percent_low], ["Percent high", .percent_high] | @tsv' \
|
||||||
$(COVERAGE_DIR)/bats.*/coverage.json
|
$(COVERAGE_DIR)/bats.*/coverage.json
|
||||||
|
|
||||||
|
testinstall:
|
||||||
|
tar --transform 's,^,devtools/,' -cz -f test/devtools.tar.gz --exclude='test' --exclude='./build' .
|
||||||
|
mv test/devtools.tar.gz devtools.tar.gz
|
||||||
|
pkgctl build --repo extra-testing
|
||||||
|
rm devtools.tar.gz
|
||||||
|
sudo pacman -U $$(makepkg --packagelist)
|
||||||
|
|
||||||
check: $(BINPROGS_SRC) $(LIBRARY_SRC) contrib/completion/bash/devtools.in config/makepkg/x86_64.conf contrib/makepkg/PKGBUILD.proto
|
check: $(BINPROGS_SRC) $(LIBRARY_SRC) contrib/completion/bash/devtools.in config/makepkg/x86_64.conf contrib/makepkg/PKGBUILD.proto
|
||||||
shellcheck $^
|
shellcheck $^
|
||||||
|
|
||||||
|
|||||||
64
PKGBUILD
Normal file
64
PKGBUILD
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
# Maintainer: Levente Polyak <anthraxx[at]archlinux[dot]org>
|
||||||
|
# Maintainer: Christian Heusel <gromit@archlinux.org>
|
||||||
|
# Contributor: Pierre Schmitz <pierre@archlinux.de>
|
||||||
|
|
||||||
|
pkgname=devtools-devel
|
||||||
|
_pkgname=devtools
|
||||||
|
epoch=1
|
||||||
|
pkgver=1.0.4.r10.g4a78f0e
|
||||||
|
pkgrel=1
|
||||||
|
pkgdesc='Tools for Arch Linux package maintainers (devel version)'
|
||||||
|
arch=('any')
|
||||||
|
license=('GPL')
|
||||||
|
url='https://gitlab.archlinux.org/archlinux/devtools'
|
||||||
|
depends=(
|
||||||
|
arch-install-scripts
|
||||||
|
awk
|
||||||
|
bash
|
||||||
|
binutils
|
||||||
|
coreutils
|
||||||
|
diffutils
|
||||||
|
fakeroot
|
||||||
|
findutils
|
||||||
|
grep
|
||||||
|
jq
|
||||||
|
openssh
|
||||||
|
parallel
|
||||||
|
rsync
|
||||||
|
sed
|
||||||
|
util-linux
|
||||||
|
|
||||||
|
breezy
|
||||||
|
git
|
||||||
|
mercurial
|
||||||
|
subversion
|
||||||
|
)
|
||||||
|
makedepends=(
|
||||||
|
asciidoctor
|
||||||
|
shellcheck
|
||||||
|
)
|
||||||
|
optdepends=('btrfs-progs: btrfs support')
|
||||||
|
|
||||||
|
conflicts=(devtools)
|
||||||
|
provides=(devtools)
|
||||||
|
source=(test/devtools.tar.gz)
|
||||||
|
|
||||||
|
sha256sums=('SKIP')
|
||||||
|
b2sums=('SKIP')
|
||||||
|
|
||||||
|
pkgver() {
|
||||||
|
cd ${_pkgname}
|
||||||
|
git describe --long --abbrev=7 | sed 's/v//;s/\([^-]*-g\)/r\1/;s/-/./g'
|
||||||
|
}
|
||||||
|
|
||||||
|
build() {
|
||||||
|
cd ${_pkgname}
|
||||||
|
make BUILDTOOLVER="${epoch}:${pkgver}-${pkgrel}-${arch}" PREFIX=/usr
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
cd ${_pkgname}
|
||||||
|
make PREFIX=/usr DESTDIR="${pkgdir}" install
|
||||||
|
}
|
||||||
|
|
||||||
|
# vim: ts=2 sw=2 et:
|
||||||
@@ -15,6 +15,8 @@ Description
|
|||||||
Build packages in clean chroot environment, offering various options
|
Build packages in clean chroot environment, offering various options
|
||||||
and functionalities to customize the package building process.
|
and functionalities to customize the package building process.
|
||||||
|
|
||||||
|
By default, chroot environments are located in '/var/lib/archbuild/'.
|
||||||
|
|
||||||
Build Options
|
Build Options
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ for _pkgname in "${pkgname[@]}"; do
|
|||||||
bsdtar tf "$TEMPDIR/$oldpkg" | sort > "$TEMPDIR/filelist-$_pkgname-old"
|
bsdtar tf "$TEMPDIR/$oldpkg" | sort > "$TEMPDIR/filelist-$_pkgname-old"
|
||||||
bsdtar tf "$pkgfile" | sort > "$TEMPDIR/filelist-$_pkgname"
|
bsdtar tf "$pkgfile" | sort > "$TEMPDIR/filelist-$_pkgname"
|
||||||
|
|
||||||
sdiff -s "$TEMPDIR/filelist-$_pkgname-old" "$TEMPDIR/filelist-$_pkgname"
|
diff --side-by-side --suppress-common-lines --width="$COLUMNS" --color=auto "$TEMPDIR/filelist-$_pkgname-old" "$TEMPDIR/filelist-$_pkgname"
|
||||||
|
|
||||||
find-libprovides "$TEMPDIR/$oldpkg" 2>/dev/null | sort > "$TEMPDIR/libraries-$_pkgname-old"
|
find-libprovides "$TEMPDIR/$oldpkg" 2>/dev/null | sort > "$TEMPDIR/libraries-$_pkgname-old"
|
||||||
find-libprovides "$pkgfile" 2>/dev/null | sort > "$TEMPDIR/libraries-$_pkgname"
|
find-libprovides "$pkgfile" 2>/dev/null | sort > "$TEMPDIR/libraries-$_pkgname"
|
||||||
|
|||||||
@@ -7,8 +7,6 @@ _DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@}
|
|||||||
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh
|
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh
|
||||||
# shellcheck source=src/lib/util/srcinfo.sh
|
# shellcheck source=src/lib/util/srcinfo.sh
|
||||||
source "${_DEVTOOLS_LIBRARY_DIR}"/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
|
source /usr/share/makepkg/util/util.sh
|
||||||
|
|
||||||
@@ -236,9 +234,6 @@ declare -a uploads
|
|||||||
declare -a commit_arches
|
declare -a commit_arches
|
||||||
declare -a skip_arches
|
declare -a skip_arches
|
||||||
|
|
||||||
BUILD_STATE_DIR=$(get_state_folder "build-state")
|
|
||||||
state_file=
|
|
||||||
|
|
||||||
for _arch in "${arch[@]}"; do
|
for _arch in "${arch[@]}"; do
|
||||||
if [[ -n $commit_arch && ${_arch} != "$commit_arch" ]]; then
|
if [[ -n $commit_arch && ${_arch} != "$commit_arch" ]]; then
|
||||||
skip_arches+=("$_arch")
|
skip_arches+=("$_arch")
|
||||||
@@ -252,12 +247,6 @@ for _arch in "${arch[@]}"; do
|
|||||||
skip_arches+=("$_arch")
|
skip_arches+=("$_arch")
|
||||||
continue 2
|
continue 2
|
||||||
fi
|
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")
|
uploads+=("$pkgfile")
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
@@ -165,7 +165,7 @@ pkgctl_aur_drop_from_repo() {
|
|||||||
warning 'Did not find %s in any repository, please delete manually' "${pkgbase}"
|
warning 'Did not find %s in any repository, please delete manually' "${pkgbase}"
|
||||||
else
|
else
|
||||||
msg2 " repo: ${pkgrepo}"
|
msg2 " repo: ${pkgrepo}"
|
||||||
pkgctl_db_remove "${pkgrepo}" "${pkgbase}"
|
pkgctl_db_remove --noconfirm "${pkgrepo}" "${pkgbase}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ pkgctl_auth_login() {
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
personal_access_token_url="https://${GITLAB_HOST}/-/profile/personal_access_tokens?name=pkgctl+token&scopes=api,write_repository"
|
personal_access_token_url="https://${GITLAB_HOST}/-/user_settings/personal_access_tokens?name=pkgctl+token&scopes=api,write_repository"
|
||||||
|
|
||||||
cat <<- _EOF_
|
cat <<- _EOF_
|
||||||
Logging into ${BOLD}${GITLAB_HOST}${ALL_OFF}
|
Logging into ${BOLD}${GITLAB_HOST}${ALL_OFF}
|
||||||
|
|||||||
@@ -12,8 +12,6 @@ source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh
|
|||||||
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/db/update.sh
|
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/db/update.sh
|
||||||
# shellcheck source=src/lib/release.sh
|
# shellcheck source=src/lib/release.sh
|
||||||
source "${_DEVTOOLS_LIBRARY_DIR}"/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
|
# shellcheck source=src/lib/util/git.sh
|
||||||
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/util/git.sh
|
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/util/git.sh
|
||||||
# shellcheck source=src/lib/util/srcinfo.sh
|
# shellcheck source=src/lib/util/srcinfo.sh
|
||||||
@@ -81,8 +79,8 @@ pkgctl_build_usage() {
|
|||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
$ ${COMMAND}
|
$ ${COMMAND}
|
||||||
$ ${COMMAND} --rebuild --staging --message 'libyay 0.42 rebuild' libfoo libbar
|
$ ${COMMAND} --rebuild --staging --release --message 'libyay 0.42 rebuild' libfoo libbar
|
||||||
$ ${COMMAND} --pkgver 1.42 --release --db-update
|
$ ${COMMAND} --pkgver=1.42 --release --db-update
|
||||||
_EOF_
|
_EOF_
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,7 +129,6 @@ pkgctl_build() {
|
|||||||
local PKGVER=
|
local PKGVER=
|
||||||
local PKGREL=
|
local PKGREL=
|
||||||
local MESSAGE=
|
local MESSAGE=
|
||||||
local BUILD_STATE_DIR=
|
|
||||||
|
|
||||||
local paths=()
|
local paths=()
|
||||||
local BUILD_ARCH=()
|
local BUILD_ARCH=()
|
||||||
@@ -307,8 +304,6 @@ pkgctl_build() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
BUILD_STATE_DIR=$(get_state_folder "build-state")
|
|
||||||
|
|
||||||
# assign default worker slot
|
# assign default worker slot
|
||||||
if [[ -z ${WORKER_SLOT} ]] && ! WORKER_SLOT="$(tty | sed 's|/dev/pts/||')"; then
|
if [[ -z ${WORKER_SLOT} ]] && ! WORKER_SLOT="$(tty | sed 's|/dev/pts/||')"; then
|
||||||
WORKER_SLOT=$(( RANDOM % $(nproc) + 1 ))
|
WORKER_SLOT=$(( RANDOM % $(nproc) + 1 ))
|
||||||
@@ -486,26 +481,25 @@ pkgctl_build() {
|
|||||||
# shellcheck disable=SC2119
|
# shellcheck disable=SC2119
|
||||||
write_srcinfo_file
|
write_srcinfo_file
|
||||||
|
|
||||||
# shellcheck disable=2119
|
# test-install (some of) the produced packages
|
||||||
load_makepkg_config
|
if [[ ${INSTALL_TO_HOST} == auto ]] || [[ ${INSTALL_TO_HOST} == all ]]; then
|
||||||
|
# shellcheck disable=2119
|
||||||
|
load_makepkg_config
|
||||||
|
|
||||||
# this is inspired by print_all_package_names from libmakepkg
|
# this is inspired by print_all_package_names from libmakepkg
|
||||||
local version pkg_architecture pkg pkgfile
|
local version pkg_architecture pkg pkgfile
|
||||||
version=$(get_full_version)
|
version=$(get_full_version)
|
||||||
|
|
||||||
for pkg in "${pkgname[@]}"; do
|
for pkg in "${pkgname[@]}"; do
|
||||||
pkg_architecture=$(get_pkg_arch "$pkg")
|
pkg_architecture=$(get_pkg_arch "$pkg")
|
||||||
pkgpath=$(realpath "$(printf "%s\n" "${PKGDEST:-.}")")
|
pkgfile=$(realpath "$(printf "%s/%s-%s-%s%s\n" "${PKGDEST:-.}" "$pkg" "$version" "$pkg_architecture" "$PKGEXT")")
|
||||||
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
|
# 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
|
if [[ ${INSTALL_TO_HOST} == all ]] || ( [[ ${INSTALL_TO_HOST} == auto ]] && pacman -Qq -- "$pkg" &>/dev/null ); then
|
||||||
INSTALL_HOST_PACKAGES+=("${pkgpath}/${pkgfile}")
|
INSTALL_HOST_PACKAGES+=("$pkgfile")
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
# save against which repo we have built the package
|
fi
|
||||||
printf "%s" "${pkgrepo}" > "${BUILD_STATE_DIR}/${pkgfile}.txt"
|
|
||||||
done
|
|
||||||
|
|
||||||
# release the build
|
# release the build
|
||||||
if (( RELEASE )); then
|
if (( RELEASE )); then
|
||||||
|
|||||||
@@ -120,6 +120,8 @@ print_workdir_error() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_setup_workdir=false
|
_setup_workdir=false
|
||||||
|
# Ensure that there is no outside value for WORKDIR leaking in
|
||||||
|
unset WORKDIR
|
||||||
setup_workdir() {
|
setup_workdir() {
|
||||||
[[ -z ${WORKDIR:-} ]] && WORKDIR=$(mktemp -d --tmpdir "${0##*/}.XXXXXXXXXX")
|
[[ -z ${WORKDIR:-} ]] && WORKDIR=$(mktemp -d --tmpdir "${0##*/}.XXXXXXXXXX")
|
||||||
_setup_workdir=true
|
_setup_workdir=true
|
||||||
|
|||||||
@@ -271,6 +271,7 @@ pkgctl_repo_configure() {
|
|||||||
if [[ -n $GPGKEY ]]; then
|
if [[ -n $GPGKEY ]]; then
|
||||||
git config commit.gpgsign true
|
git config commit.gpgsign true
|
||||||
git config user.signingKey "${GPGKEY}"
|
git config user.signingKey "${GPGKEY}"
|
||||||
|
git config gpg.format openpgp
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# set default git exclude
|
# set default git exclude
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
#!/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}"
|
|
||||||
}
|
|
||||||
@@ -284,7 +284,7 @@ nvchecker_check_error() {
|
|||||||
local errors
|
local errors
|
||||||
|
|
||||||
if ! errors=$(jq --raw-output --exit-status \
|
if ! errors=$(jq --raw-output --exit-status \
|
||||||
'select(.level == "error") | "\(.event)" + if .error then ": \(.error)" else "" end' \
|
'select((.level == "error") and (.error != null)) | "\(.event)" + if .error then ": \(.error)" else "" end' \
|
||||||
<<< "${result}"); then
|
<<< "${result}"); then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ sync_chroot() {
|
|||||||
"Locking clean chroot [%s]" "$chrootdir/root"
|
"Locking clean chroot [%s]" "$chrootdir/root"
|
||||||
|
|
||||||
stat_busy "Synchronizing chroot copy [%s] -> [%s]" "$chrootdir/root" "$copy"
|
stat_busy "Synchronizing chroot copy [%s] -> [%s]" "$chrootdir/root" "$copy"
|
||||||
if is_btrfs "$chrootdir" && ! mountpoint -q "$copydir"; then
|
if is_btrfs "$chrootdir" && is_subvolume "$chrootdir/root" && ! mountpoint -q "$copydir"; then
|
||||||
subvolume_delete_recursive "$copydir" ||
|
subvolume_delete_recursive "$copydir" ||
|
||||||
die "Unable to delete subvolume %s" "$copydir"
|
die "Unable to delete subvolume %s" "$copydir"
|
||||||
btrfs subvolume snapshot "$chrootdir/root" "$copydir" >/dev/null ||
|
btrfs subvolume snapshot "$chrootdir/root" "$copydir" >/dev/null ||
|
||||||
|
|||||||
Reference in New Issue
Block a user