From 421e43b268fc5ac1aa461a7f12d6c7173ed07817 Mon Sep 17 00:00:00 2001 From: Xavier Chantry Date: Wed, 14 Oct 2009 00:42:48 +0200 Subject: [PATCH] makepkg : checksums change 1) Add new -G --updateinteg option to automatically update checksums 2) Change -g behavior to use the checksums defined in the pkgbuild Original-work-by: Ray Rashif Signed-off-by: Xavier Chantry --- scripts/makepkg.sh.in | 56 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 53 insertions(+), 3 deletions(-) diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 3662228..f4dca25 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -58,6 +58,7 @@ DEP_BIN=0 FORCE=0 INFAKEROOT=0 GENINTEG=0 +UPDATEINTEG=0 SKIPINTEG=0 INSTALL=0 NOBUILD=0 @@ -501,6 +502,24 @@ download_sources() { popd &>/dev/null } +get_integlist() { + local integ + local integlist=() + + for integ in md5 sha1 sha256 sha384 sha512; do + local integrity_sums=($(eval echo "\${${integ}sums[@]}")) + if [ -n "$integrity_sums" ]; then + integlist=(${integlist[@]} $integ) + fi + done + + if [ ${#integlist[@]} -gt 0 ]; then + echo ${integlist[@]} + else + echo ${INTEGRITY_CHECK[@]} + fi +} + generate_checksums() { msg "$(gettext "Generating checksums for source files...")" plain "" @@ -510,8 +529,15 @@ generate_checksums() { exit 1 # $E_MISSING_PROGRAM fi + local integlist + if [ $# -eq 0 ]; then + integlist=$(get_integlist) + else + integlist=$@ + fi + local integ - for integ in ${INTEGRITY_CHECK[@]}; do + for integ in ${integlist[@]}; do integ="$(echo $integ | tr '[:upper:]' '[:lower:]')" case "$integ" in md5|sha1|sha256|sha384|sha512) : ;; @@ -556,6 +582,20 @@ generate_checksums() { done } +update_checksums() { + local file="$startdir/$BUILDSCRIPT" + local integlist=$(get_integlist) + + for integ in ${integlist[@]}; do + sed -i "/${integ}sums=(/,/)$/d" "$file" + done + + generate_checksums >> "$file" + + msg "$(gettext "Updated checksums in %s")" "$BUILDSCRIPT" + return 0 +} + check_checksums() { [ ${#source[@]} -eq 0 ] && return 0 @@ -1420,6 +1460,7 @@ usage() { echo "$(gettext " -f, --force Overwrite existing package")" echo "$(gettext " -g, --geninteg Generate integrity checks for source files")" echo "$(gettext " --skipinteg Do not fail when integrity checks are missing")" + printf "$(gettext " -G, --updateinteg Update integrity checks in %s")\n" "$BUILDSCRIPT" echo "$(gettext " -h, --help This help")" echo "$(gettext " -i, --install Install package after successful build")" echo "$(gettext " -L, --log Log package build process")" @@ -1465,9 +1506,9 @@ fi ARGLIST=$@ # Parse Command Line Options. -OPT_SHORT="AcCdefFghiLmop:rRsV" +OPT_SHORT="AcCdefFgGhiLmop:rRsV" OPT_LONG="allsource,asroot,ignorearch,clean,cleancache,nodeps" -OPT_LONG="$OPT_LONG,noextract,force,forcever:,geninteg,help,holdver" +OPT_LONG="$OPT_LONG,noextract,force,forcever:,geninteg,updateinteg,help,holdver" OPT_LONG="$OPT_LONG,install,log,nocolor,nobuild,rmdeps,repackage,skipinteg" OPT_LONG="$OPT_LONG,source,syncdeps,version,config:" # Pacman Options @@ -1500,6 +1541,7 @@ while true; do --forcever) shift; FORCE_VER=$1;; -F) INFAKEROOT=1 ;; -g|--geninteg) GENINTEG=1 ;; + -G| --updateinteg) UPDATEINTEG=1 ;; --holdver) HOLDVER=1 ;; -i|--install) INSTALL=1 ;; -L|--log) LOGGING=1 ;; @@ -1668,6 +1710,14 @@ if [ "$GENINTEG" -eq 1 ]; then exit 0 # $E_OK fi +if [ "$UPDATEINTEG" -eq 1 ]; then + mkdir -p "$srcdir" + cd "$srcdir" + download_sources + update_checksums + exit 0 +fi + if [ "$(type -t package)" = "function" ]; then PKGFUNC=1 fi -- 1.6.5