#!/bin/sh
-# $Id: update-archive.sh,v 1.13 2008-10-20 10:24:15 adam Exp $
if test ! -f apt-ftparchive.conf.in; then
echo "$0: apt-ftparchive.conf.in must be located in current directory"
exit 1
architectures="i386 amd64"
-for vdist in ubuntu/gutsy ubuntu/hardy ubuntu/intrepid ubuntu/jaunty ubuntu/karmic debian/squeeze debian/lenny debian/etch debian/sarge debian/woody; do
+if [ "$1" == "" ]; then
+ DISTRIBUTIONS="ubuntu/lucid ubuntu/natty ubuntu/oneiric ubuntu/precise ubuntu/quantal debian/wheezy debian/squeeze debian/lenny"
+else
+ DISTRIBUTIONS=$1
+fi
+
+for vdist in $DISTRIBUTIONS ; do
dist=`basename $vdist`
vendor=`dirname $vdist`
ftpdir=/home/ftp/pub/$vendor
# Uncomment to clean the .db (cache)
# rm tmp/*
- # Make symlinks from the regular FTP archive
- d=pool/dists/$dist
- if test ! -d $d; then mkdir -p $d; fi
- # Remove invalid symlinks
- for l in $d/*; do
- if test -L $l; then
- if test ! -f $l; then
- rm $l
+ sections=""
+ for section in main restricted; do
+ # Prepare pool
+ d=pool/dists/$dist/$section
+ if test ! -d $d; then mkdir -p $d; fi
+ mkdir -p $d/source
+ # Remove invalid symlinks (source, i386, amd64,..)
+ for l in $d/*/*; do
+ if test -L "$l"; then
+ if test ! -f "$l"; then
+ rm $l
+ fi
fi
- fi
- done
- mkdir -p $d/source
- ln -sf /home/ftp/pub/*/$vendor/$dist/* $d/source
- rm $d/source/*.deb
- for arch in $architectures; do
- mkdir -p $d/${arch}
- for f in /home/ftp/pub/*/$vendor/$dist/*_${arch}.* \
- /home/ftp/pub/*/$vendor/$dist/*_all.*; do
- if test -f $f; then
- ln -sf $f $d/${arch}
+ done
+ # Make symlinks from the regular FTP archive
+ has_packages=false
+ for pdir in /home/ftp/pub/*; do
+ use=false
+ if test -f $pdir/.htaccess -a $section != "main"; then
+ use=true
+ fi
+ if test ! -f $pdir/.htaccess -a $section = "main"; then
+ use=true
+ fi
+ if $use; then
+ distdir=$pdir/$vendor/$dist
+ if test -d $distdir; then
+ for f in $distdir/*.dsc $distdir/*.gz; do
+ test -f $f && ln -sf $f $d/source
+ done
+ for arch in $architectures; do
+ mkdir -p $d/${arch}
+ for f in $pdir/.htaccess \
+ $distdir/*_${arch}.* \
+ $distdir/*_all.*; do
+ if test -f $f; then
+ ln -sf $f $d/${arch}
+ has_packages=true
+ fi
+ done
+ done
+ fi
fi
done
- #ln -sf /home/ftp/pub/*/$vendor/$dist/*_${arch}.* $d/${arch}
- #ln -sf /home/ftp/pub/*/$vendor/$dist/*_all.* $d/${arch}
- done
-
- # ${confdir}/symclean.sh $d
+ # ${confdir}/symclean.sh $d
- for arch in $architectures; do
- d=dists/$dist/main/binary-$arch
- if test ! -d $d; then mkdir -p $d; fi
- echo "Archive: $dist" >$d/Release
- echo 'Component: main' >>$d/Release
- echo 'Origin: Indexdata' >>$d/Release
- echo "Architecture: $arch" >>$d/Release
+ rm -f $d/Release
+ if $has_packages; then
+ if test -z "$sections"; then
+ sections="$section"
+ else
+ sections="$sections $section"
+ fi
+ for arch in $architectures; do
+ d=dists/$dist/$section/binary-$arch
+ if test ! -d $d; then mkdir -p $d; fi
+ echo "Archive: $dist" >$d/Release
+ echo "Component: $section" >>$d/Release
+ echo 'Origin: Indexdata' >>$d/Release
+ echo "Architecture: $arch" >>$d/Release
+ done
+ d=dists/$dist/$section/source
+ if test ! -d $d; then mkdir -p $d; fi
+ echo "Archive: $dist" >$d/Release
+ echo "Component: $section" >>$d/Release
+ echo 'Origin: Indexdata' >>$d/Release
+ echo 'Architecture: source' >>$d/Release
+ fi
done
-
- d=dists/$dist/main/source
- if test ! -d $d; then mkdir -p $d; fi
- echo "Archive: $dist" >$d/Release
- echo 'Component: main' >>$d/Release
- echo 'Origin: Indexdata' >>$d/Release
- echo 'Architecture: source' >>$d/Release
-
# generate
- echo "Begin Generate $dist"
+ echo "Begin Generate $dist: $sections"
F=apt-ftparchive.conf
- sed "s/@dist@/$dist/g" <${confdir}/${F}.in |sed "s/@architectures@/${architectures}/g" > $F
+ sed "s/@dist@/$dist/g" <${confdir}/${F}.in | \
+ sed "s/@architectures@/${architectures}/g" | \
+ sed "s/@sections@/${sections}/g" > $F
# Don't know if clean is needed!
# apt-ftparchive clean apt-ftparchive.conf
apt-ftparchive generate apt-ftparchive.conf
- echo "Done generate $dist"
+ echo "Done generate $dist: $sections"
# release
r=dists/$dist/Release
F=apt-release.conf
- sed "s/@dist@/$dist/g" <${confdir}/${F}.in | sed "s/@architectures@/${architectures}/g" >$F
+ sed "s/@dist@/$dist/g" <${confdir}/${F}.in | \
+ sed "s/@architectures@/${architectures}/g" | \
+ sed "s/@sections@/${sections}/g" > $F
# Move Release file away while calling using release
rm $r
apt-ftparchive -c $F release dists/$dist >tmp_Release