Updated to work with new update-cd and local my-dpkg-scanpackages script
This commit is contained in:
parent
06e48e0583
commit
fcd4b840ba
|
@ -0,0 +1,238 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Copyright 1999 Raphaël Hertzog <hertzog@debian.org>
|
||||
# See the README file for the license
|
||||
|
||||
# This script will create the Packages.gz and the Packages.cd files
|
||||
# First arg = "scan" or "install"
|
||||
# Second arg = directory of the CD
|
||||
|
||||
#set -e
|
||||
|
||||
CDPACKAGES=1
|
||||
DPKG_SCANPACKAGES=$BASEDIR/tools/my-dpkg-scanpackages
|
||||
|
||||
if [ "$1"x = "-noPackages.cd"x ] ; then
|
||||
shift 1
|
||||
CDPACKAGES=0
|
||||
fi
|
||||
|
||||
BDIR=$TDIR/$CODENAME-$ARCH
|
||||
|
||||
PREFIX=`echo $2 | sed "s?$BDIR/CD?$BDIR/?"`
|
||||
|
||||
NUM=${PREFIX##$BDIR/}
|
||||
NUM=`echo $NUM | sed 's/_NONUS//g'`
|
||||
if [ -n "$NONFREE" -o -n "$EXTRANONFREE" ]; then
|
||||
SECTIONS="main contrib non-free"
|
||||
SECTIONSNONUS="non-US/main non-US/contrib non-US/non-free"
|
||||
else
|
||||
SECTIONS="main contrib"
|
||||
SECTIONSNONUS="non-US/main non-US/contrib"
|
||||
fi
|
||||
|
||||
cd "$2"
|
||||
|
||||
if [ "$1" = "install" ]; then
|
||||
|
||||
if [ -e "$MIRROR/dists/$CODENAME/Release" ]; then
|
||||
# Strip the MD5Sum and SHA1 fields
|
||||
# Update some other information as well
|
||||
sed -e "s/^Architectures: .*$/Architectures: $ARCH/" \
|
||||
$MIRROR/dists/$CODENAME/Release | \
|
||||
sed -e "s|^Components: .*$|Components: $SECTIONS|" | \
|
||||
perl -ne 'if (/^(MD5Sum|SHA1):/i) { $f=1; next }
|
||||
if ($f) {
|
||||
unless (/^ /) { print; $f=0 }
|
||||
} else { print }' > dists/$CODENAME/Release
|
||||
fi
|
||||
if [ -n "$NONUS" -a -e "$NONUS/dists/$CODENAME/non-US/Release" ]; then
|
||||
# Strip the MD5Sum and SHA1 fields
|
||||
# Update some other information as well
|
||||
sed -e "/^ /d" -e "s/^Architectures: .*$/Architectures: $ARCH/" \
|
||||
$NONUS/dists/$CODENAME/non-US/Release | \
|
||||
sed -e "s|^Components: .*$|Components: $SECTIONSNONUS|" | \
|
||||
perl -ne 'if (/^(MD5Sum|SHA1):/i) { $f=1; next }
|
||||
if ($f) {
|
||||
unless (/^ /) { print; $f=0 }
|
||||
} else { print }' > dists/$CODENAME/non-US/Release
|
||||
fi
|
||||
|
||||
for SECT in $SECTIONS; do
|
||||
# Install the release files
|
||||
cp $MIRROR/dists/$CODENAME/$SECT/binary-$ARCH/Release \
|
||||
dists/$CODENAME/$SECT/binary-$ARCH/
|
||||
if [ -n "$NONUS" -a "$CODENAME" != "slink" ]; then
|
||||
cp $NONUS/dists/$CODENAME/non-US/$SECT/binary-$ARCH/Release \
|
||||
dists/$CODENAME/non-US/$SECT/binary-$ARCH/
|
||||
fi
|
||||
# Install the Packages and Packages.gz files
|
||||
grep -v ^X-Medium $PREFIX.Packages-$SECT \
|
||||
>dists/$CODENAME/$SECT/binary-$ARCH/Packages
|
||||
grep -v ^X-Medium $PREFIX.Packages-$SECT | gzip --best \
|
||||
>dists/$CODENAME/$SECT/binary-$ARCH/Packages.gz
|
||||
if [ -n "$NONUS" -a "$CODENAME" != "slink" ]; then
|
||||
grep -v ^X-Medium $PREFIX.Packages-non-US-$SECT \
|
||||
>dists/$CODENAME/non-US/$SECT/binary-$ARCH/Packages
|
||||
grep -v ^X-Medium $PREFIX.Packages-non-US-$SECT | gzip --best \
|
||||
>dists/$CODENAME/non-US/$SECT/binary-$ARCH/Packages.gz
|
||||
fi
|
||||
# Install the Packages.cd and Packages.cd.gz files
|
||||
# Each CD know about all prior CDs
|
||||
# We use "?.packages" here so that we always use US-safe
|
||||
# packages files only - we don't want later (supposedly
|
||||
# common) CDs having dependencies on a non-US CD#1...
|
||||
if [ $CDPACKAGES -eq 1 ] ; then
|
||||
for i in $TDIR/$CODENAME-$ARCH/?.packages; do
|
||||
dir=${i%%.packages}
|
||||
n=${dir##$TDIR/$CODENAME-$ARCH/}
|
||||
if [ $n -le $NUM ]; then
|
||||
cat $dir.Packages-$SECT \
|
||||
>>dists/$CODENAME/$SECT/binary-$ARCH/Packages.cd
|
||||
cat $dir.Packages-$SECT | gzip --best \
|
||||
>>dists/$CODENAME/$SECT/binary-$ARCH/Packages.cd.gz
|
||||
if [ -n "$NONUS" -a "$CODENAME" != "slink" ]; then
|
||||
cat $dir.Packages-non-US-$SECT \
|
||||
>>dists/$CODENAME/non-US/$SECT/binary-$ARCH/Packages.cd
|
||||
cat $dir.Packages-non-US-$SECT | gzip --best \
|
||||
>>dists/$CODENAME/non-US/$SECT/binary-$ARCH/Packages.cd.gz
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -n "$NONUS" -a "$CODENAME" = "slink" ]; then
|
||||
cp $NONUS/dists/$CODENAME/non-US/binary-$ARCH/Release \
|
||||
dists/$CODENAME/non-US/binary-$ARCH/
|
||||
grep -v ^X-Medium $PREFIX.Packages-non-US \
|
||||
>dists/$CODENAME/non-US/binary-$ARCH/Packages
|
||||
grep -v ^X-Medium $PREFIX.Packages-non-US | gzip --best \
|
||||
>dists/$CODENAME/non-US/binary-$ARCH/Packages.gz
|
||||
for i in $TDIR/$CODENAME-$ARCH/?.packages; do
|
||||
dir=${i%%.packages}
|
||||
n=${dir##$TDIR/$CODENAME-$ARCH/}
|
||||
if [ $n -le $NUM ]; then
|
||||
cat $dir.Packages-non-US \
|
||||
>>dists/$CODENAME/non-US/binary-$ARCH/Packages.cd
|
||||
cat $dir.Packages-non-US | gzip --best \
|
||||
>>dists/$CODENAME/non-US/binary-$ARCH/Packages.cd.gz
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [ -n "$LOCAL" ]; then
|
||||
if [ -e ${LOCALDEBS:-$MIRROR}/dists/$CODENAME/local/binary-$ARCH/Release ]; then
|
||||
cp ${LOCALDEBS:-$MIRROR}/dists/$CODENAME/local/binary-$ARCH/Release \
|
||||
dists/$CODENAME/local/binary-$ARCH/
|
||||
fi
|
||||
grep -v ^X-Medium $PREFIX.Packages-local \
|
||||
>dists/$CODENAME/local/binary-$ARCH/Packages
|
||||
grep -v ^X-Medium $PREFIX.Packages-local | gzip --best \
|
||||
>dists/$CODENAME/local/binary-$ARCH/Packages.gz
|
||||
|
||||
for i in $TDIR/$CODENAME-$ARCH/?.packages; do
|
||||
dir=${i%%.packages}
|
||||
n=${dir##$TDIR/$CODENAME-$ARCH/}
|
||||
if [ $n -le $NUM ]; then
|
||||
cat $dir.Packages-local \
|
||||
>>dists/$CODENAME/local/binary-$ARCH/Packages.cd
|
||||
cat $dir.Packages-local | gzip --best \
|
||||
>>dists/$CODENAME/local/binary-$ARCH/Packages.cd.gz
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
|
||||
# Creates the temp Packages-$SECT files
|
||||
if [ "$1" != "scan" ]; then exit 0; fi
|
||||
|
||||
|
||||
if [ ! -e "../overrides" ]; then
|
||||
# Create an override file with all sections
|
||||
for SECT in $SECTIONS; do
|
||||
zcat $MIRROR/indices/override.$CODENAME.$SECT.gz >> ../overrides
|
||||
if [ -n "$NONUS" -a "$CODENAME" != "slink" ]; then
|
||||
zcat $NONUS/indices-non-US/override.$CODENAME.$SECT.gz \
|
||||
>> ../overrides
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
#
|
||||
# Create a Packages file for all packages on the CD
|
||||
#
|
||||
if [ -d pool ]; then
|
||||
$DPKG_SCANPACKAGES -m "`cat .disk/info`" -a $ARCH pool ../overrides \
|
||||
> $PREFIX.Packages-BOTH
|
||||
fi
|
||||
# We have to scan all possible dists where packages can be
|
||||
DISTS=""
|
||||
DISTSNONUS=""
|
||||
for i in `cd dists; echo *; cd ..`; do
|
||||
if [ ! -L "dists/$i" -a -d "dists/$i" ]; then
|
||||
if [ -d "dists/$i/main/binary-$ARCH" -o \
|
||||
-d "dists/$i/non-free/binary-$ARCH" -o \
|
||||
-d "dists/$i/contrib/binary-$ARCH" ]; then
|
||||
DISTS="$DISTS $i"
|
||||
fi
|
||||
if [ -d "dists/$i/non-US/main/binary-$ARCH" -o \
|
||||
-d "dists/$i/non-US/non-free/binary-$ARCH" -o \
|
||||
-d "dists/$i/non-US/contrib/binary-$ARCH" ]; then
|
||||
DISTSNONUS="$DISTSNONUS $i"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
for SECT in $SECTIONS; do
|
||||
for DIST in $DISTS; do
|
||||
$DPKG_SCANPACKAGES -m "`cat .disk/info`" -a $ARCH dists/$DIST/$SECT/binary-$ARCH \
|
||||
../overrides >> $PREFIX.Packages-BOTH
|
||||
done
|
||||
for DIST in $DISTSNONUS; do
|
||||
if [ -n "$NONUS" -a "$CODENAME" != "slink" ]; then
|
||||
$DPKG_SCANPACKAGES -m "`cat .disk/info`" -a $ARCH \
|
||||
dists/$DIST/non-US/$SECT/binary-$ARCH \
|
||||
../overrides >> $PREFIX.Packages-BOTH
|
||||
fi
|
||||
done
|
||||
done
|
||||
# Separate non-US from the rest
|
||||
grep-dctrl -FFilename -e '/non-[Uu][Ss]/' $PREFIX.Packages-BOTH \
|
||||
> $PREFIX.Packages-ALLNONUS
|
||||
grep-dctrl -v -FFilename -e '/non-[Uu][Ss]/' $PREFIX.Packages-BOTH \
|
||||
> $PREFIX.Packages-ALL
|
||||
|
||||
# Split the Packages file by section
|
||||
for SECT in $SECTIONS; do
|
||||
grep-dctrl -FFilename -e "/$SECT/" $PREFIX.Packages-ALL \
|
||||
> $PREFIX.Packages-$SECT
|
||||
|
||||
if [ -n "$NONUS" -a "$CODENAME" != "slink" ]; then
|
||||
grep-dctrl -FFilename -e "/$SECT/" $PREFIX.Packages-ALLNONUS \
|
||||
> $PREFIX.Packages-non-US-$SECT
|
||||
fi
|
||||
done
|
||||
|
||||
# Slink special case
|
||||
if [ -n "$NONUS" -a "$CODENAME" = "slink" ]; then
|
||||
$DPKG_SCANPACKAGES -m "`cat .disk/info`" -a $ARCH \
|
||||
dists/$CODENAME/non-US/binary-$ARCH \
|
||||
$NONUS/indices-non-US/override.$CODENAME.gz \
|
||||
> $PREFIX.Packages-non-US
|
||||
fi
|
||||
|
||||
if [ -n "$LOCAL" ]; then
|
||||
$DPKG_SCANPACKAGES -m "`cat .disk/info`" -a $ARCH \
|
||||
dists/$CODENAME/local/binary-$ARCH \
|
||||
/dev/null > $PREFIX.Packages-local
|
||||
|
||||
if [ -d pool/local ]
|
||||
then
|
||||
$DPKG_SCANPACKAGES -m "`cat .disk/info`" -a $ARCH \
|
||||
pool/local /dev/null >> $PREFIX.Packages-local
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0
|
Loading…
Reference in New Issue