]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - make.sh
GeƤndert:
[people/pmueller/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 SLOGAN="We secure your network" # 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
36 # Debian specific settings
37 if [ ! -e /etc/debian_version ]; then
38 FULLPATH=`which $0`
39 else
40 if [ -x /usr/bin/realpath ]; then
41 FULLPATH=`/usr/bin/realpath $0`
42 else
43 echo "ERROR: Need to do apt-get install realpath"
44 exit 1
45 fi
46 fi
47
48
49 PWD=`pwd`
50 BASENAME=`basename $0`
51 BASEDIR=`echo $FULLPATH | sed "s/\/$BASENAME//g"`
52 LOGFILE=$BASEDIR/log/_build.preparation.log
53 export BASEDIR LOGFILE
54 DIR_CHK=$BASEDIR/cache/check
55 mkdir $BASEDIR/log/ 2>/dev/null
56
57 if [ 'x86_64' = $MACHINE -o 'i686' = $MACHINE -o 'i586' = $MACHINE -o 'i486' = $MACHINE -o 'i386' = $MACHINE ]; then
58 echo "`date -u '+%b %e %T'`: Machine is ix86 (or equivalent)" | tee -a $LOGFILE
59 MACHINE=i386
60 BUILDTARGET=i386-pc-linux-gnu
61 CFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer"
62 CXXFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer"
63 elif [ 'alpha' = $MACHINE ]; then
64 echo "`date -u '+%b %e %T'`: Machine is Alpha AXP" | tee -a $LOGFILE
65 BUILDTARGET=alpha-unknown-linux-gnu
66 CFLAGS="-O2 -mcpu=ev4 -mieee -pipe"
67 CXXFLAGS="-O2 -mcpu=ev4 -mieee -pipe"
68 else
69 echo "`date -u '+%b %e %T'`: Can't determine your architecture - $MACHINE" | tee -a $LOGFILE
70 exit 1
71 fi
72
73 # Define immediately
74 stdumount() {
75 umount $BASEDIR/build/dev/pts 2>/dev/null;
76 umount $BASEDIR/build/proc 2>/dev/null;
77 umount $BASEDIR/build/install/mnt 2>/dev/null;
78 umount $BASEDIR/build/usr/src/cache 2>/dev/null;
79 umount $BASEDIR/build/usr/src/ccache 2>/dev/null;
80 umount $BASEDIR/build/usr/src/config 2>/dev/null;
81 umount $BASEDIR/build/usr/src/doc 2>/dev/null;
82 umount $BASEDIR/build/usr/src/html 2>/dev/null;
83 umount $BASEDIR/build/usr/src/langs 2>/dev/null;
84 umount $BASEDIR/build/usr/src/lfs 2>/dev/null;
85 umount $BASEDIR/build/usr/src/log 2>/dev/null;
86 umount $BASEDIR/build/usr/src/src 2>/dev/null;
87 }
88
89 exiterror() {
90 stdumount
91 for i in `seq 0 7`; do
92 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
93 losetup -d /dev/loop${i} 2>/dev/null
94 fi;
95 done
96 echo "ERROR: $*"
97 echo " Check $LOGFILE for errors if applicable"
98 exit 1
99 }
100
101 entershell() {
102 if [ ! -e $BASEDIR/build/usr/src/lfs/ ]; then
103 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/"
104 fi
105 echo "Entering to a shell inside LFS chroot, go out with exit"
106 chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
107 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
108 VERSION=$VERSION CONFIG_ROOT=$CONFIG_ROOT \
109 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
110 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
111 CCACHE_DIR=/usr/src/ccache \
112 CCACHE_HASHDIR=1 \
113 KVER=$KVER \
114 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
115 KGCC="ccache /usr/bin/gcc" \
116 /tools/bin/bash
117 if [ $? -ne 0 ]; then
118 exiterror "chroot error"
119 else
120 stdumount
121 fi
122 }
123
124 prepareenv() {
125 ############################################################################
126 # #
127 # Are we running the right shell? #
128 # #
129 ############################################################################
130 if [ ! "$BASH" ]; then
131 exiterror "BASH environment variable is not set. You're probably running the wrong shell."
132 fi
133
134 if [ -z "${BASH_VERSION}" ]; then
135 exiterror "Not running BASH shell."
136 fi
137
138
139 ############################################################################
140 # #
141 # Trap on emergency exit #
142 # #
143 ############################################################################
144 trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGKILL SIGSTOP SIGQUIT
145
146
147 ############################################################################
148 # #
149 # Resetting our nice level #
150 # #
151 ############################################################################
152 echo "`date -u '+%b %e %T'`: Resetting our nice level to $NICE" | tee -a $LOGFILE
153 renice $NICE $$ > /dev/null
154 if [ `nice` != "$NICE" ]; then
155 exiterror "Failed to set correct nice level"
156 fi
157
158 ############################################################################
159 # #
160 # Checking if running as root user #
161 # #
162 ############################################################################
163 echo "`date -u '+%b %e %T'`: Checking if we're running as root user" | tee -a $LOGFILE
164 if [ `id -u` != 0 ]; then
165 exiterror "Not building as root"
166 fi
167
168
169 ############################################################################
170 # #
171 # Checking for necessary temporary space #
172 # #
173 ############################################################################
174 echo "`date -u '+%b %e %T'`: Checking for necessary space on disk $BASE_DEV" | tee -a $LOGFILE
175 BASE_DEV=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $1 }'`
176 BASE_ASPACE=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $4 }'`
177 if (( 2202000 > $BASE_ASPACE )); then
178 BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'`
179 if (( 2202000 - $BASE_USPACE > $BASE_ASPACE )); then
180 exiterror "Not enough temporary space available, need at least 2.1GB on $BASE_DEV"
181 fi
182 fi
183
184 ############################################################################
185 # #
186 # Building Linux From Scratch system #
187 # #
188 ############################################################################
189 echo "`date -u '+%b %e %T'`: Building Linux From Scratch system" | tee -a $LOGFILE
190
191 # Set umask
192 umask 022
193
194 # Set LFS Directory
195 LFS=$BASEDIR/build
196
197 # Check /tools symlink
198 if [ -h /tools ]; then
199 rm -f /tools
200 fi
201 if [ ! -a /tools ]; then
202 ln -s $BASEDIR/build/tools /
203 fi
204 if [ ! -h /tools ]; then
205 exiterror "Could not create /tools symbolic link."
206 fi
207
208 # Setup environment
209 set +h
210 LC_ALL=POSIX
211 export LFS LC_ALL CFLAGS CXXFLAGS
212 unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
213
214 # Make some extra directories
215 mkdir -p $BASEDIR/build/{tools,etc,usr/src} 2>/dev/null
216 mkdir -p $BASEDIR/{cache,ccache} 2>/dev/null
217 mkdir -p $BASEDIR/build/dev/pts $BASEDIR/build/proc $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache}
218
219 # Make all sources and proc available under lfs build
220 mount --bind /dev/pts $BASEDIR/build/dev/pts
221 mount --bind /proc $BASEDIR/build/proc
222 mount --bind $BASEDIR/cache $BASEDIR/build/usr/src/cache
223 mount --bind $BASEDIR/ccache $BASEDIR/build/usr/src/ccache
224 mount --bind $BASEDIR/config $BASEDIR/build/usr/src/config
225 mount --bind $BASEDIR/doc $BASEDIR/build/usr/src/doc
226 mount --bind $BASEDIR/html $BASEDIR/build/usr/src/html
227 mount --bind $BASEDIR/langs $BASEDIR/build/usr/src/langs
228 mount --bind $BASEDIR/lfs $BASEDIR/build/usr/src/lfs
229 mount --bind $BASEDIR/log $BASEDIR/build/usr/src/log
230 mount --bind $BASEDIR/src $BASEDIR/build/usr/src/src
231
232 # Run LFS static binary creation scripts one by one
233 export CCACHE_DIR=$BASEDIR/ccache
234 export CCACHE_HASHDIR=1
235
236 # Remove pre-install list of installed files in case user erase some files before rebuild
237 rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null
238 }
239
240
241 ############################################################################
242 # #
243 # Necessary shell functions #
244 # #
245 ############################################################################
246 lfsmake1() {
247 if [ -f $BASEDIR/lfs/$1 ]; then
248 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
249 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1
250 if [ $? -ne 0 ]; then
251 exiterror "Download error in $1"
252 fi
253 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
254 if [ $? -ne 0 ]; then
255 exiterror "md5sum error in $1, check file in cache or signature"
256 fi
257 cd $BASEDIR/lfs && make -f $* BUILDTARGET=$BUILDTARGET \
258 MACHINE=$MACHINE \
259 LFS_BASEDIR=$BASEDIR \
260 ROOT=$LFS \
261 KVER=$KVER \
262 install >> $LOGFILE 2>&1
263 if [ $? -ne 0 ]; then
264 exiterror "Building $*";
265 fi
266 else
267 exiterror "No such file or directory: $BASEDIR/$1"
268 fi
269 return 0
270 }
271
272 lfsmake2() {
273 if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
274 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
275 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1
276 if [ $? -ne 0 ]; then
277 exiterror "Download error in $1"
278 fi
279 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
280 if [ $? -ne 0 ]; then
281 exiterror "md5sum error in $1, check file in cache or signature"
282 fi
283 chroot $LFS /tools/bin/env -i HOME=/root \
284 TERM=$TERM PS1='\u:\w\$ ' \
285 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
286 VERSION=$VERSION \
287 CONFIG_ROOT=$CONFIG_ROOT \
288 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
289 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
290 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
291 KVER=$KVER \
292 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
293 /tools/bin/bash -x -c "cd /usr/src/lfs && \
294 make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
295 if [ $? -ne 0 ]; then
296 exiterror "Building $*"
297 fi
298 else
299 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
300 fi
301 return 0
302 }
303
304 ipcopmake() {
305 if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
306 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
307 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1
308 if [ $? -ne 0 ]; then
309 exiterror "Download error in $1"
310 fi
311 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
312 if [ $? -ne 0 ]; then
313 exiterror "md5sum error in $1, check file in cache or signature"
314 fi
315 chroot $LFS /tools/bin/env -i HOME=/root \
316 TERM=$TERM PS1='\u:\w\$ ' \
317 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
318 VERSION=$VERSION \
319 CONFIG_ROOT=$CONFIG_ROOT \
320 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
321 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
322 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
323 KVER=$KVER \
324 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
325 /bin/bash -x -c "cd /usr/src/lfs && \
326 make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
327 if [ $? -ne 0 ]; then
328 exiterror "Building $*"
329 fi
330 else
331 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
332 fi
333 return 0
334 }
335
336 ipfiredist() {
337 if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
338 # if [ ! `ls -w1 $BASEDIR/packages/*.tar.gz | grep $1` ]; then
339 echo "`date -u '+%b %e %T'`: Packaging $1" | tee -a $LOGFILE
340 chroot $LFS /tools/bin/env -i HOME=/root \
341 TERM=$TERM PS1='\u:\w\$ ' \
342 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
343 VERSION=$VERSION \
344 CONFIG_ROOT=$CONFIG_ROOT \
345 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
346 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
347 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
348 KVER=$KVER \
349 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
350 /bin/bash -x -c "cd /usr/src/lfs && \
351 make -f $1 LFS_BASEDIR=/usr/src dist" >>$LOGFILE 2>&1
352 if [ $? -ne 0 ]; then
353 exiterror "Packaging $1"
354 fi
355 # else
356 # echo "`date -u '+%b %e %T'`: Packaging: The package $1 already exists"
357 # fi
358 else
359 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
360 fi
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 IPFire make scripts one by one
509 LOGFILE="$BASEDIR/log/_build.ipfire.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=ipfire SMP=installer
529 ipcopmake linux LFS_PASS=ipfire 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 fcclassic SMP=1
545 ipcopmake pulsar SMP=1
546 ipcopmake unicorn SMP=1
547 fi
548
549 ipcopmake linux LFS_PASS=ipfire
550 ipcopmake 3cp4218
551 ipcopmake amedyn
552 ipcopmake cxacru
553 ipcopmake eciadsl
554 ipcopmake eagle
555 ipcopmake speedtouch
556 if [ 'i386' = $MACHINE ]; then
557 # These are here because they have i386 only binary libraries
558 # included in the package.
559 ipcopmake cnx_pci
560 ipcopmake fcdsl
561 ipcopmake fcdsl2
562 ipcopmake fcdslsl
563 ipcopmake fcdslusb
564 ipcopmake fcdslslusb
565 ipcopmake fcpci
566 ipcopmake fcclassic
567 ipcopmake pulsar
568 ipcopmake unicorn
569 fi
570
571 ipcopmake pcmcia-cs
572 ipcopmake expat
573 ipcopmake gdbm
574 ipcopmake gmp
575 ipcopmake openssl
576 ipcopmake python
577 ipcopmake libnet
578 ipcopmake libpng
579 ipcopmake gd
580 ipcopmake popt
581 ipcopmake slang
582 ipcopmake newt
583 ipcopmake libcap
584 ipcopmake pciutils
585 ipcopmake pcre
586 ipcopmake apache
587 ipcopmake arping
588 ipcopmake beep
589 ipcopmake bind
590 ipcopmake capi4k-utils
591 ipcopmake cdrtools
592 ipcopmake dnsmasq
593 ipcopmake dosfstools
594 ipcopmake ethtool
595 ipcopmake ez-ipupdate
596 ipcopmake fcron
597 ipcopmake perl-GD
598 ipcopmake gnupg
599 ipcopmake hdparm
600 ipcopmake ibod
601 ipcopmake initscripts
602 ipcopmake iptables
603 ipcopmake ipac-ng
604 ipcopmake ipaddr
605 ipcopmake iproute2
606 ipcopmake iptstate
607 ipcopmake iputils
608 ipcopmake l7-protocols
609 ipcopmake isapnptools
610 ipcopmake isdn4k-utils
611 ipcopmake kudzu
612 ipcopmake logrotate
613 ipcopmake logwatch
614 ipcopmake mingetty
615 ipcopmake misc-progs
616 ipcopmake mtools
617 ipcopmake nano
618 ipcopmake nash
619 ipcopmake nasm
620 ipcopmake URI
621 ipcopmake HTML-Tagset
622 ipcopmake HTML-Parser
623 ipcopmake Compress-Zlib
624 ipcopmake Digest
625 ipcopmake Digest-SHA1
626 ipcopmake Digest-HMAC
627 ipcopmake libwww-perl
628 ipcopmake Net-DNS
629 ipcopmake Net-IPv4Addr
630 ipcopmake Net_SSLeay
631 ipcopmake IO-Stringy
632 ipcopmake Unix-Syslog
633 ipcopmake Mail-Tools
634 ipcopmake MIME-Tools
635 ipcopmake Net-Server
636 ipcopmake Convert-TNEF
637 ipcopmake Convert-UUlib
638 ipcopmake Archive-Tar
639 ipcopmake Archive-Zip
640 ipcopmake Text-Tabs+Wrap
641 ipcopmake Locale-Country
642 ipcopmake GeoIP
643 ipcopmake fwhits
644 ipcopmake berkeley
645 ipcopmake BerkeleyDB ## The Perl module
646 ipcopmake noip_updater
647 ipcopmake ntp
648 ipcopmake oinkmaster
649 ipcopmake openssh
650 ipcopmake openswan
651 ipcopmake pptpclient
652 ipcopmake rrdtool
653 ipcopmake setserial
654 ipcopmake setup
655 ipcopmake snort
656 #ipcopmake speedycgi
657 ipcopmake saslauthd PASS=1
658 ipcopmake openldap
659 ipcopmake squid
660 ipcopmake squid-graph
661 ipcopmake squidguard
662 ipcopmake tcpdump
663 ipcopmake traceroute
664 ipcopmake vlan
665 #ipcopmake wireless
666 ipcopmake libsafe
667 ipcopmake 3c5x9setup
668 # echo -ne "`date -u '+%b %e %T'`: Building ### IPFire modules ### \n" | tee -a $LOGFILE
669 ipcopmake pakfire
670 ipcopmake startscripts
671 ## Zuerst die Libs und dann die Programme. Ordnung muss sein!
672 ipcopmake java
673 ipcopmake libtiff
674 ipcopmake libjpeg
675 ipcopmake libxml2
676 ipcopmake spandsp
677 ipcopmake lzo
678 ipcopmake openvpn
679 ipcopmake pkg-config
680 ipcopmake glib
681 ipcopmake xampp
682 ipcopmake pam
683 ipcopmake pammysql
684 ipcopmake saslauthd PASS=2
685 ipcopmake xinetd
686 ipcopmake ghostscript
687 ipcopmake cups
688 # ipcopmake lpd ## Im Moment aus, da CUPS vorhanden ist.
689 ipcopmake samba
690 ipcopmake sudo
691 ipcopmake mc
692 ipcopmake pwlib
693 ipcopmake openh323
694 ipcopmake wget
695 ipcopmake wput
696 ipcopmake bridge-utils
697 ipcopmake screen
698 ipcopmake hddtemp
699 ipcopmake htop
700 ipcopmake lynx
701 echo -ne "`date -u '+%b %e %T'`: Building ### Mailserver ### \n" | tee -a $LOGFILE
702 ipcopmake postfix
703 ipcopmake procmail
704 ipcopmake fetchmail
705 ipcopmake cyrusimap
706 ipcopmake web-cyradm
707 ipcopmake mailx
708 ipcopmake clamav
709 ipcopmake razor
710 ipcopmake spamassassin
711 # ipcopmake amavisd
712 echo -ne "`date -u '+%b %e %T'`: Building ### VoIP-Server ### \n" | tee -a $LOGFILE
713 ipcopmake stund
714 ipcopmake asterisk
715 ipcopmake mpg123
716 echo -ne "`date -u '+%b %e %T'`: Building ### MP3-Server ### \n" | tee -a $LOGFILE
717 ipcopmake lame
718 ipcopmake gnump3d
719 echo -ne "`date -u '+%b %e %T'`: Building ### P2P-Clients ### \n" | tee -a $LOGFILE
720 ipcopmake applejuice
721 ipcopmake edonkeyclc
722 # ipcopmake sane
723 echo -ne "`date -u '+%b %e %T'`: Building ### Net-Tools ### \n" | tee -a $LOGFILE
724 ipcopmake ntop
725 # ipcopmake rsync
726 ipcopmake tcpwrapper
727 ipcopmake portmap
728 ipcopmake nfs
729 ipcopmake nmap
730 ipcopmake iftop
731 ipcopmake ncftp
732 ipcopmake cftp
733 ipcopmake etherwake
734 ipcopmake ethereal
735 # ipcopmake stunnel # Ausgeschaltet, weil wir es doch nicht nutzen
736 }
737
738 buildinstaller() {
739 # Run installer scripts one by one
740 LOGFILE="$BASEDIR/log/_build.installer.log"
741 export LOGFILE
742 echo -ne "`date -u '+%b %e %T'`: Stage4 installer build \n" | tee -a $LOGFILE
743 if [ 'i386' = $MACHINE ]; then
744 ipcopmake syslinux
745 ipcopmake as86
746 ipcopmake mbr
747 ipcopmake uClibc
748 fi
749 installmake busybox
750 installmake sysvinit
751 installmake e2fsprogs
752 installmake misc-progs
753 installmake slang
754 installmake util-linux
755 installmake newt
756 installmake pciutils
757 installmake pcmcia-cs
758 installmake kbd
759 installmake installer
760 installmake scsi.img
761 installmake driver.img
762 installmake initrd
763 installmake boot.img
764 }
765
766 buildpackages() {
767 LOGFILE="$BASEDIR/log/_build.packages.log"
768 export LOGFILE
769 echo "... see detailed log in _build.*.log files" >> $LOGFILE
770 echo -ne "`date -u '+%b %e %T'`: Stage5 packages build \n" | tee -a $LOGFILE
771 # Strip files
772 echo "`date -u '+%b %e %T'`: Stripping files" | tee -a $LOGFILE
773 find $LFS/lib $LFS/usr/lib $LFS/usr/share/rrdtool-* $LFS/install ! -type l \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
774 ! -name 'libc.so' ! -name 'libpthread.so' ! -name 'libcrypto.so.0.9.7.sha1' \
775 -exec $LFS/tools/bin/strip --strip-all {} \; >> $LOGFILE 2>&1
776 # add -ls before -exec if you want to verify what files are stripped
777
778 find $LFS/{,s}bin $LFS/usr/{,s}bin $LFS/usr/local/{,s}bin ! -type l \
779 -exec file {} \; | grep " ELF " | cut -f1 -d ':' | xargs $LFS/tools/bin/strip --strip-all >> $LOGFILE 2>&1
780 # there add -v to strip to verify
781
782 if [ 'i386' = $MACHINE ]; then
783 # Create fcdsl packages
784 echo "`date -u '+%b %e %T'`: Building fcdsl tgz" | tee -a $LOGFILE
785 cp $LFS/install/images/fcdsl/license.txt $LFS >> $LOGFILE 2>&1
786 touch $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}
787 cd $LFS && tar cvfz $LFS/install/images/$SNAME-fcdsl-$VERSION.$MACHINE.tgz \
788 lib/modules/$KVER/misc/fcdsl*.o.gz \
789 lib/modules/$KVER-smp/misc/fcdsl*.o.gz \
790 usr/lib/isdn/{fds?base.bin,fd?ubase.frm} \
791 etc/fcdsl/fcdsl*.conf \
792 etc/drdsl/{drdsl,drdsl.ini} \
793 license.txt \
794 var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} >> $LOGFILE 2>&1
795 rm -f $LFS/license.txt >> $LOGFILE 2>&1
796 cd $BASEDIR
797 fi
798
799 # Generating list of packages used
800 echo "`date -u '+%b %e %T'`: Generating packages list from logs" | tee -a $LOGFILE
801 rm -f $BASEDIR/doc/packages-list
802 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
803 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
804 echo " * `basename $i`" >>$BASEDIR/doc/packages-list
805 fi
806 done
807 echo "====== List of softwares used to build $NAME Version: $VERSION ======" > $BASEDIR/doc/packages-list.txt
808 grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipcop$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$' \
809 $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt
810 rm -f $BASEDIR/doc/packages-list
811 # packages-list.txt is ready to be displayed for wiki page
812
813 # Create ISO for CDRom and USB-superfloppy
814 ipcopmake cdrom
815 rm -f $LFS/install/images/*usb*
816 cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1
817
818 ipfirepackages
819
820 # Cleanup
821 stdumount
822 rm -rf $BASEDIR/build/tmp/*
823
824 # Generating total list of files
825 echo "`date -u '+%b %e %T'`: Generating files list from logs" | tee -a $LOGFILE
826 rm -f $BASEDIR/log/FILES
827 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
828 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
829 echo "##" >>$BASEDIR/log/FILES
830 echo "## `basename $i`" >>$BASEDIR/log/FILES
831 echo "##" >>$BASEDIR/log/FILES
832 cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES
833 fi
834 done
835
836 cd $PWD
837
838 }
839
840 ipfirepackages() {
841 for i in `ls $BASEDIR/packages`; do
842 touch $BASEDIR/build/install/packages/$i.empty
843 done
844 ipfiredist amavisd
845 ipfiredist applejuice
846 ipfiredist asterisk
847 ipfiredist clamav
848 ipfiredist cups
849 ipfiredist cyrusimap
850 ipfiredist fetchmail
851 ipfiredist gnump3d
852 ipfiredist java
853 ipfiredist lame
854 ipfiredist libtiff
855 ipfiredist libxml2
856 ipfiredist mailx
857 ipfiredist nfs
858 ipfiredist nmap
859 ipfiredist ntop
860 ipfiredist postfix
861 ipfiredist procmail
862 ipfiredist samba
863 ipfiredist spamassassin
864 ipfiredist web-cyradm
865 ipfiredist xampp
866 ipfiredist xinetd
867 test -d $BASEDIR/packages || mkdir $BASEDIR/packages
868 mv -f $LFS/install/packages/*.{tar.gz,md5} $BASEDIR/packages >> $LOGFILE 2>&1
869 rm -rf $BASEDIR/build/install/packages/*
870 }
871
872 # See what we're supposed to do
873 case "$1" in
874 build)
875 BUILDMACHINE=`uname -m`
876 PACKAGE=`ls -v -r $BASEDIR/cache/$SNAME-1.4-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
877 #only restore on a clean disk
878 if [ ! -f log/perl-*-tools ]; then
879 if [ ! -n "$PACKAGE" ]; then
880 echo "`date -u '+%b %e %T'`: Full toolchain compilation" | tee -a $LOGFILE
881 prepareenv
882 buildtoolchain
883 else
884 PACKAGENAME=${PACKAGE%.tar.gz}
885 echo "`date -u '+%b %e %T'`: Restore from $PACKAGE" | tee -a $LOGFILE
886 if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
887 tar zxf $PACKAGE
888 prepareenv
889 else
890 exiterror "$PACKAGENAME md5 did not match, check downloaded package"
891 fi
892 fi
893 else
894 echo "`date -u '+%b %e %T'`: Using installed toolchain" | tee -a $LOGFILE
895 prepareenv
896 fi
897 buildbase
898 buildipcop
899 buildinstaller
900 buildpackages
901 ;;
902 shell)
903 # enter a shell inside LFS chroot
904 # may be used to changed kernel settings
905 prepareenv
906 entershell
907 ;;
908 changelog)
909 echo -n "Loading new Changelog from SVN: "
910 svn log http://svn.ipfire.eu/svn/ipfire > doc/ChangeLog
911 echo "Finished!"
912 ;;
913 check)
914 echo "Checking sources files availability on the web"
915 if [ ! -d $DIR_CHK ]; then
916 mkdir -p $DIR_CHK
917 fi
918 FINISHED=0
919 cd $BASEDIR/lfs
920 for c in `seq $MAX_RETRIES`; do
921 if (( FINISHED==1 )); then
922 break
923 fi
924 FINISHED=1
925 cd $BASEDIR/lfs
926 for i in *; do
927 if [ -f "$i" -a "$i" != "Config" ]; then
928 make -s -f $i MACHINE=$MACHINE LFS_BASEDIR=$BASEDIR ROOT=$BASEDIR/build \
929 MESSAGE="$i\t ($c/$MAX_RETRIES)" check
930 if [ $? -ne 0 ]; then
931 echo "Check : wget error in lfs/$i"
932 FINISHED=0
933 fi
934 fi
935 done
936 done
937 cd -
938 ;;
939 checkclean)
940 echo "Erasing sources files availability tags"
941 rm -rf $DIR_CHK/*
942 ;;
943 clean)
944 for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
945 $LOSETUP -d $i 2>/dev/null
946 done
947 for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
948 umount $i
949 done
950 stdumount
951 for i in `seq 0 7`; do
952 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
953 umount /dev/loop${i} 2>/dev/null;
954 losetup -d /dev/loop${i} 2>/dev/null;
955 fi;
956 done
957 rm -rf $BASEDIR/build
958 rm -rf $BASEDIR/cdrom
959 rm -rf $BASEDIR/packages
960 rm -rf $BASEDIR/log
961 if [ -h /tools ]; then
962 rm -f /tools
963 fi
964 ;;
965 dist)
966 echo -ne "Updating & building source package from SVN: "
967 svn up > /dev/null
968 svn export http://svn.ipfire.eu/svn/ipfire ipfire-source/ --force > /dev/null
969 tar cfz ipfire-source-`date +'%Y-%m-%d'`-r`svn info | grep Revision | cut -c 11-`.tar.gz ipfire-source
970 rm ipfire-source/ -r
971 echo "Finished!"
972 ;;
973 newpak)
974 # create structure for a new package
975 echo -e "Name of the new package: $2"
976 if [ ! -f "lfs/$2" ]; then
977 echo "`date -u '+%b %e %T'`: Creating directory src/paks/$2"
978 mkdir -p src/paks/$2
979 cd src/paks/$2
980 echo "`date -u '+%b %e %T'`: Creating files"
981 cp $BASEDIR/lfs/postfix $BASEDIR/lfs/$2
982
983 touch ROOTFILES
984 touch {,un}install.sh
985 ## install.sh
986 echo '#!/bin/bash' > install.sh
987 echo '#' >> install.sh
988 echo '#################################################################' >> install.sh
989 echo '# #' >> install.sh
990 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> install.sh
991 echo '# #' >> install.sh
992 echo '#################################################################' >> install.sh
993 echo '#' >> install.sh
994 echo '# Extract the files' >> install.sh
995 echo 'tar xfz files.tgz -C /' >> install.sh
996 echo 'cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2' >> install.sh
997 ## uninstall.sh
998 echo '#!/bin/bash' > uninstall.sh
999 echo '#################################################################' >> uninstall.sh
1000 echo '# #' >> uninstall.sh
1001 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> uninstall.sh
1002 echo '# #' >> uninstall.sh
1003 echo '#################################################################' >> uninstall.sh
1004 echo '#' >> uninstall.sh
1005 echo '# Delete the files' >> uninstall.sh
1006 echo '## Befehl fehlt noch' >> uninstall.sh
1007 echo 'rm -f /opt/pakfire/installed/ROOTFILES.$2' >> uninstall.sh
1008 echo "`date -u '+%b %e %T'`: Adding files to SVN"
1009 cd - && svn add lfs/$2 && svn add src/paks/$2
1010
1011 echo -n "Do you want to remove the folders? [y/n]"
1012 read REM
1013 if [ "$REM" == "y" ]; then
1014 echo "Removing the folders..."
1015 svn del src/paks/$2 --force
1016 else
1017 echo "Folders are kept."
1018 fi
1019 else
1020 echo "$2 already exists"
1021 fi
1022 exit 0
1023 ;;
1024 prefetch)
1025 if [ ! -d $BASEDIR/cache ]; then
1026 mkdir $BASEDIR/cache
1027 fi
1028 mkdir -p $BASEDIR/log
1029 echo "`date -u '+%b %e %T'`:Preload all source files" | tee -a $LOGFILE
1030 FINISHED=0
1031 cd $BASEDIR/lfs
1032 for c in `seq $MAX_RETRIES`; do
1033 if (( FINISHED==1 )); then
1034 break
1035 fi
1036 FINISHED=1
1037 cd $BASEDIR/lfs
1038 for i in *; do
1039 if [ -f "$i" -a "$i" != "Config" ]; then
1040 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
1041 if [ $? -ne 0 ]; then
1042 echo "Prefetch : wget error in lfs/$i"
1043 FINISHED=0
1044 else
1045 if [ $c -eq 1 ]; then
1046 echo "Prefetch : lfs/$i files loaded"
1047 fi
1048 fi
1049 fi
1050 done
1051 done
1052 echo "Prefetch : verifying md5sum"
1053 ERROR=0
1054 for i in *; do
1055 if [ -f "$i" -a "$i" != "Config" ]; then
1056 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
1057 if [ $? -ne 0 ]; then
1058 echo "md5 difference in lfs/$i"
1059 ERROR=1
1060 fi
1061 fi
1062 done
1063 if [ $ERROR -eq 0 ]; then
1064 echo "Prefetch : all files md5sum match"
1065 fi
1066 cd -
1067 ;;
1068 toolchain)
1069 prepareenv
1070 buildtoolchain
1071 BUILDMACHINE=`uname -m`
1072 echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
1073 cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
1074 build/{bin,etc,usr/bin,usr/local} \
1075 build/tools/{bin,etc,*-linux-gnu,include,lib,libexec,sbin,share,var} \
1076 log >> $LOGFILE
1077 md5sum cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
1078 > cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5
1079 stdumount
1080 ;;
1081 gettoolchain)
1082 BUILDMACHINE=`uname -m`
1083 # arbitrary name to be updated in case of new toolchain package upload
1084 PACKAGE=$SNAME-1.4-toolchain-$BUILDMACHINE
1085 URL_IPFIRE=`grep URL_IPFIRE lfs/Config | awk '{ print $3 }'`
1086 echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
1087 cd $BASEDIR/cache
1088 wget $URL_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5 >& /dev/null
1089 if [ $? -ne 0 ]; then
1090 echo "`date -u '+%b %e %T'`: error downloading toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE
1091 # else
1092 # if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
1093 # echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
1094 # echo "`date -u '+%b %e %T'`: Uncompressing toolchain" | tee -a $LOGFILE
1095 # cd $BASEDIR && tar xfz cache/$PACKAGE.tar.gz -C .
1096 # rm -f $BASEDIR/cache/$PACKAGE.{tar.gz,md5}
1097 # else
1098 # exiterror "$PACKAGE.md5 did not match, check downloaded package"
1099 # fi
1100 fi
1101 ;;
1102 paks)
1103 prepareenv
1104 # buildpackages
1105 ipfirepackages
1106 ;;
1107 update)
1108 echo "Load the latest source-files:"
1109 svn update
1110 ;;
1111 commit)
1112 echo "Upload the changed files:"
1113 svn commit
1114 ./make.sh sync
1115 svn up > /dev/null
1116 ;;
1117 make)
1118 echo "Do a complete compile:"
1119 ./make.sh prefetch && ./make.sh gettoolchain && ./make.sh build
1120 ;;
1121 diff)
1122 echo -ne "Make a local diff to last SVN revision: "
1123 svn diff > ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff
1124 echo "Finished!"
1125 echo "Diff was successfully saved to ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff"
1126 ;;
1127 sync)
1128 echo -e "Syncing Cache to FTP:"
1129 if [ -f .pass ]; then
1130 PASS="`cat .pass`"
1131 else
1132 echo -ne "Password for mirror.ipfire.org: "; read PASS
1133 fi
1134 rm -f doc/packages-to-remove-from-ftp
1135 ncftpls -u web3 -p $PASS ftp://mirror.ipfire.org/html/source-packages/source/ > ftplist
1136 for i in `ls -w1 cache/`; do
1137 grep $i ftplist
1138 if [ "$?" -ne "0" ]; then
1139 ncftpput -u web3 -p $PASS mirror.ipfire.org /html/source-packages/source cache/$i
1140 if [ "$?" -eq "0" ]; then
1141 echo -e "$i was successfully uploaded to the ftp server."
1142 else
1143 echo -e "There was an error while uploading $i to the ftp server."
1144 fi
1145 fi
1146 done
1147 for i in `cat ftplist`; do
1148 ls -w1 cache/ | grep $i
1149 if [ "$?" -eq "1" ]; then
1150 echo $i | grep -v toolchain >> doc/packages-to-remove-from-ftp
1151 fi
1152 done
1153 rm -f ftplist
1154 ;;
1155 pub-iso)
1156 echo -e "Upload the ISO to the beta-mirror!"
1157 if [ -f .pass ]; then
1158 PASS="`cat .pass`"
1159 else
1160 echo -ne "Password for mirror.ipfire.org: "; read PASS
1161 fi
1162 ncftpls -u web3 -p $PASS ftp://mirror.ipfire.org/html/source-packages/beta/ | grep `svn info | grep Revision | cut -c 11-`
1163 if [ "$?" -eq "1" ]; then
1164 cp $BASEDIR/ipfire-install-1.4.i386.iso $BASEDIR/ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso
1165 md5sum ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso > ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso.md5
1166 ncftpput -u web3 -p $PASS mirror.ipfire.org /html/source-packages/beta/ ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso
1167 ncftpput -u web3 -p $PASS mirror.ipfire.org /html/source-packages/beta/ ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso.md5
1168 if [ "$?" -eq "0" ]; then
1169 echo -e "The ISO of Revision `svn info | grep Revision | cut -c 11-` was successfully uploaded to the ftp server."
1170 else
1171 echo -e "There was an error while uploading the ISO to the ftp server."
1172 fi
1173 else
1174 echo -e "File with name ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso already exists on the ftp server!"
1175 fi
1176 rm -f ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso{,.md5}
1177 ;;
1178 pub-paks)
1179 echo -e "Upload the packages to the beta-mirror!"
1180 if [ -f .pass ]; then
1181 PASS="`cat .pass`"
1182 else
1183 echo -ne "Password for mirror.ipfire.org: "; read PASS
1184 fi
1185 ncftpput -z -u web3 -p $PASS mirror.ipfire.org /html/source-packages/packages/ packages/*
1186 if [ "$?" -eq "0" ]; then
1187 echo -e "The packages were successfully uploaded to the ftp server."
1188 else
1189 echo -e "There was an error while uploading the packages to the ftp server."
1190 fi
1191 ;;
1192 *)
1193 echo "Usage: $0 {build|changelog|check|checkclean|clean|commit|diff|dist|gettoolchain|make|newpak|prefetch|pub-iso|pub-paks|shell|sync|toolchain|update}"
1194 cat doc/make.sh-usage
1195 exit 1
1196 ;;
1197 esac