Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/scripts/pkgdelta.sh.in
diff options
context:
space:
mode:
authorAllan McRae <allan@archlinux.org>2019-03-02 15:38:50 +1000
committerAllan McRae <allan@archlinux.org>2019-03-07 11:12:12 +1000
commit2883b869c72102bf00b4dc14f663c2f322736bc0 (patch)
treec317845e473eb63062bfa8953c963471f73cf788 /scripts/pkgdelta.sh.in
parent9adb0d5b37df7ca668e23877e85431dabeea005e (diff)
Remove pkgdelta
Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'scripts/pkgdelta.sh.in')
-rw-r--r--scripts/pkgdelta.sh.in234
1 files changed, 0 insertions, 234 deletions
diff --git a/scripts/pkgdelta.sh.in b/scripts/pkgdelta.sh.in
deleted file mode 100644
index b0b0b21f..00000000
--- a/scripts/pkgdelta.sh.in
+++ /dev/null
@@ -1,234 +0,0 @@
-#!/bin/bash
-#
-# pkgdelta - create delta files for use with pacman and repo-add
-# @configure_input@
-#
-# Copyright (c) 2009 Xavier Chantry <shiningxc@gmail.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-
-# bash options
-set -o errexit
-
-# gettext initialization
-export TEXTDOMAIN='pacman-scripts'
-export TEXTDOMAINDIR='@localedir@'
-
-declare -r myver='@PACKAGE_VERSION@'
-
-LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
-
-# Import libmakepkg
-source "$LIBRARY"/util/message.sh
-source "$LIBRARY"/util/parseopts.sh
-
-# Options
-QUIET=0
-USE_COLOR='y'
-
-# minimal of package before deltas are generated (bytes)
-min_pkg_size=$((1024*1024))
-
-# percent of new package above which the delta will be discarded
-max_delta_size=70
-
-
-# ensure we have a sane umask set
-umask 0022
-
-# print usage instructions
-usage() {
- printf "pkgdelta (pacman) %s\n" "${myver}"
- echo
- printf -- "$(gettext "Usage: pkgdelta [options] <package1> <package2>\n")"
- echo
- printf -- "$(gettext "\
-pkgdelta will create a delta file between two packages.\n\
-This delta file can then be added to a database using repo-add.\n")"
- echo
- printf -- "$(gettext "Example: pkgdelta pacman-3.0.0.pkg.tar.gz pacman-3.0.1.pkg.tar.gz")\n"
- echo
- printf -- "$(gettext "Options:\n")"
- printf -- "$(gettext " -q, --quiet minimize output\n")"
- printf -- "$(gettext " --nocolor remove color from output\n")"
- printf -- "$(gettext " --min-pkg-size minimum package size before deltas are generated\n")"
- printf -- "$(gettext " --max-delta-size percent of new package above which the delta will be discarded\n")"
-}
-
-version() {
- printf "pkgdelta (pacman) %s\n" "$myver"
- printf -- "Copyright (c) 2009 Xavier Chantry <shiningxc@gmail.com>.\n"
- printf '\n'
- printf -- "$(gettext "\
-This is free software; see the source for copying conditions.\n\
-There is NO WARRANTY, to the extent permitted by law.\n")"
-}
-
-m4_include(library/human_to_size.sh)
-
-isnumeric() {
- [[ $1 != *[!0-9]* ]]
-}
-
-read_pkginfo() {
- unset pkgver pkgname arch
- while IFS='=' read -r field value; do
- # skip comments and invalid lines
- [[ $field = '#'* || -z $value ]] && continue
-
- # skip lines which aren't fields we care about
- [[ $field != @(pkgver|pkgname|arch) ]] || continue
-
- declare -g "${field% }=${value# }"
-
- [[ $pkgname && $pkgver && $arch ]] && return 0
- done < <(bsdtar -xOqf "$1" .PKGINFO 2>/dev/null)
-
- error "$(gettext "Invalid package file '%s'.")" "$1"
- return 1
-}
-
-# $oldfile $oldmd5 $newfile $newmd5 $deltafile $deltamd5 $deltasize
-create_xdelta()
-{
- local oldfile=$1
- local newfile=$2
- local \
- oldname oldver oldarch \
- newname newver newarch \
- deltafile
-
- read_pkginfo "$oldfile" || return 1
- oldname="$pkgname"
- oldver="$pkgver"
- oldarch="$arch"
- read_pkginfo "$newfile" || return 1
- newname="$pkgname"
- newver="$pkgver"
- newarch="$arch"
-
- pkgsize="$(wc -c "$newfile" | cut -d' ' -f1)"
-
- if ((pkgsize < min_pkg_size)); then
- msg "$(gettext "Skipping delta creation for small package: %s - size %s")" "$newname" "$pkgsize"
- return 0
- fi
-
- if [[ $oldname != "$newname" ]]; then
- error "$(gettext "The package names don't match : '%s' and '%s'")" "$oldname" "$newname"
- return 1
- fi
-
- if [[ $oldarch != "$newarch" ]]; then
- error "$(gettext "The package architectures don't match : '%s' and '%s'")" "$oldarch" "$newarch"
- return 1
- fi
-
- if [[ $oldver == "$newver" ]]; then
- error "$(gettext "Both packages have the same version : '%s'")" "$newver"
- return 1
- fi
-
- msg "$(gettext "Generating delta from version %s to version %s")" "$oldver" "$newver"
- deltafile=$(dirname "$newfile")/$pkgname-${oldver}_to_${newver}-$arch.delta
- local ret=0
-
- xdelta3 -q -f -9 -S lzma -s "$oldfile" "$newfile" "$deltafile" || ret=$?
- if (( ret )); then
- error "$(gettext "Delta could not be created.")"
- return 1
- fi
-
- deltasize="$(wc -c "$deltafile" | cut -d' ' -f1)"
-
- if ((max_delta_size * pkgsize / 100 < deltasize)); then
- msg "$(gettext "Delta package larger than maximum size. Removing.")"
- rm -f "$deltafile"
- return 0
- fi
-
- msg "$(gettext "Generated delta : '%s'")" "$deltafile"
- (( QUIET )) && echo "$deltafile"
-
- return 0
-}
-
-OPT_SHORT='hqV'
-OPT_LONG=('help' 'quiet' 'max-delta-size:' 'min-pkg-size:' 'nocolor' 'version')
-if ! parseopts "$OPT_SHORT" "${OPT_LONG[@]}" -- "$@"; then
- exit 1
-fi
-set -- "${OPTRET[@]}"
-unset OPT_SHORT OPT_LONG OPTRET
-
-# parse arguments
-while :; do
- case $1 in
- -h|--help)
- usage
- exit 0 ;;
- -V|--version)
- version
- exit 0 ;;
- -q|--quiet)
- QUIET=1;;
- --nocolor)
- USE_COLOR='n';;
- --min-pkg-size)
- if ! min_pkg_size=$(human_to_size "$2"); then
- echo "invalid argument '$2' for option -- '$1'"
- exit 1
- fi
- shift ;;
- --max-delta-size)
- arg=$(awk -v val="$2" 'BEGIN { print val * 100 }')
- if ! isnumeric "$arg" || (( arg > 200 )); then
- echo "invalid argument '$2' for option -- '$1'"
- exit 1
- fi
- max_delta_size=$arg
- shift ;;
- --)
- shift
- break ;;
- esac
- shift
-done
-
-# check if messages are to be printed using color
-if [[ -t 2 && $USE_COLOR != "n" ]]; then
- colorize
-else
- unset ALL_OFF BOLD BLUE GREEN RED YELLOW
-fi
-
-if (( $# != 2 )); then
- usage
- exit 1
-fi
-
-for i in "$@"; do
- if [[ ! -f $i ]]; then
- error "$(gettext "File '%s' does not exist")" "$i"
- exit 1
- fi
-done
-
-if ! type xdelta3 &>/dev/null; then
- error "$(gettext "Cannot find the xdelta3 binary! Is xdelta3 installed?")"
- exit 1
-fi
-
-create_xdelta "$@"