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