HinzugefĆ¼gt:
[ipfire-2.x.git] / make.sh
1 #!/bin/bash
2 #
3 ############################################################################
4 #                                                                          #
5 # This file is part of the IPFire Firewall.                                #
6 #                                                                          #
7 # IPFire is free software; you can redistribute it and/or modify           #
8 # it under the terms of the GNU General Public License as published by     #
9 # the Free Software Foundation; either version 2 of the License, or        #
10 # (at your option) any later version.                                      #
11 #                                                                          #
12 # IPFire is distributed in the hope that it will be useful,                #
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of           #
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
15 # GNU General Public License for more details.                             #
16 #                                                                          #
17 # You should have received a copy of the GNU General Public License        #
18 # along with IPFire; if not, write to the Free Software                    #
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA #
20 #                                                                          #
21 # Copyright (C) 2006 IPFire-Team <entwickler@ipfire.org>.                  #
22 #                                                                          #
23 ############################################################################
24 #
25
26   NAME="IPFire"                 # Software name
27   SNAME="ipfire"                        # Short name
28   VERSION="1.4"                 # Version number
29 # PREVIOUSTAG=IPCOP_v1_4_10_FINAL
30   SLOGAN="We secure your network"       # Software slogan
31   CONFIG_ROOT=/var/ipfire               # Configuration rootdir
32   NICE=10
33   MAX_RETRIES=3                         # prefetch/check loop
34   KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'`
35   MACHINE=`uname -m`
36
37   # Debian specific settings
38   if [ ! -e /etc/debian_version ]; then
39         FULLPATH=`which $0`
40   else
41         if [ -x /usr/bin/realpath ]; then
42                 FULLPATH=`/usr/bin/realpath $0`
43         else
44                 echo "ERROR: Need to do apt-get install realpath"
45                 exit 1
46         fi
47   fi
48
49
50   PWD=`pwd`
51   BASENAME=`basename $0`
52   BASEDIR=`echo $FULLPATH | sed "s/\/$BASENAME//g"`
53   LOGFILE=$BASEDIR/log/_build.preparation.log
54   export BASEDIR LOGFILE
55   DIR_CHK=$BASEDIR/cache/check
56   mkdir $BASEDIR/log/ 2>/dev/null
57
58   if [ 'x86_64' = $MACHINE -o 'i686' = $MACHINE -o 'i586' = $MACHINE -o 'i486' = $MACHINE -o 'i386' = $MACHINE ]; then
59         echo "`date -u '+%b %e %T'`: Machine is ix86 (or equivalent)" | tee -a $LOGFILE
60         MACHINE=i386
61         BUILDTARGET=i386-pc-linux-gnu
62         CFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer"
63         CXXFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer"
64   elif [ 'alpha' = $MACHINE ]; then
65         echo "`date -u '+%b %e %T'`: Machine is Alpha AXP" | tee -a $LOGFILE
66         BUILDTARGET=alpha-unknown-linux-gnu
67         CFLAGS="-O2 -mcpu=ev4 -mieee -pipe"
68         CXXFLAGS="-O2 -mcpu=ev4 -mieee -pipe"
69   else
70         echo "`date -u '+%b %e %T'`: Can't determine your architecture - $MACHINE" | tee -a $LOGFILE
71         exit 1
72   fi
73
74 # Define immediately
75 stdumount() {
76         umount $BASEDIR/build/dev/pts           2>/dev/null;
77         umount $BASEDIR/build/proc                      2>/dev/null;
78         umount $BASEDIR/build/install/mnt               2>/dev/null;
79         umount $BASEDIR/build/usr/src/cache     2>/dev/null;
80         umount $BASEDIR/build/usr/src/ccache    2>/dev/null;
81         umount $BASEDIR/build/usr/src/config    2>/dev/null;
82         umount $BASEDIR/build/usr/src/doc               2>/dev/null;
83         umount $BASEDIR/build/usr/src/html              2>/dev/null;
84         umount $BASEDIR/build/usr/src/langs     2>/dev/null;
85         umount $BASEDIR/build/usr/src/lfs               2>/dev/null;
86         umount $BASEDIR/build/usr/src/log               2>/dev/null;
87         umount $BASEDIR/build/usr/src/src               2>/dev/null;
88 }
89
90 exiterror() {
91         stdumount
92         for i in `seq 0 7`; do
93             if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
94                 losetup -d /dev/loop${i} 2>/dev/null
95             fi;
96         done
97         echo "ERROR: $*"
98         echo "       Check $LOGFILE for errors if applicable"
99         exit 1
100 }
101
102 entershell() {
103         if [ ! -e $BASEDIR/build/usr/src/lfs/ ]; then
104                 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/"
105         fi
106         echo "Entering to a shell inside LFS chroot, go out with exit"
107         chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
108                 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
109                 VERSION=$VERSION CONFIG_ROOT=$CONFIG_ROOT \
110                 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
111                 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
112                 CCACHE_DIR=/usr/src/ccache \
113                 CCACHE_HASHDIR=1 \
114                 KVER=$KVER \
115                 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
116                 KGCC="ccache /usr/bin/gcc" \
117                 /tools/bin/bash
118         if [ $? -ne 0 ]; then
119                         exiterror "chroot error"
120         else
121                 stdumount
122         fi
123 }
124
125 prepareenv() {
126     ############################################################################
127     #                                                                          #
128     # Are we running the right shell?                                          #
129     #                                                                          #
130     ############################################################################
131     if [ ! "$BASH" ]; then
132         exiterror "BASH environment variable is not set.  You're probably running the wrong shell."
133     fi
134
135     if [ -z "${BASH_VERSION}" ]; then
136         exiterror "Not running BASH shell."
137     fi
138
139
140     ############################################################################
141     #                                                                          #
142     # Trap on emergency exit                                                   #
143     #                                                                          #
144     ############################################################################
145     trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGKILL SIGSTOP SIGQUIT
146
147
148     ############################################################################
149     #                                                                          #
150     # Resetting our nice level                                                 #
151     #                                                                          #
152     ############################################################################
153     echo "`date -u '+%b %e %T'`: Resetting our nice level to $NICE" | tee -a $LOGFILE
154     renice $NICE $$ > /dev/null
155     if [ `nice` != "$NICE" ]; then
156         exiterror "Failed to set correct nice level"
157     fi
158
159     ############################################################################
160     #                                                                          #
161     # Checking if running as root user                                         #
162     #                                                                          #
163     ############################################################################
164     echo "`date -u '+%b %e %T'`: Checking if we're running as root user" | tee -a $LOGFILE
165     if [ `id -u` != 0 ]; then
166         exiterror "Not building as root"
167     fi
168
169
170     ############################################################################
171     #                                                                          #
172     # Checking for necessary temporary space                                   #
173     #                                                                          #
174     ############################################################################
175     echo "`date -u '+%b %e %T'`: Checking for necessary space on disk $BASE_DEV" | tee -a $LOGFILE
176     BASE_DEV=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $1 }'`
177     BASE_ASPACE=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $4 }'`
178     if (( 2202000 > $BASE_ASPACE )); then
179         BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'`
180         if (( 2202000 - $BASE_USPACE > $BASE_ASPACE )); then
181                 exiterror "Not enough temporary space available, need at least 2.1GB on $BASE_DEV"
182         fi
183     fi
184
185     ############################################################################
186     #                                                                          #
187     # Building Linux From Scratch system                                       #
188     #                                                                          #
189     ############################################################################
190     echo "`date -u '+%b %e %T'`: Building Linux From Scratch system" | tee -a $LOGFILE
191
192     # Set umask
193     umask 022
194
195     # Set LFS Directory
196     LFS=$BASEDIR/build
197
198     # Check /tools symlink
199     if [ -h /tools ]; then
200         rm -f /tools
201     fi
202     if [ ! -a /tools ]; then
203         ln -s $BASEDIR/build/tools /
204     fi
205     if [ ! -h /tools ]; then
206         exiterror "Could not create /tools symbolic link."
207     fi
208
209     # Setup environment
210     set +h
211     LC_ALL=POSIX
212     export LFS LC_ALL CFLAGS CXXFLAGS
213     unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
214
215     # Make some extra directories
216     mkdir -p $BASEDIR/build/{tools,etc,usr/src} 2>/dev/null
217     mkdir -p $BASEDIR/{cache,ccache} 2>/dev/null
218     mkdir -p $BASEDIR/build/dev/pts $BASEDIR/build/proc $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache}
219
220     # Make all sources and proc available under lfs build
221     mount --bind /dev/pts        $BASEDIR/build/dev/pts
222     mount --bind /proc           $BASEDIR/build/proc
223     mount --bind $BASEDIR/cache  $BASEDIR/build/usr/src/cache
224     mount --bind $BASEDIR/ccache $BASEDIR/build/usr/src/ccache
225     mount --bind $BASEDIR/config $BASEDIR/build/usr/src/config
226     mount --bind $BASEDIR/doc    $BASEDIR/build/usr/src/doc
227     mount --bind $BASEDIR/html   $BASEDIR/build/usr/src/html
228     mount --bind $BASEDIR/langs  $BASEDIR/build/usr/src/langs
229     mount --bind $BASEDIR/lfs    $BASEDIR/build/usr/src/lfs
230     mount --bind $BASEDIR/log    $BASEDIR/build/usr/src/log
231     mount --bind $BASEDIR/src    $BASEDIR/build/usr/src/src
232
233     # Run LFS static binary creation scripts one by one
234     export CCACHE_DIR=$BASEDIR/ccache
235     export CCACHE_HASHDIR=1
236
237     # Remove pre-install list of installed files in case user erase some files before rebuild
238     rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null
239 }
240
241
242 ############################################################################
243 #                                                                          #
244 # Necessary shell functions                                                #
245 #                                                                          #
246 ############################################################################
247 lfsmake1() {
248         if [ -f $BASEDIR/lfs/$1 ]; then
249                 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
250                 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download  >> $LOGFILE 2>&1
251                 if [ $? -ne 0 ]; then
252                         exiterror "Download error in $1"
253                 fi
254                 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5  >> $LOGFILE 2>&1
255                 if [ $? -ne 0 ]; then
256                         exiterror "md5sum error in $1, check file in cache or signature"
257                 fi
258                 cd $BASEDIR/lfs && make -f $*   BUILDTARGET=$BUILDTARGET \
259                                                 MACHINE=$MACHINE \
260                                                 LFS_BASEDIR=$BASEDIR \
261                                                 ROOT=$LFS \
262                                                 KVER=$KVER \
263                                                 install >> $LOGFILE 2>&1
264                 if [ $? -ne 0 ]; then
265                         exiterror "Building $*";
266                 fi
267         else
268                 exiterror "No such file or directory: $BASEDIR/$1"
269         fi
270         return 0
271 }
272
273 lfsmake2() {
274         if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
275                 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
276                 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download  >> $LOGFILE 2>&1
277                 if [ $? -ne 0 ]; then
278                         exiterror "Download error in $1"
279                 fi
280                 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5  >> $LOGFILE 2>&1
281                 if [ $? -ne 0 ]; then
282                         exiterror "md5sum error in $1, check file in cache or signature"
283                 fi
284                 chroot $LFS /tools/bin/env -i   HOME=/root \
285                                                 TERM=$TERM PS1='\u:\w\$ ' \
286                                                 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
287                                                 VERSION=$VERSION \
288                                                 CONFIG_ROOT=$CONFIG_ROOT \
289                                                 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
290                                                 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
291                                                 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
292                                                 KVER=$KVER \
293                                                 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
294                     /tools/bin/bash -x -c "cd /usr/src/lfs && \
295                     make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
296                 if [ $? -ne 0 ]; then
297                         exiterror "Building $*"
298                 fi
299         else
300                 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
301         fi
302         return 0
303 }
304
305 ipcopmake() {
306         if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
307                 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
308                 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download  >> $LOGFILE 2>&1
309                 if [ $? -ne 0 ]; then
310                         exiterror "Download error in $1"
311                 fi
312                 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5  >> $LOGFILE 2>&1
313                 if [ $? -ne 0 ]; then
314                         exiterror "md5sum error in $1, check file in cache or signature"
315                 fi
316                 chroot $LFS /tools/bin/env -i   HOME=/root \
317                                                 TERM=$TERM PS1='\u:\w\$ ' \
318                                                 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
319                                                 VERSION=$VERSION \
320                                                 CONFIG_ROOT=$CONFIG_ROOT \
321                                                 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
322                                                 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
323                                                 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
324                                                 KVER=$KVER \
325                                                 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
326                     /bin/bash -x -c "cd /usr/src/lfs && \
327                     make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
328                 if [ $? -ne 0 ]; then
329                         exiterror "Building $*"
330                 fi
331         else
332                 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
333         fi
334         return 0
335 }
336
337 ipfiredist() {
338         if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
339                 echo "`date -u '+%b %e %T'`: Packaging $1" | tee -a $LOGFILE
340                 cp -f $BASEDIR/src/scripts/make-packages.sh $BASEDIR/build/usr/local/bin
341                 chroot $LFS /tools/bin/env -i   HOME=/root \
342                                                 TERM=$TERM PS1='\u:\w\$ ' \
343                                                 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
344                                                 VERSION=$VERSION \
345                                                 CONFIG_ROOT=$CONFIG_ROOT \
346                                                 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
347                                                 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
348                                                 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
349                                                 KVER=$KVER \
350                                                 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
351                     /bin/bash -x -c "cd /usr/src/lfs && \
352                     make -f $1 LFS_BASEDIR=/usr/src dist" >>$LOGFILE 2>&1
353                 if [ $? -ne 0 ]; then
354                         exiterror "Packaging $1"
355                 fi
356         else
357                 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
358         fi
359 #       test -d $BASEDIR/packages || mkdir $BASEDIR/packages
360 #       mv -f $BASEDIR/build/paks/* $BASEDIR/packages/
361         return 0
362 }
363
364
365 installmake() {
366         if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
367                 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
368                 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download  >> $LOGFILE 2>&1
369                 if [ $? -ne 0 ]; then
370                         exiterror "Download error in $1"
371                 fi
372                 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5  >> $LOGFILE 2>&1
373                 if [ $? -ne 0 ]; then
374                         exiterror "md5sum error in $1, check file in cache or signature"
375                 fi
376                 chroot $LFS /tools/bin/env -i   HOME=/root \
377                                                 TERM=$TERM PS1='\u:\w\$ ' \
378                                                 PATH=/usr/local/bin:/opt/$MACHINE-uClibc/usr/bin:/bin:/usr/bin:/sbin:/usr/sbin \
379                                                 VERSION=$VERSION \
380                                                 CONFIG_ROOT=$CONFIG_ROOT \
381                                                 LFS_PASS="install" \
382                                                 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
383                                                 CFLAGS="-Os" CXXFLAGS="-Os" \
384                                                 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
385                                                 KVER=$KVER \
386                                                 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
387                     /bin/bash -x -c "cd /usr/src/lfs && \
388                     make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
389                 if [ $? -ne 0 ]; then
390                         exiterror "Building $*"
391                 fi
392         else
393                 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
394         fi
395         return 0
396 }
397
398 buildtoolchain() {
399     LOGFILE="$BASEDIR/log/_build.toolchain.log"
400     export LOGFILE
401     echo -ne "`date -u '+%b %e %T'`: Stage1 toolchain build \n" | tee -a $LOGFILE
402     # Build sed now, as we use some extensions
403     ORG_PATH=$PATH
404     NATIVEGCC=`gcc --version | grep GCC | awk {'print $3'}`
405     export NATIVEGCC GCCmajor=${NATIVEGCC:0:1} GCCminor=${NATIVEGCC:2:1} GCCrelease=${NATIVEGCC:4:1}
406     lfsmake1 ccache
407     lfsmake1 sed        LFS_PASS=1
408     lfsmake1 m4         LFS_PASS=1
409     lfsmake1 bison      LFS_PASS=1
410     lfsmake1 flex       LFS_PASS=1
411     lfsmake1 binutils   LFS_PASS=1
412     lfsmake1 gcc        LFS_PASS=1
413     export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH
414     
415     lfsmake1 linux
416     lfsmake1 tcl
417     lfsmake1 expect
418     lfsmake1 glibc
419     lfsmake1 dejagnu
420     lfsmake1 gcc        LFS_PASS=2
421     lfsmake1 binutils   LFS_PASS=2
422     lfsmake1 gawk
423     lfsmake1 coreutils
424     lfsmake1 bzip2
425     lfsmake1 gzip
426     lfsmake1 diffutils
427     lfsmake1 findutils
428     lfsmake1 make
429     lfsmake1 grep
430     lfsmake1 sed        LFS_PASS=2
431     lfsmake1 m4         LFS_PASS=2
432     lfsmake1 bison      LFS_PASS=2
433     lfsmake1 flex       LFS_PASS=2
434     lfsmake1 gettext
435     lfsmake1 ncurses
436     lfsmake1 patch
437     lfsmake1 tar
438     lfsmake1 texinfo
439     lfsmake1 bash
440     lfsmake1 util-linux
441     lfsmake1 perl
442     export PATH=$ORG_PATH
443 }
444
445 buildbase() {
446     LOGFILE="$BASEDIR/log/_build.base.log"
447     export LOGFILE
448     echo -ne "`date -u '+%b %e %T'`: Stage2 linux base build \n" | tee -a $LOGFILE
449     # Run LFS dynamic binary creation scripts one by one
450     lfsmake2 stage2
451     lfsmake2 makedev
452     lfsmake2 linux
453     lfsmake2 man-pages
454     lfsmake2 glibc
455     lfsmake2 binutils
456     lfsmake2 gcc
457     lfsmake2 coreutils
458     lfsmake2 zlib
459     lfsmake2 mktemp
460     lfsmake2 iana-etc
461     lfsmake2 findutils
462     lfsmake2 gawk
463     lfsmake2 ncurses
464     lfsmake2 vim
465     lfsmake2 m4
466     lfsmake2 bison
467     lfsmake2 less
468     lfsmake2 groff
469     lfsmake2 sed
470     lfsmake2 flex
471     lfsmake2 gettext
472     lfsmake2 net-tools
473     lfsmake2 inetutils
474     lfsmake2 perl
475     lfsmake2 texinfo
476     lfsmake2 autoconf
477     lfsmake2 automake
478     lfsmake2 bash
479     lfsmake2 file
480     lfsmake2 libtool
481     lfsmake2 bzip2
482     lfsmake2 diffutils
483     lfsmake2 ed
484     lfsmake2 kbd
485     lfsmake2 e2fsprogs
486     lfsmake2 grep
487     if [ 'i386' = $MACHINE ]; then 
488         lfsmake2 grub
489     elif [ 'alpha' = $MACHINE ]; then 
490         lfsmake2 aboot
491     fi
492     lfsmake2 gzip
493     lfsmake2 man
494     lfsmake2 make
495     lfsmake2 modutils
496     lfsmake2 patch
497     lfsmake2 procinfo
498     lfsmake2 procps
499     lfsmake2 psmisc
500     lfsmake2 shadow
501     lfsmake2 sysklogd
502     lfsmake2 sysvinit
503     lfsmake2 tar
504     lfsmake2 util-linux
505 }
506
507 buildipcop() {
508   # Run IPCop make scripts one by one
509   LOGFILE="$BASEDIR/log/_build.ipcop.log"
510   export LOGFILE
511   echo -ne "`date -u '+%b %e %T'`: Stage3 $NAME build \n" | tee -a $LOGFILE
512
513   # Build these first as some of the kernel packages below rely on 
514   # these for some of their client program functionality 
515   ipcopmake configroot
516   ipcopmake dhcp
517   ipcopmake dhcpcd
518   ipcopmake libusb
519   ipcopmake libpcap
520   ipcopmake linux-atm
521   ipcopmake ppp
522   ipcopmake rp-pppoe
523   ipcopmake unzip
524   # Do SMP now
525   if [ 'i386' = $MACHINE ]; then 
526         # abuse the SMP flag, and make an minimal installer kernel first
527         # so that the boot floppy always works.....
528         ipcopmake linux         LFS_PASS=ipcop SMP=installer
529         ipcopmake linux         LFS_PASS=ipcop SMP=1
530         ipcopmake 3cp4218       SMP=1
531         ipcopmake amedyn        SMP=1
532         ipcopmake cxacru        SMP=1
533         ipcopmake eagle         SMP=1
534
535         # These are here because they have i386 only binary libraries
536         # included in the package.
537         ipcopmake cnx_pci       SMP=1
538         ipcopmake fcdsl         SMP=1
539         ipcopmake fcdsl2        SMP=1
540         ipcopmake fcdslsl       SMP=1
541         ipcopmake fcdslusb      SMP=1
542         ipcopmake fcdslslusb    SMP=1
543         ipcopmake fcpci SMP=1
544         ipcopmake pulsar        SMP=1
545         ipcopmake unicorn       SMP=1
546   fi
547
548   ipcopmake linux       LFS_PASS=ipcop
549   ipcopmake 3cp4218     
550   ipcopmake amedyn      
551   ipcopmake cxacru      
552   ipcopmake eciadsl     
553   ipcopmake eagle       
554   ipcopmake speedtouch  
555   if [ 'i386' = $MACHINE ]; then 
556         # These are here because they have i386 only binary libraries
557         # included in the package.
558         ipcopmake cnx_pci       
559         ipcopmake fcdsl         
560         ipcopmake fcdsl2        
561         ipcopmake fcdslsl       
562         ipcopmake fcdslusb      
563         ipcopmake fcdslslusb 
564         ipcopmake fcpci 
565         ipcopmake pulsar        
566         ipcopmake unicorn       
567   fi
568
569   ipcopmake pcmcia-cs
570   ipcopmake expat
571   ipcopmake gdbm
572   ipcopmake gmp
573   ipcopmake openssl
574   ipcopmake python
575   ipcopmake libnet
576   ipcopmake libpng
577   ipcopmake gd
578   ipcopmake popt
579   ipcopmake slang
580   ipcopmake newt
581   ipcopmake libcap
582   ipcopmake pciutils
583   ipcopmake pcre
584   ipcopmake apache
585   ipcopmake arping
586   ipcopmake beep
587   ipcopmake bind
588   ipcopmake capi4k-utils
589   ipcopmake cdrtools
590   ipcopmake dnsmasq
591   ipcopmake dosfstools
592   ipcopmake ethtool
593   ipcopmake ez-ipupdate
594   ipcopmake fcron
595   ipcopmake perl-GD
596   ipcopmake gnupg
597   ipcopmake hdparm
598   ipcopmake ibod
599   ipcopmake initscripts
600   ipcopmake iptables
601   ipcopmake ipac-ng
602   ipcopmake ipaddr
603   ipcopmake iproute2
604   ipcopmake iptstate
605   ipcopmake iputils
606   ipcopmake isapnptools
607   ipcopmake isdn4k-utils
608   ipcopmake kudzu
609   ipcopmake logrotate
610   ipcopmake logwatch
611   ipcopmake mingetty
612   ipcopmake misc-progs
613   ipcopmake mtools
614   ipcopmake nano
615   ipcopmake nash
616   ipcopmake nasm
617   ipcopmake URI
618   ipcopmake HTML-Tagset
619   ipcopmake HTML-Parser
620   ipcopmake Compress-Zlib
621   ipcopmake Digest
622   ipcopmake Digest-SHA1
623   ipcopmake Digest-HMAC
624   ipcopmake libwww-perl
625   ipcopmake Net-DNS
626   ipcopmake Net-IPv4Addr
627   ipcopmake Net_SSLeay
628   ipcopmake IO-Stringy
629   ipcopmake Unix-Syslog
630   ipcopmake Mail-Tools
631   ipcopmake MIME-Tools
632   ipcopmake Net-Server
633   ipcopmake Convert-TNEF
634   ipcopmake Convert-UUlib
635   ipcopmake Archive-Tar
636   ipcopmake Archive-Zip
637   ipcopmake noip_updater
638   ipcopmake ntp
639   ipcopmake oinkmaster
640   ipcopmake openssh
641   ipcopmake openswan
642   ipcopmake pptpclient
643   ipcopmake rrdtool
644   ipcopmake setserial
645   ipcopmake setup
646   ipcopmake snort
647   #ipcopmake speedycgi
648   ipcopmake squid
649   ipcopmake squid-graph
650   ipcopmake tcpdump
651   ipcopmake traceroute
652   ipcopmake vlan
653   ipcopmake wireless
654   ipcopmake libsafe
655   ipcopmake 3c5x9setup
656   echo -ne "`date -u '+%b %e %T'`: Building ### IPFire modules ### \n" | tee -a $LOGFILE
657   ipcopmake pakfire
658 ## Zuerst die Libs und dann die Programme. Ordnung muss sein!
659   ipcopmake berkeley
660   ipcopmake BerkeleyDB ## The Perl module
661   ipcopmake libtiff
662   ipcopmake libjpeg
663   ipcopmake libxml2
664   ipcopmake spandsp
665   ipcopmake lzo
666   ipcopmake pkg-config
667   ipcopmake glib
668   ipcopmake xampp
669   ipcopmake pam
670   ipcopmake pammysql
671   ipcopmake saslauthd PASS=1
672   ipcopmake openldap
673   ipcopmake saslauthd PASS=2
674   ipcopmake xinetd
675   ipcopmake ghostscript
676   ipcopmake cups
677 #  ipcopmake lpd ## Im Moment aus, da CUPS vorhanden ist.
678   ipcopmake samba
679   ipcopmake sudo
680   ipcopmake mc
681   ipcopmake pwlib
682   ipcopmake openh323
683   ipcopmake wget
684   ipcopmake bridge-utils
685   echo -ne "`date -u '+%b %e %T'`: Building ### Mailserver ### \n" | tee -a $LOGFILE
686   ipcopmake postfix
687   ipcopmake fetchmail
688   ipcopmake cyrusimap
689   ipcopmake procmail
690   ipcopmake clamav
691   ipcopmake razor
692   ipcopmake spamassassin
693   ipcopmake amavisd
694   echo -ne "`date -u '+%b %e %T'`: Building ### VoIP-Server ### \n" | tee -a $LOGFILE
695   ipcopmake stund
696   ipcopmake asterisk
697   ipcopmake openvpn
698   ipcopmake edonkeyclc
699   ipcopmake sane
700   echo -ne "`date -u '+%b %e %T'`: Building ### MP3-Server ### \n" | tee -a $LOGFILE
701   ipcopmake lame
702   ipcopmake gnump3d
703   ipcopmake rsync
704   ipcopmake tcpwrapper
705   ipcopmake portmap
706   ipcopmake nfs
707 #  wget http://www.guzu.net/linux/hddtemp.db && mv hddtemp.db $BASEDIR/build/etc/hddtemp.db
708 #  ipcopmake hddtemp
709 # ipcopmake stunnel # Ausgeschaltet, weil wir es doch nicht nutzen
710 }
711
712 buildinstaller() {
713   # Run installer scripts one by one
714   LOGFILE="$BASEDIR/log/_build.installer.log"
715   export LOGFILE
716   echo -ne "`date -u '+%b %e %T'`: Stage4 installer build \n" | tee -a $LOGFILE
717   if [ 'i386' = $MACHINE ]; then 
718         ipcopmake syslinux
719         ipcopmake as86
720         ipcopmake mbr
721         ipcopmake uClibc
722   fi
723   installmake busybox
724   installmake sysvinit
725   installmake e2fsprogs
726   installmake misc-progs
727   installmake slang
728   installmake util-linux
729   installmake newt
730   installmake pciutils
731   installmake pcmcia-cs
732   installmake kbd
733   installmake installer
734   installmake scsi.img
735   installmake driver.img
736   installmake initrd
737   installmake boot.img
738 }
739
740 buildpackages() {
741   LOGFILE="$BASEDIR/log/_build.packages.log"
742   export LOGFILE
743   echo "... see detailed log in _build.*.log files" >> $LOGFILE
744   echo -ne "`date -u '+%b %e %T'`: Stage5 packages build \n" | tee -a $LOGFILE
745   # Strip files
746   echo "`date -u '+%b %e %T'`: Stripping files" | tee -a $LOGFILE
747   find $LFS/lib $LFS/usr/lib $LFS/usr/share/rrdtool-* $LFS/install ! -type l \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
748         ! -name 'libc.so' ! -name 'libpthread.so' ! -name 'libcrypto.so.0.9.7.sha1' \
749         -ls -exec $LFS/tools/bin/strip --strip-all {} \; >> $LOGFILE 2>&1
750   # add -ls before -exec if you want to verify what files are stripped
751
752   find $LFS/{,s}bin $LFS/usr/{,s}bin $LFS/usr/local/{,s}bin ! -type l \
753         -exec file {} \; | grep " ELF " | cut -f1 -d ':' | xargs $LFS/tools/bin/strip --strip-all >> $LOGFILE 2>&1
754   # there add -v to strip to verify
755
756   if [ 'i386' = $MACHINE ]; then
757         # Create fcdsl packages
758         echo "`date -u '+%b %e %T'`: Building fcdsl tgz" | tee -a $LOGFILE
759         cp $LFS/install/images/fcdsl/license.txt $LFS  >> $LOGFILE 2>&1
760         touch $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}
761         cd $LFS && tar cvfz $LFS/install/images/$SNAME-fcdsl-$VERSION.$MACHINE.tgz \
762                 lib/modules/$KVER/misc/fcdsl*.o.gz \
763                 lib/modules/$KVER-smp/misc/fcdsl*.o.gz \
764                 usr/lib/isdn/{fds?base.bin,fd?ubase.frm} \
765                 etc/fcdsl/fcdsl*.conf \
766                 etc/drdsl/{drdsl,drdsl.ini} \
767                 license.txt \
768                 var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} >> $LOGFILE 2>&1
769         rm -f $LFS/license.txt >> $LOGFILE 2>&1
770         cd $BASEDIR
771   fi
772
773 #  Create update for this version
774 #  echo "`date -u '+%b %e %T'`: Building update $VERSION tgz" | tee -a $LOGFILE
775 #  tar -cz -C $BASEDIR/build --files-from=$BASEDIR/updates/$VERSION/ROOTFILES.$MACHINE-$VERSION -f $BASEDIR/updates/$VERSION/patch.tar.gz --exclude='#*'; 
776 #  chmod 755 $BASEDIR/updates/$VERSION/setup
777 #  tar -cz -C $BASEDIR/updates/$VERSION -f $LFS/install/images/$SNAME-update-$VERSION.$MACHINE.tgz patch.tar.gz setup information
778 #  rm -f $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}
779   
780   # Generating list of packages used
781   echo "`date -u '+%b %e %T'`: Generating packages list from logs" | tee -a $LOGFILE
782   rm -f $BASEDIR/doc/packages-list
783   for i in `ls -1tr $BASEDIR/log/[^_]*`; do
784         if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
785                 echo "  * `basename $i`" >>$BASEDIR/doc/packages-list
786         fi
787   done
788   echo "====== List of softwares used to build $NAME Version: $VERSION ======" > $BASEDIR/doc/packages-list.txt
789   grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipcop$\|setup$\|stage2$\|smp$\|tools$\|tools1$\|tools2$' \
790         $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt
791   rm -f $BASEDIR/doc/packages-list
792   # packages-list.txt is ready to be displayed for wiki page
793
794   # Create ISO for CDRom and USB-superfloppy
795   ipcopmake cdrom
796   cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1
797
798   # Build IPFire packages
799   ipfiredist asterisk
800   ipfiredist cyrusimap
801   ipfiredist fetchmail
802   ipfiredist gnump3d
803   ipfiredist libtiff
804   ipfiredist libxml2
805   ipfiredist mc
806   ipfiredist postfix
807   ipfiredist pwlib
808   ipfiredist sane
809   ipfiredist spandsp
810   ipfiredist sudo
811   ipfiredist xampp
812   ipfiredist xinetd
813   test -d $BASEDIR/packages || mkdir $BASEDIR/packages
814   cp -f $LFS/paks/*.tar.gz $LFS/paks/*.md5 $BASEDIR/packages >> $LOGFILE 2>&1
815
816   # Cleanup
817   stdumount
818   rm -rf $BASEDIR/build/tmp/*
819
820   # Generating total list of files
821   echo "`date -u '+%b %e %T'`: Generating files list from logs" | tee -a $LOGFILE
822   rm -f $BASEDIR/log/FILES
823   for i in `ls -1tr $BASEDIR/log/[^_]*`; do
824         if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
825                 echo "##" >>$BASEDIR/log/FILES
826                 echo "## `basename $i`" >>$BASEDIR/log/FILES
827                 echo "##" >>$BASEDIR/log/FILES
828                 cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES
829         fi
830   done
831
832   cd $PWD
833
834 }
835
836 # See what we're supposed to do
837 case "$1" in 
838 build)
839         BUILDMACHINE=`uname -m`
840         PACKAGE=`ls -v -r $BASEDIR/cache/$SNAME-1.4.*-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
841         #only restore on a clean disk
842         if [ ! -f log/perl-*-tools ]; then
843                 if [ ! -n "$PACKAGE" ]; then
844                         echo "`date -u '+%b %e %T'`: Full toolchain compilation" | tee -a $LOGFILE
845                         prepareenv
846                         buildtoolchain
847                 else
848                         PACKAGENAME=${PACKAGE%.tar.gz}
849                         echo "`date -u '+%b %e %T'`: Restore from $PACKAGE" | tee -a $LOGFILE
850                         if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
851                                 tar zxf $PACKAGE
852                                 prepareenv
853                         else
854                                 exiterror "$PACKAGENAME md5 did not match, check downloaded package"
855                         fi
856                 fi
857         else
858                 echo "`date -u '+%b %e %T'`: Using installed toolchain" | tee -a $LOGFILE
859                 prepareenv
860         fi
861         buildbase
862         buildipcop
863         buildinstaller
864         buildpackages
865         ;;
866 shell)
867         # enter a shell inside LFS chroot
868         # may be used to changed kernel settings
869         prepareenv
870         entershell
871         ;;
872 changelog)
873         echo -n "Loading new Changelog from SVN: "
874         svn log http://svn.ipfire.eu/svn/ipfire > doc/ChangeLog
875         echo "Finished!"
876         ;;
877 check)
878         echo "Checking sources files availability on the web"
879         if [ ! -d $DIR_CHK ]; then
880                 mkdir -p $DIR_CHK
881         fi
882         FINISHED=0
883         cd $BASEDIR/lfs
884         for c in `seq $MAX_RETRIES`; do
885                 if (( FINISHED==1 )); then
886                         break
887                 fi
888                 FINISHED=1
889                 cd $BASEDIR/lfs
890                 for i in *; do
891                         if [ -f "$i" -a "$i" != "Config" ]; then
892                                 make -s -f $i MACHINE=$MACHINE LFS_BASEDIR=$BASEDIR ROOT=$BASEDIR/build \
893                                         MESSAGE="$i\t ($c/$MAX_RETRIES)" check
894                                 if [ $? -ne 0 ]; then
895                                         echo "Check : wget error in lfs/$i"
896                                         FINISHED=0
897                                 fi
898                         fi
899                 done
900         done
901         cd -
902         ;;
903 checkclean)
904         echo "Erasing sources files availability tags"
905         rm -rf $DIR_CHK/*
906         ;;
907 clean)
908         for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
909                 $LOSETUP -d $i 2>/dev/null
910         done
911         for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
912                 umount $i
913         done
914         stdumount
915         for i in `seq 0 7`; do
916             if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
917                 umount /dev/loop${i}     2>/dev/null;
918                 losetup -d /dev/loop${i} 2>/dev/null;
919             fi;
920         done
921         rm -rf $BASEDIR/build
922         rm -rf $BASEDIR/cdrom
923         rm -rf $BASEDIR/packages
924         rm -rf $BASEDIR/log
925         if [ -h /tools ]; then
926                 rm -f /tools
927         fi
928         ;;
929 dist)
930         echo -ne "Updating & building source package from SVN: "
931         svn up > /dev/null
932         svn export http://svn.ipfire.eu/svn/ipfire ipfire-source/ --force > /dev/null
933         tar cfz ipfire-source-`date +'%Y-%m-%d'`-r`svn info | grep Revision | cut -c 11-`.tar.gz ipfire-source
934         rm ipfire-source/ -r
935         echo "Finished!"
936         ;;
937 newpak)
938         # create structure for a new package
939         echo -e "Name of the new package: $2"
940         if [ ! -f "lfs/$2" ]; then
941                 echo "`date -u '+%b %e %T'`: Creating directory src/paks/$2"
942                 mkdir -p src/paks/$2
943                 cd src/paks/$2
944                 echo "`date -u '+%b %e %T'`: Creating files"
945                 cp $BASEDIR/lfs/postfix $BASEDIR/lfs/$2
946
947                 touch ROOTFILES
948                 touch CONFFILES
949                 touch {,un}install.sh
950         ## install.sh
951                 echo '#!/bin/bash' > install.sh
952                 echo '#' >> install.sh
953                 echo '#################################################################' >> install.sh
954                 echo '#                                                               #' >> install.sh
955                 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> install.sh
956                 echo '#                                                               #' >> install.sh
957                 echo '#################################################################' >> install.sh
958                 echo '#' >> install.sh
959                 echo '# Extract the files' >> install.sh
960                 echo 'tar xfz files.tgz -C /' >> install.sh
961                 echo 'cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2' >> install.sh
962         ## uninstall.sh
963                 echo '#!/bin/bash' > uninstall.sh
964                 echo '#################################################################' >> uninstall.sh
965                 echo '#                                                               #' >> uninstall.sh
966                 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> uninstall.sh
967                 echo '#                                                               #' >> uninstall.sh
968                 echo '#################################################################' >> uninstall.sh
969                 echo '#' >> uninstall.sh
970                 echo '# Delete the files' >> uninstall.sh
971                 echo '## Befehl fehlt noch' >> uninstall.sh
972                 echo 'rm -f /opt/pakfire/installed/ROOTFILES.$2' >> uninstall.sh
973                 echo "`date -u '+%b %e %T'`: Adding files to SVN"
974                 cd - && svn add lfs/$2 && svn add src/paks/$2
975
976                 echo -n "Do you want to remove the folders? [y/n]"
977                 read REM
978                 if  [ "$REM" == "y" ]; then
979                         echo "Removing the folders..."
980                         svn del src/paks/$2 --force
981                 else
982                         echo "Folders are kept."
983                 fi
984         else
985                 echo "$2 already exists"
986         fi
987         exit 0
988         ;;
989 prefetch)
990         if [ ! -d $BASEDIR/cache ]; then
991                 mkdir $BASEDIR/cache
992         fi
993         mkdir -p $BASEDIR/log
994         echo "`date -u '+%b %e %T'`:Preload all source files" | tee -a $LOGFILE
995         FINISHED=0
996         cd $BASEDIR/lfs
997         for c in `seq $MAX_RETRIES`; do
998                 if (( FINISHED==1 )); then 
999                         break
1000                 fi
1001                 FINISHED=1
1002                 cd $BASEDIR/lfs
1003                 for i in *; do
1004                         if [ -f "$i" -a "$i" != "Config" ]; then
1005                                 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
1006                                 if [ $? -ne 0 ]; then
1007                                         echo "Prefetch : wget error in lfs/$i"
1008                                         FINISHED=0
1009                                 else
1010                                         if [ $c -eq 1 ]; then
1011                                                 echo "Prefetch : lfs/$i files loaded"
1012                                         fi
1013                                 fi
1014                         fi
1015                 done
1016         done
1017         echo "Prefetch : verifying md5sum"
1018         ERROR=0
1019         for i in *; do
1020                 if [ -f "$i" -a "$i" != "Config" ]; then
1021                         make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
1022                         if [ $? -ne 0 ]; then
1023                                 echo "md5 difference in lfs/$i"
1024                                 ERROR=1
1025                         fi
1026                 fi
1027         done
1028         if [ $ERROR -eq 0 ]; then
1029                 echo "Prefetch : all files md5sum match"
1030         fi
1031         cd -
1032         ;;
1033 toolchain)
1034         prepareenv
1035         buildtoolchain
1036         BUILDMACHINE=`uname -m`
1037         echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
1038         cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
1039                 build/{bin,etc,usr/bin,usr/local} \
1040                 build/tools/{bin,etc,*-linux-gnu,include,lib,libexec,sbin,share,var} \
1041                 log >> $LOGFILE
1042         md5sum cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
1043                 > cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5
1044         stdumount
1045         ;;
1046 gettoolchain)
1047         BUILDMACHINE=`uname -m`
1048         # arbitrary name to be updated in case of new toolchain package upload
1049         PACKAGE=$SNAME-1.4-toolchain-$BUILDMACHINE
1050         URL_IPFIRE=`grep URL_IPFIRE lfs/Config | awk '{ print $3 }'`
1051         echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
1052         cd $BASEDIR/cache
1053         wget $URL_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5
1054         if [ $? -ne 0 ]; then
1055                 echo "`date -u '+%b %e %T'`: error downloading toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE
1056         else
1057                 if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
1058                         echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
1059                         echo "`date -u '+%b %e %T'`: Uncompressing toolchain" | tee -a $LOGFILE
1060                         cd $BASEDIR && tar xvfz cache/$PACKAGE.tar.gz -C .
1061                         rm -vf $BASEDIR/cache/$PACKAGE.{tar.gz,md5}
1062                 else
1063                         exiterror "$PACKAGE.md5 did not match, check downloaded package"
1064                 fi
1065         fi
1066         ;;
1067 update)
1068         echo "Load the latest source-files:"
1069         svn update
1070         ;;
1071 commit)
1072         echo "Upload the changed files:"
1073         svn commit
1074         svn up > /dev/null
1075         ;;
1076 make)
1077         echo "Do a complete compile:"   
1078         ./make.sh prefetch && ./make.sh build
1079         ;;
1080 diff)
1081         echo -ne "Make a local diff to last SVN revision: "
1082         svn diff > ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff
1083         echo "Finished!"
1084         echo "Diff was successfully saved to ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff"
1085         ;;
1086 *)
1087         echo "Usage: $0 {build|changelog|check|checkclean|clean|commit|diff|dist|gettoolchain|make|newpak|prefetch|shell|toolchain|update}"
1088         cat doc/make.sh-usage
1089         exit 1
1090         ;;
1091 esac