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