6ece8f3defdbec36813ec9835504dfd9d50fca32
[people/teissler/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="2.0" # Version number
29 SLOGAN="www.ipfire.eu" # Software slogan
30 CONFIG_ROOT=/var/ipfire # Configuration rootdir
31 NICE=10
32 MAX_RETRIES=3 # prefetch/check loop
33 KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'`
34 MACHINE=`uname -m`
35 SVN_REVISION=`svn info | grep Revision | cut -c 11-`
36
37 # Setzen des IPFire Builds
38 if [ -e ./.svn ]; then
39 FIREBUILD=`cat .svn/entries |sed -n 's/^[ \t]*revision=\"// p' | sed -n 's/\".*$// p'`
40 fi
41
42 # Debian specific settings
43 if [ ! -e /etc/debian_version ]; then
44 FULLPATH=`which $0`
45 else
46 if [ -x /usr/bin/realpath ]; then
47 FULLPATH=`/usr/bin/realpath $0`
48 else
49 echo "ERROR: Need to do apt-get install realpath"
50 exit 1
51 fi
52 fi
53
54 PWD=`pwd`
55 BASENAME=`basename $0`
56 BASEDIR=`echo $FULLPATH | sed "s/\/$BASENAME//g"`
57 LOGFILE=$BASEDIR/log/_build.preparation.log
58 export BASEDIR LOGFILE
59 DIR_CHK=$BASEDIR/cache/check
60 mkdir $BASEDIR/log/ 2>/dev/null
61
62 if [ -f .config ]; then
63 . .config
64 fi
65
66 if [ 'x86_64' = $MACHINE -o 'i686' = $MACHINE -o 'i586' = $MACHINE -o 'i486' = $MACHINE -o 'i386' = $MACHINE ]; then
67 echo "`date -u '+%b %e %T'`: Machine is ix86 (or equivalent)" >> $LOGFILE
68 MACHINE=i386
69 BUILDTARGET=i386-pc-linux-gnu
70 CFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer"
71 CXXFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer"
72 elif [ 'alpha' = $MACHINE ]; then
73 echo "`date -u '+%b %e %T'`: Machine is Alpha AXP" >> $LOGFILE
74 BUILDTARGET=alpha-unknown-linux-gnu
75 CFLAGS="-O2 -mcpu=ev4 -mieee -pipe"
76 CXXFLAGS="-O2 -mcpu=ev4 -mieee -pipe"
77 else
78 echo "`date -u '+%b %e %T'`: Can't determine your architecture - $MACHINE" >> $LOGFILE
79 exit 1
80 fi
81
82 # Define immediately
83 stdumount() {
84 umount $BASEDIR/build/dev/pts 2>/dev/null;
85 umount $BASEDIR/build/proc 2>/dev/null;
86 umount $BASEDIR/build/install/mnt 2>/dev/null;
87 umount $BASEDIR/build/usr/src/cache 2>/dev/null;
88 umount $BASEDIR/build/usr/src/ccache 2>/dev/null;
89 umount $BASEDIR/build/usr/src/config 2>/dev/null;
90 umount $BASEDIR/build/usr/src/doc 2>/dev/null;
91 umount $BASEDIR/build/usr/src/html 2>/dev/null;
92 umount $BASEDIR/build/usr/src/langs 2>/dev/null;
93 umount $BASEDIR/build/usr/src/lfs 2>/dev/null;
94 umount $BASEDIR/build/usr/src/log 2>/dev/null;
95 umount $BASEDIR/build/usr/src/src 2>/dev/null;
96 }
97
98 exiterror() {
99 stdumount
100 for i in `seq 0 7`; do
101 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
102 losetup -d /dev/loop${i} 2>/dev/null
103 fi;
104 done
105 echo "ERROR: $*"
106 echo " Check $LOGFILE for errors if applicable"
107 exit 1
108 }
109
110 entershell() {
111 if [ ! -e $BASEDIR/build/usr/src/lfs/ ]; then
112 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/"
113 fi
114 echo "Entering to a shell inside LFS chroot, go out with exit"
115 chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
116 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
117 VERSION=$VERSION CONFIG_ROOT=$CONFIG_ROOT \
118 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
119 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
120 CCACHE_DIR=/usr/src/ccache \
121 CCACHE_HASHDIR=1 \
122 KVER=$KVER \
123 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
124 KGCC="ccache /usr/bin/gcc" \
125 /tools/bin/bash
126 if [ $? -ne 0 ]; then
127 exiterror "chroot error"
128 else
129 stdumount
130 fi
131 }
132
133 prepareenv() {
134 ############################################################################
135 # #
136 # Are we running the right shell? #
137 # #
138 ############################################################################
139 if [ ! "$BASH" ]; then
140 exiterror "BASH environment variable is not set. You're probably running the wrong shell."
141 fi
142
143 if [ -z "${BASH_VERSION}" ]; then
144 exiterror "Not running BASH shell."
145 fi
146
147
148 ############################################################################
149 # #
150 # Trap on emergency exit #
151 # #
152 ############################################################################
153 trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGKILL SIGSTOP SIGQUIT
154
155
156 ############################################################################
157 # #
158 # Resetting our nice level #
159 # #
160 ############################################################################
161 echo "`date -u '+%b %e %T'`: Resetting our nice level to $NICE" | tee -a $LOGFILE
162 renice $NICE $$ > /dev/null
163 if [ `nice` != "$NICE" ]; then
164 exiterror "Failed to set correct nice level"
165 fi
166
167 ############################################################################
168 # #
169 # Checking if running as root user #
170 # #
171 ############################################################################
172 echo "`date -u '+%b %e %T'`: Checking if we're running as root user" | tee -a $LOGFILE
173 if [ `id -u` != 0 ]; then
174 exiterror "Not building as root"
175 fi
176
177
178 ############################################################################
179 # #
180 # Checking for necessary temporary space #
181 # #
182 ############################################################################
183 echo "`date -u '+%b %e %T'`: Checking for necessary space on disk $BASE_DEV" | tee -a $LOGFILE
184 BASE_DEV=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $1 }'`
185 BASE_ASPACE=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $4 }'`
186 if (( 2202000 > $BASE_ASPACE )); then
187 BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'`
188 if (( 2202000 - $BASE_USPACE > $BASE_ASPACE )); then
189 exiterror "Not enough temporary space available, need at least 2.1GB on $BASE_DEV"
190 fi
191 fi
192
193 ############################################################################
194 # #
195 # Building Linux From Scratch system #
196 # #
197 ############################################################################
198 echo "`date -u '+%b %e %T'`: Building Linux From Scratch system" | tee -a $LOGFILE
199
200 # Set umask
201 umask 022
202
203 # Set LFS Directory
204 LFS=$BASEDIR/build
205
206 # Check /tools symlink
207 if [ -h /tools ]; then
208 rm -f /tools
209 fi
210 if [ ! -a /tools ]; then
211 ln -s $BASEDIR/build/tools /
212 fi
213 if [ ! -h /tools ]; then
214 exiterror "Could not create /tools symbolic link."
215 fi
216
217 # Setup environment
218 set +h
219 LC_ALL=POSIX
220 export LFS LC_ALL CFLAGS CXXFLAGS
221 unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
222
223 # Make some extra directories
224 mkdir -p $BASEDIR/build/{tools,etc,usr/src} 2>/dev/null
225 mkdir -p $BASEDIR/{cache,ccache} 2>/dev/null
226 mkdir -p $BASEDIR/build/dev/pts $BASEDIR/build/proc $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache}
227
228 # Make all sources and proc available under lfs build
229 mount --bind /dev/pts $BASEDIR/build/dev/pts
230 mount --bind /proc $BASEDIR/build/proc
231 mount --bind $BASEDIR/cache $BASEDIR/build/usr/src/cache
232 mount --bind $BASEDIR/ccache $BASEDIR/build/usr/src/ccache
233 mount --bind $BASEDIR/config $BASEDIR/build/usr/src/config
234 mount --bind $BASEDIR/doc $BASEDIR/build/usr/src/doc
235 mount --bind $BASEDIR/html $BASEDIR/build/usr/src/html
236 mount --bind $BASEDIR/langs $BASEDIR/build/usr/src/langs
237 mount --bind $BASEDIR/lfs $BASEDIR/build/usr/src/lfs
238 mount --bind $BASEDIR/log $BASEDIR/build/usr/src/log
239 mount --bind $BASEDIR/src $BASEDIR/build/usr/src/src
240
241 # Run LFS static binary creation scripts one by one
242 export CCACHE_DIR=$BASEDIR/ccache
243 export CCACHE_HASHDIR=1
244
245 # Remove pre-install list of installed files in case user erase some files before rebuild
246 rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null
247 }
248
249
250 ############################################################################
251 # #
252 # Necessary shell functions #
253 # #
254 ############################################################################
255 lfsmake1() {
256 if [ -f $BASEDIR/lfs/$1 ]; then
257 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
258 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1
259 if [ $? -ne 0 ]; then
260 exiterror "Download error in $1"
261 fi
262 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
263 if [ $? -ne 0 ]; then
264 exiterror "md5sum error in $1, check file in cache or signature"
265 fi
266 cd $BASEDIR/lfs && make -f $* BUILDTARGET=$BUILDTARGET \
267 MACHINE=$MACHINE \
268 LFS_BASEDIR=$BASEDIR \
269 ROOT=$LFS \
270 KVER=$KVER \
271 install >> $LOGFILE 2>&1
272 if [ $? -ne 0 ]; then
273 exiterror "Building $*";
274 fi
275 else
276 exiterror "No such file or directory: $BASEDIR/$1"
277 fi
278 return 0
279 }
280
281 lfsmake2() {
282 if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
283 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
284 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1
285 if [ $? -ne 0 ]; then
286 exiterror "Download error in $1"
287 fi
288 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
289 if [ $? -ne 0 ]; then
290 exiterror "md5sum error in $1, check file in cache or signature"
291 fi
292 chroot $LFS /tools/bin/env -i HOME=/root \
293 TERM=$TERM PS1='\u:\w\$ ' \
294 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
295 VERSION=$VERSION \
296 CONFIG_ROOT=$CONFIG_ROOT \
297 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
298 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
299 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
300 KVER=$KVER \
301 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
302 /tools/bin/bash -x -c "cd /usr/src/lfs && \
303 make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
304 if [ $? -ne 0 ]; then
305 exiterror "Building $*"
306 fi
307 else
308 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
309 fi
310 return 0
311 }
312
313 ipcopmake() {
314 if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
315 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
316 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1
317 if [ $? -ne 0 ]; then
318 exiterror "Download error in $1"
319 fi
320 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
321 if [ $? -ne 0 ]; then
322 exiterror "md5sum error in $1, check file in cache or signature"
323 fi
324 chroot $LFS /tools/bin/env -i HOME=/root \
325 TERM=$TERM PS1='\u:\w\$ ' \
326 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
327 VERSION=$VERSION \
328 CONFIG_ROOT=$CONFIG_ROOT \
329 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
330 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
331 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
332 KVER=$KVER \
333 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
334 /bin/bash -x -c "cd /usr/src/lfs && \
335 make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
336 if [ $? -ne 0 ]; then
337 exiterror "Building $*"
338 fi
339 else
340 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
341 fi
342 return 0
343 }
344
345 ipfiredist() {
346 if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
347 # if [ ! `ls -w1 $BASEDIR/packages/*.ipfire | grep $1` ]; then
348 echo "`date -u '+%b %e %T'`: Packaging $1" | tee -a $LOGFILE
349 chroot $LFS /tools/bin/env -i HOME=/root \
350 TERM=$TERM PS1='\u:\w\$ ' \
351 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
352 VERSION=$VERSION \
353 CONFIG_ROOT=$CONFIG_ROOT \
354 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
355 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
356 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
357 KVER=$KVER \
358 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
359 /bin/bash -x -c "cd /usr/src/lfs && \
360 make -f $1 LFS_BASEDIR=/usr/src dist" >>$LOGFILE 2>&1
361 if [ $? -ne 0 ]; then
362 exiterror "Packaging $1"
363 fi
364 # else
365 # echo "`date -u '+%b %e %T'`: Packaging: The package $1 already exists"
366 # fi
367 else
368 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
369 fi
370 return 0
371 }
372
373
374 installmake() {
375 if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
376 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
377 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1
378 if [ $? -ne 0 ]; then
379 exiterror "Download error in $1"
380 fi
381 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
382 if [ $? -ne 0 ]; then
383 exiterror "md5sum error in $1, check file in cache or signature"
384 fi
385 chroot $LFS /tools/bin/env -i HOME=/root \
386 TERM=$TERM PS1='\u:\w\$ ' \
387 PATH=/usr/local/bin:/opt/$MACHINE-uClibc/usr/bin:/bin:/usr/bin:/sbin:/usr/sbin \
388 VERSION=$VERSION \
389 CONFIG_ROOT=$CONFIG_ROOT \
390 LFS_PASS="install" \
391 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
392 CFLAGS="-Os" CXXFLAGS="-Os" \
393 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
394 KVER=$KVER \
395 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
396 /bin/bash -x -c "cd /usr/src/lfs && \
397 make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
398 if [ $? -ne 0 ]; then
399 exiterror "Building $*"
400 fi
401 else
402 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
403 fi
404 return 0
405 }
406
407 buildtoolchain() {
408 LOGFILE="$BASEDIR/log/_build.toolchain.log"
409 export LOGFILE
410 echo -ne "`date -u '+%b %e %T'`: Stage1 toolchain build \n" | tee -a $LOGFILE
411 # Build sed now, as we use some extensions
412 ORG_PATH=$PATH
413 NATIVEGCC=`gcc --version | grep GCC | awk {'print $3'}`
414 export NATIVEGCC GCCmajor=${NATIVEGCC:0:1} GCCminor=${NATIVEGCC:2:1} GCCrelease=${NATIVEGCC:4:1}
415 lfsmake1 ccache
416 lfsmake1 sed LFS_PASS=1
417 lfsmake1 m4 LFS_PASS=1
418 lfsmake1 bison LFS_PASS=1
419 lfsmake1 flex LFS_PASS=1
420 lfsmake1 binutils LFS_PASS=1
421 lfsmake1 gcc LFS_PASS=1
422 export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH
423
424 lfsmake1 linux
425 lfsmake1 tcl
426 lfsmake1 expect
427 lfsmake1 glibc
428 lfsmake1 dejagnu
429 lfsmake1 gcc LFS_PASS=2
430 lfsmake1 binutils LFS_PASS=2
431 lfsmake1 gawk
432 lfsmake1 coreutils
433 lfsmake1 bzip2
434 lfsmake1 gzip
435 lfsmake1 diffutils
436 lfsmake1 findutils
437 lfsmake1 make
438 lfsmake1 grep
439 lfsmake1 sed LFS_PASS=2
440 lfsmake1 m4 LFS_PASS=2
441 lfsmake1 bison LFS_PASS=2
442 lfsmake1 flex LFS_PASS=2
443 lfsmake1 gettext
444 lfsmake1 ncurses
445 lfsmake1 patch
446 lfsmake1 tar
447 lfsmake1 texinfo
448 lfsmake1 bash
449 lfsmake1 util-linux
450 lfsmake1 perl
451 export PATH=$ORG_PATH
452 }
453
454 buildbase() {
455 LOGFILE="$BASEDIR/log/_build.base.log"
456 export LOGFILE
457 echo -ne "`date -u '+%b %e %T'`: Stage2 linux base build \n" | tee -a $LOGFILE
458 # Run LFS dynamic binary creation scripts one by one
459 lfsmake2 stage2
460 lfsmake2 makedev
461 lfsmake2 linux
462 lfsmake2 man-pages
463 lfsmake2 glibc
464 lfsmake2 binutils
465 lfsmake2 gcc
466 lfsmake2 coreutils
467 lfsmake2 zlib
468 lfsmake2 mktemp
469 lfsmake2 iana-etc
470 lfsmake2 findutils
471 lfsmake2 gawk
472 lfsmake2 ncurses
473 lfsmake2 vim
474 lfsmake2 m4
475 lfsmake2 bison
476 lfsmake2 less
477 lfsmake2 groff
478 lfsmake2 sed
479 lfsmake2 flex
480 lfsmake2 gettext
481 lfsmake2 net-tools
482 lfsmake2 inetutils
483 lfsmake2 perl
484 lfsmake2 texinfo
485 lfsmake2 autoconf
486 lfsmake2 automake
487 lfsmake2 bash
488 lfsmake2 file
489 lfsmake2 libtool
490 lfsmake2 bzip2
491 lfsmake2 diffutils
492 lfsmake2 ed
493 lfsmake2 kbd
494 lfsmake2 e2fsprogs
495 lfsmake2 grep
496 if [ 'i386' = $MACHINE ]; then
497 lfsmake2 grub
498 elif [ 'alpha' = $MACHINE ]; then
499 lfsmake2 aboot
500 fi
501 lfsmake2 gzip
502 lfsmake2 man
503 lfsmake2 make
504 lfsmake2 modutils
505 lfsmake2 patch
506 lfsmake2 procinfo
507 lfsmake2 procps
508 lfsmake2 psmisc
509 lfsmake2 shadow
510 lfsmake2 sysklogd
511 lfsmake2 sysvinit
512 lfsmake2 tar
513 lfsmake2 util-linux
514 }
515
516 buildipcop() {
517 # Run IPFire make scripts one by one
518 LOGFILE="$BASEDIR/log/_build.ipfire.log"
519 export LOGFILE
520 echo -ne "`date -u '+%b %e %T'`: Stage3 $NAME build \n" | tee -a $LOGFILE
521
522 # Build these first as some of the kernel packages below rely on
523 # these for some of their client program functionality
524 ipcopmake configroot
525 ipcopmake dhcp
526 ipcopmake dhcpcd
527 ipcopmake libusb
528 ipcopmake libpcap
529 ipcopmake linux-atm
530 ipcopmake ppp
531 ipcopmake rp-pppoe
532 ipcopmake unzip
533 # Do SMP now
534 if [ 'i386' = $MACHINE ]; then
535 # abuse the SMP flag, and make an minimal installer kernel first
536 # so that the boot floppy always works.....
537 ipcopmake linux LFS_PASS=ipfire SMP=installer
538 ipcopmake linux LFS_PASS=ipfire SMP=1
539 ipcopmake 3cp4218 SMP=1
540 ipcopmake amedyn SMP=1
541 ipcopmake cxacru SMP=1
542 ipcopmake eagle SMP=1
543
544 # These are here because they have i386 only binary libraries
545 # included in the package.
546 ipcopmake cnx_pci SMP=1
547 ipcopmake fcdsl SMP=1
548 ipcopmake fcdsl2 SMP=1
549 ipcopmake fcdslsl SMP=1
550 ipcopmake fcdslusb SMP=1
551 ipcopmake fcdslslusb SMP=1
552 ipcopmake fcpci SMP=1
553 ipcopmake fcclassic SMP=1
554 ipcopmake pulsar SMP=1
555 ipcopmake unicorn SMP=1
556 ipcopmake promise-sata-300-tx SMP=1
557 fi
558
559 ipcopmake linux LFS_PASS=ipfire
560 ipcopmake 3cp4218
561 ipcopmake amedyn
562 ipcopmake cxacru
563 ipcopmake eciadsl
564 ipcopmake eagle
565 ipcopmake speedtouch
566 if [ 'i386' = $MACHINE ]; then
567 # These are here because they have i386 only binary libraries
568 # included in the package.
569 ipcopmake cnx_pci
570 ipcopmake fcdsl
571 ipcopmake fcdsl2
572 ipcopmake fcdslsl
573 ipcopmake fcdslusb
574 ipcopmake fcdslslusb
575 ipcopmake fcpci
576 ipcopmake fcclassic
577 ipcopmake pulsar
578 ipcopmake unicorn
579 ipcopmake promise-sata-300-tx
580 fi
581
582 ipcopmake pcmcia-cs
583 ipcopmake expat
584 ipcopmake gdbm
585 ipcopmake gmp
586 ipcopmake openssl
587 ipcopmake python
588 ipcopmake libnet
589 ipcopmake libpng
590 ipcopmake libtiff
591 ipcopmake libjpeg
592 ipcopmake lcms
593 ipcopmake libmng
594 ipcopmake freetype
595 ipcopmake gd
596 ipcopmake popt
597 ipcopmake slang
598 ipcopmake newt
599 ipcopmake libcap
600 ipcopmake pciutils
601 ipcopmake pcre
602 ipcopmake readline
603 ipcopmake libxml2
604 ipcopmake berkeley
605 ipcopmake BerkeleyDB ## The Perl module
606 ipcopmake mysql
607 ipcopmake saslauthd PASS=1
608 ipcopmake openldap
609 #ipcopmake apache
610 ipcopmake apache2
611 ipcopmake php
612 ipcopmake arping
613 ipcopmake beep
614 ipcopmake bind
615 ipcopmake capi4k-utils
616 ipcopmake cdrtools
617 ipcopmake dnsmasq
618 ipcopmake dosfstools
619 ipcopmake ethtool
620 ipcopmake ez-ipupdate
621 ipcopmake fcron
622 ipcopmake perl-GD
623 ipcopmake gnupg
624 ipcopmake hdparm
625 ipcopmake ibod
626 ipcopmake initscripts
627 ipcopmake iptables
628 ipcopmake ipac-ng
629 ipcopmake ipaddr
630 ipcopmake iproute2
631 ipcopmake iptstate
632 ipcopmake iputils
633 ipcopmake l7-protocols
634 ipcopmake isapnptools
635 ipcopmake isdn4k-utils
636 ipcopmake kudzu
637 ipcopmake logrotate
638 ipcopmake logwatch
639 ipcopmake mingetty
640 ipcopmake misc-progs
641 ipcopmake mtools
642 ipcopmake nano
643 ipcopmake nash
644 ipcopmake nasm
645 ipcopmake URI
646 ipcopmake HTML-Tagset
647 ipcopmake HTML-Parser
648 ipcopmake Compress-Zlib
649 ipcopmake Digest
650 ipcopmake Digest-SHA1
651 ipcopmake Digest-HMAC
652 ipcopmake libwww-perl
653 ipcopmake Net-DNS
654 ipcopmake Net-IPv4Addr
655 ipcopmake Net_SSLeay
656 ipcopmake IO-Stringy
657 ipcopmake Unix-Syslog
658 ipcopmake Mail-Tools
659 ipcopmake MIME-Tools
660 ipcopmake Net-Server
661 ipcopmake Convert-TNEF
662 ipcopmake Convert-UUlib
663 ipcopmake Archive-Tar
664 ipcopmake Archive-Zip
665 ipcopmake Text-Tabs+Wrap
666 ipcopmake Locale-Country
667 ipcopmake GeoIP
668 ipcopmake fwhits
669 ipcopmake noip_updater
670 ipcopmake ntp
671 ipcopmake oinkmaster
672 ipcopmake openssh
673 ipcopmake openswan
674 ipcopmake pptpclient
675 ipcopmake rrdtool
676 ipcopmake setserial
677 ipcopmake setup
678 ipcopmake snort
679 #ipcopmake speedycgi
680 ipcopmake squid
681 ipcopmake squid-graph
682 ipcopmake squidguard
683 ipcopmake tcpdump
684 ipcopmake traceroute
685 ipcopmake vlan
686 ipcopmake wireless
687 ipcopmake libsafe
688 ipcopmake 3c5x9setup
689 # echo -ne "`date -u '+%b %e %T'`: Building ### IPFire modules ### \n" | tee -a $LOGFILE
690 ipcopmake pakfire
691 ipcopmake startscripts
692 ## Zuerst die Libs und dann die Programme. Ordnung muss sein!
693 ipcopmake java
694 ipcopmake bootsplash
695 ipcopmake spandsp
696 ipcopmake lzo
697 ipcopmake openvpn
698 ipcopmake pkg-config
699 ipcopmake glib
700 ipcopmake xampp
701 ipcopmake pam
702 ipcopmake pammysql
703 ipcopmake saslauthd PASS=2
704 ipcopmake xinetd
705 ipcopmake ghostscript
706 ipcopmake cups
707 # ipcopmake lpd ## Im Moment aus, da CUPS vorhanden ist.
708 ipcopmake samba
709 ipcopmake sudo
710 ipcopmake mc
711 # ipcopmake pwlib
712 # ipcopmake openh323
713 ipcopmake wget
714 ipcopmake wput
715 ipcopmake bridge-utils
716 ipcopmake screen
717 ipcopmake hddtemp
718 ipcopmake smartmontools
719 ipcopmake htop
720 ipcopmake lynx
721 echo -ne "`date -u '+%b %e %T'`: Building ### Mailserver ### \n" | tee -a $LOGFILE
722 ipcopmake postfix
723 ipcopmake procmail
724 ipcopmake fetchmail
725 ipcopmake cyrusimap
726 ipcopmake web-cyradm
727 ipcopmake mailx
728 ipcopmake clamav
729 ipcopmake razor
730 ipcopmake spamassassin
731 # ipcopmake amavisd
732 echo -ne "`date -u '+%b %e %T'`: Building ### VoIP-Server ### \n" | tee -a $LOGFILE
733 ipcopmake stund
734 ipcopmake zaptel
735 ipcopmake libpri
736 ipcopmake bristuff
737 ipcopmake asterisk
738 ipcopmake mpg123
739 echo -ne "`date -u '+%b %e %T'`: Building ### Multimedia-Server ### \n" | tee -a $LOGFILE
740 ipcopmake libmad
741 ipcopmake libogg
742 ipcopmake libvorbis
743 ipcopmake lame
744 ipcopmake xvid
745 ipcopmake mpeg2dec
746 ipcopmake ffmpeg
747 ipcopmake sox
748 ipcopmake gnump3d
749 ipcopmake videolan
750 echo -ne "`date -u '+%b %e %T'`: Building ### P2P-Clients ### \n" | tee -a $LOGFILE
751 ipcopmake applejuice
752 ipcopmake ocaml
753 ipcopmake mldonkey
754 # ipcopmake sane
755 echo -ne "`date -u '+%b %e %T'`: Building ### Net-Tools ### \n" | tee -a $LOGFILE
756 ipcopmake ntop
757 # ipcopmake rsync
758 ipcopmake tcpwrapper
759 ipcopmake portmap
760 ipcopmake nfs
761 ipcopmake nmap
762 ipcopmake mbmon
763 ipcopmake iftop
764 ipcopmake ncftp
765 ipcopmake cftp
766 ipcopmake etherwake
767 ipcopmake ethereal
768 ipcopmake tftp-hpa
769 #ipcopmake subversion
770 ipcopmake iptraf
771 ipcopmake nagios
772 ipcopmake yasuc
773 }
774
775 buildinstaller() {
776 # Run installer scripts one by one
777 LOGFILE="$BASEDIR/log/_build.installer.log"
778 export LOGFILE
779 echo -ne "`date -u '+%b %e %T'`: Stage4 installer build \n" | tee -a $LOGFILE
780 if [ 'i386' = $MACHINE ]; then
781 ipcopmake syslinux
782 ipcopmake as86
783 ipcopmake mbr
784 ipcopmake uClibc
785 fi
786 installmake busybox
787 installmake sysvinit
788 installmake e2fsprogs
789 installmake misc-progs
790 installmake slang
791 installmake util-linux
792 installmake newt
793 installmake pciutils
794 installmake pcmcia-cs
795 installmake kbd
796 installmake installer
797 installmake scsi.img
798 installmake driver.img
799 installmake initrd
800 installmake boot.img
801 }
802
803 buildpackages() {
804 LOGFILE="$BASEDIR/log/_build.packages.log"
805 export LOGFILE
806 echo "... see detailed log in _build.*.log files" >> $LOGFILE
807 echo -ne "`date -u '+%b %e %T'`: Stage5 packages build \n" | tee -a $LOGFILE
808 # Strip files
809 echo "`date -u '+%b %e %T'`: Stripping files" | tee -a $LOGFILE
810 find $LFS/lib $LFS/usr/lib $LFS/usr/share/rrdtool-* $LFS/install ! -type l \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
811 ! -name 'libc.so' ! -name 'libpthread.so' ! -name 'libcrypto.so.0.9.7.sha1' \
812 -exec $LFS/tools/bin/strip --strip-all {} \; >> $LOGFILE 2>&1
813 # add -ls before -exec if you want to verify what files are stripped
814
815 find $LFS/{,s}bin $LFS/usr/{,s}bin $LFS/usr/local/{,s}bin ! -type l \
816 -exec file {} \; | grep " ELF " | cut -f1 -d ':' | xargs $LFS/tools/bin/strip --strip-all >> $LOGFILE 2>&1
817 # there add -v to strip to verify
818
819 if [ 'i386' = $MACHINE ]; then
820 # Create fcdsl packages
821 echo "`date -u '+%b %e %T'`: Building fcdsl tgz" | tee -a $LOGFILE
822 cp $LFS/install/images/fcdsl/license.txt $LFS >> $LOGFILE 2>&1
823 touch $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}
824 cd $LFS && tar cvfz $LFS/install/images/$SNAME-fcdsl-$VERSION.$MACHINE.tgz \
825 lib/modules/$KVER/misc/fcdsl*.o.gz \
826 lib/modules/$KVER-smp/misc/fcdsl*.o.gz \
827 usr/lib/isdn/{fds?base.bin,fd?ubase.frm} \
828 etc/fcdsl/fcdsl*.conf \
829 etc/drdsl/{drdsl,drdsl.ini} \
830 license.txt \
831 var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} >> $LOGFILE 2>&1
832 rm -f $LFS/license.txt >> $LOGFILE 2>&1
833 cd $BASEDIR
834 fi
835
836 # Generating list of packages used
837 echo "`date -u '+%b %e %T'`: Generating packages list from logs" | tee -a $LOGFILE
838 rm -f $BASEDIR/doc/packages-list
839 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
840 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
841 echo "* `basename $i`" >>$BASEDIR/doc/packages-list
842 fi
843 done
844 echo "== List of softwares used to build $NAME Version: $VERSION ==" > $BASEDIR/doc/packages-list.txt
845 grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipfire$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$\|.tgz$' \
846 $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt
847 rm -f $BASEDIR/doc/packages-list
848 # packages-list.txt is ready to be displayed for wiki page
849
850 # Create ISO for CDRom and USB-superfloppy
851 ipcopmake cdrom
852 rm -f $LFS/install/images/*usb*
853 cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1
854
855 ipfirepackages
856
857 # Cleanup
858 stdumount
859 rm -rf $BASEDIR/build/tmp/*
860
861 # Generating total list of files
862 echo "`date -u '+%b %e %T'`: Generating files list from logs" | tee -a $LOGFILE
863 rm -f $BASEDIR/log/FILES
864 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
865 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
866 echo "##" >>$BASEDIR/log/FILES
867 echo "## `basename $i`" >>$BASEDIR/log/FILES
868 echo "##" >>$BASEDIR/log/FILES
869 cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES
870 fi
871 done
872 cd $BASEDIR/packages; ls -w1 *.ipfire | awk -F ".ipfire" '{ print $1 }' > $BASEDIR/packages/packages_list.txt
873 echo -n "###EOF###" >> $BASEDIR/packages/packages_list.txt
874
875 cd $PWD
876
877 }
878
879 ipfirepackages() {
880 if [ -d "$BASEDIR/packages" ]; then
881 for i in `ls $BASEDIR/packages`; do
882 touch $BASEDIR/build/install/packages/$i.empty
883 done
884 fi
885 ipfiredist amavisd
886 ipfiredist applejuice
887 ipfiredist asterisk
888 ipfiredist clamav
889 ipfiredist cups
890 ipfiredist cyrusimap
891 ipfiredist fetchmail
892 ipfiredist ffmpeg
893 ipfiredist gnump3d
894 ipfiredist iptraf
895 ipfiredist java
896 ipfiredist lame
897 ipfiredist libmad
898 ipfiredist libogg
899 ipfiredist libtiff
900 ipfiredist libvorbis
901 ipfiredist libxml2
902 ipfiredist mailx
903 ipfiredist mldonkey
904 ipfiredist mpeg2dec
905 ipfiredist nagios
906 ipfiredist nfs
907 ipfiredist nmap
908 ipfiredist ntop
909 ipfiredist portmap
910 ipfiredist postfix
911 ipfiredist procmail
912 ipfiredist samba
913 ipfiredist sox
914 ipfiredist spamassassin
915 ipfiredist subversion
916 ipfiredist videolan
917 ipfiredist web-cyradm
918 ipfiredist xampp
919 # ipfiredist xinetd
920 ipfiredist xvid
921 ipfiredist yasuc
922 test -d $BASEDIR/packages || mkdir $BASEDIR/packages
923 mv -f $LFS/install/packages/*.{ipfire,md5} $BASEDIR/packages >> $LOGFILE 2>&1
924 rm -rf $BASEDIR/build/install/packages/*
925 }
926
927 update_logs() {
928 tar cfz log/ipfire-logs-`date +'%Y-%m-%d-%H:%M'`.tgz log/_build.*
929 rm -f log/_build.*
930 }
931
932 # See what we're supposed to do
933 case "$1" in
934 build)
935 BUILDMACHINE=`uname -m`
936 PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
937 #only restore on a clean disk
938 if [ ! -f log/perl-*-tools ]; then
939 if [ ! -n "$PACKAGE" ]; then
940 echo "`date -u '+%b %e %T'`: Full toolchain compilation" | tee -a $LOGFILE
941 prepareenv
942 buildtoolchain
943 else
944 PACKAGENAME=${PACKAGE%.tar.gz}
945 echo "`date -u '+%b %e %T'`: Restore from $PACKAGE" | tee -a $LOGFILE
946 if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
947 tar zxf $PACKAGE
948 prepareenv
949 else
950 exiterror "$PACKAGENAME md5 did not match, check downloaded package"
951 fi
952 fi
953 else
954 echo "`date -u '+%b %e %T'`: Using installed toolchain" | tee -a $LOGFILE
955 prepareenv
956 fi
957
958 buildbase
959 buildipcop
960
961 # Setzen des IPFire Builds
962 if [ "$FIREBUILD" ]; then
963 echo "$FIREBUILD" > $BASEDIR/build/var/ipfire/firebuild
964 else
965 echo "_(OvO)_" > $BASEDIR/build/var/ipfire/firebuild
966 fi
967
968 buildinstaller
969 buildpackages
970 ;;
971 shell)
972 # enter a shell inside LFS chroot
973 # may be used to changed kernel settings
974 prepareenv
975 entershell
976 ;;
977 changelog)
978 echo -n "Loading new Changelog from SVN: "
979 svn log http://svn.ipfire.eu/svn/ipfire > doc/ChangeLog
980 echo "Finished!"
981 ;;
982 check)
983 echo "Checking sources files availability on the web"
984 if [ ! -d $DIR_CHK ]; then
985 mkdir -p $DIR_CHK
986 fi
987 FINISHED=0
988 cd $BASEDIR/lfs
989 for c in `seq $MAX_RETRIES`; do
990 if (( FINISHED==1 )); then
991 break
992 fi
993 FINISHED=1
994 cd $BASEDIR/lfs
995 for i in *; do
996 if [ -f "$i" -a "$i" != "Config" ]; then
997 make -s -f $i MACHINE=$MACHINE LFS_BASEDIR=$BASEDIR ROOT=$BASEDIR/build \
998 MESSAGE="$i\t ($c/$MAX_RETRIES)" check
999 if [ $? -ne 0 ]; then
1000 echo "Check : wget error in lfs/$i"
1001 FINISHED=0
1002 fi
1003 fi
1004 done
1005 done
1006 cd -
1007 ;;
1008 checkclean)
1009 echo "Erasing sources files availability tags"
1010 rm -rf $DIR_CHK/*
1011 ;;
1012 clean)
1013 for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
1014 $LOSETUP -d $i 2>/dev/null
1015 done
1016 for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
1017 umount $i
1018 done
1019 stdumount
1020 for i in `seq 0 7`; do
1021 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
1022 umount /dev/loop${i} 2>/dev/null;
1023 losetup -d /dev/loop${i} 2>/dev/null;
1024 fi;
1025 done
1026 rm -rf $BASEDIR/build
1027 rm -rf $BASEDIR/cdrom
1028 rm -rf $BASEDIR/packages
1029 rm -rf $BASEDIR/log
1030 if [ -h /tools ]; then
1031 rm -f /tools
1032 fi
1033 ;;
1034 newpak)
1035 # create structure for a new package
1036 echo -e "Name of the new package: $2"
1037 if [ ! -f "lfs/$2" ]; then
1038 echo "`date -u '+%b %e %T'`: Creating directory src/paks/$2"
1039 mkdir -p src/paks/$2
1040 cd src/paks/$2
1041 echo "`date -u '+%b %e %T'`: Creating files"
1042 cp $BASEDIR/lfs/postfix $BASEDIR/lfs/$2
1043
1044 touch ROOTFILES
1045 touch {,un}install.sh
1046 ## install.sh
1047 echo '#!/bin/bash' > install.sh
1048 echo '#' >> install.sh
1049 echo '#################################################################' >> install.sh
1050 echo '# #' >> install.sh
1051 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> install.sh
1052 echo '# #' >> install.sh
1053 echo '#################################################################' >> install.sh
1054 echo '#' >> install.sh
1055 echo '# Extract the files' >> install.sh
1056 echo 'tar xfz files.tgz -C /' >> install.sh
1057 echo 'cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2' >> install.sh
1058 ## uninstall.sh
1059 echo '#!/bin/bash' > uninstall.sh
1060 echo '#################################################################' >> uninstall.sh
1061 echo '# #' >> uninstall.sh
1062 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> uninstall.sh
1063 echo '# #' >> uninstall.sh
1064 echo '#################################################################' >> uninstall.sh
1065 echo '#' >> uninstall.sh
1066 echo '# Delete the files' >> uninstall.sh
1067 echo '## Befehl fehlt noch' >> uninstall.sh
1068 echo 'rm -f /opt/pakfire/installed/ROOTFILES.$2' >> uninstall.sh
1069 echo "`date -u '+%b %e %T'`: Adding files to SVN"
1070 cd - && svn add lfs/$2 && svn add src/paks/$2
1071
1072 echo -n "Do you want to remove the folders? [y/n]"
1073 read REM
1074 if [ "$REM" == "y" ]; then
1075 echo "Removing the folders..."
1076 svn del src/paks/$2 --force
1077 else
1078 echo "Folders are kept."
1079 fi
1080 else
1081 echo "$2 already exists"
1082 fi
1083 exit 0
1084 ;;
1085 prefetch)
1086 if [ ! -d $BASEDIR/cache ]; then
1087 mkdir $BASEDIR/cache
1088 fi
1089 mkdir -p $BASEDIR/log
1090 echo "`date -u '+%b %e %T'`:Preload all source files" | tee -a $LOGFILE
1091 FINISHED=0
1092 cd $BASEDIR/lfs
1093 for c in `seq $MAX_RETRIES`; do
1094 if (( FINISHED==1 )); then
1095 break
1096 fi
1097 FINISHED=1
1098 cd $BASEDIR/lfs
1099 for i in *; do
1100 if [ -f "$i" -a "$i" != "Config" ]; then
1101 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
1102 if [ $? -ne 0 ]; then
1103 echo "Prefetch : wget error in lfs/$i"
1104 FINISHED=0
1105 else
1106 if [ $c -eq 1 ]; then
1107 echo "Prefetch : lfs/$i files loaded"
1108 fi
1109 fi
1110 fi
1111 done
1112 done
1113 echo "Prefetch : verifying md5sum"
1114 ERROR=0
1115 for i in *; do
1116 if [ -f "$i" -a "$i" != "Config" ]; then
1117 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
1118 if [ $? -ne 0 ]; then
1119 echo "md5 difference in lfs/$i"
1120 ERROR=1
1121 fi
1122 fi
1123 done
1124 if [ $ERROR -eq 0 ]; then
1125 echo "Prefetch : all files md5sum match"
1126 fi
1127 cd -
1128 ;;
1129 toolchain)
1130 prepareenv
1131 buildtoolchain
1132 BUILDMACHINE=`uname -m`
1133 echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
1134 test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains
1135 cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
1136 build/{bin,etc,usr/bin,usr/local} \
1137 build/tools/{bin,etc,*-linux-gnu,include,lib,libexec,sbin,share,var} \
1138 log >> $LOGFILE
1139 md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
1140 > cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5
1141 stdumount
1142 ;;
1143 gettoolchain)
1144 BUILDMACHINE=`uname -m`
1145 # arbitrary name to be updated in case of new toolchain package upload
1146 PACKAGE=$SNAME-$VERSION-toolchain-$BUILDMACHINE
1147 if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then
1148 URL_IPFIRE=`grep URL_IPFIRE lfs/Config | awk '{ print $3 }'`
1149 test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains
1150 echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
1151 cd $BASEDIR/cache/toolchains
1152 wget $URL_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5 >& /dev/null
1153 if [ $? -ne 0 ]; then
1154 echo "`date -u '+%b %e %T'`: error downloading toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE
1155 else
1156 if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
1157 echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
1158 else
1159 exiterror "$PACKAGE.md5 did not match, check downloaded package"
1160 fi
1161 fi
1162 else
1163 echo "Toolchain is already downloaded. Exiting..."
1164 fi
1165 ;;
1166 sources-iso)
1167 prepareenv
1168 echo "`date -u '+%b %e %T'`: Build sources iso for $MACHINE" | tee -a $LOGFILE
1169 chroot $LFS /tools/bin/env -i HOME=/root \
1170 TERM=$TERM PS1='\u:\w\$ ' \
1171 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
1172 VERSION=$VERSION NAME="$NAME" SNAME="$SNAME" MACHINE=$MACHINE \
1173 /bin/bash -x -c "cd /usr/src/lfs && make -f sources-iso LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
1174 mv $LFS/install/images/ipfire-* $BASEDIR >> $LOGFILE 2>&1
1175 stdumount
1176 ;;
1177 svn)
1178 case "$2" in
1179 update|up)
1180 # clear
1181 echo "Loading the latest source files..."
1182 if [ $3 ]; then
1183 svn update -r $3 | tee -a $PWD/log/_build.svn.update.log
1184 else
1185 svn update | tee -a $PWD/log/_build.svn.update.log
1186 fi
1187 if [ $? -eq 0 ]; then
1188 echo "Finished!"
1189 else
1190 echo "Failure!"
1191 exit 1
1192 fi
1193 echo -n "Writing the svn-info to a file..."
1194 svn info > $PWD/svn_status
1195 if [ "$?" -eq "0" ]; then
1196 echo ".Finished!"
1197 else
1198 echo ".Failure!"
1199 exit 1
1200 fi
1201 chmod 755 $0
1202 exit 0
1203 ;;
1204 commit|ci)
1205 clear
1206 if [ -e /sbin/yast ]; then
1207 if [ "`echo $SVN_REVISION | cut -c 3`" -eq "0" ]; then
1208 $0 changelog
1209 fi
1210 fi
1211 echo "Upload the changed files..."
1212 sleep 1
1213 IPFIRE_SVN_MESSAGE=/tmp/ipfire-svn-co-message.txt
1214 rm -f $IPFIRE_SVN_MESSAGE
1215 mcedit $IPFIRE_SVN_MESSAGE
1216 svn commit -F $IPFIRE_SVN_MESSAGE
1217 rm -f $IPFIRE_SVN_MESSAGE
1218 $0 svn up
1219 ;;
1220 dist)
1221 if [ $3 ]; then
1222 SVN_REVISION=$3
1223 fi
1224 if [ -f ipfire-source-r$SVN_REVISION.tar.gz ]; then
1225 echo -ne "REV $SVN_REVISION: SKIPPED!\n"
1226 exit 0
1227 fi
1228 echo -en "REV $SVN_REVISION: Downloading..."
1229 svn export http://svn.ipfire.eu/svn/ipfire ipfire-source/ --force > /dev/null
1230 svn log http://svn.ipfire.eu/svn/ipfire -r 1:$SVN_REVISION > ipfire-source/Changelog
1231 #svn info http://svn.ipfire.eu/svn/ipfire -r $SVN_REVISION > ipfire-source/svn_status
1232 if [ "$?" -eq "0" ]; then
1233 echo -en "\r"
1234 else
1235 echo -en "\n"
1236 exit 1
1237 fi
1238 echo -en "REV $SVN_REVISION: Compressing files..."
1239 if [ -e ipfire-source/trunk/make.sh ]; then
1240 chmod 755 ipfire-source/trunk/make.sh
1241 fi
1242 tar cfz ipfire-source-r$SVN_REVISION.tar.gz ipfire-source
1243 if [ "$?" -eq "0" ]; then
1244 echo -ne "\r"
1245 else
1246 echo -ne "\n"
1247 exit 1
1248 fi
1249 echo -en "REV $SVN_REVISION: Cleaning up..."
1250 rm ipfire-source/ -r
1251 if [ "$?" -eq "0" ]; then
1252 echo -ne "\rREV $SVN_REVISION: ##### FINISHED! #####\n"
1253 else
1254 echo -ne "\n"
1255 exit 1
1256 fi
1257 ;;
1258 alldist|ad)
1259 echo -e "### THIS WILL TAKE A LONG TIME!\nDOING A FETCH FROM REV 1 TO REV $SVN_REVISION!\n"
1260 for i in `seq 1 $SVN_REVISION`; do
1261 $0 svn dist $i
1262 done
1263 ;;
1264 diff|di)
1265 echo -ne "Make a local diff to last svn revision..."
1266 svn diff > ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff
1267 if [ "$?" -eq "0" ]; then
1268 echo ".Done!"
1269 else
1270 echo ".Fail!"
1271 exit 1
1272 fi
1273 echo "Diff was successfully saved to ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff"
1274 ;;
1275 esac
1276 ;;
1277 make-config)
1278 echo -e "This is for creating your configuration..."
1279 echo -e "We will need some input:"
1280 echo -e ""
1281 echo -n "FTP-DOMAIN FOR THE ISO: "
1282 read IPFIRE_FTP_URL_EXT
1283 echo -n "PATH FOR $IPFIRE_FTP_URL_EXT: "
1284 read IPFIRE_FTP_PATH_EXT
1285 echo -n "USERNAME FOR $IPFIRE_FTP_URL_EXT: "
1286 read IPFIRE_FTP_USER_EXT
1287 echo -n "PASSWORD FOR $IPFIRE_FTP_URL_EXT: "
1288 read -s IPFIRE_FTP_PASS_EXT
1289 echo ""
1290 echo "(You can leave this empty if the cache-server is the same as your iso-server.)"
1291 echo -n "FTP-DOMAIN FOR THE CACHE: "
1292 read IPFIRE_FTP_URL_INT
1293 echo -n "PATH FOR $IPFIRE_FTP_URL_INT: "
1294 read IPFIRE_FTP_PATH_INT
1295 if [ $IPFIRE_FTP_URL_INT ]; then
1296 echo -n "USERNAME FOR $IPFIRE_FTP_URL_INT: "
1297 read IPFIRE_FTP_USER_INT
1298 echo -n "PASSWORD FOR $IPFIRE_FTP_URL_INT: "
1299 read -s IPFIRE_FTP_PASS_INT
1300 else
1301 IPFIRE_FTP_URL_INT=$IPFIRE_FTP_URL_EXT
1302 IPFIRE_FTP_USER_INT=$IPFIRE_FTP_USER_EXT
1303 IPFIRE_FTP_PASS_INT=$IPFIRE_FTP_PASS_EXT
1304 echo "USERNAME FOR $IPFIRE_FTP_URL_INT: $IPFIRE_FTP_USER_INT"
1305 echo "PASSWORD FOR $IPFIRE_FTP_URL_INT: !HIDDEN!"
1306 fi
1307 echo ""
1308 echo "(You can leave this empty if the pak-server is the same as your iso-server.)"
1309 echo -n "FTP-DOMAIN FOR THE PAKS: "
1310 read IPFIRE_FTP_URL_PAK
1311 echo -n "PATH FOR $IPFIRE_FTP_URL_PAK: "
1312 read IPFIRE_FTP_PATH_PAK
1313 if [ $IPFIRE_FTP_URL_PAK ]; then
1314 echo -n "USERNAME FOR $IPFIRE_FTP_URL_PAK: "
1315 read IPFIRE_FTP_USER_PAK
1316 echo -n "PASSWORD FOR $IPFIRE_FTP_URL_PAK: "
1317 read -s IPFIRE_FTP_PASS_PAK
1318 else
1319 IPFIRE_FTP_URL_PAK=$IPFIRE_FTP_URL_EXT
1320 IPFIRE_FTP_USER_PAK=$IPFIRE_FTP_USER_EXT
1321 IPFIRE_FTP_PASS_PAK=$IPFIRE_FTP_PASS_EXT
1322 echo "USERNAME FOR $IPFIRE_FTP_URL_PAK: $IPFIRE_FTP_USER_PAK"
1323 echo "PASSWORD FOR $IPFIRE_FTP_URL_PAK: !HIDDEN!"
1324 fi
1325 echo ""
1326 echo -e "ONE OR MORE EMAIL ADDRESS(ES) TO WHICH THE REPORTS WILL BE SENT"
1327 echo -e "(seperated by comma)"
1328 read IPFIRE_MAIL_REPORT
1329 echo -n "EMAIL FROM: "
1330 read IPFIRE_MAIL_FROM
1331 echo -n "EMAIL SERVER: "
1332 read IPFIRE_MAIL_SERVER
1333 echo -n "LOGIN TO MAIL SERVER: "
1334 read IPFIRE_MAIL_USER
1335 echo -n "MAIL PASSWORD: "
1336 read -s IPFIRE_MAIL_PASS
1337 echo -n "Saving..."
1338 for i in `seq 20`; do
1339 sleep 0.1; echo -n "."
1340 done
1341 echo ".Finished!"
1342 cat <<END > .config
1343 ### ISO server
1344 IPFIRE_FTP_URL_EXT=$IPFIRE_FTP_URL_EXT
1345 IPFIRE_FTP_PATH_EXT=$IPFIRE_FTP_PATH_EXT
1346 IPFIRE_FTP_USER_EXT=$IPFIRE_FTP_USER_EXT
1347 IPFIRE_FTP_PASS_EXT=$IPFIRE_FTP_PASS_EXT
1348 ### cache server
1349 IPFIRE_FTP_URL_INT=$IPFIRE_FTP_URL_INT
1350 IPFIRE_FTP_PATH_INT=$IPFIRE_FTP_PATH_INT
1351 IPFIRE_FTP_USER_INT=$IPFIRE_FTP_USER_INT
1352 IPFIRE_FTP_PASS_INT=$IPFIRE_FTP_PASS_INT
1353 ### paks server
1354 IPFIRE_FTP_URL_PAK=$IPFIRE_FTP_URL_PAK
1355 IPFIRE_FTP_PATH_PAK=$IPFIRE_FTP_PATH_PAK
1356 IPFIRE_FTP_USER_PAK=$IPFIRE_FTP_USER_PAK
1357 IPFIRE_FTP_PASS_PAK=$IPFIRE_FTP_PASS_PAK
1358 ### mail reports
1359 IPFIRE_MAIL_REPORT=$IPFIRE_MAIL_REPORT
1360 IPFIRE_MAIL_FROM=$IPFIRE_MAIL_FROM
1361 IPFIRE_MAIL_SERVER=$IPFIRE_MAIL_SERVER
1362 IPFIRE_MAIL_USER=$IPFIRE_MAIL_USER
1363 IPFIRE_MAIL_PASS=$IPFIRE_MAIL_PASS
1364 END
1365 ;;
1366 sync)
1367 echo -e "Syncing cache to ftp:"
1368 # rm -f doc/packages-to-remove-from-ftp
1369 ncftpls -u $IPFIRE_FTP_USER_INT -p $IPFIRE_FTP_PASS_INT ftp://$IPFIRE_FTP_URL_INT$IPFIRE_FTP_PATH_INT/ > ftplist
1370 for i in `ls -w1 cache/`; do
1371 grep $i ftplist
1372 if [ "$?" -ne "0" ]; then
1373 ncftpput -u $IPFIRE_FTP_USER_INT -p $IPFIRE_FTP_PASS_INT $IPFIRE_FTP_URL_INT $IPFIRE_FTP_PATH_INT/ cache/$i
1374 if [ "$?" -eq "0" ]; then
1375 echo -e "$i was successfully uploaded to the ftp server."
1376 else
1377 echo -e "There was an error while uploading $i to the ftp server."
1378 fi
1379 fi
1380 done
1381 rm -f ftplist
1382 ;;
1383 upload)
1384 case "$2" in
1385 iso)
1386 echo -e "Uploading the iso to $IPFIRE_FTP_URL_EXT."
1387 cat <<EOF > .ftp-commands
1388 mkdir $IPFIRE_FTP_PATH_EXT
1389 ls -lah
1390 quit
1391 EOF
1392 ncftp -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT < .ftp-commands
1393 rm -f .ftp-commands
1394 md5sum ipfire-install-$VERSION.i386.iso > ipfire-install-$VERSION.i386.iso.md5
1395 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-install-$VERSION.i386.iso
1396 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-install-$VERSION.i386.iso.md5
1397 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-source-r$SVN_REVISION.tar.gz
1398 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ svn_status
1399 if [ "$?" -eq "0" ]; then
1400 echo -e "The iso of Revision $SVN_REVISION was successfully uploaded to $IPFIRE_FTP_URL_EXT$IPFIRE_FTP_PATH_EXT/."
1401 else
1402 echo -e "There was an error while uploading the iso to the ftp server."
1403 exit 1
1404 fi
1405 if [ "$3" = "--with-sources-cd" ]; then
1406 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-sources-cd-$VERSION.$MACHINE.iso
1407 fi
1408 ;;
1409 paks)
1410 cat <<EOF > .ftp-commands
1411 mkdir $IPFIRE_FTP_PATH_PAK
1412 ls -lah
1413 quit
1414 EOF
1415 ncftp -u $IPFIRE_FTP_USER_PAK -p $IPFIRE_FTP_PASS_PAK $IPFIRE_FTP_URL_PAK < .ftp-commands
1416 rm -f .ftp-commands
1417 ncftpput -z -u $IPFIRE_FTP_USER_PAK -p $IPFIRE_FTP_PASS_PAK $IPFIRE_FTP_URL_PAK $IPFIRE_FTP_PATH_PAK/ packages/*
1418 if [ "$?" -eq "0" ]; then
1419 echo -e "The packages were successfully uploaded to $IPFIRE_FTP_URL_PAK$IPFIRE_FTP_PATH_PAK/."
1420 else
1421 echo -e "There was an error while uploading the packages to the ftp server."
1422 exit 1
1423 fi
1424 ;;
1425 esac
1426 ;;
1427 build-only)
1428 rm -f $BASEDIR/log/$2*
1429 BUILDMACHINE=`uname -m`
1430 prepareenv
1431 ipcopmake $2
1432 ;;
1433 build-silent)
1434 screen -dmS ipfire $0 build
1435 echo "Build started... This will take a while!"
1436 echo "You can see the status with 'screen -x ipfire'."
1437 ;;
1438 mail)
1439 chmod 755 tools/sendEmail
1440 ATTACHMENT=/tmp/ipfire-build-logs-R$SVN_REVISION.tar.gz
1441 if [ "$2" = "ERROR" ]; then
1442 SUBJECT="ERROR: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1443 echo "ERROR: $0 build!"
1444 cat <<END > /tmp/ipfire_mail_body
1445 When I was building IPFire on `hostname`, I have found an ERROR!
1446 Here you can see the logs and detect the reason for this error.
1447
1448 Best Regards
1449 Your IPFire-Build-Script
1450 END
1451 fi
1452 if [ "$2" = "SUCCESS" ]; then
1453 SUBJECT="SUCCESS: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1454 cat <<END > /tmp/ipfire_mail_body
1455 Building IPFire on `hostname` in Revision $SVN_REVISION was successfull!
1456 You can find the ISO on your ftp server.
1457
1458 Statistics:
1459 -----------
1460 Started: $IPFIRE_START_TIME
1461 Finished: `date`
1462
1463 Best Regards
1464 Your IPFire-Build-Script
1465 END
1466 fi
1467 if [ "$2" = "SVNUPDATE" ]; then
1468 SUBJECT="SVNUPDATE: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1469 echo "ERROR: $0 svn up!"
1470 cat <<END > /tmp/ipfire_mail_body
1471 When I was downloading the latest svn source,
1472 I have found an ERROR!
1473 Here you can see the logs and detect the reason for this error.
1474
1475 Best Regards
1476 Your IPFire-Build-Script
1477 END
1478 fi
1479
1480 if [ "$2" = "SVNDIST" ]; then
1481 SUBJECT="SVNDIST: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1482 echo "ERROR: $0 svn dist!"
1483 cat <<END > /tmp/ipfire_mail_body
1484 When I was exporting the latest svn source,
1485 I have found an ERROR!
1486 Here you can see the logs and detect the reason for this error.
1487
1488 Best Regards
1489 Your IPFire-Build-Script
1490 END
1491 fi
1492
1493 if [ "$2" = "PREFETCH" ]; then
1494 SUBJECT="PREFETCH: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1495 echo "ERROR: $0 prefetch!"
1496 cat <<END > /tmp/ipfire_mail_body
1497 When I was downloading the source packages,
1498 I have found an ERROR!
1499 Here you can see the logs and detect the reason for this error.
1500
1501 Best Regards
1502 Your IPFire-Build-Script
1503 END
1504 fi
1505
1506 if [ "$2" = "ISO" ]; then
1507 SUBJECT="ISO: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1508 echo "ERROR: $0 upload iso!"
1509 cat <<END > /tmp/ipfire_mail_body
1510 When I was uploading the iso image,
1511 I have found an ERROR!
1512 Here you can see the logs and detect the reason for this error.
1513
1514 Best Regards
1515 Your IPFire-Build-Script
1516 END
1517 fi
1518
1519 if [ "$2" = "PAKS" ]; then
1520 SUBJECT="PAKS: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1521 echo "ERROR: $0 upload paks!"
1522 cat <<END > /tmp/ipfire_mail_body
1523 When I was uploading the packages,
1524 I have found an ERROR!
1525 Here you can see the logs and detect the reason for this error.
1526
1527 Best Regards
1528 Your IPFire-Build-Script
1529 END
1530 fi
1531
1532 tar cfz $ATTACHMENT log/_build*
1533 cat <<END >> /tmp/ipfire_mail_body
1534
1535 Here is a summary... The full logs are in the attachment.
1536 ---------------------------------------------------------
1537
1538 `tail log/_*`
1539 END
1540 cat /tmp/ipfire_mail_body | tools/sendEmail -q \
1541 -f $IPFIRE_MAIL_FROM \
1542 -t $IPFIRE_MAIL_REPORT \
1543 -u $SUBJECT \
1544 -s $IPFIRE_MAIL_SERVER:25 \
1545 -xu $IPFIRE_MAIL_USER \
1546 -xp $IPFIRE_MAIL_PASS \
1547 -l log/_build.mail.log \
1548 -a $ATTACHMENT # -v
1549 rm -f /tmp/ipfire_mail_body $ATTACHMENT
1550 ;;
1551 unattended)
1552 if [ ! -f .config ]; then
1553 echo "No configuration found. Try ./make.sh make-config."
1554 fi
1555 ### This is our procedure that will compile the IPFire by herself...
1556 echo "### UPDATE LOGS"
1557 update_logs
1558
1559 if [ "$IPFIRE_REBUILD" -eq "0" ]; then
1560 echo "### SAVING TIME"
1561 export IPFIRE_START_TIME=`date`
1562
1563 echo "### GETTING TOOLCHAIN"
1564 $0 gettoolchain
1565
1566 echo "### RUNNING SVN-UPDATE"
1567 $0 svn update
1568 if [ $? -ne 0 ]; then
1569 $0 mail SVNUPDATE
1570 exit 1
1571 fi
1572
1573 echo "### EXPORT SOURCES"
1574 $0 svn dist
1575 if [ $? -ne 0 ]; then
1576 $0 mail SVNDIST
1577 exit 1
1578 fi
1579
1580 echo "### RUNNING PREFETCH"
1581 $0 prefetch | grep -q "md5 difference"
1582 if [ $? -eq 0 ]; then
1583 $0 mail PREFETCH
1584 exit 1
1585 fi
1586 fi
1587
1588 echo "### RUNNING BUILD"
1589 $0 build
1590 if [ $? -ne 0 ]; then
1591 $0 mail ERROR
1592 exit 1
1593 fi
1594
1595 echo "### MAKING SOURCES-ISO"
1596 echo "DISABLED by Delaco!"
1597 #$0 sources-iso
1598
1599 echo "### UPLOADING ISO"
1600 $0 upload iso
1601 if [ $? -ne 0 ]; then
1602 $0 mail ISO
1603 exit 1
1604 fi
1605
1606 echo "### UPLOADING PAKS"
1607 $0 upload paks
1608 if [ $? -ne 0 ]; then
1609 $0 mail PAKS
1610 exit 1
1611 fi
1612
1613 echo "### SUCCESS!"
1614 $0 mail SUCCESS
1615 exit 0
1616 ;;
1617 batch)
1618 if [ `screen -ls | grep -q ipfire` ]; then
1619 echo "Build is already running, sorry!"
1620 exit 1
1621 else
1622 if [ "$2" = "--rebuild" ]; then
1623 export IPFIRE_REBUILD=1
1624 echo "REBUILD!"
1625 else
1626 export IPFIRE_REBUILD=0
1627 fi
1628 echo -n "IPFire-Batch-Build is starting..."
1629 screen -dmS ipfire $0 unattended
1630 if [ "$?" -eq "0" ]; then
1631 echo ".Done!"
1632 else
1633 echo ".ERROR!"
1634 exit 1
1635 fi
1636 exit 0
1637 fi
1638 ;;
1639 watch)
1640 echo "Exit with Ctrl+A, Ctrl+D."
1641 echo -n "Preparing..."
1642 for i in `seq 5`; do
1643 sleep 0.1; echo -n "."
1644 done
1645 echo ".Ready!"
1646 sleep 0.3
1647 screen -x ipfire
1648 ;;
1649 *)
1650 clear
1651 svn info
1652 select name in "Exit" "IPFIRE: Prefetch" "IPFIRE: Build (silent)" "IPFIRE: Watch Build" "IPFIRE: Batch" "IPFIRE: Clean" "SVN: Commit" "SVN: Update" "SVN: Status" "SVN: Diff" "LOG: Tail" "Help"
1653 do
1654 case $name in
1655 "IPFIRE: Prefetch")
1656 $0 prefetch
1657 ;;
1658 "IPFIRE: Build (silent)")
1659 $0 build-silent
1660 ;;
1661 "IPFIRE: Watch Build")
1662 $0 watch
1663 ;;
1664 "IPFIRE: Batch")
1665 $0 batch
1666 ;;
1667 "IPFIRE: Clean")
1668 $0 clean
1669 ;;
1670 "SVN: Commit")
1671 echo "Are your sure to Update all Files to the Server (write: yes)?"; read input
1672 if [ "$input" == "yes" ]; then
1673 $0 svn commit
1674 fi
1675 $0 sync
1676 ;;
1677 "SVN: Update")
1678 $0 svn update
1679 ;;
1680 "SVN: Status")
1681 svn status # | grep -v ^?
1682 ;;
1683 "SVN: Diff")
1684 $0 svn diff
1685 ;;
1686 "Help")
1687 echo "Usage: $0 {build|changelog|check|checkclean|clean|gettoolchain|newpak|prefetch|shell|sync|toolchain}"
1688 cat doc/make.sh-usage
1689 ;;
1690 "LOG: Tail")
1691 tail -f log/_*
1692 ;;
1693 "Exit")
1694 break
1695 ;;
1696 esac
1697 done
1698 ;;
1699 esac