From fcd4b840ba04e535cc0a1a797e949d1a53e3e928 Mon Sep 17 00:00:00 2001 From: Steve McIntyre <93sam@debian.org> Date: Sat, 21 Dec 2002 12:07:59 +0000 Subject: [PATCH] Updated to work with new update-cd and local my-dpkg-scanpackages script --- tools/scanpackages.old | 238 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 238 insertions(+) create mode 100755 tools/scanpackages.old diff --git a/tools/scanpackages.old b/tools/scanpackages.old new file mode 100755 index 00000000..5e6aa5d7 --- /dev/null +++ b/tools/scanpackages.old @@ -0,0 +1,238 @@ +#!/bin/sh + +# Copyright 1999 Raphaël Hertzog +# 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