diff options
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | PKGBUILD | 4 | ||||
-rwxr-xr-x | rebuild-detector | 21 | ||||
-rw-r--r-- | rebuild-detector.hook.sig | bin | 566 -> 566 bytes | |||
-rw-r--r-- | rebuild-detector.sig | bin | 566 -> 566 bytes |
5 files changed, 22 insertions, 7 deletions
@@ -1,6 +1,6 @@ pkgbase = rebuild-detector pkgdesc = Pacman hook to automatically detect which packages need to be rebuilt - pkgver = 1.1.0 + pkgver = 1.2.0 pkgrel = 1 arch = any license = MIT @@ -9,7 +9,7 @@ pkgbase = rebuild-detector source = rebuild-detector.hook source = rebuild-detector.hook.sig validpgpkeys = EB4F9E5A60D32232BB52150C12C87A28FEAC6B20 - sha256sums = 283874f80ef3ee9c93751df25362864e4fefa626ed22bd69be38d2c5fa044342 + sha256sums = a4678300a04411c74bf7d37a3d56087f3d5427ee7093c0ac75519ac58914d9ba sha256sums = SKIP sha256sums = f40d3fbc90c62a7d38795ce1a6600edac3acf2041ea4a4fc987842b6fde5555a sha256sums = SKIP @@ -1,7 +1,7 @@ # Maintainer: Maxim Baz <$pkgname at maximbaz dot com> pkgname=rebuild-detector -pkgver=1.1.0 +pkgver=1.2.0 pkgrel=1 pkgdesc="Pacman hook to automatically detect which packages need to be rebuilt" arch=("any") @@ -10,7 +10,7 @@ source=("rebuild-detector" "rebuild-detector.sig" "rebuild-detector.hook" "rebuild-detector.hook.sig") -sha256sums=('283874f80ef3ee9c93751df25362864e4fefa626ed22bd69be38d2c5fa044342' +sha256sums=('a4678300a04411c74bf7d37a3d56087f3d5427ee7093c0ac75519ac58914d9ba' 'SKIP' 'f40d3fbc90c62a7d38795ce1a6600edac3acf2041ea4a4fc987842b6fde5555a' 'SKIP') diff --git a/rebuild-detector b/rebuild-detector index 2bc2dc225b36..7aec2c7ca4b4 100755 --- a/rebuild-detector +++ b/rebuild-detector @@ -1,8 +1,9 @@ #!/bin/bash # -# Run `ldd` on each binary in /usr/bin and save the broken ones grouped by repo. +# Detect broken packages that need to be rebuilt and save them grouped by repo. shopt -s nullglob +shopt -s extglob readonly REBUILD_DETECTOR_CACHE_DIR="/var/cache/rebuild-detector" mkdir -p "$REBUILD_DETECTOR_CACHE_DIR" @@ -18,28 +19,42 @@ get_binaries() { } get_broken_pkgs() { - parallel --will-cite 'ldd "{}" 2>/dev/null | grep "not found" >/dev/null && pacman -Qo "{}" | cut -d" " -f5' + parallel --will-cite 'ldd "{}" 2>/dev/null | grep "not found" >/dev/null && pacman -Qqo "{}"' } get_pkg_repo() { grep " $1" installed | cut -d' ' -f1 } +get_broken_python_pkgs() { + python_version="$(python --version | cut -d'.' -f2)" + pacman -Qqo /usr/lib/python3.!($python_version) 2>/dev/null +} + +get_broken_perl_pkgs() { + perl_version="$(perl -v | grep -Po '\d+' | head -n2 | paste -sd '.\n')" + pacman -Qqo /usr/lib/perl*/!($perl_version) 2>/dev/null +} + tmp=$(mktemp -dt "rebuild-detector.XXXXXXXX") || exit trap 'rm -rf $tmp' EXIT cd "$tmp" || exit +# Detect broken packages get_installed_pkgs >installed get_binaries | get_broken_pkgs >broken +get_broken_python_pkgs >>broken +get_broken_perl_pkgs >>broken +# Save broken packages grouped by repo, overriding previous results rm -f "$REBUILD_DETECTOR_CACHE_DIR/"*.list - while read -r pkg; do repo="$(get_pkg_repo "$pkg")" echo "$pkg" >>"$REBUILD_DETECTOR_CACHE_DIR/$repo.list" done <broken +# Remove duplicates for list in "$REBUILD_DETECTOR_CACHE_DIR/"*.list; do sort -u "$list" -o "$list" done diff --git a/rebuild-detector.hook.sig b/rebuild-detector.hook.sig Binary files differindex 2bdc315a80f3..86dfd784ee10 100644 --- a/rebuild-detector.hook.sig +++ b/rebuild-detector.hook.sig diff --git a/rebuild-detector.sig b/rebuild-detector.sig Binary files differindex 6f8d90e58543..4907692bfb46 100644 --- a/rebuild-detector.sig +++ b/rebuild-detector.sig |