#!/bin/sh # $NetBSD: upload,v 1.24 2005/04/10 21:44:04 jschauma Exp $ # # Upload non-restricted binary pkgs to ftp server # MD5="digest md5"; SHA1="digest sha1"; opsys=`uname -s` case "$opsys" in NetBSD) BMAKE=make; BSDSUM="sum -o 1"; CKSUM="cksum"; SYSVSUM="sum -o 2"; ;; IRIX*) BMAKE=bmake; BSDSUM="sum -r"; CKSUM="cksum"; SYSVSUM="sum"; ;; *) BMAKE=bmake ;; esac export BMAKE # Bring in variables for bulk-install BATCH=1 DEPENDS_TARGET=bulk-install export BATCH DEPENDS_TARGET # Pull in RSYNC_DST, RSYNC_OPTS: if [ -f "$BULK_BUILD_CONF" ]; then . $BULK_BUILD_CONF else . `dirname $0`/build.conf fi cd $USR_PKGSRC if [ "$RSYNC_DST_SPECIFIC" != "" -o "$RSYNC_DST_OTHER" != "" ]; then echo Use of RSYNC_DST_SPECIFIC and RSYNC_DST_OTHER is deprecated. echo Please just set RSYNC_DST in build.conf. exit 1 fi if [ -z "$RSYNC_DST" ]; then echo "You must set the variable RSYNC_DST, see build.conf-example." exit 1 fi # Paths for both OS-version-specific and general pkgs: RSYNC_DST_SPECIFIC=${RSYNC_DST} RSYNC_DST_OTHER=${RSYNC_DST} # # Some temp files # umask 22 TMPDIR=${TMPDIR:-/tmp} TMP=${TMPDIR}/pkg_upload.$$ mkdir $TMP exf=$TMP/exclude osf=$TMP/osversion_specific upload=$TMP/upload upload_specific=$TMP/upload_specific upload_others=$TMP/upload_others # May be different than $USR_PKGSRC: pkgsrcdir=`cd pkgtools/pkglint ; ${BMAKE} show-var VARNAME=_PKGSRCDIR` packages=`cd pkgtools/pkglint ; ${BMAKE} show-var VARNAME=PACKAGES` distdir=`cd pkgtools/pkglint ; ${BMAKE} show-var VARNAME=DISTDIR` # Pull in some pkgs needed ( cd pkgtools/pkglint ; ${BMAKE} bulk-install ) ( cd net/rsync ; ${BMAKE} bulk-install ) ( cd security/audit-packages ; ${BMAKE} bulk-install ) echo "Making sure vulnerability-list is upto date:" if [ -z "$UPDATE_VULNERABILITY_LIST" -o "$UPDATE_VULNERABILITY_LIST" = "yes" ] then env PKGVULNDIR=${distdir} download-vulnerability-list else echo '(skipped)' fi case $LINTPKGSRC_CACHE in yes|YES) lintpkgsrc_cache="-I `cd pkgtools/pkglint ; ${BMAKE} show-var VARNAME=LINTPKGSRC_DB`" ;; *) lintpkgsrc_cache='' ;; esac echo "Checking for restricted, out of date, and vulnerable packages:" # -p = report old versions of packages # -R = report restricted packages # -V = report vulnerable packages lintpkgsrc $lintpkgsrc_cache -K $packages -P $pkgsrcdir -pRV | sed 's@'$packages'/@@' > $exf echo "Checking for OSVERSION_SPECIFIC pkgs:" lintpkgsrc $lintpkgsrc_cache -K $packages -P $pkgsrcdir -O | sed 's@'$packages'/@@' > $osf RSFLAGS="-vap --progress $RSYNC_OPTS" failed=no cd $packages if [ "${MKSUMS}" = "yes" -o "${MKSUMS}" = "YES" ]; then echo "Calculating checksum files..." SUMFILES="BSDSUM CKSUM MD5 SHA1 SYSVSUM" rm -f ${SUMFILES} if [ x"${SIGN_AS}" != x"" ]; then ( cd ${pkgsrcdir}/security/gnupg; ${BMAKE} bulk-install ) for i in ${SUMFILES}; do echo > $i echo "This file is signed with ${SIGN_AS}'s PGP key." >> $i echo >> $i done fi ( cd ${pkgsrcdir}/pkgtools/digest; ${BMAKE} bulk-install ) [ -z "${BSDSUM}" ] && BSDSUM="echo" [ -z "${CKSUM}" ] && CKSUM="echo" [ -z "${SYSVSUM}" ] && SYSVSUM="echo" for i in All/*; do if ! grep -q $i $exf; then ${BSDSUM} $i >> BSDSUM ${CKSUM} $i >> CKSUM ${MD5} $i >> MD5 ${SHA1} $i >> SHA1 ${SYSVSUM} $i >> SYSVSUM fi done [ "${BSDSUM}" = "echo" ] && rm BSDSUM [ "${CKSUM}" = "echo" ] && rm CKSUM [ "${SYSVSUM}" = "echo" ] && rm SYSVSUM if [ x"${SIGN_AS}" != x"" ]; then for i in ${SUMFILES}; do if [ -s $i ]; then echo "Signing $i" gpg --clearsign $i && rm $i echo ${i}.asc >> $osf fi done else echo "Checksum files not PGP-signed. Please do so manually!" echo "(Run 'gpg --clearsign' on all of them)" fi fi echo "#!/bin/sh" > $upload echo "packages=$packages" >> $upload echo "if ! cd $packages ; then" >> $upload echo " echo \"could not cd to $packages\"" >> $upload echo " exit 1" >> $upload echo "fi" >> $upload echo "Uploading OSVERSION_SPECIFIC pkgs" cmd="rsync $RSFLAGS --include '*/' --exclude-from=$exf --include-from=$osf \ --exclude '*' . $RSYNC_DST_SPECIFIC" cp -f $upload $upload_specific echo $cmd >> $upload_specific chmod 755 $upload_specific echo $cmd . $upload_specific if [ $? != 0 ]; then echo "--------------------------------------------------" echo " " echo "WARNING rsync failed. To retry later, you can run" echo " $upload_specific" echo " " echo "--------------------------------------------------" failed=yes fi echo "Uploading non-OSVERSION_SPECIFIC pkgs" cmd="rsync $RSFLAGS --exclude-from=$exf --exclude-from=$osf . $RSYNC_DST_OTHER" cp -f $upload $upload_others echo $cmd >> $upload_others chmod 755 $upload_others echo $cmd . $upload_others if [ $? != 0 ]; then echo "--------------------------------------------------" echo " " echo "WARNING rsync failed. To retry later, you can run" echo " $upload_others" echo " " echo "--------------------------------------------------" failed=yes fi # clean up temp files if [ "$failed" = "no" ]; then rm -fr $TMP fi