ports/120463: new port
Anton Statutov
astatutov at gmail.com
Sat Feb 9 13:50:02 UTC 2008
>Number: 120463
>Category: ports
>Synopsis: new port
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Sat Feb 09 13:50:02 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: Anton Statutov
>Release: 6.2
>Organization:
BeStyle Ltd
>Environment:
FreeBSD stant.bs 6.2-RELEASE-p7 FreeBSD 6.2-RELEASE-p7 #0: Sun Nov 18 04:51:07 MSK 2007 stant at stant.bs:/usr/obj/usr/src/sys/WORKSTATION i386
>Description:
This is port of Gentoo getdelta.sh.
Getdelta uses Deltup to reduce bandwidth load while upgrading ports distfiles.
>How-To-Repeat:
>Fix:
Patch attached with submission follows:
# This is a shell archive. Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file". Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
# /usr/ports/sysutils/getdelta
# /usr/ports/sysutils/getdelta/files
# /usr/ports/sysutils/getdelta/files/patch-getdelta.sh
# /usr/ports/sysutils/getdelta/Makefile
# /usr/ports/sysutils/getdelta/pkg-descr
# /usr/ports/sysutils/getdelta/pkg-message
# /usr/ports/sysutils/getdelta/pkg-plist
# /usr/ports/sysutils/getdelta/distinfo
#
echo c - /usr/ports/sysutils/getdelta
mkdir -p /usr/ports/sysutils/getdelta > /dev/null 2>&1
echo c - /usr/ports/sysutils/getdelta/files
mkdir -p /usr/ports/sysutils/getdelta/files > /dev/null 2>&1
echo x - /usr/ports/sysutils/getdelta/files/patch-getdelta.sh
sed 's/^X//' >/usr/ports/sysutils/getdelta/files/patch-getdelta.sh << 'END-of-/usr/ports/sysutils/getdelta/files/patch-getdelta.sh'
X--- getdelta.sh.orig Fri Jul 13 20:30:26 2007
X+++ getdelta.sh Sat Feb 9 14:02:17 2008
X@@ -1,7 +1,7 @@
X-#!/bin/sh
X-# getdelta.sh
X-# A download-wrapper script for gentoo that tries to get dtu files
X-# created by deltup instead of downloading complete source-files
X+#!/usr/local/bin/bash
X+# getdelta.sh
X+# A download-wrapper script for gentoo that tries to get dtu files
X+# created by deltup instead of downloading complete source-files
X # to save bandwidth.
X #
X # (C) 2004-2007 Nicolai Lissner <nlissne at linux01.gwdg.de>
X@@ -25,12 +25,17 @@
X VERSION="0.7"
X
X # Changelog
X+# version 0.7.8-freebsd 2009/02/09 by Anton Statutov stant at bestyle.ru
X+# - replaced "stat -c %s" to "stat -f "%z"
X+# - replaced "/etc/deltup" to "/usr/local/etc/deltup"
X+# - replaced $1 to $2 because $1 is the size of file on freebsd
X+# - some minor changes
X # version 0.7.8 2007/07/13
X # - added option -O to call of emerge when finding mirrors
X # - replaced some calls of coreutils with bash-internals
X # - removed some unnecessary code
X # version 0.7.7 2007/01/30
X-# - added support for more than one local mirror in getdelta.rc
X+# - added support for more than one local mirror in getdelta.rc
X # thanks to Alexander Polozov, who sent me the patch for this
X # version 0.7.6 2006/10/08
X # - fixed a typo - thanks to Andrey, who reported this problem in gentoo bug #150426
X@@ -39,7 +44,7 @@
X # if configured it will reduce the waiting timeout to the expected download-time (based on size of old version)
X # version 0.7.4 2006/09/06
X # - do not remove log file but reset only to make this work with FEATURE userfetch
X-# version 0.7.3
X+# version 0.7.3
X # 2006/09/01
X # - fixed a bug in detection of original url (sometimes no url was found)
X # version 0.7.2
X@@ -48,25 +53,25 @@
X # version 0.7.1
X # 2006/08/08
X # - fixed a problem in counting differences in filenames (aka bug #105011)
X-# -
X+# -
X # version 0.7
X # 2005/05/09
X # - servers create dtu files based on bdelta instead of xdelta
X # this happens for two reasons: smaller dtu-files and amd64-compatibilty
X # (yes, it's true - welcome to all new amd64 users of the servers)
X-# this is the reason for major update - and update forcing - you really
X+# this is the reason for major update - and update forcing - you really
X # NEED bdelta now to use the servers, while you do *not* need xdelta anymore :)
X # - integrity change of old candidate is optional now and *disabled* by default
X # if you want this time consuming "safe way" re-enable it via the config-file
X-# - added some files to DO_NOT_REMOVE file
X+# - added some files to DO_NOT_REMOVE file
X # - added "&time=<timestamp>" to prevent ANY proxy from returning results from cache
X # instead of asking the server - the server does not use this parameter - it just
X # exists to create unique request-URLS (as proposed by bodo "bothie" thiesen)
X # version 0.6.9 2005/03/11
X-# exit with exitcode of wget to signal to portage if
X+# � exit with exitcode of wget to signal to portage if
X # download was successful
X # - handle metadata.dtd as exception (repoman uses FETCHCOMMAND)
X-# - you can disable fetching of dtu-files now by setting
X+# - you can disable fetching of dtu-files now by setting
X # the environment variable GETDELTA=0
X # version 0.6.8 2005/01/09
X # - init frontmatch and backmatch with 0 (thanks, Torsten Veller)
X@@ -85,7 +90,7 @@
X # - inserted "break" to the TSTAMP>=QTMOUNT condition, too
X # (reported by Torsten Veller)
X # version 0.6.3 2004/11/08
X-# - added "^bash" and "^gtk-engines" to the default
X+# - added "^bash" and "^gtk-engines" to the default
X # do_not_remove file
X # - inserted a "break" to prevent infinite looping
X # when the server returns a queueposition higher than
X@@ -96,16 +101,16 @@
X # version 0.6.1 2004/10/18
X # - give better original URL to the server
X # - enhanced detection of former version (thanks to Jimmy Wennlund)
X-# - the COLOR variable didn't work since 0.5.3, because
X+# - the COLOR variable didn't work since 0.5.3, because
X # the config file was not read before evaluating the variable
X # - check, if the user have set RESUMECOMMAND to getdelta.sh
X # and if so complain about this
X #
X # version 0.6 2004/10/12
X # - dropped the client-side mirror-detection
X-# - Jimmy Wennlund <jimmy at jw.dyndns.org> sent me patch to
X-# make getdelta.sh work in an own tempdir and to
X-# remove any temporary files even when user pressed
X+# - Jimmy Wennlund <jimmy at jw.dyndns.org> sent me patch to
X+# make getdelta.sh work in an own tempdir and to
X+# remove any temporary files even when user pressed
X # ctrl-c -- I really like that. Thanks, Jimmy.
X # version 0.5.4 2004/10/11
X # - fixed a security leak (possible symlink attack)
X@@ -118,14 +123,14 @@
X # - fixed wrong path-detection with thirdpartymirrors
X # version 0.5.3.3 2004/09/12
X # - changed the way the script finds the mirror-group to use
X-# - setting GENTOO_MIRRORS="" is *not* necessary anymore
X+# - setting GENTOO_MIRRORS="" is *not* necessary anymore
X # removed check and warning about that
X # version 0.5.3.2 2004/09/12
X # - fixed a bug in the ouput of remove() (thx to wiebel)
X # version 0.5.3.1 2004/09/12
X-# - fixed a typo (FILESDIR)
X+# - fixed a typo (FILESDIR)
X # - fixed a missing "]"
X-# version 0.5.3 2004/09/12
X+# version 0.5.3 2004/09/12
X # - some code cleanups
X # - use a separated config file now
X # - old file in DISTDIR is tested on corruption before trying to download a dtu
X@@ -137,7 +142,7 @@
X # - added MAXIMUM_ACCEPTABLE_QUEUEPOS
X # version 0.5.2.3 2004/09/06
X # - new variable QUERY_RETRY
X-# - dont remove file added
X+# - dont remove file added
X # version 0.5.2.2 2004/08/30
X # - fixed a typo
X # version 0.5.2.1 2004/08/29
X@@ -147,14 +152,14 @@
X # - server sends a queued-message including queue-position now
X # show this.
X # version 0.5.1 2003/08/24
X-# - for some reason a "broken pipe" message appears when
X-# this script is called by portage/python, caused by
X+# - for some reason a "broken pipe" message appears when
X+# this script is called by portage/python, caused by
X # "ls -c|head -n1" - Ok, that *IS* a broken pipe, "head"
X # would not read anything more than 1 line, but I do not
X # really understand, why it does not happen when the script
X # is called manually -- ANY use of "head" in a pipe-construction
X-# would result in a "broken-pipe", but bash itself never
X-# complains about that. a cosmetic change to make the
X+# would result in a "broken-pipe", but bash itself never
X+# complains about that. a cosmetic change to make the
X # output clean and the script-code ugly :-/
X # version 0.5.0 2003/08/21
X # - the exception handling for kde changed to the server
X@@ -165,7 +170,7 @@
X # the deltup-server queues requests now
X # and sends back a document "deltup-queued"
X # the client then waits 10 seconds and tries
X-# again until it either gets the dtu or a file
X+# again until it either gets the dtu or a file
X # named *.failed
X # version 0.3.3 2003/05/06
X # transmit version to server
X@@ -208,7 +213,9 @@
X # This file: #
X ####################################################
X
X-GETDELTA_CONFIGFILE=/etc/deltup/getdelta.rc
X+PREFIX=/usr/local
X+DISTDIR=/usr/ports/distfiles
X+GETDELTA_CONFIGFILE="${PREFIX}/etc/deltup/getdelta.rc"
X #
X
X splitversion(){
X@@ -251,14 +258,14 @@
X ;;
X [[:alpha:]])
X calced=0
X- if [ "${x[$i]:0:3}" = "pre" ]
X+ if [ "${x[$i]:0:3}" = "pre" ]
X then
X vs=${x[$i]:3}
X let vser=0x${vser}00-40+${vs:-0}
X vser=$(printf "%02x" $vser)
X calced=1
X fi
X- if [ "${x[$i]:0:2}" = "rc" ]
X+ if [ "${x[$i]:0:2}" = "rc" ]
X then
X vs=${x[$i]:2}
X let vser=0x${vser}00-40+${vs:-0}
X@@ -271,7 +278,7 @@
X let vser=0x${vser}00-80+${vs:-0}
X vser=$(printf "%02x" $vser)
X calced=1
X- fi
X+ fi
X if [ "${x[$i]:0:4}" = "beta" ]
X then
X vs=${x[$i]:4}
X@@ -279,7 +286,7 @@
X vser=$(printf "%02x" $vser)
X calced=1
X fi
X- if [ "$calced" = "0" ]
X+ if [ "$calced" = "0" ]
X then
X vs=$(echo -n ${x[$i]} | od -t x1 | head -n1| cut -d" " -f2-| tr -d " ")
X vser="${vser}${vs}"
X@@ -308,21 +315,21 @@
X then
X echo -e "\n# ${3}\n${1}=\"${2}\"" >>$GETDELTA_CONFIGFILE
X output "${CYAN}Added new variable ${YELLOW}$1${CYAN} to config file ${GETDELTA_CONFIGFILE}\n"
X- output "please check if it fits your needs\n"
X+ output "please check if it fits your needs\n"
X fi
X }
X
X # this checks for an entry in our do_not_remove-file and adds it if does not exist
X # $1 is the name (as grep regexp) of the file not to be removed
X add_to_donotremove() {
X-
X+
X if ! grep -q "^${1}" $DO_NOT_REMOVE
X then
X echo "${1}" >>$DO_NOT_REMOVE
X output "${CYAN}Added new grep-regex \"${1}\" to config file ${DO_NOT_REMOVE}\n"
X fi
X }
X-
X+
X
X remove() {
X output "${GREEN}You have chosen to remove ${CYAN}$1\n"
X@@ -351,20 +358,20 @@
X -e "s/src6/srcFFF/g" \
X -e "s/src7/srcGGG/g" <<< $MASK_FILENAME)
X fi
X-
X+
X # ignore PR for src-files of firefox
X if [ "${MASK_FILENAME:0:7}" = "firefox" ]
X then
X MASK_FILENAME="${MASK_FILENAME//PR}"
X fi
X-
X+
X # ignore "try" with new mplayer
X if [ "${MASK_FILENAME:0:7}" = "MPlayer" ]
X then
X MASK_FILENAME="${MASK_FILENAME//try}"
X fi
X-
X-
X+
X+
X # ignore some strings in any filename
X echo $(sed -e "s/\.bz2$//g" \
X -e "s/\.gz$//g" \
X@@ -383,13 +390,13 @@
X add_to_configfile KDE_MIRROR "ftp://ftp.kde.org/pub/kde/stable" "we de not get kde-deltas from a delta-up-server, since kde provides own xdelta-files"
X add_to_configfile LOCAL_MIRROR "" "set this to one or more (space separated) URI ending with '/' if you want to check one or more local mirror(s) first\n# most people just leave it empty."
X add_to_configfile DELTUP_SERVER "http://linux01.gwdg.de/~nlissne/deltup.php" "deltup-server to use"
X-add_to_configfile FETCH "/usr/bin/wget -t 1 --passive-ftp" "command to use for downloading"
X+add_to_configfile FETCH "${PREFIX}/bin/wget -t 1 --passive-ftp" "command to use for downloading"
X add_to_configfile QUEUERETRY 15 "number of seconds to wait before a queued request is retried"
X add_to_configfile MAXIMUM_ACCEPTABLE_QUEUEPOS "15" "the maximum queuepos you would accept (if higher download full archive instead)"
X add_to_configfile QUEUETIMEOUT 900 "when a dtu-request is queued - how long should we wait max. before downloading the original archive instead (in seconds)"
X add_to_configfile CHECK_OLD_FILE "false" "set to \"true\", if you want getdelta.sh to use Pkunk's integrity check for the old file before downloading dtu-files"
X add_to_configfile REMOVE_OLD "false" "set to \"true\", if you want getdelta.sh to delete the old file, if patch was succesful"
X-add_to_configfile DO_NOT_REMOVE "/etc/deltup/do_not_remove" "a list of files not to be removed by REMOVE_OLD feature"
X+add_to_configfile DO_NOT_REMOVE "${PREFIX}/etc/deltup/do_not_remove" "a list of files not to be removed by REMOVE_OLD feature"
X add_to_configfile REMOVE_INCOMPLETE_OLD_FILES "false" "set this to \"true\" if you want getdelta.sh to delete old versions that seems to be corrupt,\n# or to \"false\" if you want to delete them manually\n# note: getdelta.sh will not use these files anyway"
X add_to_configfile VERBOSITY true "set to \"true\", if you want verbose outputs (later to be set to a level [0-3])"
X add_to_configfile COLOR true "set to \"true\", if you want colorful messages, \"false\" if not."
X@@ -402,12 +409,12 @@
X source $GETDELTA_CONFIGFILE
X
X # create or update DO_NOT_REMOVE file
X-# these files have "old" versions that are needed to build the new versions
X+# these files have "old" versions that are needed to build the new versions
X # so they should never removed by the REMOVE_OLD feature
X DO_NOT_REMOVE_DIR=$(dirname $DO_NOT_REMOVE)
X-if [ ! -e $DO_NOT_REMOVE ]
X-then
X- mkdir -p $DO_NOT_REMOVE_DIR
X+if [ ! -e $DO_NOT_REMOVE ]
X+then
X+ mkdir -p $DO_NOT_REMOVE_DIR
X echo "# This file contains regexp in 'grep-style' for files that should not be removed" >$DO_NOT_REMOVE
X echo "# if REMOVE_OLD is set to 'true'" >>$DO_NOT_REMOVE
X echo "# Some examples (actually these files are known to result" >>$DO_NOT_REMOVE
X@@ -424,7 +431,7 @@
X add_to_donotremove "^rp-pppoe"
X
X
X-if [ -z $1 ]
X+if [ -z "$1" ]
X then
X COLOR=true
X echo -e "${YELLOW}getdelta.sh version ${VERSION}"
X@@ -435,13 +442,13 @@
X echo -e "\n${YELLOW}There is a config-file ${CYAN}${GETDELTA_CONFIGFILE}${YELLOW} with some variables to control the behaviour of this script."
X echo -e "Edit it to your needs.${NORMAL}"
X exit 1
X-fi
X-# include variables from gentoo make.globals and make.conf
X-source /etc/make.globals
X+fi
X+# include variables from freebsd make.globals and make.conf
X+#source /etc/make.globals
X source /etc/make.conf
X
X
X-if ${COLOR}
X+if ${COLOR}
X then
X RED="\033[01;31m"
X GREEN="\033[01;32m"
X@@ -459,14 +466,15 @@
X CYAN=""
X NORMAL=""
X fi
X-grep -q "getdelta.sh" <<< "${RESUMECOMMAND}" &&
X- output "${RED}do NOT set RESUMECOMMAND to use getdelta.sh" &&
X+grep -q "getdelta.sh" <<< "${RESUMECOMMAND}" &&
X+ output "${RED}do NOT set RESUMECOMMAND to use getdelta.sh" &&
X output "use getdelta.sh for your FETCHCOMMAND, only." &&
X sleep 5 && exit 1
X
X pushd $DISTDIR >/dev/null 2>/dev/null
X-ORIG_URI=$1
X-NEW_FILE=$(basename $ORIG_URI)
X+ORIG_URI=$2
X+output "${GREEN} Original URI: ${YELLOW}${ORIG_URI}"
X+NEW_FILE=$(basename "$ORIG_URI")
X
X # repoman downloads metadata.dtd with FETCHCOMMAND
X # this should not be done with getdelta - so just fetch the file and exit
X@@ -495,8 +503,8 @@
X for localn in $LOCAL_MIRROR
X do
X output "${YELLOW}Trying to get ${CYAN}${NEW_FILE}${YELLOW} from local mirror ${CYAN}${localn}\n"
X- if $FETCH "${localn}${NEW_FILE}"
X- then
X+ if $FETCH "${localn}${NEW_FILE}"
X+ then
X output "${GREEN}success.\n"
X exit 0
X else
X@@ -508,11 +516,11 @@
X # find an old file in $DISTDIR that matches the new one. This is tricky,
X # and probably it will fail sometimes.
X #
X-# we just ignore any occurence of
X+# we just ignore any occurence of
X # "pre","rc","[0-9]","_","-","." in the filenames and test
X # if they are the same (or VERY similar (differ only in 1 char)).
X-# to reduce the files to check, we only check files
X-# with the same beginning
X+# to reduce the files to check, we only check files
X+# with the same beginning
X #
X output "${GREEN}Searching for a previously downloaded file in ${YELLOW}${DISTDIR}\n"
X
X@@ -522,7 +530,7 @@
X
X # if filename is lib* use first 4 letters to increase performance
X [ "${NEW_FILE:0:3}" = "lib" ] && [ $length_first_chars -lt 5 ] && first_chars="${NEW_FILE:0:4}"
X-
X+
X mask=$(mask_name "${NEW_FILE}")
X let len1=${#mask}
X filelist=""
X@@ -532,7 +540,7 @@
X mask2=$(mask_name "${name}")
X # add any file, that results in the same mask or differ not more than two letters
X let len2=${#mask2}
X- if [ $len1 -gt $len2 ]
X+ if [ $len1 -gt $len2 ]
X then
X max=${len1}
X let min=${len2}
X@@ -540,10 +548,10 @@
X let min=${len1}
X max=${len2}
X fi
X- let df=${max}-${min}
X-
X+ let df=${max}-${min}
X+
X # if masks differ in length more than 1 they cannot match
X- if [ $df -le 1 ]
X+ if [ $df -le 1 ]
X then
X let frontmatch=0
X let backmatch=0
X@@ -554,7 +562,7 @@
X else break
X fi
X done
X-
X+
X # now backwards
X mask=$(rev <<< ${mask})
X mask2=$(rev <<< ${mask2})
X@@ -565,18 +573,18 @@
X else break
X fi
X done
X-
X+
X # forwards for mask again (need this for the next run of the loop)
X mask=$(rev <<< ${mask})
X-
X+
X let matchall=${frontmatch}+${backmatch}
X let minmatch=${min}-1
X [ ${matchall} -ge ${minmatch} ] && filelist="${filelist} $name"
X fi
X done
X
X-if ! [ -z "$filelist" ]
X-then
X+if ! [ -z "$filelist" ]
X+then
X # we have got a list of candidates in $filelist now. find the best match .
X output "${GREEN}We have the following candidates to choose from \n${YELLOW}`sed -e \"s/\ /\\n/g\" <<< $filelist` \n"
X
X@@ -607,7 +615,7 @@
X done
X ((match--))
X backmatch=${a[0]:${#a[0]}-${match}}
X-
X+
X # isolate version from filename (foobar-1.2.3.tar.gz -> 1.2.3)
X new_version=${NEW_FILE#${frontmatch}}
X new_version=${new_version%${backmatch}}
X@@ -642,7 +650,7 @@
X else
X let serial_diff=0x${old_serial}-0x${new_serial}
X fi
X- if [ $serial_diff -le ${minimal_diff:-${serial_diff}} ]
X+ if [ $serial_diff -le ${minimal_diff:-${serial_diff}} ]
X then
X best_candidate="$name"
X minimal_diff=${serial_diff}
X@@ -651,18 +659,18 @@
X
X output "${GREEN}The best of all is ... ${CYAN}${best_candidate}\n"
X output "${YELLOW}Checking if this file is OK.\n"
X-
X+
X # this part is based on Pkunk's code posted on http://bugs.gentoo.org/show_bug.cgi?id=63525
X # but with some changes
X FILE_IS_CORRUPT=false
X- if $CHECK_OLD_FILE
X+ if $CHECK_OLD_FILE
X then
X file_digest=$(grep -h ${best_candidate} ${FILESDIR}/digest-* | sed -n 1p)
X if [ "$file_digest" ]
X then
X- file_md5=$(cut -d ' ' -f2 <<< "$file_digest")
X+ file_md5=$(cut -d ' ' -f2 <<< "$file_digest")
X file_origsize=$(cut -d ' ' -f4 <<< "$file_digest")
X- file_currentsize=$(stat -c %s ${best_candidate})
X+ file_currentsize=$(stat -f "%z" ${best_candidate})
X if [ $file_currentsize -ne $file_origsize ]
X then
X output "${RED}Found ${best_candidate}, but filesize ${CYAN}${file_currentsize} ${RED} does not match ${CYAN}${file_origsize} (found in digest-file)\n"
X@@ -677,7 +685,7 @@
X output "${RED}reported an error while testing ${CYAN}${best_candidate}${RED} - so this file is unusable.\n"
X FILE_IS_CORRUPT=true
X fi
X-
X+
X if $FILE_IS_CORRUPT && $REMOVE_INCOMPLETE_OLD_FILES
X then
X output "${YELLOW}You have chosen to automatically delete such broken files from your distfiles-directory, so here we go...\n"
X@@ -689,9 +697,9 @@
X # end of file-corruption check for $best_candidate found in distfiles
X if ! $FILE_IS_CORRUPT
X then
X-
X- QUERY_URL=$(GENTOO_MIRRORS="" emerge -fOp =${CATEGORY}/${PF} 2>&1 |
X- sed -e "s/ /\\n/g" | egrep "(http|ftp)://" |
X+
X+ QUERY_URL=$(GENTOO_MIRRORS="" emerge -fOp =${CATEGORY}/${PF} 2>&1 |
X+ sed -e "s/ /\\n/g" | egrep "(http|ftp)://" |
X grep "${NEW_FILE}" | tail -n 1)
X query="?have=${best_candidate}&want=${NEW_FILE}&url=${QUERY_URL}&version=${VERSION}&time=$(date +%s)"
X output "${GREEN}Trying to download ${YELLOW}${best_candidate}-${NEW_FILE}.dtu\n"
X@@ -704,22 +712,22 @@
X pushd ${tmp_dwn_dest} >/dev/null 2>&1
X
X # thanks to MATSUI Fe2+ Tetsushi for idea and patch
X- FILESIZE=$(stat -c %s "${DISTDIR}/${best_candidate}")
X+ FILESIZE=$(stat -f "%z" "${DISTDIR}/${best_candidate}")
X let TIMELIMIT=${FILESIZE}/${BANDWIDTH}
X [[ $TIMELIMIT -lt $QUEUETIMEOUT ]] && QUEUETIMEOUT=$TIMELIMIT
X-
X+
X if $FETCH "${DELTUP_SERVER}${query}"
X then
X # thanks to deelkar for this much more elegant solution to the "broken pipe" problem with "head -n1"
X- GOTFILE=$(ls -c | sed -n 1p)
X+ GOTFILE=$(ls -c | sed -n 1p)
X output "${YELLOW}GOT ${CYAN}${GOTFILE}\n"
X-
X+
X # There are some possibilities what the deltup-server
X # may have sento to us.
X-
X+
X # first: the request have been queued
X if [ "${GOTFILE}" = "deltup-queued" ]
X- then
X+ then
X let QTMOUT=$(date +%s)+QUEUETIMEOUT
X while [ -f deltup-queued ]
X do
X@@ -732,11 +740,11 @@
X then
X for ((sec=QUEUERETRY;sec>0;sec--))
X do
X- if ((sec>1))
X+ if ((sec>1))
X then
X- ${VERBOSITY} && echo -n -e "${YELLOW} I will try again in ${sec} seconds. \r"
X+ ${VERBOSITY} && echo -n -e "${YELLOW} I will try again in ${sec} seconds. \r"
X else
X- ${VERBOSITY} && echo -n -e "${YELLOW} I will try again in ${sec} second. \r"
X+ ${VERBOSITY} && echo -n -e "${YELLOW} I will try again in ${sec} second. \r"
X fi
X sleep 1
X done
X@@ -745,7 +753,7 @@
X GOTFILE=$(ls -c | sed -n 1p)
X else
X if ((TSTAMP>=QTMOUT))
X- then
X+ then
X GOTFILE="timeout"
X output "\n${RED}TIMEOUT exceeded.\n"
X break
X@@ -756,31 +764,31 @@
X output "\n${RED}You have configured getdelta.sh not to accept this queue-position.\n"
X output "${YELLOW}We are going to download the ${RED}full archive${YELLOW} instead.\n"
X break
X- fi
X+ fi
X fi
X done
X fi
X-
X+
X if [ -f ${best_candidate}-${NEW_FILE}.failed ]
X then
X- output "\n${RED}The server could not build the dtu-file for ${NEW_FILE}\n"
X- output "${YELLOW}reason:\n${RED}$(cat ${best_candidate}-${NEW_FILE}.failed)\n"
X+ output "\n${RED}The server could not build the dtu-file for ${NEW_FILE}\n"
X+ output "${YELLOW}reason:\n${RED}$(cat ${best_candidate}-${NEW_FILE}.failed)\n"
X rm -rf ${best_candidate}-${NEW_FILE}.failed
X fi
X
X if [ -f ${best_candidate}-${NEW_FILE}.dtu ]
X then
X- output "${GREEN}Successfully fetched the dtu-file - let's build ${NEW_FILE}...\n"
X- downloadsize=$(stat -c %s ${best_candidate}-${NEW_FILE}.dtu)
X- if deltup -p -v -D ${DISTDIR} ${best_candidate}-${NEW_FILE}.dtu
X- then
X- newsize=$(stat -c %s ${NEW_FILE})
X+ output "${GREEN}Successfully fetched the dtu-file - let's build ${NEW_FILE}...\n"
X+ downloadsize=$(stat -f "%z" ${best_candidate}-${NEW_FILE}.dtu)
X+ if deltup -p -v -D ${DISTDIR} ${best_candidate}-${NEW_FILE}.dtu
X+ then
X+ newsize=$(stat -f "%z" ${NEW_FILE})
X let savedsize=${newsize}-${downloadsize}
X let percent=${savedsize}*100/${newsize}
X unit="bytes"
X [ $savedsize -gt 1024 ] && let savedsize=$savedsize/1024 && unit="kB"
X [ $savedsize -gt 1024 ] && let savedsize=$savedsize/1024 && unit="MB"
X-
X+
X case $unit in
X bytes) UCOLOR=${RED}
X ;;
X@@ -796,13 +804,13 @@
X fi
X
X fi # if $FETCH "${DELTUP_SERVER}${query}"
X-
X+
X # Clean up.
X # We might got an important message
X if [ -f ${tmp_dwn_dest}/deltup-server.msg ]
X then
X- echo -e "${RED}IMPORTANT MESSAGE FROM DELTUP-SERVER${YELLOW}$(cat ${tmp_dwn_dest}/deltup-server.msg)\n"
X- for ((i=1;i<=5;i++))
X+ echo -e "${RED}IMPORTANT MESSAGE FROM DELTUP-SERVER${YELLOW}$(cat ${tmp_dwn_dest}/deltup-server.msg)\n"
X+ for ((i=1;i<=5;i++))
X do
X echo -n -e "\a"
X sleep 1
X@@ -816,15 +824,15 @@
X #stop respond to trap2
X trap 2
X fi # if ! FILE_IS_CORRUPT
X-else # if ! [ -z "$filelist" ]
X+else # if ! [ -z "$filelist" ]
X # No filelist - probably we do not have an old version of the file
X- output "${RED}No old version of the requested file found.\n"
X+ output "${RED}No old version of the requested file found.\n"
X fi
X
X-
X+
X # Ok, once we are here, we should have got the delta (and used it)
X # or we still have to download the full file
X-if ! [ -f ${DISTDIR}/${NEW_FILE} ]
X+if ! [ -f ${DISTDIR}/${NEW_FILE} ]
X then
X output "${RED}The dtu could not be fetched,${YELLOW} downloading full file from original URL\n"
X $FETCH $ORIG_URI
X@@ -833,7 +841,7 @@
X fi
X
X
X-if $SEPARATED_WINDOW
X+if $SEPARATED_WINDOW
X then
X sleep 3
X kill $termpid
END-of-/usr/ports/sysutils/getdelta/files/patch-getdelta.sh
echo x - /usr/ports/sysutils/getdelta/Makefile
sed 's/^X//' >/usr/ports/sysutils/getdelta/Makefile << 'END-of-/usr/ports/sysutils/getdelta/Makefile'
X# Ports collection makefile for: stardict3
X# Date created: 15 December 2007
X# Whom: Anton Statutov <astatutov at gmail.com>
X#
X# $FreeBSD$
X#
X
XPORTNAME= getdelta
XPORTVERSION= 0.7.8
X#PORTREVISION= 0
XCATEGORIES= sysutils
XMASTER_SITES= http://132.207.4.160/distfiles/
X
XMAINTAINER= astatutov at gmail.com
XCOMMENT= Script for reducing bandwidth load while upgrading ports disfiles
X
XUSE_BZIP2= yes
XNO_WRKSUBDIR= yes
XNO_BUILD= yes
X
X.include <bsd.port.pre.mk>
X
Xdo-install:
X ${INSTALL} ${WRKSRC}/getdelta.sh ${PREFIX}/bin/getdelta.sh
X
Xpost-install:
X @${CAT} ${PKGMESSAGE}
X
X.include <bsd.port.post.mk>
END-of-/usr/ports/sysutils/getdelta/Makefile
echo x - /usr/ports/sysutils/getdelta/pkg-descr
sed 's/^X//' >/usr/ports/sysutils/getdelta/pkg-descr << 'END-of-/usr/ports/sysutils/getdelta/pkg-descr'
XThis is port of Gentoo getdelta.sh.
XGetdelta uses Deltup to reduce bandwidth load while upgrading ports distfiles.
X
XWWW: http://www.deltup.org/
X
X- Anton Statutov
Xastatutov at gmail.com
END-of-/usr/ports/sysutils/getdelta/pkg-descr
echo x - /usr/ports/sysutils/getdelta/pkg-message
sed 's/^X//' >/usr/ports/sysutils/getdelta/pkg-message << 'END-of-/usr/ports/sysutils/getdelta/pkg-message'
X=========================================================================================
XATTENTION!
XTo use Getdelta for upgrading ports you need to add following string into /etc/make.conf:
XFETCH_CMD=/usr/local/bin/getdelta.sh
X
XTo do this you can simple run following command:
Xecho "FETCH_CMD=/usr/local/bin/getdelta.sh" >> /etc/make.conf
X=========================================================================================
END-of-/usr/ports/sysutils/getdelta/pkg-message
echo x - /usr/ports/sysutils/getdelta/pkg-plist
sed 's/^X//' >/usr/ports/sysutils/getdelta/pkg-plist << 'END-of-/usr/ports/sysutils/getdelta/pkg-plist'
Xbin/getdelta.sh
X
END-of-/usr/ports/sysutils/getdelta/pkg-plist
echo x - /usr/ports/sysutils/getdelta/distinfo
sed 's/^X//' >/usr/ports/sysutils/getdelta/distinfo << 'END-of-/usr/ports/sysutils/getdelta/distinfo'
XMD5 (getdelta-0.7.8.tar.bz2) = e6feab0fe6a71f63e5a693c67ef7fd1e
XSHA256 (getdelta-0.7.8.tar.bz2) = 72bd5dac59e86a5c78217a15e3198df513152dc784a8685b1a8c2c5efdb34217
XSIZE (getdelta-0.7.8.tar.bz2) = 10335
END-of-/usr/ports/sysutils/getdelta/distinfo
exit
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list