Enable selective update. First parameter is list of distributions. If empty, all
[git-tools-moved-to-github.git] / update-archive / update-archive.sh
1 #!/bin/sh
2 if test ! -f apt-ftparchive.conf.in; then
3         echo "$0: apt-ftparchive.conf.in must be located in current directory"
4         exit 1
5 fi
6
7 if test ! -x /usr/bin/apt-ftparchive; then
8         echo "$0: /usr/bin/apt-ftparchive missing. Install apt-utils"
9         exit 1
10 fi
11
12 # gpg -a -d -o Release.gpg Release
13
14 confdir=`pwd`
15
16 architectures="i386 amd64"
17
18 architectures="i386 amd64"
19 if [ "$1" == "" ]; then 
20         DISTRIBUTIONS="ubuntu/lucid ubuntu/natty ubuntu/oneiric ubuntu/precise ubuntu/quantal debian/wheezy debian/squeeze debian/lenny"
21 else
22         DISTRIBUTIONS=$1
23 fi
24
25 for vdist in $DISTRIBUTIONS ; do
26         dist=`basename $vdist`
27         vendor=`dirname $vdist`
28         ftpdir=/home/ftp/pub/$vendor
29         if test ! -d $ftpdir; then
30                 echo "$ftpdir does not exist"
31                 exit 1
32         fi
33         cd $ftpdir
34         test -d tmp || mkdir tmp
35         # Uncomment to clean the .db (cache)
36         # rm tmp/*
37
38         sections=""
39         for section in main restricted; do
40                 # Prepare pool
41                 d=pool/dists/$dist/$section
42                 if test ! -d $d; then mkdir -p $d; fi
43                 mkdir -p $d/source
44                 # Remove invalid symlinks (source, i386, amd64,..)
45                 for l in $d/*/*; do
46                         if test -L "$l"; then
47                                 if test ! -f "$l"; then
48                                         rm $l
49                                 fi
50                         fi
51                 done
52                 # Make symlinks from the regular FTP archive
53                 has_packages=false
54                 for pdir in /home/ftp/pub/*; do
55                         use=false
56                         if test -f $pdir/.htaccess -a $section != "main"; then
57                                 use=true
58                         fi
59                         if test ! -f $pdir/.htaccess -a $section = "main"; then
60                                 use=true
61                         fi
62                         if $use; then
63                                 distdir=$pdir/$vendor/$dist
64                                 if test -d $distdir; then
65                                         for f in $distdir/*.dsc $distdir/*.gz; do
66                                                 test -f $f && ln -sf $f $d/source
67                                         done
68                                         for arch in $architectures; do
69                                                 mkdir -p $d/${arch}
70                                                 for f in $pdir/.htaccess \
71                                                         $distdir/*_${arch}.* \
72                                                         $distdir/*_all.*; do
73                                                     if test -f $f; then
74                                                             ln -sf $f $d/${arch}
75                                                             has_packages=true
76                                                     fi
77                                                 done
78                                         done
79                                 fi
80                         fi
81                 done
82                 # ${confdir}/symclean.sh $d
83
84                 rm -f $d/Release
85                 if $has_packages; then
86                         if test -z "$sections"; then
87                                 sections="$section"
88                         else
89                                 sections="$sections $section"
90                         fi
91                         for arch in $architectures; do
92                                 d=dists/$dist/$section/binary-$arch
93                                 if test ! -d $d; then mkdir -p $d; fi
94                                 echo "Archive: $dist" >$d/Release
95                                 echo "Component: $section" >>$d/Release
96                                 echo 'Origin: Indexdata' >>$d/Release
97                                 echo "Architecture: $arch" >>$d/Release
98                         done
99                         d=dists/$dist/$section/source
100                         if test ! -d $d; then mkdir -p $d; fi
101                         echo "Archive: $dist" >$d/Release
102                         echo "Component: $section" >>$d/Release
103                         echo 'Origin: Indexdata' >>$d/Release
104                         echo 'Architecture: source' >>$d/Release
105                 fi
106         done
107         # generate
108         echo "Begin Generate $dist: $sections"
109         F=apt-ftparchive.conf
110         sed "s/@dist@/$dist/g" <${confdir}/${F}.in | \
111                 sed "s/@architectures@/${architectures}/g" | \
112                 sed "s/@sections@/${sections}/g" > $F
113         # Don't know if clean is needed!
114         # apt-ftparchive clean apt-ftparchive.conf
115         apt-ftparchive generate apt-ftparchive.conf
116         echo "Done generate $dist: $sections"
117
118         # release
119         r=dists/$dist/Release
120         F=apt-release.conf
121         sed "s/@dist@/$dist/g" <${confdir}/${F}.in | \
122                 sed "s/@architectures@/${architectures}/g" | \
123                 sed "s/@sections@/${sections}/g" > $F
124         # Move Release file away while calling using release 
125         rm $r
126         apt-ftparchive -c $F release dists/$dist >tmp_Release
127         mv tmp_Release $r
128
129         # sign
130         if true; then
131                 r=dists/$dist/Release
132                 rm -f ${r}.gpg
133                 gpg --sign -u "Index Data" -ba -o ${r}.gpg dists/$dist/Release
134         fi
135 done
136 # Local Variables:
137 # mode:shell-script
138 # sh-indentation: 2
139 # sh-basic-offset: 8
140 # End:
141