summaryrefslogtreecommitdiff
path: root/mk/bulk/upload
blob: 42d90e5eda38f8c2291974485f8c40a70be53c5c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/bin/sh
#
# 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 " "
	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`

# Pull in some pkgs needed
( cd pkgtools/pkglint ; ${BMAKE} bulk-install )
( cd net/rsync ;        ${BMAKE} bulk-install )

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