]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - make.sh
HinzugefĆ¼gt:
[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 # 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 fi
555
556 ipcopmake linux LFS_PASS=ipfire
557 ipcopmake 3cp4218
558 ipcopmake amedyn
559 ipcopmake cxacru
560 ipcopmake eciadsl
561 ipcopmake eagle
562 ipcopmake speedtouch
563 if [ 'i386' = $MACHINE ]; then
564 # These are here because they have i386 only binary libraries
565 # included in the package.
566 ipcopmake cnx_pci
567 ipcopmake fcdsl
568 ipcopmake fcdsl2
569 ipcopmake fcdslsl
570 ipcopmake fcdslusb
571 ipcopmake fcdslslusb
572 ipcopmake fcpci
573 ipcopmake fcclassic
574 ipcopmake pulsar
575 ipcopmake unicorn
576 fi
577
578 ipcopmake pcmcia-cs
579 ipcopmake expat
580 ipcopmake gdbm
581 ipcopmake gmp
582 ipcopmake openssl
583 ipcopmake python
584 ipcopmake libnet
585 ipcopmake libpng
586 ipcopmake gd
587 ipcopmake popt
588 ipcopmake slang
589 ipcopmake newt
590 ipcopmake libcap
591 ipcopmake pciutils
592 ipcopmake pcre
593 ipcopmake apache
594 ipcopmake arping
595 ipcopmake beep
596 ipcopmake bind
597 ipcopmake capi4k-utils
598 ipcopmake cdrtools
599 ipcopmake dnsmasq
600 ipcopmake dosfstools
601 ipcopmake ethtool
602 ipcopmake ez-ipupdate
603 ipcopmake fcron
604 ipcopmake perl-GD
605 ipcopmake gnupg
606 ipcopmake hdparm
607 ipcopmake ibod
608 ipcopmake initscripts
609 ipcopmake iptables
610 ipcopmake ipac-ng
611 ipcopmake ipaddr
612 ipcopmake iproute2
613 ipcopmake iptstate
614 ipcopmake iputils
615 ipcopmake l7-protocols
616 ipcopmake isapnptools
617 ipcopmake isdn4k-utils
618 ipcopmake kudzu
619 ipcopmake logrotate
620 ipcopmake logwatch
621 ipcopmake mingetty
622 ipcopmake misc-progs
623 ipcopmake mtools
624 ipcopmake nano
625 ipcopmake nash
626 ipcopmake nasm
627 ipcopmake URI
628 ipcopmake HTML-Tagset
629 ipcopmake HTML-Parser
630 ipcopmake Compress-Zlib
631 ipcopmake Digest
632 ipcopmake Digest-SHA1
633 ipcopmake Digest-HMAC
634 ipcopmake libwww-perl
635 ipcopmake Net-DNS
636 ipcopmake Net-IPv4Addr
637 ipcopmake Net_SSLeay
638 ipcopmake IO-Stringy
639 ipcopmake Unix-Syslog
640 ipcopmake Mail-Tools
641 ipcopmake MIME-Tools
642 ipcopmake Net-Server
643 ipcopmake Convert-TNEF
644 ipcopmake Convert-UUlib
645 ipcopmake Archive-Tar
646 ipcopmake Archive-Zip
647 ipcopmake Text-Tabs+Wrap
648 ipcopmake Locale-Country
649 ipcopmake GeoIP
650 ipcopmake fwhits
651 ipcopmake berkeley
652 ipcopmake BerkeleyDB ## The Perl module
653 ipcopmake noip_updater
654 ipcopmake ntp
655 ipcopmake oinkmaster
656 ipcopmake openssh
657 ipcopmake openswan
658 ipcopmake pptpclient
659 ipcopmake rrdtool
660 ipcopmake setserial
661 ipcopmake setup
662 ipcopmake snort
663 #ipcopmake speedycgi
664 ipcopmake saslauthd PASS=1
665 ipcopmake openldap
666 ipcopmake squid
667 ipcopmake squid-graph
668 ipcopmake squidguard
669 ipcopmake tcpdump
670 ipcopmake traceroute
671 ipcopmake vlan
672 #ipcopmake wireless
673 ipcopmake libsafe
674 ipcopmake 3c5x9setup
675 # echo -ne "`date -u '+%b %e %T'`: Building ### IPFire modules ### \n" | tee -a $LOGFILE
676 ipcopmake pakfire
677 ipcopmake startscripts
678 ## Zuerst die Libs und dann die Programme. Ordnung muss sein!
679 ipcopmake java
680 ipcopmake libtiff
681 ipcopmake libjpeg
682 ipcopmake lcms
683 ipcopmake libmng
684 ipcopmake freetype
685 ipcopmake bootsplash
686 ipcopmake libxml2
687 ipcopmake spandsp
688 ipcopmake lzo
689 ipcopmake openvpn
690 ipcopmake pkg-config
691 ipcopmake glib
692 ipcopmake xampp
693 ipcopmake pam
694 ipcopmake pammysql
695 ipcopmake saslauthd PASS=2
696 ipcopmake xinetd
697 ipcopmake ghostscript
698 ipcopmake cups
699 # ipcopmake lpd ## Im Moment aus, da CUPS vorhanden ist.
700 ipcopmake samba
701 ipcopmake sudo
702 ipcopmake mc
703 # ipcopmake pwlib
704 # ipcopmake openh323
705 ipcopmake wget
706 ipcopmake wput
707 ipcopmake bridge-utils
708 ipcopmake screen
709 ipcopmake hddtemp
710 ipcopmake htop
711 ipcopmake lynx
712 echo -ne "`date -u '+%b %e %T'`: Building ### Mailserver ### \n" | tee -a $LOGFILE
713 ipcopmake postfix
714 ipcopmake procmail
715 ipcopmake fetchmail
716 ipcopmake cyrusimap
717 ipcopmake web-cyradm
718 ipcopmake mailx
719 ipcopmake clamav
720 ipcopmake razor
721 ipcopmake spamassassin
722 # ipcopmake amavisd
723 echo -ne "`date -u '+%b %e %T'`: Building ### VoIP-Server ### \n" | tee -a $LOGFILE
724 ipcopmake stund
725 ipcopmake zaptel
726 ipcopmake libpri
727 ipcopmake bristuff
728 ipcopmake asterisk
729 ipcopmake mpg123
730 echo -ne "`date -u '+%b %e %T'`: Building ### MP3-Server ### \n" | tee -a $LOGFILE
731 ipcopmake lame
732 ipcopmake gnump3d
733 echo -ne "`date -u '+%b %e %T'`: Building ### P2P-Clients ### \n" | tee -a $LOGFILE
734 ipcopmake applejuice
735 ipcopmake edonkeyclc
736 # ipcopmake sane
737 echo -ne "`date -u '+%b %e %T'`: Building ### Net-Tools ### \n" | tee -a $LOGFILE
738 ipcopmake ntop
739 # ipcopmake rsync
740 ipcopmake tcpwrapper
741 ipcopmake portmap
742 ipcopmake nfs
743 ipcopmake nmap
744 ipcopmake mbmon
745 ipcopmake iftop
746 ipcopmake ncftp
747 ipcopmake cftp
748 ipcopmake etherwake
749 ipcopmake ethereal
750 # ipcopmake stunnel # Ausgeschaltet, weil wir es doch nicht nutzen
751 }
752
753 buildinstaller() {
754 # Run installer scripts one by one
755 LOGFILE="$BASEDIR/log/_build.installer.log"
756 export LOGFILE
757 echo -ne "`date -u '+%b %e %T'`: Stage4 installer build \n" | tee -a $LOGFILE
758 if [ 'i386' = $MACHINE ]; then
759 ipcopmake syslinux
760 ipcopmake as86
761 ipcopmake mbr
762 ipcopmake uClibc
763 fi
764 installmake busybox
765 installmake sysvinit
766 installmake e2fsprogs
767 installmake misc-progs
768 installmake slang
769 installmake util-linux
770 installmake newt
771 installmake pciutils
772 installmake pcmcia-cs
773 installmake kbd
774 installmake installer
775 installmake scsi.img
776 installmake driver.img
777 installmake initrd
778 installmake boot.img
779 }
780
781 buildpackages() {
782 LOGFILE="$BASEDIR/log/_build.packages.log"
783 export LOGFILE
784 echo "... see detailed log in _build.*.log files" >> $LOGFILE
785 echo -ne "`date -u '+%b %e %T'`: Stage5 packages build \n" | tee -a $LOGFILE
786 # Strip files
787 echo "`date -u '+%b %e %T'`: Stripping files" | tee -a $LOGFILE
788 find $LFS/lib $LFS/usr/lib $LFS/usr/share/rrdtool-* $LFS/install ! -type l \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
789 ! -name 'libc.so' ! -name 'libpthread.so' ! -name 'libcrypto.so.0.9.7.sha1' \
790 -exec $LFS/tools/bin/strip --strip-all {} \; >> $LOGFILE 2>&1
791 # add -ls before -exec if you want to verify what files are stripped
792
793 find $LFS/{,s}bin $LFS/usr/{,s}bin $LFS/usr/local/{,s}bin ! -type l \
794 -exec file {} \; | grep " ELF " | cut -f1 -d ':' | xargs $LFS/tools/bin/strip --strip-all >> $LOGFILE 2>&1
795 # there add -v to strip to verify
796
797 if [ 'i386' = $MACHINE ]; then
798 # Create fcdsl packages
799 echo "`date -u '+%b %e %T'`: Building fcdsl tgz" | tee -a $LOGFILE
800 cp $LFS/install/images/fcdsl/license.txt $LFS >> $LOGFILE 2>&1
801 touch $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}
802 cd $LFS && tar cvfz $LFS/install/images/$SNAME-fcdsl-$VERSION.$MACHINE.tgz \
803 lib/modules/$KVER/misc/fcdsl*.o.gz \
804 lib/modules/$KVER-smp/misc/fcdsl*.o.gz \
805 usr/lib/isdn/{fds?base.bin,fd?ubase.frm} \
806 etc/fcdsl/fcdsl*.conf \
807 etc/drdsl/{drdsl,drdsl.ini} \
808 license.txt \
809 var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} >> $LOGFILE 2>&1
810 rm -f $LFS/license.txt >> $LOGFILE 2>&1
811 cd $BASEDIR
812 fi
813
814 # Generating list of packages used
815 echo "`date -u '+%b %e %T'`: Generating packages list from logs" | tee -a $LOGFILE
816 rm -f $BASEDIR/doc/packages-list
817 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
818 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
819 echo " * `basename $i`" >>$BASEDIR/doc/packages-list
820 fi
821 done
822 echo "====== List of softwares used to build $NAME Version: $VERSION ======" > $BASEDIR/doc/packages-list.txt
823 grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipcop$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$' \
824 $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt
825 rm -f $BASEDIR/doc/packages-list
826 # packages-list.txt is ready to be displayed for wiki page
827
828 # Create ISO for CDRom and USB-superfloppy
829 ipcopmake cdrom
830 rm -f $LFS/install/images/*usb*
831 cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1
832
833 ipfirepackages
834
835 # Cleanup
836 stdumount
837 rm -rf $BASEDIR/build/tmp/*
838
839 # Generating total list of files
840 echo "`date -u '+%b %e %T'`: Generating files list from logs" | tee -a $LOGFILE
841 rm -f $BASEDIR/log/FILES
842 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
843 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
844 echo "##" >>$BASEDIR/log/FILES
845 echo "## `basename $i`" >>$BASEDIR/log/FILES
846 echo "##" >>$BASEDIR/log/FILES
847 cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES
848 fi
849 done
850
851 cd $PWD
852
853 }
854
855 ipfirepackages() {
856 if [ -d "$BASEDIR/packages" ]; then
857 for i in `ls $BASEDIR/packages`; do
858 touch $BASEDIR/build/install/packages/$i.empty
859 done
860 fi
861 ipfiredist amavisd
862 ipfiredist applejuice
863 # ipfiredist asterisk
864 ipfiredist clamav
865 ipfiredist cups
866 ipfiredist cyrusimap
867 ipfiredist fetchmail
868 ipfiredist gnump3d
869 ipfiredist java
870 ipfiredist lame
871 ipfiredist libtiff
872 ipfiredist libxml2
873 ipfiredist mailx
874 ipfiredist nfs
875 ipfiredist nmap
876 ipfiredist ntop
877 ipfiredist postfix
878 ipfiredist procmail
879 ipfiredist samba
880 ipfiredist spamassassin
881 ipfiredist web-cyradm
882 ipfiredist xampp
883 ipfiredist xinetd
884 test -d $BASEDIR/packages || mkdir $BASEDIR/packages
885 mv -f $LFS/install/packages/*.{tar.gz,md5} $BASEDIR/packages >> $LOGFILE 2>&1
886 rm -rf $BASEDIR/build/install/packages/*
887 }
888
889 # See what we're supposed to do
890 case "$1" in
891 build)
892 BUILDMACHINE=`uname -m`
893 PACKAGE=`ls -v -r $BASEDIR/cache/$SNAME-1.4-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
894 #only restore on a clean disk
895 if [ ! -f log/perl-*-tools ]; then
896 if [ ! -n "$PACKAGE" ]; then
897 echo "`date -u '+%b %e %T'`: Full toolchain compilation" | tee -a $LOGFILE
898 prepareenv
899 buildtoolchain
900 else
901 PACKAGENAME=${PACKAGE%.tar.gz}
902 echo "`date -u '+%b %e %T'`: Restore from $PACKAGE" | tee -a $LOGFILE
903 if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
904 tar zxf $PACKAGE
905 prepareenv
906 else
907 exiterror "$PACKAGENAME md5 did not match, check downloaded package"
908 fi
909 fi
910 else
911 echo "`date -u '+%b %e %T'`: Using installed toolchain" | tee -a $LOGFILE
912 prepareenv
913 fi
914
915 buildbase
916 buildipcop
917
918 # Setzen des IPFire Builds
919 if [ "$FIREBUILD" ]; then
920 echo "$FIREBUILD" > $BASEDIR/build/var/ipfire/firebuild
921 else
922 echo "_(OvO)_" > $BASEDIR/build/var/ipfire/firebuild
923 fi
924
925 buildinstaller
926 buildpackages
927 ;;
928 shell)
929 # enter a shell inside LFS chroot
930 # may be used to changed kernel settings
931 prepareenv
932 entershell
933 ;;
934 changelog)
935 echo -n "Loading new Changelog from SVN: "
936 svn log http://svn.ipfire.eu/svn/ipfire > doc/ChangeLog
937 echo "Finished!"
938 ;;
939 check)
940 echo "Checking sources files availability on the web"
941 if [ ! -d $DIR_CHK ]; then
942 mkdir -p $DIR_CHK
943 fi
944 FINISHED=0
945 cd $BASEDIR/lfs
946 for c in `seq $MAX_RETRIES`; do
947 if (( FINISHED==1 )); then
948 break
949 fi
950 FINISHED=1
951 cd $BASEDIR/lfs
952 for i in *; do
953 if [ -f "$i" -a "$i" != "Config" ]; then
954 make -s -f $i MACHINE=$MACHINE LFS_BASEDIR=$BASEDIR ROOT=$BASEDIR/build \
955 MESSAGE="$i\t ($c/$MAX_RETRIES)" check
956 if [ $? -ne 0 ]; then
957 echo "Check : wget error in lfs/$i"
958 FINISHED=0
959 fi
960 fi
961 done
962 done
963 cd -
964 ;;
965 checkclean)
966 echo "Erasing sources files availability tags"
967 rm -rf $DIR_CHK/*
968 ;;
969 clean)
970 for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
971 $LOSETUP -d $i 2>/dev/null
972 done
973 for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
974 umount $i
975 done
976 stdumount
977 for i in `seq 0 7`; do
978 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
979 umount /dev/loop${i} 2>/dev/null;
980 losetup -d /dev/loop${i} 2>/dev/null;
981 fi;
982 done
983 rm -rf $BASEDIR/build
984 rm -rf $BASEDIR/cdrom
985 rm -rf $BASEDIR/packages
986 rm -rf $BASEDIR/log
987 if [ -h /tools ]; then
988 rm -f /tools
989 fi
990 ;;
991 dist)
992 echo -ne "Updating & building source package from SVN: "
993 svn up > /dev/null
994 svn export http://svn.ipfire.eu/svn/ipfire ipfire-source/ --force > /dev/null
995 tar cfz ipfire-source-`date +'%Y-%m-%d'`-r`svn info | grep Revision | cut -c 11-`.tar.gz ipfire-source
996 rm ipfire-source/ -r
997 echo "Finished!"
998 ;;
999 newpak)
1000 # create structure for a new package
1001 echo -e "Name of the new package: $2"
1002 if [ ! -f "lfs/$2" ]; then
1003 echo "`date -u '+%b %e %T'`: Creating directory src/paks/$2"
1004 mkdir -p src/paks/$2
1005 cd src/paks/$2
1006 echo "`date -u '+%b %e %T'`: Creating files"
1007 cp $BASEDIR/lfs/postfix $BASEDIR/lfs/$2
1008
1009 touch ROOTFILES
1010 touch {,un}install.sh
1011 ## install.sh
1012 echo '#!/bin/bash' > install.sh
1013 echo '#' >> install.sh
1014 echo '#################################################################' >> install.sh
1015 echo '# #' >> install.sh
1016 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> install.sh
1017 echo '# #' >> install.sh
1018 echo '#################################################################' >> install.sh
1019 echo '#' >> install.sh
1020 echo '# Extract the files' >> install.sh
1021 echo 'tar xfz files.tgz -C /' >> install.sh
1022 echo 'cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2' >> install.sh
1023 ## uninstall.sh
1024 echo '#!/bin/bash' > uninstall.sh
1025 echo '#################################################################' >> uninstall.sh
1026 echo '# #' >> uninstall.sh
1027 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> uninstall.sh
1028 echo '# #' >> uninstall.sh
1029 echo '#################################################################' >> uninstall.sh
1030 echo '#' >> uninstall.sh
1031 echo '# Delete the files' >> uninstall.sh
1032 echo '## Befehl fehlt noch' >> uninstall.sh
1033 echo 'rm -f /opt/pakfire/installed/ROOTFILES.$2' >> uninstall.sh
1034 echo "`date -u '+%b %e %T'`: Adding files to SVN"
1035 cd - && svn add lfs/$2 && svn add src/paks/$2
1036
1037 echo -n "Do you want to remove the folders? [y/n]"
1038 read REM
1039 if [ "$REM" == "y" ]; then
1040 echo "Removing the folders..."
1041 svn del src/paks/$2 --force
1042 else
1043 echo "Folders are kept."
1044 fi
1045 else
1046 echo "$2 already exists"
1047 fi
1048 exit 0
1049 ;;
1050 prefetch)
1051 if [ ! -d $BASEDIR/cache ]; then
1052 mkdir $BASEDIR/cache
1053 fi
1054 mkdir -p $BASEDIR/log
1055 echo "`date -u '+%b %e %T'`:Preload all source files" | tee -a $LOGFILE
1056 FINISHED=0
1057 cd $BASEDIR/lfs
1058 for c in `seq $MAX_RETRIES`; do
1059 if (( FINISHED==1 )); then
1060 break
1061 fi
1062 FINISHED=1
1063 cd $BASEDIR/lfs
1064 for i in *; do
1065 if [ -f "$i" -a "$i" != "Config" ]; then
1066 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
1067 if [ $? -ne 0 ]; then
1068 echo "Prefetch : wget error in lfs/$i"
1069 FINISHED=0
1070 else
1071 if [ $c -eq 1 ]; then
1072 echo "Prefetch : lfs/$i files loaded"
1073 fi
1074 fi
1075 fi
1076 done
1077 done
1078 echo "Prefetch : verifying md5sum"
1079 ERROR=0
1080 for i in *; do
1081 if [ -f "$i" -a "$i" != "Config" ]; then
1082 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
1083 if [ $? -ne 0 ]; then
1084 echo "md5 difference in lfs/$i"
1085 ERROR=1
1086 fi
1087 fi
1088 done
1089 if [ $ERROR -eq 0 ]; then
1090 echo "Prefetch : all files md5sum match"
1091 fi
1092 cd -
1093 ;;
1094 toolchain)
1095 prepareenv
1096 buildtoolchain
1097 BUILDMACHINE=`uname -m`
1098 echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
1099 cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
1100 build/{bin,etc,usr/bin,usr/local} \
1101 build/tools/{bin,etc,*-linux-gnu,include,lib,libexec,sbin,share,var} \
1102 log >> $LOGFILE
1103 md5sum cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
1104 > cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5
1105 stdumount
1106 ;;
1107 gettoolchain)
1108 BUILDMACHINE=`uname -m`
1109 # arbitrary name to be updated in case of new toolchain package upload
1110 PACKAGE=$SNAME-1.4-toolchain-$BUILDMACHINE
1111 URL_IPFIRE=`grep URL_IPFIRE lfs/Config | awk '{ print $3 }'`
1112 echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
1113 cd $BASEDIR/cache
1114 wget $URL_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5 >& /dev/null
1115 if [ $? -ne 0 ]; then
1116 echo "`date -u '+%b %e %T'`: error downloading toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE
1117 else
1118 if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
1119 echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
1120 else
1121 exiterror "$PACKAGE.md5 did not match, check downloaded package"
1122 fi
1123 fi
1124 ;;
1125 paks)
1126 prepareenv
1127 # buildpackages
1128 ipfirepackages
1129 ;;
1130 update)
1131 echo "Load the latest source-files:"
1132 svn update
1133 ;;
1134 commit)
1135 echo "Upload the changed files:"
1136 svn commit
1137 ./make.sh sync
1138 svn up
1139 ;;
1140 make)
1141 echo "Do a complete compile:"
1142 ./make.sh prefetch && ./make.sh gettoolchain && ./make.sh build
1143 ;;
1144 diff)
1145 echo -ne "Make a local diff to last SVN revision: "
1146 svn diff > ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff
1147 echo "Finished!"
1148 echo "Diff was successfully saved to ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff"
1149 ;;
1150 sync)
1151 echo -e "Syncing Cache to FTP:"
1152 if [ -f .pass ]; then
1153 PASS="`cat .pass`"
1154 else
1155 echo -ne "Password for mirror.ipfire.org: "; read PASS
1156 fi
1157 rm -f doc/packages-to-remove-from-ftp
1158 ncftpls -u web3 -p $PASS ftp://mirror.ipfire.org/html/source-packages/source/ > ftplist
1159 for i in `ls -w1 cache/`; do
1160 grep $i ftplist
1161 if [ "$?" -ne "0" ]; then
1162 ncftpput -u web3 -p $PASS mirror.ipfire.org /html/source-packages/source cache/$i
1163 if [ "$?" -eq "0" ]; then
1164 echo -e "$i was successfully uploaded to the ftp server."
1165 else
1166 echo -e "There was an error while uploading $i to the ftp server."
1167 fi
1168 fi
1169 done
1170 for i in `cat ftplist`; do
1171 ls -w1 cache/ | grep $i
1172 if [ "$?" -eq "1" ]; then
1173 echo $i | grep -v toolchain >> doc/packages-to-remove-from-ftp
1174 fi
1175 done
1176 rm -f ftplist
1177 ;;
1178 pub-iso)
1179 echo -e "Upload the ISO 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 ncftpls -u web3 -p $PASS ftp://mirror.ipfire.org/html/source-packages/beta/ | grep `svn info | grep Revision | cut -c 11-`
1186 if [ "$?" -eq "1" ]; then
1187 cp $BASEDIR/ipfire-install-1.4.i386.iso $BASEDIR/ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso
1188 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
1189 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
1190 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
1191 if [ "$?" -eq "0" ]; then
1192 echo -e "The ISO of Revision `svn info | grep Revision | cut -c 11-` was successfully uploaded to the ftp server."
1193 else
1194 echo -e "There was an error while uploading the ISO to the ftp server."
1195 fi
1196 else
1197 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!"
1198 fi
1199 rm -f ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso{,.md5}
1200 ;;
1201 pub-paks)
1202 echo -e "Upload the packages to the beta-mirror!"
1203 if [ -f .pass ]; then
1204 PASS="`cat .pass`"
1205 else
1206 echo -ne "Password for mirror.ipfire.org: "; read PASS
1207 fi
1208 ncftpput -z -u web3 -p $PASS mirror.ipfire.org /html/source-packages/packages/ packages/*
1209 if [ "$?" -eq "0" ]; then
1210 echo -e "The packages were successfully uploaded to the ftp server."
1211 else
1212 echo -e "There was an error while uploading the packages to the ftp server."
1213 fi
1214 ;;
1215 build-only)
1216 rm -f $BASEDIR/log/$2*
1217 BUILDMACHINE=`uname -m`
1218 prepareenv
1219 ipcopmake $2
1220 ;;
1221 *)
1222 echo "Usage: $0 {build|changelog|check|checkclean|clean|commit|diff|dist|gettoolchain|make|newpak|prefetch|pub-iso|pub-paks|shell|sync|toolchain|update}"
1223 cat doc/make.sh-usage
1224 exit 1
1225 ;;
1226 esac