index : devtools32 | |
Archlinux32 fork of devtools | gitolite user |
summaryrefslogtreecommitdiff |
author | Levente Polyak <anthraxx@archlinux.org> | 2022-10-10 00:37:51 +0200 |
---|---|---|
committer | Levente Polyak <anthraxx@archlinux.org> | 2023-05-19 22:27:12 +0200 |
commit | b5d5402e439f5edfd642fb4f680d596f5992e874 (patch) | |
tree | 856facc3e379ed590e260e7c39cafaebea9e60be /lib | |
parent | a8be7423efb287edd5ef80002a75a853fc0c9c1d (diff) |
-rw-r--r-- | lib/archroot.sh | 62 | ||||
-rw-r--r-- | lib/common.sh | 289 | ||||
-rw-r--r-- | lib/valid-repos.sh | 32 | ||||
-rw-r--r-- | lib/valid-tags.sh | 26 |
diff --git a/lib/archroot.sh b/lib/archroot.sh deleted file mode 100644 index d7917da..0000000 --- a/lib/archroot.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/hint/bash -# -# SPDX-License-Identifier: GPL-3.0-or-later -: - -# shellcheck disable=2034 -CHROOT_VERSION='v4' - -## -# usage : check_root $keepenv -## -orig_argv=("${BASH_SOURCE[0]}" "$@") -check_root() { - local keepenv=$1 - - (( EUID == 0 )) && return - if type -P sudo >/dev/null; then - exec sudo --preserve-env=$keepenv -- "${orig_argv[@]}" - else - exec su root -c "$(printf ' %q' "${orig_argv[@]}")" - fi -} - -## -# usage : is_btrfs( $path ) -# return : whether $path is on a btrfs -## -is_btrfs() { - [[ -e "$1" && "$(stat -f -c %T "$1")" == btrfs ]] -} - -## -# usage : is_subvolume( $path ) -# return : whether $path is a the root of a btrfs subvolume (including -# the top-level subvolume). -## -is_subvolume() { - [[ -e "$1" && "$(stat -f -c %T "$1")" == btrfs && "$(stat -c %i "$1")" == 256 ]] -} - -## -# usage : subvolume_delete_recursive( $path ) -# -# Find all btrfs subvolumes under and including $path and delete them. -## -subvolume_delete_recursive() { - local subvol - - is_subvolume "$1" || return 0 - - while IFS= read -d $'\0' -r subvol; do - if ! subvolume_delete_recursive "$subvol"; then - return 1 - fi - done < <(find "$1" -mindepth 1 -xdev -depth -inum 256 -print0) - if ! btrfs subvolume delete "$1" &>/dev/null; then - error "Unable to delete subvolume %s" "$subvol" - return 1 - fi - - return 0 -} diff --git a/lib/common.sh b/lib/common.sh deleted file mode 100644 index d2351af..0000000 --- a/lib/common.sh +++ /dev/null @@ -1,289 +0,0 @@ -#!/hint/bash -# -# This may be included with or without `set -euE` -# -# SPDX-License-Identifier: GPL-3.0-or-later - -[[ -z ${_INCLUDE_COMMON_SH:-} ]] || return 0 -_INCLUDE_COMMON_SH="$(set +o|grep nounset)" - -set +u +o posix -# shellcheck disable=1091 -. /usr/share/makepkg/util.sh -$_INCLUDE_COMMON_SH - -# Avoid any encoding problems -export LANG=C - -# Set buildtool properties -export BUILDTOOL=devtools -export BUILDTOOLVER=m4_devtools_version - -# Set common properties -export PACMAN_KEYRING_DIR=/etc/pacman.d/gnupg -export GITLAB_HOST=gitlab.archlinux.org -export GIT_REPO_SPEC_VERSION=1 -export GIT_PACKAGING_NAMESPACE=archlinux/packaging/packages -export GIT_PACKAGING_NAMESPACE_ID=11323 -export GIT_PACKAGING_URL_SSH="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 - -# check if messages are to be printed using color -if [[ -t 2 && "$TERM" != dumb ]]; then - colorize -else - # shellcheck disable=2034 - declare -gr ALL_OFF='' BOLD='' BLUE='' GREEN='' RED='' YELLOW='' -fi - -stat_busy() { - local mesg=$1; shift - # shellcheck disable=2059 - printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}...${ALL_OFF}" "$@" >&2 -} - -stat_progress() { - # shellcheck disable=2059 - printf "${BOLD}.${ALL_OFF}" >&2 -} - -stat_done() { - # shellcheck disable=2059 - printf "${BOLD}done${ALL_OFF}\n" >&2 -} - -_setup_workdir=false -setup_workdir() { - [[ -z ${WORKDIR:-} ]] && WORKDIR=$(mktemp -d --tmpdir "${0##*/}.XXXXXXXXXX") - _setup_workdir=true - trap 'trap_abort' INT QUIT TERM HUP - trap 'trap_exit' EXIT -} - -cleanup() { - if [[ -n ${WORKDIR:-} ]] && $_setup_workdir; then - rm -rf "$WORKDIR" - fi - exit "${1:-0}" -} - -abort() { - error 'Aborting...' - cleanup 255 -} - -trap_abort() { - trap - EXIT INT QUIT TERM HUP - abort -} - -trap_exit() { - local r=$? - trap - EXIT INT QUIT TERM HUP - cleanup $r -} - -die() { - (( $# )) && error "$@" - cleanup 255 -} - -## -# usage : lock( $fd, $file, $message, [ $message_arguments... ] ) -## -lock() { - # Only reopen the FD if it wasn't handed to us - if ! [[ "/dev/fd/$1" -ef "$2" ]]; then - mkdir -p -- "$(dirname -- "$2")" - eval "exec $1>"'"$2"' - fi - - if ! flock -n "$1"; then - stat_busy "${@:3}" - flock "$1" - stat_done - fi -} - -## -# usage : slock( $fd, $file, $message, [ $message_arguments... ] ) -## -slock() { - # Only reopen the FD if it wasn't handed to us - if ! [[ "/dev/fd/$1" -ef "$2" ]]; then - mkdir -p -- "$(dirname -- "$2")" - eval "exec $1>"'"$2"' - fi - - if ! flock -sn "$1"; then - stat_busy "${@:3}" - flock -s "$1" - stat_done - fi -} - -## -# usage : lock_close( $fd ) -## -lock_close() { - local fd=$1 - # https://github.com/koalaman/shellcheck/issues/862 - # shellcheck disable=2034 - exec {fd}>&- -} - -## -# usage: pkgver_equal( $pkgver1, $pkgver2 ) -## -pkgver_equal() { - if [[ $1 = *-* && $2 = *-* ]]; then - # if both versions have a pkgrel, then they must be an exact match - [[ $1 = "$2" ]] - else - # otherwise, trim any pkgrel and compare the bare version. - [[ ${1%%-*} = "${2%%-*}" ]] - fi -} - -## -# usage: find_cached_package( $pkgname, $pkgver, $arch ) -# -# $pkgver can be supplied with or without a pkgrel appended. -# If not supplied, any pkgrel will be matched. -## -shopt -s extglob -find_cached_package() { - local searchdirs=("$PWD" "$PKGDEST") results=() - local targetname=$1 targetver=$2 targetarch=$3 - local dir pkg packages pkgbasename name ver rel arch r results - - for dir in "${searchdirs[@]}"; do - [[ -d $dir ]] || continue - - shopt -s extglob nullglob - mapfile -t packages < <(printf "%s\n" "$dir"/"${targetname}"-"${targetver}"-*"${targetarch}".pkg.tar?(.!(sig|*.*))) - shopt -u extglob nullglob - - for pkg in "${packages[@]}"; do - [[ -f $pkg ]] || continue - - # avoid adding duplicates of the same inode - for r in "${results[@]}"; do - [[ $r -ef $pkg ]] && continue 2 - done - - # split apart package filename into parts - pkgbasename=${pkg##*/} - pkgbasename=${pkgbasename%.pkg.tar*} - - arch=${pkgbasename##*-} - pkgbasename=${pkgbasename%-"$arch"} - - rel=${pkgbasename##*-} - pkgbasename=${pkgbasename%-"$rel"} - - ver=${pkgbasename##*-} - name=${pkgbasename%-"$ver"} - - if [[ $targetname = "$name" && $targetarch = "$arch" ]] && - pkgver_equal "$targetver" "$ver-$rel"; then - results+=("$pkg") - fi - done - done - - case ${#results[*]} in - 0) - return 1 - ;; - 1) - printf '%s\n' "${results[0]}" - return 0 - ;; - *) - error 'Multiple packages found:' - printf '\t%s\n' "${results[@]}" >&2 - return 1 - esac -} -shopt -u extglob - -check_package_validity(){ - local pkgfile=$1 - if grep -q "packager = Unknown Packager" <(bsdtar -xOqf "$pkgfile" .PKGINFO); then - die "PACKAGER was not set when building package" - fi - hashsum=sha256sum - pkgbuild_hash=$(awk -v"hashsum=$hashsum" -F' = ' '$1 == "pkgbuild_"hashsum {print $2}' <(bsdtar -xOqf "$pkgfile" .BUILDINFO)) - if [[ "$pkgbuild_hash" != "$($hashsum PKGBUILD|cut -d' ' -f1)" ]]; then - die "PKGBUILD $hashsum mismatch: expected $pkgbuild_hash" - fi -} - - -# usage: grep_pkginfo pkgfile pattern -grep_pkginfo() { - local _ret=() - mapfile -t _ret < <(bsdtar -xOqf "$1" ".PKGINFO" | grep "^${2} = ") - printf '%s\n' "${_ret[@]#${2} = }" -} - - -# Get the package name -getpkgname() { - local _name - - _name="$(grep_pkginfo "$1" "pkgname")" - if [[ -z $_name ]]; then - error "Package '%s' has no pkgname in the PKGINFO. Fail!" "$1" - exit 1 - fi - - echo "$_name" -} - - -# Get the package base or name as fallback -getpkgbase() { - local _base - - _base="$(grep_pkginfo "$1" "pkgbase")" - if [[ -z $_base ]]; then - getpkgname "$1" - else - echo "$_base" - fi -} - - -getpkgdesc() { - local _desc - - _desc="$(grep_pkginfo "$1" "pkgdesc")" - if [[ -z $_desc ]]; then - error "Package '%s' has no pkgdesc in the PKGINFO. Fail!" "$1" - exit 1 - fi - - echo "$_desc" -} - - -get_tag_from_pkgver() { - local pkgver=$1 - local tag=${pkgver} - - tag=${tag/:/-} - tag=${tag//~/.} - echo "${tag}" -} - - -is_debug_package() { - local pkgfile=${1} pkgbase pkgname pkgdesc - pkgbase="$(getpkgbase "${pkgfile}")" - pkgname="$(getpkgname "${pkgfile}")" - pkgdesc="$(getpkgdesc "${pkgfile}")" - [[ ${pkgdesc} == "Detached debugging symbols for "* && ${pkgbase}-debug = "${pkgname}" ]] -} diff --git a/lib/valid-repos.sh b/lib/valid-repos.sh deleted file mode 100644 index 9ac9639..0000000 --- a/lib/valid-repos.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/hint/bash -# -# SPDX-License-Identifier: GPL-3.0-or-later -: - -# shellcheck disable=2034 -_repos=( - staging - testing - core - extra - community-staging - community-testing - community - multilib-staging - multilib-testing - multilib - gnome-unstable - kde-unstable -) - -# shellcheck disable=2034 -_build_repos=( - staging - testing - extra - multilib-staging - multilib-testing - multilib - gnome-unstable - kde-unstable -) diff --git a/lib/valid-tags.sh b/lib/valid-tags.sh deleted file mode 100644 index d628fd1..0000000 --- a/lib/valid-tags.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/hint/bash -# -# SPDX-License-Identifier: GPL-3.0-or-later -: - -# shellcheck disable=2034 -_arch=( - x86_64 - any -) - -# shellcheck disable=2034 -_tags=( - core-x86_64 core-any - extra-x86_64 extra-any - multilib-x86_64 - staging-x86_64 staging-any - testing-x86_64 testing-any - multilib-testing-x86_64 - multilib-staging-x86_64 - community-x86_64 community-any - community-staging-x86_64 community-staging-any - community-testing-x86_64 community-testing-any - kde-unstable-x86_64 kde-unstable-any - gnome-unstable-x86_64 gnome-unstable-any -) |