summaryrefslogtreecommitdiff
path: root/mk/bulk/upload
diff options
context:
space:
mode:
authordmcmahill <dmcmahill>2001-07-08 14:36:56 +0000
committerdmcmahill <dmcmahill>2001-07-08 14:36:56 +0000
commitccffe6baca450ef2e19f24523af233208bee0939 (patch)
tree627c277edc7a9ebe003e4a5a26c5cccdf1005f72 /mk/bulk/upload
parente3a054f60fb05cd95c0413f5045d0fc9bf6abd02 (diff)
downloadpkgsrc-ccffe6baca450ef2e19f24523af233208bee0939.tar.gz
teach the upload script about OSVERSION_SPECIFIC packages so one can put
them in the right place. For example, a collection of binary packages can now put uploaded with most going to the major.minor directory and the OSVERSION_SPECIFIC ones going to the major.minor.patch directory. still todo: the destination settings should probably be moved out of build.conf so the same build.conf can be used by multiple machines of different MACHINE_ARCH's at the same time. Perhaps these should be a command line option to 'upload' instead.
Diffstat (limited to 'mk/bulk/upload')
-rw-r--r--mk/bulk/upload90
1 files changed, 83 insertions, 7 deletions
diff --git a/mk/bulk/upload b/mk/bulk/upload
index 154f51222f9..89c500e19f1 100644
--- a/mk/bulk/upload
+++ b/mk/bulk/upload
@@ -11,6 +11,37 @@ 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 " "
+ 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_specific=$TMP/upload_specific
+upload_others=$TMP/upload_others
+
# May be different than $USR_PKGSRC:
pkgsrcdir=`cd pkgtools/pkglint ; make show-var VARNAME=PKGSRCDIR`
packages=`cd pkgtools/pkglint ; make show-var VARNAME=PACKAGES`
@@ -19,13 +50,58 @@ packages=`cd pkgtools/pkglint ; make show-var VARNAME=PACKAGES`
( cd pkgtools/pkglint ; make bulk-install )
( cd net/rsync ; make bulk-install )
-lintpkgsrc -P $pkgsrcdir -pR | sed 's@'$packages'/@@' > /tmp/r.$$
+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 -P $pkgsrcdir -pRV | sed 's@'$packages'/@@' > $exf
+
+echo "Checking for OSVERSION_SPECIFIC pkgs:"
+lintpkgsrc -P $pkgsrcdir -O | sed 's@'$packages'/@@' > $osf
+
+RSFLAGS="-vap --progress $RSYNC_OPTS"
+
+failed=no
cd $packages
-rsync \
- -vap \
- $RSYNC_OPTS \
- --exclude-from=/tmp/r.$$ \
- . $RSYNC_DST
-rm /tmp/r.$$
+echo "Uploading OSVERSION_SPECIFIC pkgs"
+cmd="rsync $RSFLAGS --include '*/' --exclude-from=$exf --include-from=$osf \
+ --exclude '*' . $RSYNC_DST_SPECIFIC"
+echo "#!/bin/sh" > $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"
+echo "#!/bin/sh" > $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
+