Compare commits

...

5 Commits

Author SHA1 Message Date
Levente Polyak
d7c7074457 feat(release): allow releasing from unstable branch to unstable repos
This is done in order to properly support the build workflow for gnome-unstable.
If one tries to release from branch "unstable" to a regular repo an error is emitted.

Co-authored-by: Christian Heusel <christian@heusel.eu>
2023-08-09 18:10:35 +02:00
Jan Alexander Steffens (heftig)
5f4fd52e38 feat(arch-nspawn): Use a unique scope name instead of --keep-unit
`--keep-unit` is really only for use in services like
`systemd-nspawn@.service`.

The parameter was added in commit 000ea6c7bb because
systemd-nspawn defaults the name of the machine (and thus the generated
scope) to the name of the working directory, which is not unique. Thus
spawning a container from `archbuild/extra-x86_64/foo` while
`archbuild/testing-x86_64/foo` is already running would fail.

We can avoid the unit conflict by giving the container a unique machine
name. Creating a scope also allows us to place the container in a slice
hierarchy for resource control.
2023-07-21 19:41:22 +02:00
Jan Alexander Steffens (heftig)
1b25190176 chore(arch-nspawn): Simplify args construction for systemd-nspawn 2023-07-21 19:41:22 +02:00
Christian Heusel
030e6af880 chore: fix spelling mistake packge -> package
it seems like the mistake was copied to a few locations, this commit
fixes it.

Signed-off-by: Christian Heusel <christian@heusel.eu>
2023-07-06 15:30:49 +02:00
Levente Polyak
662d6c5274 fix(make): use correct version variable for release target 2023-07-05 18:45:54 +02:00
10 changed files with 42 additions and 20 deletions

View File

@@ -153,7 +153,7 @@ tag:
git tag --sign --message "Version v$$VERSION" v$$VERSION
release: dist
glab release create v$(RELEASE) devtools-$(RELEASE).tar.gz*
glab release create v$(V) devtools-$(V).tar.gz*
dist:
git archive --format=tar --prefix=devtools-$(V)/ v$(V) | gzip > devtools-$(V).tar.gz

View File

