]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - make.sh
2b94e94de656f64f4c0001d87a34f658dafbc480
[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 ls $BASEDIR/packages/$1* >& /dev/null
339 if [ $? -eq 1 ]; then
340 echo "`date -u '+%b %e %T'`: Packaging $1" | tee -a $LOGFILE
341 cp -f $BASEDIR/src/scripts/make-packages.sh $BASEDIR/build/usr/local/bin
342 chroot $LFS /tools/bin/env -i HOME=/root \
343 TERM=$TERM PS1='\u:\w\$ ' \
344 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
345 VERSION=$VERSION \
346 CONFIG_ROOT=$CONFIG_ROOT \
347 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
348 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
349 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
350 KVER=$KVER \
351 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
352 /bin/bash -x -c "cd /usr/src/lfs && \
353 make -f $1 LFS_BASEDIR=/usr/src dist" >>$LOGFILE 2>&1
354 if [ $? -ne 0 ]; then
355 exiterror "Packaging $1"
356 fi
357 else
358 echo -e "`date -u '+%b %e %T'`: Packages with name $1 already exists!" | tee -a $LOGFILE
359 fi
360 else
361 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
362 fi
363 return 0
364 }
365
366
367 installmake() {
368 if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
369 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
370 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1
371 if [ $? -ne 0 ]; then
372 exiterror "Download error in $1"
373 fi
374 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
375 if [ $? -ne 0 ]; then
376 exiterror "md5sum error in $1, check file in cache or signature"
377 fi
378 chroot $LFS /tools/bin/env -i HOME=/root \
379 TERM=$TERM PS1='\u:\w\$ ' \
380 PATH=/usr/local/bin:/opt/$MACHINE-uClibc/usr/bin:/bin:/usr/bin:/sbin:/usr/sbin \
381 VERSION=$VERSION \
382 CONFIG_ROOT=$CONFIG_ROOT \
383 LFS_PASS="install" \
384 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
385 CFLAGS="-Os" CXXFLAGS="-Os" \
386 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
387 KVER=$KVER \
388 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
389 /bin/bash -x -c "cd /usr/src/lfs && \
390 make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
391 if [ $? -ne 0 ]; then
392 exiterror "Building $*"
393 fi
394 else
395 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
396 fi
397 return 0
398 }
399
400 buildtoolchain() {
401 LOGFILE="$BASEDIR/log/_build.toolchain.log"
402 export LOGFILE
403 echo -ne "`date -u '+%b %e %T'`: Stage1 toolchain build \n" | tee -a $LOGFILE
404 # Build sed now, as we use some extensions
405 ORG_PATH=$PATH
406 NATIVEGCC=`gcc --version | grep GCC | awk {'print $3'}`
407 export NATIVEGCC GCCmajor=${NATIVEGCC:0:1} GCCminor=${NATIVEGCC:2:1} GCCrelease=${NATIVEGCC:4:1}
408 lfsmake1 ccache
409 lfsmake1 sed LFS_PASS=1
410 lfsmake1 m4 LFS_PASS=1
411 lfsmake1 bison LFS_PASS=1
412 lfsmake1 flex LFS_PASS=1
413 lfsmake1 binutils LFS_PASS=1
414 lfsmake1 gcc LFS_PASS=1
415 export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH
416
417 lfsmake1 linux
418 lfsmake1 tcl
419 lfsmake1 expect
420 lfsmake1 glibc
421 lfsmake1 dejagnu
422 lfsmake1 gcc LFS_PASS=2
423 lfsmake1 binutils LFS_PASS=2
424 lfsmake1 gawk
425 lfsmake1 coreutils
426 lfsmake1 bzip2
427 lfsmake1 gzip
428 lfsmake1 diffutils
429 lfsmake1 findutils
430 lfsmake1 make
431 lfsmake1 grep
432 lfsmake1 sed LFS_PASS=2
433 lfsmake1 m4 LFS_PASS=2
434 lfsmake1 bison LFS_PASS=2
435 lfsmake1 flex LFS_PASS=2
436 lfsmake1 gettext
437 lfsmake1 ncurses
438 lfsmake1 patch
439 lfsmake1 tar
440 lfsmake1 texinfo
441 lfsmake1 bash
442 lfsmake1 util-linux
443 lfsmake1 perl
444 export PATH=$ORG_PATH
445 }
446
447 buildbase() {
448 LOGFILE="$BASEDIR/log/_build.base.log"
449 export LOGFILE
450 echo -ne "`date -u '+%b %e %T'`: Stage2 linux base build \n" | tee -a $LOGFILE
451 # Run LFS dynamic binary creation scripts one by one
452 lfsmake2 stage2
453 lfsmake2 makedev
454 lfsmake2 linux
455 lfsmake2 man-pages
456 lfsmake2 glibc
457 lfsmake2 binutils
458 lfsmake2 gcc
459 lfsmake2 coreutils
460 lfsmake2 zlib
461 lfsmake2 mktemp
462 lfsmake2 iana-etc
463 lfsmake2 findutils
464 lfsmake2 gawk
465 lfsmake2 ncurses
466 lfsmake2 vim
467 lfsmake2 m4
468 lfsmake2 bison
469 lfsmake2 less
470 lfsmake2 groff
471 lfsmake2 sed
472 lfsmake2 flex
473 lfsmake2 gettext
474 lfsmake2 net-tools
475 lfsmake2 inetutils
476 lfsmake2 perl
477 lfsmake2 texinfo
478 lfsmake2 autoconf
479 lfsmake2 automake
480 lfsmake2 bash
481 lfsmake2 file
482 lfsmake2 libtool
483 lfsmake2 bzip2
484 lfsmake2 diffutils
485 lfsmake2 ed
486 lfsmake2 kbd
487 lfsmake2 e2fsprogs
488 lfsmake2 grep
489 if [ 'i386' = $MACHINE ]; then
490 lfsmake2 grub
491 elif [ 'alpha' = $MACHINE ]; then
492 lfsmake2 aboot
493 fi
494 lfsmake2 gzip
495 lfsmake2 man
496 lfsmake2 make
497 lfsmake2 modutils
498 lfsmake2 patch
499 lfsmake2 procinfo
500 lfsmake2 procps
501 lfsmake2 psmisc
502 lfsmake2 shadow
503 lfsmake2 sysklogd
504 lfsmake2 sysvinit
505 lfsmake2 tar
506 lfsmake2 util-linux
507 }
508
509 buildipcop() {
510 # Run IPFire make scripts one by one
511 LOGFILE="$BASEDIR/log/_build.ipfire.log"
512 export LOGFILE
513 echo -ne "`date -u '+%b %e %T'`: Stage3 $NAME build \n" | tee -a $LOGFILE
514
515 # Build these first as some of the kernel packages below rely on
516 # these for some of their client program functionality
517 ipcopmake configroot
518 ipcopmake dhcp
519 ipcopmake dhcpcd
520 ipcopmake libusb
521 ipcopmake libpcap
522 ipcopmake linux-atm
523 ipcopmake ppp
524 ipcopmake rp-pppoe
525 ipcopmake unzip
526 # Do SMP now
527 if [ 'i386' = $MACHINE ]; then
528 # abuse the SMP flag, and make an minimal installer kernel first
529 # so that the boot floppy always works.....
530 ipcopmake linux LFS_PASS=ipcop SMP=installer
531 ipcopmake linux LFS_PASS=ipcop SMP=1
532 ipcopmake 3cp4218 SMP=1
533 ipcopmake amedyn SMP=1
534 ipcopmake cxacru SMP=1
535 ipcopmake eagle SMP=1
536
537 # These are here because they have i386 only binary libraries
538 # included in the package.
539 ipcopmake cnx_pci SMP=1
540 ipcopmake fcdsl SMP=1
541 ipcopmake fcdsl2 SMP=1
542 ipcopmake fcdslsl SMP=1
543 ipcopmake fcdslusb SMP=1
544 ipcopmake fcdslslusb SMP=1
545 ipcopmake fcpci SMP=1
546 ipcopmake pulsar SMP=1
547 ipcopmake unicorn SMP=1
548 fi
549
550 ipcopmake linux LFS_PASS=ipcop
551 ipcopmake 3cp4218
552 ipcopmake amedyn
553 ipcopmake cxacru
554 ipcopmake eciadsl
555 ipcopmake eagle
556 ipcopmake speedtouch
557 if [ 'i386' = $MACHINE ]; then
558 # These are here because they have i386 only binary libraries
559 # included in the package.
560 ipcopmake cnx_pci
561 ipcopmake fcdsl
562 ipcopmake fcdsl2
563 ipcopmake fcdslsl
564 ipcopmake fcdslusb
565 ipcopmake fcdslslusb
566 ipcopmake fcpci
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 GeoIP
641 ipcopmake fwhits
642 ipcopmake noip_updater
643 ipcopmake ntp
644 ipcopmake oinkmaster
645 ipcopmake openssh
646 ipcopmake openswan
647 ipcopmake pptpclient
648 ipcopmake rrdtool
649 ipcopmake setserial
650 ipcopmake setup
651 ipcopmake snort
652 #ipcopmake speedycgi
653 ipcopmake squid
654 ipcopmake squid-graph
655 ipcopmake tcpdump
656 ipcopmake traceroute
657 ipcopmake vlan
658 #ipcopmake wireless
659 ipcopmake libsafe
660 ipcopmake 3c5x9setup
661 echo -ne "`date -u '+%b %e %T'`: Building ### IPFire modules ### \n" | tee -a $LOGFILE
662 ipcopmake pakfire
663 ipcopmake startscripts
664 ## Zuerst die Libs und dann die Programme. Ordnung muss sein!
665 ipcopmake berkeley
666 ipcopmake BerkeleyDB ## The Perl module
667 ipcopmake java
668 ipcopmake libtiff
669 ipcopmake libjpeg
670 ipcopmake libxml2
671 ipcopmake spandsp
672 ipcopmake lzo
673 ipcopmake openvpn
674 ipcopmake pkg-config
675 ipcopmake glib
676 ipcopmake xampp
677 ipcopmake pam
678 ipcopmake pammysql
679 ipcopmake saslauthd PASS=1
680 ipcopmake openldap
681 ipcopmake saslauthd PASS=2
682 ipcopmake xinetd
683 ipcopmake ghostscript
684 ipcopmake cups
685 # ipcopmake lpd ## Im Moment aus, da CUPS vorhanden ist.
686 ipcopmake samba
687 ipcopmake sudo
688 ipcopmake mc
689 ipcopmake pwlib
690 ipcopmake openh323
691 ipcopmake wget
692 ipcopmake bridge-utils
693 echo -ne "`date -u '+%b %e %T'`: Building ### Mailserver ### \n" | tee -a $LOGFILE
694 ipcopmake postfix
695 ipcopmake fetchmail
696 ipcopmake cyrusimap
697 ipcopmake procmail
698 ipcopmake mailx
699 ipcopmake clamav
700 ipcopmake razor
701 ipcopmake spamassassin
702 ipcopmake amavisd
703 echo -ne "`date -u '+%b %e %T'`: Building ### VoIP-Server ### \n" | tee -a $LOGFILE
704 ipcopmake stund
705 ipcopmake asterisk
706 echo -ne "`date -u '+%b %e %T'`: Building ### MP3-Server ### \n" | tee -a $LOGFILE
707 ipcopmake lame
708 ipcopmake gnump3d
709 echo -ne "`date -u '+%b %e %T'`: Building ### P2P-Clients ### \n" | tee -a $LOGFILE
710 ipcopmake applejuice
711 ipcopmake edonkeyclc
712 ipcopmake sane
713 ipcopmake rsync
714 ipcopmake tcpwrapper
715 ipcopmake portmap
716 ipcopmake screen
717 ipcopmake nmap
718 ipcopmake htop
719 ipcopmake nfs
720 ipcopmake ncftp
721 ipcopmake ethereal
722 # wget http://www.guzu.net/linux/hddtemp.db && mv hddtemp.db $BASEDIR/build/etc/hddtemp.db
723 # ipcopmake hddtemp
724 # ipcopmake stunnel # Ausgeschaltet, weil wir es doch nicht nutzen
725 }
726
727 buildinstaller() {
728 # Run installer scripts one by one
729 LOGFILE="$BASEDIR/log/_build.installer.log"
730 export LOGFILE
731 echo -ne "`date -u '+%b %e %T'`: Stage4 installer build \n" | tee -a $LOGFILE
732 if [ 'i386' = $MACHINE ]; then
733 ipcopmake syslinux
734 ipcopmake as86
735 ipcopmake mbr
736 ipcopmake uClibc
737 fi
738 installmake busybox
739 installmake sysvinit
740 installmake e2fsprogs
741 installmake misc-progs
742 installmake slang
743 installmake util-linux
744 installmake newt
745 installmake pciutils
746 installmake pcmcia-cs
747 installmake kbd
748 installmake installer
749 installmake scsi.img
750 installmake driver.img
751 installmake initrd
752 installmake boot.img
753 }
754
755 buildpackages() {
756 LOGFILE="$BASEDIR/log/_build.packages.log"
757 export LOGFILE
758 echo "... see detailed log in _build.*.log files" >> $LOGFILE
759 echo -ne "`date -u '+%b %e %T'`: Stage5 packages build \n" | tee -a $LOGFILE
760 # Strip files
761 echo "`date -u '+%b %e %T'`: Stripping files" | tee -a $LOGFILE
762 find $LFS/lib $LFS/usr/lib $LFS/usr/share/rrdtool-* $LFS/install ! -type l \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
763 ! -name 'libc.so' ! -name 'libpthread.so' ! -name 'libcrypto.so.0.9.7.sha1' \
764 -ls -exec $LFS/tools/bin/strip --strip-all {} \; >> $LOGFILE 2>&1
765 # add -ls before -exec if you want to verify what files are stripped
766
767 find $LFS/{,s}bin $LFS/usr/{,s}bin $LFS/usr/local/{,s}bin ! -type l \
768 -exec file {} \; | grep " ELF " | cut -f1 -d ':' | xargs $LFS/tools/bin/strip --strip-all >> $LOGFILE 2>&1
769 # there add -v to strip to verify
770
771 if [ 'i386' = $MACHINE ]; then
772 # Create fcdsl packages
773 echo "`date -u '+%b %e %T'`: Building fcdsl tgz" | tee -a $LOGFILE
774 cp $LFS/install/images/fcdsl/license.txt $LFS >> $LOGFILE 2>&1
775 touch $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}
776 cd $LFS && tar cvfz $LFS/install/images/$SNAME-fcdsl-$VERSION.$MACHINE.tgz \
777 lib/modules/$KVER/misc/fcdsl*.o.gz \
778 lib/modules/$KVER-smp/misc/fcdsl*.o.gz \
779 usr/lib/isdn/{fds?base.bin,fd?ubase.frm} \
780 etc/fcdsl/fcdsl*.conf \
781 etc/drdsl/{drdsl,drdsl.ini} \
782 license.txt \
783 var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} >> $LOGFILE 2>&1
784 rm -f $LFS/license.txt >> $LOGFILE 2>&1
785 cd $BASEDIR
786 fi
787
788 # Generating list of packages used
789 echo "`date -u '+%b %e %T'`: Generating packages list from logs" | tee -a $LOGFILE
790 rm -f $BASEDIR/doc/packages-list
791 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
792 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
793 echo " * `basename $i`" >>$BASEDIR/doc/packages-list
794 fi
795 done
796 echo "====== List of softwares used to build $NAME Version: $VERSION ======" > $BASEDIR/doc/packages-list.txt
797 grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipcop$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$' \
798 $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt
799 rm -f $BASEDIR/doc/packages-list
800 # packages-list.txt is ready to be displayed for wiki page
801
802 # Create ISO for CDRom and USB-superfloppy
803 ipcopmake cdrom
804 rm -f $LFS/install/images/*usb*
805 cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1
806
807 ipfirepackages
808
809 # Cleanup
810 stdumount
811 rm -rf $BASEDIR/build/tmp/*
812
813 # Generating total list of files
814 echo "`date -u '+%b %e %T'`: Generating files list from logs" | tee -a $LOGFILE
815 rm -f $BASEDIR/log/FILES
816 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
817 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
818 echo "##" >>$BASEDIR/log/FILES
819 echo "## `basename $i`" >>$BASEDIR/log/FILES
820 echo "##" >>$BASEDIR/log/FILES
821 cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES
822 fi
823 done
824
825 cd $PWD
826
827 }
828
829 ipfirepackages() {
830 ipfiredist applejuice
831 ipfiredist asterisk
832 ipfiredist cyrusimap
833 ipfiredist fetchmail
834 ipfiredist gnump3d
835 ipfiredist lame
836 ipfiredist libtiff
837 ipfiredist libxml2
838 ipfiredist mc
839 ipfiredist postfix
840 ipfiredist pwlib
841 ipfiredist sane
842 ipfiredist spandsp
843 ipfiredist sudo
844 ipfiredist xampp
845 ipfiredist xinetd
846 test -d $BASEDIR/packages || mkdir $BASEDIR/packages
847 mv -f $LFS/paks/*.tar.gz $LFS/paks/*.md5 $BASEDIR/packages >> $LOGFILE 2>&1
848 rm -rf $LFS/paks
849 rm -rf $BASEDIR/build/tmp/*
850 }
851
852 # See what we're supposed to do
853 case "$1" in
854 build)
855 BUILDMACHINE=`uname -m`
856 PACKAGE=`ls -v -r $BASEDIR/cache/$SNAME-1.4.*-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
857 #only restore on a clean disk
858 if [ ! -f log/perl-*-tools ]; then
859 if [ ! -n "$PACKAGE" ]; then
860 echo "`date -u '+%b %e %T'`: Full toolchain compilation" | tee -a $LOGFILE
861 prepareenv
862 buildtoolchain
863 else
864 PACKAGENAME=${PACKAGE%.tar.gz}
865 echo "`date -u '+%b %e %T'`: Restore from $PACKAGE" | tee -a $LOGFILE
866 if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
867 tar zxf $PACKAGE
868 prepareenv
869 else
870 exiterror "$PACKAGENAME md5 did not match, check downloaded package"
871 fi
872 fi
873 else
874 echo "`date -u '+%b %e %T'`: Using installed toolchain" | tee -a $LOGFILE
875 prepareenv
876 fi
877 buildbase
878 buildipcop
879 buildinstaller
880 buildpackages
881 ;;
882 shell)
883 # enter a shell inside LFS chroot
884 # may be used to changed kernel settings
885 prepareenv
886 entershell
887 ;;
888 changelog)
889 echo -n "Loading new Changelog from SVN: "
890 svn log http://svn.ipfire.eu/svn/ipfire > doc/ChangeLog
891 echo "Finished!"
892 ;;
893 check)
894 echo "Checking sources files availability on the web"
895 if [ ! -d $DIR_CHK ]; then
896 mkdir -p $DIR_CHK
897 fi
898 FINISHED=0
899 cd $BASEDIR/lfs
900 for c in `seq $MAX_RETRIES`; do
901 if (( FINISHED==1 )); then
902 break
903 fi
904 FINISHED=1
905 cd $BASEDIR/lfs
906 for i in *; do
907 if [ -f "$i" -a "$i" != "Config" ]; then
908 make -s -f $i MACHINE=$MACHINE LFS_BASEDIR=$BASEDIR ROOT=$BASEDIR/build \
909 MESSAGE="$i\t ($c/$MAX_RETRIES)" check
910 if [ $? -ne 0 ]; then
911 echo "Check : wget error in lfs/$i"
912 FINISHED=0
913 fi
914 fi
915 done
916 done
917 cd -
918 ;;
919 checkclean)
920 echo "Erasing sources files availability tags"
921 rm -rf $DIR_CHK/*
922 ;;
923 clean)
924 for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
925 $LOSETUP -d $i 2>/dev/null
926 done
927 for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
928 umount $i
929 done
930 stdumount
931 for i in `seq 0 7`; do
932 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
933 umount /dev/loop${i} 2>/dev/null;
934 losetup -d /dev/loop${i} 2>/dev/null;
935 fi;
936 done
937 rm -rf $BASEDIR/build
938 rm -rf $BASEDIR/cdrom
939 rm -rf $BASEDIR/packages
940 rm -rf $BASEDIR/log
941 if [ -h /tools ]; then
942 rm -f /tools
943 fi
944 ;;
945 dist)
946 echo -ne "Updating & building source package from SVN: "
947 svn up > /dev/null
948 svn export http://svn.ipfire.eu/svn/ipfire ipfire-source/ --force > /dev/null
949 tar cfz ipfire-source-`date +'%Y-%m-%d'`-r`svn info | grep Revision | cut -c 11-`.tar.gz ipfire-source
950 rm ipfire-source/ -r
951 echo "Finished!"
952 ;;
953 newpak)
954 # create structure for a new package
955 echo -e "Name of the new package: $2"
956 if [ ! -f "lfs/$2" ]; then
957 echo "`date -u '+%b %e %T'`: Creating directory src/paks/$2"
958 mkdir -p src/paks/$2
959 cd src/paks/$2
960 echo "`date -u '+%b %e %T'`: Creating files"
961 cp $BASEDIR/lfs/postfix $BASEDIR/lfs/$2
962
963 touch ROOTFILES
964 touch CONFFILES
965 touch {,un}install.sh
966 ## install.sh
967 echo '#!/bin/bash' > install.sh
968 echo '#' >> install.sh
969 echo '#################################################################' >> install.sh
970 echo '# #' >> install.sh
971 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> install.sh
972 echo '# #' >> install.sh
973 echo '#################################################################' >> install.sh
974 echo '#' >> install.sh
975 echo '# Extract the files' >> install.sh
976 echo 'tar xfz files.tgz -C /' >> install.sh
977 echo 'cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2' >> install.sh
978 ## uninstall.sh
979 echo '#!/bin/bash' > uninstall.sh
980 echo '#################################################################' >> uninstall.sh
981 echo '# #' >> uninstall.sh
982 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> uninstall.sh
983 echo '# #' >> uninstall.sh
984 echo '#################################################################' >> uninstall.sh
985 echo '#' >> uninstall.sh
986 echo '# Delete the files' >> uninstall.sh
987 echo '## Befehl fehlt noch' >> uninstall.sh
988 echo 'rm -f /opt/pakfire/installed/ROOTFILES.$2' >> uninstall.sh
989 echo "`date -u '+%b %e %T'`: Adding files to SVN"
990 cd - && svn add lfs/$2 && svn add src/paks/$2
991
992 echo -n "Do you want to remove the folders? [y/n]"
993 read REM
994 if [ "$REM" == "y" ]; then
995 echo "Removing the folders..."
996 svn del src/paks/$2 --force
997 else
998 echo "Folders are kept."
999 fi
1000 else
1001 echo "$2 already exists"
1002 fi
1003 exit 0
1004 ;;
1005 prefetch)
1006 if [ ! -d $BASEDIR/cache ]; then
1007 mkdir $BASEDIR/cache
1008 fi
1009 mkdir -p $BASEDIR/log
1010 echo "`date -u '+%b %e %T'`:Preload all source files" | tee -a $LOGFILE
1011 FINISHED=0
1012 cd $BASEDIR/lfs
1013 for c in `seq $MAX_RETRIES`; do
1014 if (( FINISHED==1 )); then
1015 break
1016 fi
1017 FINISHED=1
1018 cd $BASEDIR/lfs
1019 for i in *; do
1020 if [ -f "$i" -a "$i" != "Config" ]; then
1021 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
1022 if [ $? -ne 0 ]; then
1023 echo "Prefetch : wget error in lfs/$i"
1024 FINISHED=0
1025 else
1026 if [ $c -eq 1 ]; then
1027 echo "Prefetch : lfs/$i files loaded"
1028 fi
1029 fi
1030 fi
1031 done
1032 done
1033 echo "Prefetch : verifying md5sum"
1034 ERROR=0
1035 for i in *; do
1036 if [ -f "$i" -a "$i" != "Config" ]; then
1037 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
1038 if [ $? -ne 0 ]; then
1039 echo "md5 difference in lfs/$i"
1040 ERROR=1
1041 fi
1042 fi
1043 done
1044 if [ $ERROR -eq 0 ]; then
1045 echo "Prefetch : all files md5sum match"
1046 fi
1047 cd -
1048 ;;
1049 toolchain)
1050 prepareenv
1051 buildtoolchain
1052 BUILDMACHINE=`uname -m`
1053 echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
1054 cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
1055 build/{bin,etc,usr/bin,usr/local} \
1056 build/tools/{bin,etc,*-linux-gnu,include,lib,libexec,sbin,share,var} \
1057 log >> $LOGFILE
1058 md5sum cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
1059 > cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5
1060 stdumount
1061 ;;
1062 gettoolchain)
1063 BUILDMACHINE=`uname -m`
1064 # arbitrary name to be updated in case of new toolchain package upload
1065 PACKAGE=$SNAME-1.4-toolchain-$BUILDMACHINE
1066 URL_IPFIRE=`grep URL_IPFIRE lfs/Config | awk '{ print $3 }'`
1067 echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
1068 cd $BASEDIR/cache
1069 wget $URL_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5
1070 if [ $? -ne 0 ]; then
1071 echo "`date -u '+%b %e %T'`: error downloading toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE
1072 else
1073 if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
1074 echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
1075 echo "`date -u '+%b %e %T'`: Uncompressing toolchain" | tee -a $LOGFILE
1076 cd $BASEDIR && tar xfz cache/$PACKAGE.tar.gz -C .
1077 rm -vf $BASEDIR/cache/$PACKAGE.{tar.gz,md5}
1078 else
1079 exiterror "$PACKAGE.md5 did not match, check downloaded package"
1080 fi
1081 fi
1082 ;;
1083 paks)
1084 prepareenv
1085 buildpackages
1086 # ipfirepackages
1087 ;;
1088 update)
1089 echo "Load the latest source-files:"
1090 svn update
1091 ;;
1092 commit)
1093 echo "Upload the changed files:"
1094 svn commit
1095 svn up > /dev/null
1096 ;;
1097 make)
1098 echo "Do a complete compile:"
1099 ./make.sh prefetch && ./make.sh gettoolchain && ./make.sh build
1100 ;;
1101 diff)
1102 echo -ne "Make a local diff to last SVN revision: "
1103 svn diff > ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff
1104 echo "Finished!"
1105 echo "Diff was successfully saved to ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff"
1106 ;;
1107 sync)
1108 echo -e "Syncing Cache to FTP:"
1109 echo -ne "Password for mirror.ipfire.org: "; read PASS
1110 rm -f doc/packages-to-remove-from-ftp
1111 ncftpls -u web3 -p $PASS ftp://mirror.ipfire.org/html/source-packages/source/ > ftplist
1112 for i in `ls -w1 cache/`; do
1113 grep $i ftplist
1114 if [ "$?" -ne "0" ]; then
1115 ncftpput -u web3 -p $PASS mirror.ipfire.org /html/source-packages/source cache/$i
1116 if [ "$?" -eq "0" ]; then
1117 echo -e "$i was successfully uploaded to the ftp server."
1118 else
1119 echo -e "There was an error while uploading $i to the ftp server."
1120 fi
1121 fi
1122 done
1123 for i in `cat ftplist`; do
1124 ls -w1 cache/ | grep $i
1125 if [ "$?" -eq "1" ]; then
1126 echo $i | grep -v toolchain >> doc/packages-to-remove-from-ftp
1127 fi
1128 done
1129 rm -f ftplist
1130 ;;
1131 pub)
1132 echo -e "Upload the ISO to the beta-mirror!"
1133 echo -ne "Password for mirror.ipfire.org: "; read PASS
1134
1135 ncftpls -u web3 -p $PASS ftp://mirror.ipfire.org/html/source-packages/beta/ | grep `svn info | grep Revision | cut -c 11-`
1136 if [ "$?" -eq "1" ]; then
1137 cp $BASEDIR/ipfire-install-1.4.i386.iso $BASEDIR/ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso
1138 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
1139 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
1140 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
1141 if [ "$?" -eq "0" ]; then
1142 echo -e "The ISO of Revision `svn info | grep Revision | cut -c 11-` was successfully uploaded to the ftp server."
1143 else
1144 echo -e "There was an error while uploading the ISO to the ftp server."
1145 fi
1146 else
1147 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!"
1148 fi
1149 rm -f ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso{,.md5}
1150 ;;
1151 *)
1152 echo "Usage: $0 {build|changelog|check|checkclean|clean|commit|diff|dist|gettoolchain|make|newpak|prefetch|pub|shell|sync|toolchain|update}"
1153 cat doc/make.sh-usage
1154 exit 1
1155 ;;
1156 esac