mirror of
https://gitlab.archlinux.org/archlinux/devtools.git
synced 2025-09-15 02:46:19 +02: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
|
||||
|
||||
V=1.2.0
|
||||
V=1.2.1
|
||||
BUILDTOOLVER ?= $(V)
|
||||
|
||||
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' \
|
||||
$(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
|
||||
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
|
||||
and functionalities to customize the package building process.
|
||||
|
||||
By default, chroot environments are located in '/var/lib/archbuild/'.
|
||||
|
||||
Build Options
|
||||
-------------
|
||||
|
||||
|
@@ -140,7 +140,7 @@ for _pkgname in "${pkgname[@]}"; do
|
||||
bsdtar tf "$TEMPDIR/$oldpkg" | sort > "$TEMPDIR/filelist-$_pkgname-old"
|
||||
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 "$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
|
||||
# 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
|
||||
|
||||
@@ -236,9 +234,6 @@ 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")
|
||||
@@ -252,12 +247,6 @@ 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
|
||||
|
||||
|
@@ -165,7 +165,7 @@ pkgctl_aur_drop_from_repo() {
|
||||
warning 'Did not find %s in any repository, please delete manually' "${pkgbase}"
|
||||
else
|
||||
msg2 " repo: ${pkgrepo}"
|
||||
pkgctl_db_remove "${pkgrepo}" "${pkgbase}"
|
||||
pkgctl_db_remove --noconfirm "${pkgrepo}" "${pkgbase}"
|
||||
fi
|
||||
|
||||
popd >/dev/null
|
||||
|
@@ -63,7 +63,7 @@ pkgctl_auth_login() {
|
||||
esac
|
||||
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_
|
||||
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
|
||||
# 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
|
||||
@@ -81,8 +79,8 @@ pkgctl_build_usage() {
|
||||
|
||||
EXAMPLES
|
||||
$ ${COMMAND}
|
||||
$ ${COMMAND} --rebuild --staging --message 'libyay 0.42 rebuild' libfoo libbar
|
||||
$ ${COMMAND} --pkgver 1.42 --release --db-update
|
||||
$ ${COMMAND} --rebuild --staging --release --message 'libyay 0.42 rebuild' libfoo libbar
|
||||
$ ${COMMAND} --pkgver=1.42 --release --db-update
|
||||
_EOF_
|
||||
}
|
||||
|
||||
@@ -131,7 +129,6 @@ pkgctl_build() {
|
||||
local PKGVER=
|
||||
local PKGREL=
|
||||
local MESSAGE=
|
||||
local BUILD_STATE_DIR=
|
||||
|
||||
local paths=()
|
||||
local BUILD_ARCH=()
|
||||
@@ -307,8 +304,6 @@ 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 ))
|
||||
@@ -486,26 +481,25 @@ pkgctl_build() {
|
||||
# shellcheck disable=SC2119
|
||||
write_srcinfo_file
|
||||
|
||||
# shellcheck disable=2119
|
||||
load_makepkg_config
|
||||
# test-install (some of) the produced packages
|
||||
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
|
||||
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")
|
||||
pkgpath=$(realpath "$(printf "%s\n" "${PKGDEST:-.}")")
|
||||
pkgfile=$(printf "%s-%s-%s%s\n" "$pkg" "$version" "$pkg_architecture" "$PKGEXT")
|
||||
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")")
|
||||
|
||||
# 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
|
||||
# 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
|
||||
|
||||
# release the build
|
||||
if (( RELEASE )); then
|
||||
|
@@ -120,6 +120,8 @@ print_workdir_error() {
|
||||
}
|
||||
|
||||
_setup_workdir=false
|
||||
# Ensure that there is no outside value for WORKDIR leaking in
|
||||
unset WORKDIR
|
||||
setup_workdir() {
|
||||
[[ -z ${WORKDIR:-} ]] && WORKDIR=$(mktemp -d --tmpdir "${0##*/}.XXXXXXXXXX")
|
||||
_setup_workdir=true
|
||||
|
@@ -271,6 +271,7 @@ pkgctl_repo_configure() {
|
||||
if [[ -n $GPGKEY ]]; then
|
||||
git config commit.gpgsign true
|
||||
git config user.signingKey "${GPGKEY}"
|
||||
git config gpg.format openpgp
|
||||
fi
|
||||
|
||||
# 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
|
||||
|
||||
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
|
||||
return 0
|
||||
fi
|
||||
|
@@ -105,7 +105,7 @@ sync_chroot() {
|
||||
"Locking clean chroot [%s]" "$chrootdir/root"
|
||||
|
||||
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" ||
|
||||
die "Unable to delete subvolume %s" "$copydir"
|
||||
btrfs subvolume snapshot "$chrootdir/root" "$copydir" >/dev/null ||
|
||||
|
Reference in New Issue
Block a user