#!/bin/sh # $NetBSD: upload,v 1.16 2004/03/16 13:55:51 hubertf Exp $ # # Upload non-restricted binary pkgs to ftp server # Must be called in $USR_PKGSRC # opsys=`uname -s` case "$opsys" in NetBSD) BMAKE=make ;; *) 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 if [ -z "$RSYNC_DST_SPECIFIC" -o -z "$RSYNC_DST_OTHER" ]; then echo "You must set the variables RSYNC_DST_SPECIFIC and RSYNC_DST_OTHER" echo " " echo "RSYNC_DST_SPECIFIC should be set to the destination for packages" echo "which have the OSVERSION_SPECIFIC flag set. I.e., the complete OS" echo "version number is required. For example:" echo " user@ftp.NetBSD.org:/pub/NetBSD/packages/1.5.1/alpha" echo " " echo "RSYNC_DST_OTHER should be set to the destination for packages" echo "which do _not_ have the OSVERSION_SPECIFIC flag set. I.e., only" echo "the major.minor release string is used. For example, on a 1.5.1" echo "alpha system you would use:" echo " user@ftp.NetBSD.org:/pub/NetBSD/packages/1.5/alpha" echo "If you are building from pkgsrc current, set the destination" echo "to major.minor-latest. For example, on a 1.6.1 m68k system where" echo "building pkgsrc current (assuming pkgsrc-1-6 is already built):" echo " user@ftp.NetBSD.org:/pub/NetBSD/packages/1.6-latest/m68k" echo " " exit 1 fi # # 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 [ $UPDATE_VULNERABILITY_LIST = "yes" ] then env PKGVULNDIR=${distdir} download-vulnerability-list else echo '(skipped)' fi 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 -K $packages -P $pkgsrcdir -pRV | sed 's@'$packages'/@@' > $exf echo "Checking for OSVERSION_SPECIFIC pkgs:" lintpkgsrc -K $packages -P $pkgsrcdir -O | sed 's@'$packages'/@@' > $osf RSFLAGS="-vap --progress $RSYNC_OPTS" failed=no cd $packages 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