Zwischencommit fuer LFS.
[ipfire-2.x.git] / make.sh
CommitLineData
df5e82b3 1#!/bin/bash
df5e82b3
MT
2############################################################################
3# #
f8e5510c 4# This file is part of the IPFire Firewall. #
df5e82b3 5# #
f8e5510c 6# IPFire is free software; you can redistribute it and/or modify #
df5e82b3
MT
7# it under the terms of the GNU General Public License as published by #
8# the Free Software Foundation; either version 2 of the License, or #
9# (at your option) any later version. #
10# #
f8e5510c 11# IPFire is distributed in the hope that it will be useful, #
df5e82b3
MT
12# but WITHOUT ANY WARRANTY; without even the implied warranty of #
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
14# GNU General Public License for more details. #
15# #
16# You should have received a copy of the GNU General Public License #
f8e5510c 17# along with IPFire; if not, write to the Free Software #
df5e82b3
MT
18# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
19# #
15679d9f 20# Copyright (C) 2006 IPFire-Team <info@ipfire.eu>. #
df5e82b3
MT
21# #
22############################################################################
df5e82b3
MT
23#
24
15679d9f
MT
25NAME="IPFire" # Software name
26SNAME="ipfire" # Short name
27VERSION="2.0" # Version number
28SLOGAN="www.ipfire.eu" # Software slogan
29CONFIG_ROOT=/var/ipfire # Configuration rootdir
30NICE=10 # Nice level
857d9bf2 31MAX_RETRIES=1 # prefetch/check loop
15679d9f
MT
32KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'`
33MACHINE=`uname -m`
34SVN_REVISION=`svn info | grep Revision | cut -c 11-`
35
03ad5f93
MT
36IPFVER="full" # Which version should be compiled? (full|light|voice)
37
38# Set an information about the build number
15679d9f
MT
39if [ -e ./.svn ]; then
40 FIREBUILD=`cat .svn/entries |sed -n 's/^[ \t]*revision=\"// p' | sed -n 's/\".*$// p'`
41fi
42
43# Debian specific settings
44if [ ! -e /etc/debian_version ]; then
df5e82b3 45 FULLPATH=`which $0`
15679d9f 46else
df5e82b3
MT
47 if [ -x /usr/bin/realpath ]; then
48 FULLPATH=`/usr/bin/realpath $0`
49 else
50 echo "ERROR: Need to do apt-get install realpath"
51 exit 1
52 fi
15679d9f 53fi
df5e82b3 54
15679d9f
MT
55PWD=`pwd`
56BASENAME=`basename $0`
57BASEDIR=`echo $FULLPATH | sed "s/\/$BASENAME//g"`
58LOGFILE=$BASEDIR/log/_build.preparation.log
59export BASEDIR LOGFILE
60DIR_CHK=$BASEDIR/cache/check
61mkdir $BASEDIR/log/ 2>/dev/null
df5e82b3 62
15679d9f
MT
63# Include funtions
64. tools/make-functions
df5e82b3 65
15679d9f
MT
66if [ -f .config ]; then
67 . .config
68else
6b8cff41
MT
69 echo -e "${BOLD}No configuration found!${NORMAL}"
70 echo -ne "Do you want to create one (y/N)?"
71 read CREATE_CONFIG
72 echo ""
73 if [ "$CREATE_CONFIG" == "y" ]; then
74 make_config
75 fi
15679d9f 76fi
df5e82b3
MT
77
78prepareenv() {
79 ############################################################################
80 # #
81 # Are we running the right shell? #
82 # #
83 ############################################################################
84 if [ ! "$BASH" ]; then
85 exiterror "BASH environment variable is not set. You're probably running the wrong shell."
86 fi
87
88 if [ -z "${BASH_VERSION}" ]; then
89 exiterror "Not running BASH shell."
90 fi
91
92
93 ############################################################################
94 # #
95 # Trap on emergency exit #
96 # #
97 ############################################################################
98 trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGKILL SIGSTOP SIGQUIT
99
100
101 ############################################################################
102 # #
103 # Resetting our nice level #
104 # #
105 ############################################################################
9b0ff0a0 106 echo -ne "Resetting our nice level to $NICE" | tee -a $LOGFILE
df5e82b3
MT
107 renice $NICE $$ > /dev/null
108 if [ `nice` != "$NICE" ]; then
15679d9f 109 beautify message FAIL
df5e82b3 110 exiterror "Failed to set correct nice level"
15679d9f
MT
111 else
112 beautify message DONE
df5e82b3
MT
113 fi
114
15679d9f 115
df5e82b3
MT
116 ############################################################################
117 # #
118 # Checking if running as root user #
119 # #
120 ############################################################################
9b0ff0a0 121 echo -ne "Checking if we're running as root user" | tee -a $LOGFILE
df5e82b3 122 if [ `id -u` != 0 ]; then
15679d9f 123 beautify message FAIL
df5e82b3 124 exiterror "Not building as root"
15679d9f
MT
125 else
126 beautify message DONE
df5e82b3
MT
127 fi
128
129
130 ############################################################################
131 # #
132 # Checking for necessary temporary space #
133 # #
134 ############################################################################
9b0ff0a0 135 echo -ne "Checking for necessary space on disk $BASE_DEV" | tee -a $LOGFILE
df5e82b3
MT
136 BASE_DEV=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $1 }'`
137 BASE_ASPACE=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $4 }'`
138 if (( 2202000 > $BASE_ASPACE )); then
139 BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'`
140 if (( 2202000 - $BASE_USPACE > $BASE_ASPACE )); then
15679d9f 141 beautify message FAIL
df5e82b3
MT
142 exiterror "Not enough temporary space available, need at least 2.1GB on $BASE_DEV"
143 fi
15679d9f
MT
144 else
145 beautify message DONE
df5e82b3
MT
146 fi
147
148 ############################################################################
149 # #
150 # Building Linux From Scratch system #
151 # #
152 ############################################################################
df5e82b3
MT
153 # Set umask
154 umask 022
155
156 # Set LFS Directory
157 LFS=$BASEDIR/build
158
159 # Check /tools symlink
160 if [ -h /tools ]; then
161 rm -f /tools
162 fi
163 if [ ! -a /tools ]; then
164 ln -s $BASEDIR/build/tools /
165 fi
166 if [ ! -h /tools ]; then
167 exiterror "Could not create /tools symbolic link."
168 fi
169
170 # Setup environment
171 set +h
172 LC_ALL=POSIX
dd714b8a
MT
173 MAKETUNING="-j8"
174 export LFS LC_ALL CFLAGS CXXFLAGS MAKETUNING
df5e82b3
MT
175 unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
176
177 # Make some extra directories
178 mkdir -p $BASEDIR/build/{tools,etc,usr/src} 2>/dev/null
90d372c4 179 mkdir -p $BASEDIR/build/{dev/{shm,pts},proc,sys}
df5e82b3 180 mkdir -p $BASEDIR/{cache,ccache} 2>/dev/null
90d372c4
MT
181 mkdir -p $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache}
182
183 mknod -m 600 $BASEDIR/build/dev/console c 5 1 2>/dev/null
184 mknod -m 666 $BASEDIR/build/dev/null c 1 3 2>/dev/null
df5e82b3
MT
185
186 # Make all sources and proc available under lfs build
90d372c4 187 mount --bind /dev $BASEDIR/build/dev
857d9bf2
MT
188 mount --bind /dev/pts $BASEDIR/build/dev/pts
189 mount --bind /dev/shm $BASEDIR/build/dev/shm
190 mount --bind /proc $BASEDIR/build/proc
191 mount --bind /sys $BASEDIR/build/sys
df5e82b3
MT
192 mount --bind $BASEDIR/cache $BASEDIR/build/usr/src/cache
193 mount --bind $BASEDIR/ccache $BASEDIR/build/usr/src/ccache
194 mount --bind $BASEDIR/config $BASEDIR/build/usr/src/config
195 mount --bind $BASEDIR/doc $BASEDIR/build/usr/src/doc
196 mount --bind $BASEDIR/html $BASEDIR/build/usr/src/html
197 mount --bind $BASEDIR/langs $BASEDIR/build/usr/src/langs
198 mount --bind $BASEDIR/lfs $BASEDIR/build/usr/src/lfs
199 mount --bind $BASEDIR/log $BASEDIR/build/usr/src/log
200 mount --bind $BASEDIR/src $BASEDIR/build/usr/src/src
201
119ee469 202 # This is a temporary hack!!!
6b8cff41
MT
203 if [ ! -f /tools/bin/hostname ]; then
204 cp -f /bin/hostname /tools/bin/hostname 2>/dev/null
205 fi
119ee469 206
df5e82b3
MT
207 # Run LFS static binary creation scripts one by one
208 export CCACHE_DIR=$BASEDIR/ccache
209 export CCACHE_HASHDIR=1
210
211 # Remove pre-install list of installed files in case user erase some files before rebuild
212 rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null
213}
214
df5e82b3
MT
215buildtoolchain() {
216 LOGFILE="$BASEDIR/log/_build.toolchain.log"
217 export LOGFILE
df5e82b3
MT
218 ORG_PATH=$PATH
219 NATIVEGCC=`gcc --version | grep GCC | awk {'print $3'}`
220 export NATIVEGCC GCCmajor=${NATIVEGCC:0:1} GCCminor=${NATIVEGCC:2:1} GCCrelease=${NATIVEGCC:4:1}
221 lfsmake1 ccache
15679d9f
MT
222 lfsmake1 binutils PASS=1
223 lfsmake1 gcc PASS=1
df5e82b3 224 export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH
dd714b8a
MT
225 lfsmake1 linux-libc-header
226 lfsmake1 glibc
9b0ff0a0 227 lfsmake1 cleanup-toolchain PASS=1
df5e82b3
MT
228 lfsmake1 tcl
229 lfsmake1 expect
df5e82b3 230 lfsmake1 dejagnu
15679d9f
MT
231 lfsmake1 gcc PASS=2
232 lfsmake1 binutils PASS=2
dd714b8a
MT
233 lfsmake1 ncurses
234 lfsmake1 bash
df5e82b3 235 lfsmake1 bzip2
dd714b8a 236 lfsmake1 coreutils
df5e82b3
MT
237 lfsmake1 diffutils
238 lfsmake1 findutils
dd714b8a 239 lfsmake1 gawk
df5e82b3 240 lfsmake1 gettext
dd714b8a
MT
241 lfsmake1 grep
242 lfsmake1 gzip
243 lfsmake1 m4
244 lfsmake1 make
df5e82b3 245 lfsmake1 patch
dd714b8a
MT
246 lfsmake1 perl
247 lfsmake1 sed
df5e82b3
MT
248 lfsmake1 tar
249 lfsmake1 texinfo
df5e82b3 250 lfsmake1 util-linux
9b0ff0a0 251 lfsmake1 cleanup-toolchain PASS=2
df5e82b3
MT
252 export PATH=$ORG_PATH
253}
254
255buildbase() {
256 LOGFILE="$BASEDIR/log/_build.base.log"
257 export LOGFILE
df5e82b3 258 lfsmake2 stage2
9b0ff0a0
MT
259# lfsmake2 makedev
260 lfsmake2 linux-libc-header
df5e82b3
MT
261 lfsmake2 man-pages
262 lfsmake2 glibc
9b0ff0a0 263 lfsmake2 cleanup-toolchain PASS=3
df5e82b3
MT
264 lfsmake2 binutils
265 lfsmake2 gcc
9b0ff0a0 266 lfsmake2 berkeley
df5e82b3 267 lfsmake2 coreutils
df5e82b3 268 lfsmake2 iana-etc
df5e82b3
MT
269 lfsmake2 m4
270 lfsmake2 bison
9b0ff0a0
MT
271 lfsmake2 ncurses
272 lfsmake2 procps
df5e82b3 273 lfsmake2 sed
9b0ff0a0 274 lfsmake2 libtool
df5e82b3 275 lfsmake2 perl
9b0ff0a0
MT
276 lfsmake2 readline
277 lfsmake2 zlib
df5e82b3
MT
278 lfsmake2 autoconf
279 lfsmake2 automake
280 lfsmake2 bash
df5e82b3
MT
281 lfsmake2 bzip2
282 lfsmake2 diffutils
df5e82b3 283 lfsmake2 e2fsprogs
9b0ff0a0
MT
284 lfsmake2 file
285 lfsmake2 findutils
286 lfsmake2 flex
15679d9f 287 lfsmake2 grub
9b0ff0a0
MT
288 lfsmake2 gawk
289 lfsmake2 gettext
290 lfsmake2 grep
291 lfsmake2 groff
df5e82b3 292 lfsmake2 gzip
9b0ff0a0
MT
293 lfsmake2 inetutils
294 lfsmake2 iproute2
295 lfsmake2 kbd
296 lfsmake2 less
df5e82b3 297 lfsmake2 make
9b0ff0a0
MT
298 lfsmake2 man
299 lfsmake2 mktemp
df5e82b3
MT
300 lfsmake2 modutils
301 lfsmake2 patch
df5e82b3
MT
302 lfsmake2 psmisc
303 lfsmake2 shadow
304 lfsmake2 sysklogd
305 lfsmake2 sysvinit
306 lfsmake2 tar
90d372c4
MT
307 lfsmake2 texinfo
308 lfsmake2 udev
df5e82b3 309 lfsmake2 util-linux
90d372c4 310 lfsmake2 vim
df5e82b3
MT
311}
312
15679d9f 313buildipfire() {
907cd036 314 LOGFILE="$BASEDIR/log/_build.ipfire.log"
df5e82b3 315 export LOGFILE
a5ee5623
MT
316 ipfiremake inetutils
317 ipfiremake net-tools
318 ipfiremake ed
15679d9f
MT
319 ipfiremake configroot
320 ipfiremake dhcp
321 ipfiremake dhcpcd
322 ipfiremake libusb
323 ipfiremake libpcap
d316437b
MT
324# Temporary disabled.
325# ipfiremake linux-atm
15679d9f
MT
326 ipfiremake ppp
327 ipfiremake rp-pppoe
328 ipfiremake unzip
6b8cff41
MT
329 ipfiremake linux PASS=I
330 ipfiremake linux PASS=S
c3e36980
MT
331# ipfiremake 3cp4218 PASS=SMP
332# ipfiremake amedyn PASS=SMP
333# ipfiremake cxacru PASS=SMP
334# ipfiremake eagle PASS=SMP
335# ipfiremake cnx_pci PASS=SMP
336# ipfiremake fcdsl PASS=SMP
337# ipfiremake fcdsl2 PASS=SMP
338# ipfiremake fcdslsl PASS=SMP
339# ipfiremake fcdslusb PASS=SMP
340# ipfiremake fcdslslusb PASS=SMP
341# ipfiremake fcpci PASS=SMP
342# ipfiremake fcclassic PASS=SMP
343# ipfiremake pulsar PASS=SMP
344# ipfiremake unicorn PASS=SMP
345# ipfiremake promise-sata-300-tx PASS=SMP
346 ipfiremake linux
6b8cff41
MT
347# ipfiremake 3cp4218
348# ipfiremake amedyn
349# ipfiremake cxacru
350# ipfiremake eciadsl
351# ipfiremake eagle
352# ipfiremake speedtouch
353# ipfiremake cnx_pci
354# ipfiremake fcdsl
355# ipfiremake fcdsl2
356# ipfiremake fcdslsl
357# ipfiremake fcdslusb
358# ipfiremake fcdslslusb
f59e1e88
MT
359# ipfiremake fcpci
360# ipfiremake fcclassic
6b8cff41 361# ipfiremake pulsar
f59e1e88
MT
362# ipfiremake unicorn
363# ipfiremake promise-sata-300-tx
6b8cff41 364# ipfiremake pcmciautils
15679d9f
MT
365 ipfiremake expat
366 ipfiremake gdbm
367 ipfiremake gmp
368 ipfiremake openssl
369 ipfiremake python
370 ipfiremake libnet
371 ipfiremake libpng
372 ipfiremake libtiff
373 ipfiremake libjpeg
374 ipfiremake lcms
375 ipfiremake libmng
376 ipfiremake freetype
377 ipfiremake gd
378 ipfiremake popt
379 ipfiremake slang
380 ipfiremake newt
381 ipfiremake libcap
382 ipfiremake pciutils
383 ipfiremake pcre
15679d9f 384 ipfiremake libxml2
6b8cff41 385 ipfiremake BerkeleyDB
15679d9f
MT
386 ipfiremake mysql
387 ipfiremake saslauthd PASS=1
388 ipfiremake openldap
389 ipfiremake apache2
390 ipfiremake php
391 ipfiremake subversion
392 ipfiremake apache2 PASS=CONFIG
393 ipfiremake arping
394 ipfiremake beep
395 ipfiremake bind
396 ipfiremake capi4k-utils
397 ipfiremake cdrtools
398 ipfiremake dnsmasq
399 ipfiremake dosfstools
400 ipfiremake ethtool
401 ipfiremake ez-ipupdate
402 ipfiremake fcron
403 ipfiremake perl-GD
404 ipfiremake gnupg
405 ipfiremake hdparm
406 ipfiremake ibod
407 ipfiremake initscripts
408 ipfiremake iptables
409 ipfiremake ipac-ng
410 ipfiremake ipaddr
411 ipfiremake iproute2
412 ipfiremake iptstate
413 ipfiremake iputils
414 ipfiremake l7-protocols
415 ipfiremake isapnptools
416 ipfiremake isdn4k-utils
417 ipfiremake kudzu
418 ipfiremake logrotate
419 ipfiremake logwatch
420 ipfiremake mingetty
421 ipfiremake misc-progs
422 ipfiremake mtools
423 ipfiremake nano
424 ipfiremake nash
425 ipfiremake nasm
426 ipfiremake URI
427 ipfiremake HTML-Tagset
428 ipfiremake HTML-Parser
429 ipfiremake Compress-Zlib
430 ipfiremake Digest
431 ipfiremake Digest-SHA1
432 ipfiremake Digest-HMAC
433 ipfiremake libwww-perl
434 ipfiremake Net-DNS
435 ipfiremake Net-IPv4Addr
436 ipfiremake Net_SSLeay
437 ipfiremake IO-Stringy
438 ipfiremake Unix-Syslog
439 ipfiremake Mail-Tools
440 ipfiremake MIME-Tools
441 ipfiremake Net-Server
442 ipfiremake Convert-TNEF
443 ipfiremake Convert-UUlib
444 ipfiremake Archive-Tar
445 ipfiremake Archive-Zip
446 ipfiremake Text-Tabs+Wrap
447 ipfiremake Locale-Country
448 ipfiremake GeoIP
449 ipfiremake fwhits
450 ipfiremake noip_updater
451 ipfiremake ntp
452 ipfiremake oinkmaster
453 ipfiremake openssh
454 ipfiremake openswan
455 ipfiremake pptpclient
456 ipfiremake rrdtool
457 ipfiremake setserial
458 ipfiremake setup
459 ipfiremake snort
460 ipfiremake squid
461 ipfiremake squid-graph
462 ipfiremake squidguard
463 ipfiremake tcpdump
464 ipfiremake traceroute
465 ipfiremake vlan
466 ipfiremake wireless
467 ipfiremake libsafe
468 ipfiremake 3c5x9setup
469 ipfiremake pakfire
470 ipfiremake startscripts
471 ipfiremake java
472 ipfiremake bootsplash
473 ipfiremake spandsp
474 ipfiremake lzo
475 ipfiremake openvpn
476 ipfiremake pkg-config
477 ipfiremake glib
478 ipfiremake pam
479 ipfiremake pammysql
480 ipfiremake saslauthd PASS=2
481 ipfiremake xinetd
482 ipfiremake ghostscript
483 ipfiremake cups
484 ipfiremake samba
485 ipfiremake sudo
486 ipfiremake mc
487 ipfiremake wget
488 ipfiremake wput
489 ipfiremake bridge-utils
490 ipfiremake screen
491 ipfiremake hddtemp
492 ipfiremake smartmontools
493 ipfiremake htop
494 ipfiremake lynx
495 ipfiremake postfix
496 ipfiremake procmail
497 ipfiremake fetchmail
498 ipfiremake cyrusimap
499 ipfiremake webcyradm
500 ipfiremake mailx
501 ipfiremake clamav
502 ipfiremake razor
503 ipfiremake spamassassin
504# ipfiremake amavisd
505 ipfiremake stund
506 ipfiremake zaptel
507 ipfiremake libpri
508 ipfiremake bristuff
509 ipfiremake asterisk
510 ipfiremake mpg123
511 ipfiremake libmad
512 ipfiremake libogg
513 ipfiremake libvorbis
514 ipfiremake lame
515 ipfiremake xvid
516 ipfiremake mpeg2dec
517 ipfiremake ffmpeg
518 ipfiremake sox
519 ipfiremake gnump3d
520 ipfiremake videolan
521 ipfiremake applejuice
522 ipfiremake ocaml
523 ipfiremake mldonkey
524 ipfiremake ntop
525 ipfiremake rsync
526 ipfiremake tcpwrapper
527 ipfiremake portmap
528 ipfiremake nfs
529 ipfiremake nmap
530 ipfiremake mbmon
531 ipfiremake iftop
532 ipfiremake ncftp
533 ipfiremake cftp
534 ipfiremake etherwake
535 ipfiremake ethereal
536 ipfiremake tftp-hpa
537 ipfiremake iptraf
538 ipfiremake nagios
539 ipfiremake yasuc
df5e82b3
MT
540}
541
542buildinstaller() {
543 # Run installer scripts one by one
544 LOGFILE="$BASEDIR/log/_build.installer.log"
545 export LOGFILE
15679d9f
MT
546 ipfiremake syslinux
547 ipfiremake as86
548 ipfiremake mbr
549 ipfiremake uClibc
df5e82b3
MT
550 installmake busybox
551 installmake sysvinit
552 installmake e2fsprogs
553 installmake misc-progs
554 installmake slang
555 installmake util-linux
556 installmake newt
557 installmake pciutils
558 installmake pcmcia-cs
559 installmake kbd
560 installmake installer
561 installmake scsi.img
562 installmake driver.img
563 installmake initrd
564 installmake boot.img
565}
566
567buildpackages() {
568 LOGFILE="$BASEDIR/log/_build.packages.log"
569 export LOGFILE
570 echo "... see detailed log in _build.*.log files" >> $LOGFILE
571 echo -ne "`date -u '+%b %e %T'`: Stage5 packages build \n" | tee -a $LOGFILE
572 # Strip files
573 echo "`date -u '+%b %e %T'`: Stripping files" | tee -a $LOGFILE
574 find $LFS/lib $LFS/usr/lib $LFS/usr/share/rrdtool-* $LFS/install ! -type l \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
575 ! -name 'libc.so' ! -name 'libpthread.so' ! -name 'libcrypto.so.0.9.7.sha1' \
90350ff3 576 -exec $LFS/tools/bin/strip --strip-all {} \; >> $LOGFILE 2>&1
df5e82b3
MT
577 # add -ls before -exec if you want to verify what files are stripped
578
579 find $LFS/{,s}bin $LFS/usr/{,s}bin $LFS/usr/local/{,s}bin ! -type l \
580 -exec file {} \; | grep " ELF " | cut -f1 -d ':' | xargs $LFS/tools/bin/strip --strip-all >> $LOGFILE 2>&1
581 # there add -v to strip to verify
582
583 if [ 'i386' = $MACHINE ]; then
584 # Create fcdsl packages
585 echo "`date -u '+%b %e %T'`: Building fcdsl tgz" | tee -a $LOGFILE
586 cp $LFS/install/images/fcdsl/license.txt $LFS >> $LOGFILE 2>&1
587 touch $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}
588 cd $LFS && tar cvfz $LFS/install/images/$SNAME-fcdsl-$VERSION.$MACHINE.tgz \
589 lib/modules/$KVER/misc/fcdsl*.o.gz \
590 lib/modules/$KVER-smp/misc/fcdsl*.o.gz \
591 usr/lib/isdn/{fds?base.bin,fd?ubase.frm} \
592 etc/fcdsl/fcdsl*.conf \
593 etc/drdsl/{drdsl,drdsl.ini} \
594 license.txt \
595 var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} >> $LOGFILE 2>&1
596 rm -f $LFS/license.txt >> $LOGFILE 2>&1
597 cd $BASEDIR
598 fi
df5e82b3
MT
599
600 # Generating list of packages used
601 echo "`date -u '+%b %e %T'`: Generating packages list from logs" | tee -a $LOGFILE
602 rm -f $BASEDIR/doc/packages-list
603 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
604 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
7471f6ab 605 echo "* `basename $i`" >>$BASEDIR/doc/packages-list
df5e82b3
MT
606 fi
607 done
7471f6ab 608 echo "== List of softwares used to build $NAME Version: $VERSION ==" > $BASEDIR/doc/packages-list.txt
f522e307 609 grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipfire$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$\|.tgz$\|-config$' \
df5e82b3
MT
610 $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt
611 rm -f $BASEDIR/doc/packages-list
c9673262 612 # packages-list.txt is ready to be displayed for wiki page
df5e82b3 613
f522e307 614 # Create ISO for CDROM
15679d9f 615 ipfiremake cdrom
e67a57fe 616 rm -f $LFS/install/images/*usb*
c3defe9b 617 cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1
c9673262 618
e67a57fe
MT
619 ipfirepackages
620
621 # Cleanup
622 stdumount
623 rm -rf $BASEDIR/build/tmp/*
624
625 # Generating total list of files
626 echo "`date -u '+%b %e %T'`: Generating files list from logs" | tee -a $LOGFILE
627 rm -f $BASEDIR/log/FILES
628 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
629 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
630 echo "##" >>$BASEDIR/log/FILES
631 echo "## `basename $i`" >>$BASEDIR/log/FILES
632 echo "##" >>$BASEDIR/log/FILES
633 cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES
634 fi
635 done
913668ba 636 cd $BASEDIR/packages; ls -w1 *.ipfire | awk -F ".ipfire" '{ print $1 }' > $BASEDIR/packages/packages_list.txt
5e773594 637 echo -n "###EOF###" >> $BASEDIR/packages/packages_list.txt
e67a57fe
MT
638
639 cd $PWD
640
641}
642
643ipfirepackages() {
013a23e2
MT
644 if [ -d "$BASEDIR/packages" ]; then
645 for i in `ls $BASEDIR/packages`; do
646 touch $BASEDIR/build/install/packages/$i.empty
647 done
648 fi
f1baee3e 649# ipfiredist amavisd
78331e30 650 ipfiredist applejuice
5ac2da9f 651 ipfiredist asterisk
c7acba4a 652 ipfiredist clamav
483f59cd 653 ipfiredist cups
78331e30
MT
654 ipfiredist cyrusimap
655 ipfiredist fetchmail
d1b6aa72 656 ipfiredist ffmpeg
78331e30 657 ipfiredist gnump3d
7a98bae5 658 ipfiredist iptraf
0d0521b6 659 ipfiredist java
78331e30 660 ipfiredist lame
d1b6aa72 661 ipfiredist libmad
ae179f6e 662 ipfiredist libogg
78331e30 663 ipfiredist libtiff
ae179f6e 664 ipfiredist libvorbis
f0ca8c34 665 ipfiredist mailx
3ab910dd 666 ipfiredist mldonkey
d1b6aa72 667 ipfiredist mpeg2dec
2ae94d2d 668 ipfiredist nagios
f0ca8c34
MT
669 ipfiredist nfs
670 ipfiredist nmap
3e45cc09 671 ipfiredist ntop
27ac55bf 672 ipfiredist portmap
78331e30 673 ipfiredist postfix
371d9df0 674 ipfiredist procmail
90350ff3 675 ipfiredist samba
ae179f6e 676 ipfiredist sox
f0ca8c34 677 ipfiredist spamassassin
7a98bae5 678 ipfiredist subversion
d1b6aa72 679 ipfiredist videolan
f1baee3e 680 ipfiredist webcyradm
d1b6aa72 681 ipfiredist xvid
0145f271 682 ipfiredist yasuc
78331e30 683 test -d $BASEDIR/packages || mkdir $BASEDIR/packages
d535503d 684 mv -f $LFS/install/packages/*.{ipfire,md5} $BASEDIR/packages >> $LOGFILE 2>&1
483f59cd 685 rm -rf $BASEDIR/build/install/packages/*
df5e82b3
MT
686}
687
688# See what we're supposed to do
689case "$1" in
690build)
9729e787 691 clear
df5e82b3 692 BUILDMACHINE=`uname -m`
712d859c 693 PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
df5e82b3 694 #only restore on a clean disk
9b0ff0a0 695 if [ ! -f log/cleanup-toolchain-2-tools ]; then
df5e82b3 696 if [ ! -n "$PACKAGE" ]; then
15679d9f 697 beautify build_stage "Full toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`"
df5e82b3
MT
698 prepareenv
699 buildtoolchain
700 else
701 PACKAGENAME=${PACKAGE%.tar.gz}
15679d9f 702 beautify build_stage "Packaged toolchain compilation"
df5e82b3
MT
703 if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
704 tar zxf $PACKAGE
705 prepareenv
706 else
707 exiterror "$PACKAGENAME md5 did not match, check downloaded package"
708 fi
709 fi
710 else
9729e787
MT
711 echo -n "Using installed toolchain" | tee -a $LOGFILE
712 beautify message SKIP
df5e82b3
MT
713 prepareenv
714 fi
5cfe86e6 715
15679d9f 716 beautify build_stage "Building base"
df5e82b3 717 buildbase
15679d9f
MT
718
719 beautify build_stage "Building IPFire"
720 buildipfire
5cfe86e6
HS
721
722 # Setzen des IPFire Builds
8af06406 723 if [ "$FIREBUILD" ]; then
e57bc1fd 724 echo "$FIREBUILD" > $BASEDIR/build/var/ipfire/firebuild
5cfe86e6 725 else
e57bc1fd 726 echo "_(OvO)_" > $BASEDIR/build/var/ipfire/firebuild
5cfe86e6
HS
727 fi
728
15679d9f 729 beautify build_stage "Building installer"
df5e82b3 730 buildinstaller
15679d9f
MT
731
732 beautify build_stage "Building packages"
df5e82b3
MT
733 buildpackages
734 ;;
735shell)
736 # enter a shell inside LFS chroot
737 # may be used to changed kernel settings
738 prepareenv
739 entershell
740 ;;
741changelog)
d1dd6669 742 echo -n "Loading new Changelog from SVN: "
f9315063 743 svn log http://svn.ipfire.eu/svn/ipfire > doc/ChangeLog
d1dd6669 744 echo "Finished!"
df5e82b3 745 ;;
df5e82b3
MT
746clean)
747 for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
748 $LOSETUP -d $i 2>/dev/null
749 done
750 for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
751 umount $i
752 done
753 stdumount
754 for i in `seq 0 7`; do
755 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
756 umount /dev/loop${i} 2>/dev/null;
757 losetup -d /dev/loop${i} 2>/dev/null;
758 fi;
759 done
760 rm -rf $BASEDIR/build
761 rm -rf $BASEDIR/cdrom
f9315063 762 rm -rf $BASEDIR/packages
df5e82b3 763 rm -rf $BASEDIR/log
df5e82b3
MT
764 if [ -h /tools ]; then
765 rm -f /tools
766 fi
767 ;;
f8e5510c 768newpak)
a9b17001
MT
769 # create structure for a new package
770 echo -e "Name of the new package: $2"
771 if [ ! -f "lfs/$2" ]; then
772 echo "`date -u '+%b %e %T'`: Creating directory src/paks/$2"
773 mkdir -p src/paks/$2
774 cd src/paks/$2
f8e5510c 775 echo "`date -u '+%b %e %T'`: Creating files"
a9b17001
MT
776 cp $BASEDIR/lfs/postfix $BASEDIR/lfs/$2
777
f8e5510c 778 touch ROOTFILES
f8e5510c 779 touch {,un}install.sh
a9b17001 780 ## install.sh
f8e5510c
MT
781 echo '#!/bin/bash' > install.sh
782 echo '#' >> install.sh
783 echo '#################################################################' >> install.sh
784 echo '# #' >> install.sh
785 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> install.sh
786 echo '# #' >> install.sh
787 echo '#################################################################' >> install.sh
788 echo '#' >> install.sh
789 echo '# Extract the files' >> install.sh
790 echo 'tar xfz files.tgz -C /' >> install.sh
a9b17001
MT
791 echo 'cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2' >> install.sh
792 ## uninstall.sh
f8e5510c
MT
793 echo '#!/bin/bash' > uninstall.sh
794 echo '#################################################################' >> uninstall.sh
795 echo '# #' >> uninstall.sh
796 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> uninstall.sh
797 echo '# #' >> uninstall.sh
798 echo '#################################################################' >> uninstall.sh
799 echo '#' >> uninstall.sh
800 echo '# Delete the files' >> uninstall.sh
801 echo '## Befehl fehlt noch' >> uninstall.sh
a9b17001 802 echo 'rm -f /opt/pakfire/installed/ROOTFILES.$2' >> uninstall.sh
f8e5510c 803 echo "`date -u '+%b %e %T'`: Adding files to SVN"
a9b17001
MT
804 cd - && svn add lfs/$2 && svn add src/paks/$2
805
806 echo -n "Do you want to remove the folders? [y/n]"
807 read REM
808 if [ "$REM" == "y" ]; then
809 echo "Removing the folders..."
810 svn del src/paks/$2 --force
811 else
812 echo "Folders are kept."
813 fi
df5e82b3 814 else
a9b17001 815 echo "$2 already exists"
df5e82b3 816 fi
df5e82b3
MT
817 exit 0
818 ;;
819prefetch)
820 if [ ! -d $BASEDIR/cache ]; then
821 mkdir $BASEDIR/cache
822 fi
823 mkdir -p $BASEDIR/log
857d9bf2 824 echo -e "${BOLD}Preload all source files${NORMAL}" | tee -a $LOGFILE
df5e82b3
MT
825 FINISHED=0
826 cd $BASEDIR/lfs
827 for c in `seq $MAX_RETRIES`; do
828 if (( FINISHED==1 )); then
829 break
830 fi
831 FINISHED=1
832 cd $BASEDIR/lfs
833 for i in *; do
834 if [ -f "$i" -a "$i" != "Config" ]; then
e22c7973 835 echo -ne "Loading $i"
df5e82b3
MT
836 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
837 if [ $? -ne 0 ]; then
e22c7973 838 beautify message FAIL
df5e82b3
MT
839 FINISHED=0
840 else
841 if [ $c -eq 1 ]; then
e22c7973 842 beautify message DONE
df5e82b3
MT
843 fi
844 fi
845 fi
846 done
847 done
e22c7973 848 echo -e "${BOLD}***Verifying md5sums${NORMAL}"
df5e82b3
MT
849 ERROR=0
850 for i in *; do
851 if [ -f "$i" -a "$i" != "Config" ]; then
852 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
853 if [ $? -ne 0 ]; then
e22c7973
MT
854 echo -ne "MD5 difference in lfs/$i"
855 beautify message FAIL
df5e82b3
MT
856 ERROR=1
857 fi
858 fi
859 done
860 if [ $ERROR -eq 0 ]; then
e22c7973
MT
861 echo -ne "${BOLD}all files md5sum match${NORMAL}"
862 beautify message DONE
863 else
864 echo -ne "${BOLD}not all files were correctly download${NORMAL}"
865 beautify message FAIL
df5e82b3 866 fi
e22c7973 867 cd - >/dev/null 2>&1
df5e82b3 868 ;;
df5e82b3 869toolchain)
9729e787 870 clear
df5e82b3 871 prepareenv
15679d9f 872 beautify build_stage "Toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`"
df5e82b3
MT
873 buildtoolchain
874 BUILDMACHINE=`uname -m`
875 echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
712d859c
MT
876 test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains
877 cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
df5e82b3
MT
878 build/{bin,etc,usr/bin,usr/local} \
879 build/tools/{bin,etc,*-linux-gnu,include,lib,libexec,sbin,share,var} \
880 log >> $LOGFILE
712d859c
MT
881 md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
882 > cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5
df5e82b3
MT
883 stdumount
884 ;;
885gettoolchain)
886 BUILDMACHINE=`uname -m`
887 # arbitrary name to be updated in case of new toolchain package upload
c6cb9d25 888 PACKAGE=$SNAME-$VERSION-toolchain-$BUILDMACHINE
712d859c
MT
889 if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then
890 URL_IPFIRE=`grep URL_IPFIRE lfs/Config | awk '{ print $3 }'`
891 test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains
892 echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
893 cd $BASEDIR/cache/toolchains
894 wget $URL_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5 >& /dev/null
895 if [ $? -ne 0 ]; then
896 echo "`date -u '+%b %e %T'`: error downloading toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE
40a4ea4c 897 else
712d859c
MT
898 if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
899 echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
900 else
901 exiterror "$PACKAGE.md5 did not match, check downloaded package"
902 fi
40a4ea4c 903 fi
712d859c
MT
904 else
905 echo "Toolchain is already downloaded. Exiting..."
df5e82b3
MT
906 fi
907 ;;
15679d9f 908othersrc)
ce56e927 909 prepareenv
15679d9f 910 echo -ne "`date -u '+%b %e %T'`: Build sources iso for $MACHINE" | tee -a $LOGFILE
ce56e927
MT
911 chroot $LFS /tools/bin/env -i HOME=/root \
912 TERM=$TERM PS1='\u:\w\$ ' \
913 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
914 VERSION=$VERSION NAME="$NAME" SNAME="$SNAME" MACHINE=$MACHINE \
915 /bin/bash -x -c "cd /usr/src/lfs && make -f sources-iso LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
916 mv $LFS/install/images/ipfire-* $BASEDIR >> $LOGFILE 2>&1
15679d9f
MT
917 if [ $? -eq "0" ]; then
918 beautify message DONE
919 else
920 beautify message FAIL
921 fi
ce56e927
MT
922 stdumount
923 ;;
c6cb9d25
MT
924svn)
925 case "$2" in
926 update|up)
cc0e56be 927 # clear
15679d9f 928 echo -ne "Loading the latest source files...\n"
7471f6ab
MT
929 if [ $3 ]; then
930 svn update -r $3 | tee -a $PWD/log/_build.svn.update.log
931 else
932 svn update | tee -a $PWD/log/_build.svn.update.log
933 fi
15679d9f
MT
934 if [ $? -eq "0" ]; then
935 beautify message DONE
c6cb9d25 936 else
15679d9f 937 beautify message FAIL
c6cb9d25
MT
938 exit 1
939 fi
15679d9f 940 echo -ne "Writing the svn-info to a file"
c6cb9d25 941 svn info > $PWD/svn_status
15679d9f
MT
942 if [ $? -eq "0" ]; then
943 beautify message DONE
c6cb9d25 944 else
15679d9f 945 beautify message FAIL
c6cb9d25
MT
946 exit 1
947 fi
712d859c 948 chmod 755 $0
cc0e56be 949 exit 0
c6cb9d25
MT
950 ;;
951 commit|ci)
952 clear
6b8cff41
MT
953 if [ -f /usr/bin/mcedit ]; then
954 export EDITOR=/usr/bin/mcedit
955 else
956 if [ -f /usr/bin/nano ]; then
957 export EDITOR=/usr/bin/nano
958 fi
959 fi
960 echo -ne "Selecting editor $EDITOR..."
961 beautify message DONE
d79b46cb 962 if [ -e /sbin/yast ]; then
028698e8
MT
963 if [ "`echo $SVN_REVISION | cut -c 3`" -eq "0" ]; then
964 $0 changelog
965 fi
d79b46cb 966 fi
15679d9f 967 svn commit
c6cb9d25 968 $0 svn up
6b8cff41 969 $0 uploadsrc
c6cb9d25
MT
970 ;;
971 dist)
7471f6ab
MT
972 if [ $3 ]; then
973 SVN_REVISION=$3
974 fi
975 if [ -f ipfire-source-r$SVN_REVISION.tar.gz ]; then
976 echo -ne "REV $SVN_REVISION: SKIPPED!\n"
977 exit 0
978 fi
979 echo -en "REV $SVN_REVISION: Downloading..."
9729e787
MT
980 svn export http://svn.ipfire.eu/svn/ipfire/trunk ipfire-source/ --force > /dev/null
981 svn log http://svn.ipfire.eu/svn/ipfire/trunk -r 1:$SVN_REVISION > ipfire-source/Changelog
982 #svn info http://svn.ipfire.eu/svn/ipfire/trunk -r $SVN_REVISION > ipfire-source/svn_status
15679d9f
MT
983 evaluate 1
984
7471f6ab
MT
985 echo -en "REV $SVN_REVISION: Compressing files..."
986 if [ -e ipfire-source/trunk/make.sh ]; then
987 chmod 755 ipfire-source/trunk/make.sh
988 fi
9dc02b38 989 tar cfz ipfire-source-r$SVN_REVISION.tar.gz ipfire-source
15679d9f 990 evaluate 1
7471f6ab 991 echo -en "REV $SVN_REVISION: Cleaning up..."
c6cb9d25 992 rm ipfire-source/ -r
15679d9f 993 evaluate 1
7471f6ab 994 ;;
028698e8 995 diff|di)
15679d9f 996 echo -ne "Make a local diff to last svn revision"
c6cb9d25 997 svn diff > ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff
15679d9f 998 evaluate 1
c6cb9d25
MT
999 echo "Diff was successfully saved to ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff"
1000 ;;
1001 esac
f9315063 1002 ;;
15679d9f
MT
1003uploadsrc)
1004 PWD=`pwd`
1005 cd $BASEDIR/cache/
1006 echo -e "Uploading cache to ftp server:"
1007 ncftpls -u $IPFIRE_FTP_USER_INT -p $IPFIRE_FTP_PASS_INT ftp://$IPFIRE_FTP_URL_INT$IPFIRE_FTP_PATH_INT/ > /var/tmp/ftplist
1008 for i in *; do
f59e1e88 1009 if [ "$i" == "toolchains" ]; then continue; fi
15679d9f 1010 grep -q $i /var/tmp/ftplist
0eab8e84 1011 if [ "$?" -ne "0" ]; then
15679d9f
MT
1012 echo -ne "$i"
1013 ncftpput -bb -u $IPFIRE_FTP_USER_INT -p $IPFIRE_FTP_PASS_INT $IPFIRE_FTP_URL_INT $IPFIRE_FTP_PATH_INT/ $i > /dev/null 2>&1
0eab8e84 1014 if [ "$?" -eq "0" ]; then
15679d9f 1015 beautify message DONE
0eab8e84 1016 else
15679d9f 1017 beautify message FAIL
0eab8e84
MT
1018 fi
1019 fi
1020 done
15679d9f
MT
1021 rm -f /var/tmp/ftplist
1022 UL_TIME_START=`date +'%s'`
1023 ncftpbatch -d > /dev/null 2>&1
1024 while ps acx | grep -q ncftpbatch
1025 do
1026 UL_TIME=$(expr `date +'%s'` - $UL_TIME_START)
1027 echo -ne "\r ${UL_TIME}s : Upload is running..."
1028 sleep 1
1029 done
1030 beautify message DONE
1031 cd $PWD
1032 exit 0
0eab8e84 1033 ;;
cc0e56be
MT
1034upload)
1035 case "$2" in
1036 iso)
1037 echo -e "Uploading the iso to $IPFIRE_FTP_URL_EXT."
9dc02b38
MT
1038 cat <<EOF > .ftp-commands
1039mkdir $IPFIRE_FTP_PATH_EXT
1040ls -lah
1041quit
1042EOF
1043 ncftp -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT < .ftp-commands
1044 rm -f .ftp-commands
1045 md5sum ipfire-install-$VERSION.i386.iso > ipfire-install-$VERSION.i386.iso.md5
1046 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-install-$VERSION.i386.iso
1047 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-install-$VERSION.i386.iso.md5
1048 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-source-r$SVN_REVISION.tar.gz
6aae8d61 1049 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ svn_status
9dc02b38
MT
1050 if [ "$?" -eq "0" ]; then
1051 echo -e "The iso of Revision $SVN_REVISION was successfully uploaded to $IPFIRE_FTP_URL_EXT$IPFIRE_FTP_PATH_EXT/."
cc0e56be 1052 else
9dc02b38
MT
1053 echo -e "There was an error while uploading the iso to the ftp server."
1054 exit 1
cc0e56be 1055 fi
6aae8d61
MT
1056 if [ "$3" = "--with-sources-cd" ]; then
1057 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-sources-cd-$VERSION.$MACHINE.iso
1058 fi
cc0e56be
MT
1059 ;;
1060 paks)
9dc02b38
MT
1061 cat <<EOF > .ftp-commands
1062mkdir $IPFIRE_FTP_PATH_PAK
1063ls -lah
1064quit
1065EOF
1066 ncftp -u $IPFIRE_FTP_USER_PAK -p $IPFIRE_FTP_PASS_PAK $IPFIRE_FTP_URL_PAK < .ftp-commands
1067 rm -f .ftp-commands
cc0e56be
MT
1068 ncftpput -z -u $IPFIRE_FTP_USER_PAK -p $IPFIRE_FTP_PASS_PAK $IPFIRE_FTP_URL_PAK $IPFIRE_FTP_PATH_PAK/ packages/*
1069 if [ "$?" -eq "0" ]; then
9dc02b38 1070 echo -e "The packages were successfully uploaded to $IPFIRE_FTP_URL_PAK$IPFIRE_FTP_PATH_PAK/."
cc0e56be
MT
1071 else
1072 echo -e "There was an error while uploading the packages to the ftp server."
712d859c 1073 exit 1
cc0e56be
MT
1074 fi
1075 ;;
1076 esac
0d0521b6 1077 ;;
cc0e56be 1078batch)
15679d9f
MT
1079 if [ "$2" -eq "--background" ]; then
1080 batch_script
1081 exit $?
1082 fi
27ac55bf 1083 if [ `screen -ls | grep -q ipfire` ]; then
712d859c
MT
1084 echo "Build is already running, sorry!"
1085 exit 1
1086 else
27ac55bf
MT
1087 if [ "$2" = "--rebuild" ]; then
1088 export IPFIRE_REBUILD=1
1089 echo "REBUILD!"
1090 else
1091 export IPFIRE_REBUILD=0
1092 fi
15679d9f
MT
1093 echo -en "${BOLD}***IPFire-Batch-Build is starting...${NORMAL}"
1094 screen -dmS ipfire $0 batch --background
1095 evaluate 1
712d859c
MT
1096 exit 0
1097 fi
cc0e56be 1098 ;;
028698e8 1099watch)
15679d9f 1100 watch_screen
028698e8 1101 ;;
6b8cff41 1102"")
24a4a744
MT
1103 clear
1104 svn info
712d859c 1105 select name in "Exit" "IPFIRE: Prefetch" "IPFIRE: Build (silent)" "IPFIRE: Watch Build" "IPFIRE: Batch" "IPFIRE: Clean" "SVN: Commit" "SVN: Update" "SVN: Status" "SVN: Diff" "LOG: Tail" "Help"
24a4a744
MT
1106 do
1107 case $name in
c6cb9d25
MT
1108 "IPFIRE: Prefetch")
1109 $0 prefetch
1110 ;;
1111 "IPFIRE: Build (silent)")
1112 $0 build-silent
1113 ;;
1114 "IPFIRE: Watch Build")
028698e8 1115 $0 watch
c6cb9d25 1116 ;;
712d859c
MT
1117 "IPFIRE: Batch")
1118 $0 batch
1119 ;;
c6cb9d25
MT
1120 "IPFIRE: Clean")
1121 $0 clean
1122 ;;
c6cb9d25
MT
1123 "SVN: Update")
1124 $0 svn update
1125 ;;
c6cb9d25 1126 "Help")
9b0ff0a0 1127 echo "Usage: $0 {build|changelog|clean|gettoolchain|newpak|prefetch|shell|sync|toolchain}"
c6cb9d25
MT
1128 cat doc/make.sh-usage
1129 ;;
712d859c
MT
1130 "LOG: Tail")
1131 tail -f log/_*
1132 ;;
c6cb9d25
MT
1133 "Exit")
1134 break
1135 ;;
24a4a744
MT
1136 esac
1137 done
df5e82b3 1138 ;;
6b8cff41
MT
1139*)
1140 echo "Usage: $0 {build|changelog|clean|gettoolchain|newpak|prefetch|shell|sync|toolchain}"
1141 cat doc/make.sh-usage
1142 ;;
3ea75603 1143esac