1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-14 03:10:47 +00:00
freebsd-ports/Tools/scripts/release/doit.sh
Murray Stokely 23cad417ec Modernize these two scripts a little bit to make it easier to deal
with 5.X or 4.X package sets (i.e., INDEX vs INDEX-5 and tgz vs tbz)

OKed by:    marcus
2004-06-08 21:57:01 +00:00

137 lines
4.1 KiB
Bash
Executable File

#!/bin/sh
# $FreeBSD$
pathtoports=$1
dir=`dirname $0`
if [ "X$dir" = "X." ]; then
dir=`pwd`
fi
##############################################################################
#
# Tweak these parameters to match your configuration and make sure to check
# that the disc information in config is correct.
#
# You'll also want to place a recent copy of print-cdrom-packages.sh in the
# $scripts directory.
#
ports="$dir/ports"
dists="$ports/distfiles"
logs="$dir/gen"
pkgs="$ports/packages/All"
scripts="$dir"
xdep_re="^XFree86-3.3.6_1[0-9]$"
#indexfile="INDEX-5"
indexfile="INDEX"
#
##############################################################################
test -d $logs || mkdir -p $logs
if [ ! -d "$ports" ]; then
if [ -z "$pathtoports" ]; then
echo "Missing path to ports/packages toree to process for setup.sh."
exit 1
fi
$scripts/setup.sh $pathtoports
echo ""
echo "Make sure you tweak $dir/config to suit your needs."
echo ""
fi
if [ ! -f "$logs/restricted.sh" ]; then
echo "===> restricted list generation started at $(date)"
(cd $ports; PORTSDIR=$ports make ECHO_MSG=/usr/bin/true \
clean-restricted-list > $logs/restricted.sh)
echo "===> restricted list generation ended at $(date)"
echo $(grep -c '^#' $logs/restricted.sh) "ports in $logs/restricted.sh"
fi
if [ ! -f "$logs/.restricted.done" ]; then
echo "===> cleaning restricted files"
sh $logs/restricted.sh
touch $logs/.restricted.done
fi
if [ ! -f "$logs/cdrom.sh" ]; then
echo "===> cdrom list generation started at $(date)"
(cd $ports; PORTSDIR=$ports make ECHO_MSG=/usr/bin/true \
clean-for-cdrom-list > $logs/cdrom.sh)
echo "===> cdrom list generation ended at $(date)"
echo $(grep -c '^#' $logs/cdrom.sh) "ports in $logs/cdrom.sh"
fi
if [ ! -f "$logs/.cdrom.done" ]; then
echo "===> cleaning non-CDROM-able files"
sh $logs/cdrom.sh
touch $logs/.cdrom.done
fi
if [ ! -f "$logs/$indexfile" ]; then
echo "===> copying INDEX file from $ports/$indexfile"
$scripts/scrubindex.pl $pkgs $ports/$indexfile > $logs/INDEX
$scripts/checkdeps.pl $pkgs $logs/INDEX | sort -u | \
sed -e 's/^/missing dependency: /'
fi
echo -n "Create a list of needed files for each disc? [y] "
read ans
if [ X$ans != Xn -a X$ans != XN ]; then
>$logs/need.ALL
for disc in `cat config | grep -v '#' | sed -e 's/[ ].*//'`; do
echo "disc $disc" >> $logs/need.ALL
$scripts/print-cdrom-packages.sh `echo $disc | sed -e 's/^disc//'` \
$ports | grep -Ev $xdep_re | tee $logs/need.$disc >> $logs/need.ALL
done
fi
echo -n "Populate the discs now? [y] "
read ans
if [ X$ans != Xn -a X$ans != XN ]; then
for disc in `ls -d disc? 2>/dev/null`; do
echo "===> deleting $disc"
rm -rf $disc
done
if [ -d "scratch" ]; then
echo "===> deleting scratch"
rm -rf scratch
fi
echo "Calling oneshot.pl config $logs/need.ALL $logs/INDEX $ports $pkgs/../ $dists"
$scripts/oneshot.pl config $logs/need.ALL $logs/INDEX $ports $pkgs/../ $dists
for disc in `ls -d disc? 2>/dev/null`; do
echo "===> cleaning $disc"
if [ -d "$disc/packages/All" ]; then
$scripts/checkdeps.pl $disc/packages/All $disc/packages/INDEX | \
sort -u | sed -e 's/^/missing package: /'
(
cd $disc/packages/All; \
$scripts/scrubindex.pl . ../INDEX > ../INDEX.new; \
mv ../INDEX.new ../INDEX; \
find . -name '*.tgz' | xargs /sbin/md5 > CHECKSUM.MD5; \
)
fi
du -ck $disc | grep total
done
fi
echo -n "Make sure the 'needed' packages made it on the right disc(s)? [y] "
read ans
if [ X$ans != Xn -a X$ans != XN ]; then
for disc in `ls -d disc? 2>/dev/null`; do
echo "===> checking $disc"
> $logs/have.$disc
if [ -d "$disc/packages/All" ]; then
( cd $disc/packages/All && find . -name '*.tgz' | \
sed -e 's/\.tgz//' -e 's/^\.\///' | sort) > \
$logs/have.$disc
fi
diff -u $logs/have.$disc $logs/need.$disc | grep -e '^\+' | \
grep -v -e '^\+* ' | sed -e 's/\+//' > $logs/missing.$disc
if [ -s $logs/missing.$disc ]; then
echo "===> missing required packages on $disc"
cat $logs/missing.$disc
fi
done
fi