#!/bin/sh
# $NetBSD: upload,v 1.18 2004/04/19 18:39:09 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 [ "$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

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