Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/checkpkg.in
diff options
context:
space:
mode:
Diffstat (limited to 'checkpkg.in')
-rw-r--r--checkpkg.in155
1 files changed, 0 insertions, 155 deletions
diff --git a/checkpkg.in b/checkpkg.in
deleted file mode 100644
index 059f752..0000000
--- a/checkpkg.in
+++ /dev/null
@@ -1,155 +0,0 @@
-#!/bin/bash
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-shopt -s extglob
-
-m4_include(lib/common.sh)
-
-usage() {
- cat <<- _EOF_
- Usage: ${BASH_SOURCE[0]##*/} [OPTIONS]
-
- Searches for a locally built package corresponding to the PKGBUILD, and
- downloads the last version of that package from the Pacman repositories.
- It then compares the list of .so files provided by each version of the
- package and outputs if there are soname differences for the new package.
- A directory is also created using mktemp with files containing a file
- list for both packages and a library list for both packages.
-
- OPTIONS
- -r, --rmdir Remove the temporary directory
- -w, --warn Print a warning in case of differences
- -M, --makepkg-config Set an alternate makepkg configuration file
- -h, --help Show this help text
-_EOF_
-}
-
-RMDIR=0
-WARN=0
-MAKEPKG_CONF=/etc/makepkg.conf
-
-# option checking
-while (( $# )); do
- case $1 in
- -h|--help)
- usage
- exit 0
- ;;
- -r|--rmdir)
- RMDIR=1
- shift
- ;;
- -w|--warn)
- WARN=1
- shift
- ;;
- -M|--makepkg-config)
- MAKEPKG_CONF="$2"
- shift 2
- ;;
- --)
- shift
- break
- ;;
- -*,--*)
- die "invalid argument: %s" "$1"
- ;;
- *)
- break
- ;;
- esac
-done
-
-# Source makepkg.conf; fail if it is not found
-if [[ -r "${MAKEPKG_CONF}" ]]; then
- # shellcheck source=config/makepkg/x86_64.conf
- source "${MAKEPKG_CONF}"
-else
- die "${MAKEPKG_CONF} not found!"
-fi
-
-# Source user-specific makepkg.conf overrides
-if [[ -r "${XDG_CONFIG_HOME:-$HOME/.config}/pacman/makepkg.conf" ]]; then
- # shellcheck source=/dev/null
- source "${XDG_CONFIG_HOME:-$HOME/.config}/pacman/makepkg.conf"
-elif [[ -r "$HOME/.makepkg.conf" ]]; then
- # shellcheck source=/dev/null
- source "$HOME/.makepkg.conf"
-fi
-
-if [[ ! -f PKGBUILD ]]; then
- die 'This must be run in the directory of a built package.'
-fi
-
-# shellcheck source=PKGBUILD.proto
-. ./PKGBUILD
-if [[ ${arch[0]} == 'any' ]]; then
- CARCH='any'
-fi
-
-STARTDIR=$(pwd)
-(( RMDIR )) && trap 'rm -rf $TEMPDIR' EXIT INT TERM QUIT
-TEMPDIR=$(mktemp -d --tmpdir checkpkg-script.XXXX)
-
-for _pkgname in "${pkgname[@]}"; do
- comparepkg=$_pkgname
- pkgurl=
- target_pkgver=$(get_full_version "$_pkgname")
- if ! pkgfile=$(find_cached_package "$_pkgname" "$target_pkgver" "$CARCH"); then
- die 'tarball not found for package: %s' "${_pkgname}-$target_pkgver"
- fi
-
- ln -s "$pkgfile" "$TEMPDIR"
-
- if (( $# )); then
- case $1 in
- *://*)
- pkgurl=$1 ;;
- /*|*/*)
- pkgurl=$(readlink -m "$1") ;;
- *.pkg.tar*)
- pkgurl=$1 ;;
- '')
- ;;
- *)
- comparepkg=$1 ;;
- esac
- shift
- fi
- [[ -n $pkgurl ]] || pkgurl=$(pacman -Spdd --print-format '%l' --noconfirm "$comparepkg") ||
- die "Couldn't download previous package for %s." "$comparepkg"
-
- oldpkg=${pkgurl##*/}
-
- if [[ ${oldpkg} = "${pkgfile##*/}" ]]; then
- die "The built package (%s) is the one in the repo right now!" "$_pkgname"
- fi
-
- if [[ $pkgurl = file://* || ( $pkgurl = /* && -f $pkgurl ) ]]; then
- ln -s "${pkgurl#file://}" "$TEMPDIR/$oldpkg"
- elif [[ -f "$PKGDEST/$oldpkg" ]]; then
- ln -s "$PKGDEST/$oldpkg" "$TEMPDIR/$oldpkg"
- elif [[ -f "$STARTDIR/$oldpkg" ]]; then
- ln -s "$STARTDIR/$oldpkg" "$TEMPDIR/$oldpkg"
- else
- curl -fsLC - --retry 3 --retry-delay 3 -o "$TEMPDIR/$oldpkg" "$pkgurl"
- fi
-
- 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"
-
- find-libprovides "$TEMPDIR/$oldpkg" 2>/dev/null | sort > "$TEMPDIR/libraries-$_pkgname-old"
- find-libprovides "$pkgfile" 2>/dev/null | sort > "$TEMPDIR/libraries-$_pkgname"
- if ! diff_output="$(sdiff -s "$TEMPDIR/libraries-$_pkgname-old" "$TEMPDIR/libraries-$_pkgname")"; then
- message="Sonames differ in $_pkgname!"
- (( WARN )) && warning "$message" || msg "$message"
- echo "$diff_output"
- else
- msg "No soname differences for %s." "$_pkgname"
- fi
-done
-
-(( RMDIR )) || msg "Files saved to %s" "$TEMPDIR"