@@ -241,7 +241,7 @@ _pkgctl_cmds=(
"pkgctl command"
"auth[Authenticate with services like GitLab]"
"build[Build packages inside a clean chroot]"
"db[Pacman database modification for packge update, move etc]"
"db[Pacman database modification for package update, move etc]"
"diff[Compare package files using different modes]"
"release[Release step to commit, tag and upload build artifacts]"
"repo[Manage Git packaging repositories and their configuration]"

View File

@@ -33,7 +33,7 @@ pkgctl build::
Build packages inside a clean chroot
pkgctl db::
Pacman database modification for packge update, move etc
Pacman database modification for package update, move etc
pkgctl diff::
Compare package files using different modes

View File

@@ -16,7 +16,6 @@ umask 0022
working_dir=''
files=()
mount_args=()
usage() {
echo "Usage: ${0##*/} [options] working-dir [systemd-nspawn arguments]"
@@ -56,6 +55,16 @@ shift 1
[[ -z $working_dir ]] && die 'Please specify a working directory.'
nspawn_args=(
--quiet
--directory="$working_dir"
--setenv="PATH=/usr/local/sbin:/usr/local/bin:/usr/bin"
--register=no
--slice="devtools-$(systemd-escape "${SUDO_USER:-$USER}")"
--machine="arch-nspawn-$$"
--as-pid2
)
if (( ${#cache_dirs[@]} == 0 )); then
mapfile -t cache_dirs < <(pacman-conf --config "${pac_conf:-$working_dir/etc/pacman.conf}" CacheDir)
fi
@@ -83,10 +92,10 @@ while read -r line; do
done
done < <(pacman-conf --config "${pac_conf:-$working_dir/etc/pacman.conf}" --repo-list)
mount_args+=("--bind=${cache_dirs[0]//:/\\:}")
nspawn_args+=(--bind="${cache_dirs[0]//:/\\:}")
for cache_dir in "${cache_dirs[@]:1}"; do
mount_args+=("--bind-ro=${cache_dir//:/\\:}")
nspawn_args+=(--bind-ro="${cache_dir//:/\\:}")
done
# {{{ functions
@@ -129,9 +138,4 @@ else
set_arch="${CARCH}"
fi
exec ${CARCH:+setarch "$set_arch"} systemd-nspawn -q \
-D "$working_dir" \
-E "PATH=/usr/local/sbin:/usr/local/bin:/usr/bin" \
--register=no --keep-unit --as-pid2 \
"${mount_args[@]}" \
"$@"
exec ${CARCH:+setarch "$set_arch"} systemd-nspawn "${nspawn_args[@]}" "$@"

View File

@@ -7,6 +7,8 @@ _DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@}
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh
# shellcheck source=src/lib/valid-tags.sh
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-tags.sh
# shellcheck source=src/lib/util/git.sh
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/util/git.sh
set -e
@@ -55,8 +57,8 @@ gittag=$(get_tag_from_pkgver "$pkgver")
if ! branchname=$(git symbolic-ref --short HEAD); then
die 'not on any branch'
fi
if [[ "${branchname}" != main ]]; then
die 'must be run from the main branch'
if ! is_valid_release_branch "${branchname}"; then
die 'must be run from a valid release branch (%s)' "${VALID_RELEASE_BRANCHES[@]}"
fi
# Check if remote origin is setup properly
@@ -85,10 +87,10 @@ if git tag --verify "$gittag" &> /dev/null; then
if [[ "$cwd_checksum" != "$tag_checksum" ]]; then
die "tagged PKGBUILD is not the same as the working dir PKGBUILD"
fi
git push --tags --set-upstream origin main || abort
git push --tags --set-upstream origin "${branchname}" || abort
exit 0
fi
msg "Releasing package"
git tag --sign --message="Package release ${pkgver}" "$gittag" || abort
git push --tags --set-upstream origin main || abort
git push --tags --set-upstream origin "${branchname}" || abort

View File

@@ -5,6 +5,8 @@
_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/git.sh
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/util/git.sh
source /usr/share/makepkg/util/util.sh
@@ -70,8 +72,12 @@ if ! repo_spec=$(git config --local devtools.version) || [[ ${repo_spec} != "${G
exit 1
fi
if [[ "$(git symbolic-ref --short HEAD)" != main ]]; then
die 'must be run from the main branch'
if ! branchname=$(git symbolic-ref --short HEAD); then
die 'not on any branch'
fi
if ! is_valid_release_branch "${branchname}"; then
die 'must be run from a valid release branch (%s)' "${VALID_RELEASE_BRANCHES[@]}"
fi
source=()
@@ -95,6 +101,9 @@ case "$cmd" in
;;
esac
if [[ "${branchname}" == "unstable" ]] && [[ "$repo" != *"unstable" ]]; then
die 'Cannot release from unstable branch into non-unstable repo: %s' "${repo}"
fi
if (( ${#validpgpkeys[@]} != 0 )); then
if [[ -d keys ]]; then

View File

@@ -29,6 +29,8 @@ export GIT_PACKAGING_URL_SSH="git@${GITLAB_HOST}:${GIT_PACKAGING_NAMESPACE}"
export GIT_PACKAGING_URL_HTTPS="https://${GITLAB_HOST}/${GIT_PACKAGING_NAMESPACE}"
export PACKAGING_REPO_RELEASE_HOST=repos.archlinux.org
export VALID_RELEASE_BRANCHES=(main unstable)
# check if messages are to be printed using color
if [[ -t 2 && "$TERM" != dumb ]] || [[ ${DEVTOOLS_COLOR} == always ]]; then
colorize

View File

@@ -15,7 +15,7 @@ pkgctl_db_usage() {
cat <<- _EOF_
Usage: ${COMMAND} [COMMAND] [OPTIONS]
Pacman database modification for packge update, move etc
Pacman database modification for package update, move etc
COMMANDS
move Move packages between pacman repositories

View File

@@ -22,3 +22,8 @@ git_diff_tree() {
"${commit}" \
-- "${path}"
}
is_valid_release_branch() {
local branch=$1
in_array "${branch}" "${VALID_RELEASE_BRANCHES[@]}"
}

View File

@@ -21,7 +21,7 @@ usage() {
COMMANDS
auth Authenticate with services like GitLab
build Build packages inside a clean chroot
db Pacman database modification for packge update, move etc
db Pacman database modification for package update, move etc
diff Compare package files using different modes
release Release step to commit, tag and upload build artifacts
repo Manage Git packaging repositories and their configuration