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
c8ead4a5 368 ipfiremake pam
15679d9f
MT
369 ipfiremake openssl
370 ipfiremake python
371 ipfiremake libnet
ddac6087 372 ipfiremake libjpeg
15679d9f
MT
373 ipfiremake libpng
374 ipfiremake libtiff
15679d9f
MT
375 ipfiremake lcms
376 ipfiremake libmng
377 ipfiremake freetype
378 ipfiremake gd
379 ipfiremake popt
411afd1f 380 ipfiremake pcre
15679d9f
MT
381 ipfiremake slang
382 ipfiremake newt
411afd1f 383# ipfiremake libcap
15679d9f 384 ipfiremake pciutils
15679d9f 385 ipfiremake libxml2
6b8cff41 386 ipfiremake BerkeleyDB
15679d9f 387 ipfiremake mysql
411afd1f 388 ipfiremake cyrus-sasl
15679d9f 389 ipfiremake openldap
c8ead4a5 390# ipfiremake cyrus-sasl PASS=L # Doesn't work yet. Thereby there's the question: Do we really need this?
15679d9f
MT
391 ipfiremake apache2
392 ipfiremake php
393 ipfiremake subversion
c8ead4a5 394 ipfiremake apache2 PASS=C
15679d9f
MT
395 ipfiremake arping
396 ipfiremake beep
397 ipfiremake bind
398 ipfiremake capi4k-utils
399 ipfiremake cdrtools
400 ipfiremake dnsmasq
401 ipfiremake dosfstools
c8ead4a5 402exit 1
15679d9f
MT
403 ipfiremake ethtool
404 ipfiremake ez-ipupdate
405 ipfiremake fcron
406 ipfiremake perl-GD
407 ipfiremake gnupg
408 ipfiremake hdparm
409 ipfiremake ibod
410 ipfiremake initscripts
411 ipfiremake iptables
412 ipfiremake ipac-ng
413 ipfiremake ipaddr
414 ipfiremake iproute2
415 ipfiremake iptstate
416 ipfiremake iputils
417 ipfiremake l7-protocols
418 ipfiremake isapnptools
419 ipfiremake isdn4k-utils
420 ipfiremake kudzu
421 ipfiremake logrotate
422 ipfiremake logwatch
423 ipfiremake mingetty
424 ipfiremake misc-progs
425 ipfiremake mtools
426 ipfiremake nano
427 ipfiremake nash
428 ipfiremake nasm
429 ipfiremake URI
430 ipfiremake HTML-Tagset
431 ipfiremake HTML-Parser
432 ipfiremake Compress-Zlib
433 ipfiremake Digest
434 ipfiremake Digest-SHA1
435 ipfiremake Digest-HMAC
436 ipfiremake libwww-perl
437 ipfiremake Net-DNS
438 ipfiremake Net-IPv4Addr
439 ipfiremake Net_SSLeay
440 ipfiremake IO-Stringy
441 ipfiremake Unix-Syslog
442 ipfiremake Mail-Tools
443 ipfiremake MIME-Tools
444 ipfiremake Net-Server
445 ipfiremake Convert-TNEF
446 ipfiremake Convert-UUlib
447 ipfiremake Archive-Tar
448 ipfiremake Archive-Zip
449 ipfiremake Text-Tabs+Wrap
450 ipfiremake Locale-Country
451 ipfiremake GeoIP
452 ipfiremake fwhits
453 ipfiremake noip_updater
454 ipfiremake ntp
455 ipfiremake oinkmaster
456 ipfiremake openssh
457 ipfiremake openswan
458 ipfiremake pptpclient
459 ipfiremake rrdtool
460 ipfiremake setserial
461 ipfiremake setup
462 ipfiremake snort
463 ipfiremake squid
464 ipfiremake squid-graph
465 ipfiremake squidguard
466 ipfiremake tcpdump
467 ipfiremake traceroute
468 ipfiremake vlan
469 ipfiremake wireless
470 ipfiremake libsafe
471 ipfiremake 3c5x9setup
472 ipfiremake pakfire
473 ipfiremake startscripts
474 ipfiremake java
475 ipfiremake bootsplash
476 ipfiremake spandsp
477 ipfiremake lzo
478 ipfiremake openvpn
479 ipfiremake pkg-config
480 ipfiremake glib
15679d9f
MT
481 ipfiremake pammysql
482 ipfiremake saslauthd PASS=2
483 ipfiremake xinetd
484 ipfiremake ghostscript
485 ipfiremake cups
486 ipfiremake samba
487 ipfiremake sudo
488 ipfiremake mc
489 ipfiremake wget
490 ipfiremake wput
491 ipfiremake bridge-utils
492 ipfiremake screen
493 ipfiremake hddtemp
494 ipfiremake smartmontools
495 ipfiremake htop
496 ipfiremake lynx
497 ipfiremake postfix
498 ipfiremake procmail
499 ipfiremake fetchmail
500 ipfiremake cyrusimap
501 ipfiremake webcyradm
502 ipfiremake mailx
503 ipfiremake clamav
504 ipfiremake razor
505 ipfiremake spamassassin
506# ipfiremake amavisd
507 ipfiremake stund
508 ipfiremake zaptel
509 ipfiremake libpri
510 ipfiremake bristuff
511 ipfiremake asterisk
512 ipfiremake mpg123
513 ipfiremake libmad
514 ipfiremake libogg
515 ipfiremake libvorbis
516 ipfiremake lame
517 ipfiremake xvid
518 ipfiremake mpeg2dec
519 ipfiremake ffmpeg
520 ipfiremake sox
521 ipfiremake gnump3d
522 ipfiremake videolan
523 ipfiremake applejuice
524 ipfiremake ocaml
525 ipfiremake mldonkey
526 ipfiremake ntop
527 ipfiremake rsync
528 ipfiremake tcpwrapper
529 ipfiremake portmap
530 ipfiremake nfs
531 ipfiremake nmap
532 ipfiremake mbmon
533 ipfiremake iftop
534 ipfiremake ncftp
535 ipfiremake cftp
536 ipfiremake etherwake
537 ipfiremake ethereal
538 ipfiremake tftp-hpa
539 ipfiremake iptraf
540 ipfiremake nagios
541 ipfiremake yasuc
df5e82b3
MT
542}
543
544buildinstaller() {
545 # Run installer scripts one by one
546 LOGFILE="$BASEDIR/log/_build.installer.log"
547 export LOGFILE
15679d9f
MT
548 ipfiremake syslinux
549 ipfiremake as86
550 ipfiremake mbr
551 ipfiremake uClibc
df5e82b3
MT
552 installmake busybox
553 installmake sysvinit
554 installmake e2fsprogs
555 installmake misc-progs
556 installmake slang
557 installmake util-linux
558 installmake newt
559 installmake pciutils
560 installmake pcmcia-cs
561 installmake kbd
562 installmake installer
563 installmake scsi.img
564 installmake driver.img
565 installmake initrd
566 installmake boot.img
567}
568
569buildpackages() {
570 LOGFILE="$BASEDIR/log/_build.packages.log"
571 export LOGFILE
572 echo "... see detailed log in _build.*.log files" >> $LOGFILE
573 echo -ne "`date -u '+%b %e %T'`: Stage5 packages build \n" | tee -a $LOGFILE
574 # Strip files
575 echo "`date -u '+%b %e %T'`: Stripping files" | tee -a $LOGFILE
576 find $LFS/lib $LFS/usr/lib $LFS/usr/share/rrdtool-* $LFS/install ! -type l \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
577 ! -name 'libc.so' ! -name 'libpthread.so' ! -name 'libcrypto.so.0.9.7.sha1' \
90350ff3 578 -exec $LFS/tools/bin/strip --strip-all {} \; >> $LOGFILE 2>&1
df5e82b3
MT
579 # add -ls before -exec if you want to verify what files are stripped
580
581 find $LFS/{,s}bin $LFS/usr/{,s}bin $LFS/usr/local/{,s}bin ! -type l \
582 -exec file {} \; | grep " ELF " | cut -f1 -d ':' | xargs $LFS/tools/bin/strip --strip-all >> $LOGFILE 2>&1
583 # there add -v to strip to verify
584
585 if [ 'i386' = $MACHINE ]; then
586 # Create fcdsl packages
587 echo "`date -u '+%b %e %T'`: Building fcdsl tgz" | tee -a $LOGFILE
588 cp $LFS/install/images/fcdsl/license.txt $LFS >> $LOGFILE 2>&1
589 touch $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}
590 cd $LFS && tar cvfz $LFS/install/images/$SNAME-fcdsl-$VERSION.$MACHINE.tgz \
591 lib/modules/$KVER/misc/fcdsl*.o.gz \
592 lib/modules/$KVER-smp/misc/fcdsl*.o.gz \
593 usr/lib/isdn/{fds?base.bin,fd?ubase.frm} \
594 etc/fcdsl/fcdsl*.conf \
595 etc/drdsl/{drdsl,drdsl.ini} \
596 license.txt \
597 var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} >> $LOGFILE 2>&1
598 rm -f $LFS/license.txt >> $LOGFILE 2>&1
599 cd $BASEDIR
600 fi
df5e82b3
MT
601
602 # Generating list of packages used
603 echo "`date -u '+%b %e %T'`: Generating packages list from logs" | tee -a $LOGFILE
604 rm -f $BASEDIR/doc/packages-list
605 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
606 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
7471f6ab 607 echo "* `basename $i`" >>$BASEDIR/doc/packages-list
df5e82b3
MT
608 fi
609 done
7471f6ab 610 echo "== List of softwares used to build $NAME Version: $VERSION ==" > $BASEDIR/doc/packages-list.txt
f522e307 611 grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipfire$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$\|.tgz$\|-config$' \
df5e82b3
MT
612 $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt
613 rm -f $BASEDIR/doc/packages-list
c9673262 614 # packages-list.txt is ready to be displayed for wiki page
df5e82b3 615
f522e307 616 # Create ISO for CDROM
15679d9f 617 ipfiremake cdrom
e67a57fe 618 rm -f $LFS/install/images/*usb*
c3defe9b 619 cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1
c9673262 620
e67a57fe
MT
621 ipfirepackages
622
623 # Cleanup
624 stdumount
625 rm -rf $BASEDIR/build/tmp/*
626
627 # Generating total list of files
628 echo "`date -u '+%b %e %T'`: Generating files list from logs" | tee -a $LOGFILE
629 rm -f $BASEDIR/log/FILES
630 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
631 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
632 echo "##" >>$BASEDIR/log/FILES
633 echo "## `basename $i`" >>$BASEDIR/log/FILES
634 echo "##" >>$BASEDIR/log/FILES
635 cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES
636 fi
637 done
913668ba 638 cd $BASEDIR/packages; ls -w1 *.ipfire | awk -F ".ipfire" '{ print $1 }' > $BASEDIR/packages/packages_list.txt
5e773594 639 echo -n "###EOF###" >> $BASEDIR/packages/packages_list.txt
e67a57fe
MT
640
641 cd $PWD
642
643}
644
645ipfirepackages() {
013a23e2
MT
646 if [ -d "$BASEDIR/packages" ]; then
647 for i in `ls $BASEDIR/packages`; do
648 touch $BASEDIR/build/install/packages/$i.empty
649 done
650 fi
f1baee3e 651# ipfiredist amavisd
78331e30 652 ipfiredist applejuice
5ac2da9f 653 ipfiredist asterisk
c7acba4a 654 ipfiredist clamav
483f59cd 655 ipfiredist cups
78331e30
MT
656 ipfiredist cyrusimap
657 ipfiredist fetchmail
d1b6aa72 658 ipfiredist ffmpeg
78331e30 659 ipfiredist gnump3d
7a98bae5 660 ipfiredist iptraf
0d0521b6 661 ipfiredist java
78331e30 662 ipfiredist lame
d1b6aa72 663 ipfiredist libmad
ae179f6e 664 ipfiredist libogg
ae179f6e 665 ipfiredist libvorbis
f0ca8c34 666 ipfiredist mailx
3ab910dd 667 ipfiredist mldonkey
d1b6aa72 668 ipfiredist mpeg2dec
2ae94d2d 669 ipfiredist nagios
f0ca8c34
MT
670 ipfiredist nfs
671 ipfiredist nmap
3e45cc09 672 ipfiredist ntop
27ac55bf 673 ipfiredist portmap
78331e30 674 ipfiredist postfix
371d9df0 675 ipfiredist procmail
90350ff3 676 ipfiredist samba
ae179f6e 677 ipfiredist sox
f0ca8c34 678 ipfiredist spamassassin
7a98bae5 679 ipfiredist subversion
d1b6aa72 680 ipfiredist videolan
f1baee3e 681 ipfiredist webcyradm
d1b6aa72 682 ipfiredist xvid
0145f271 683 ipfiredist yasuc
78331e30 684 test -d $BASEDIR/packages || mkdir $BASEDIR/packages
d535503d 685 mv -f $LFS/install/packages/*.{ipfire,md5} $BASEDIR/packages >> $LOGFILE 2>&1
483f59cd 686 rm -rf $BASEDIR/build/install/packages/*
df5e82b3
MT
687}
688
689# See what we're supposed to do
690case "$1" in
691build)
9729e787 692 clear
df5e82b3 693 BUILDMACHINE=`uname -m`
712d859c 694 PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
df5e82b3 695 #only restore on a clean disk
9b0ff0a0 696 if [ ! -f log/cleanup-toolchain-2-tools ]; then
df5e82b3 697 if [ ! -n "$PACKAGE" ]; then
15679d9f 698 beautify build_stage "Full toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`"
df5e82b3
MT
699 prepareenv
700 buildtoolchain
701 else
702 PACKAGENAME=${PACKAGE%.tar.gz}
15679d9f 703 beautify build_stage "Packaged toolchain compilation"
df5e82b3
MT
704 if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
705 tar zxf $PACKAGE
706 prepareenv
707 else
708 exiterror "$PACKAGENAME md5 did not match, check downloaded package"
709 fi
710 fi
711 else
9729e787
MT
712 echo -n "Using installed toolchain" | tee -a $LOGFILE
713 beautify message SKIP
df5e82b3
MT
714 prepareenv
715 fi
5cfe86e6 716
15679d9f 717 beautify build_stage "Building base"
df5e82b3 718 buildbase
15679d9f
MT
719
720 beautify build_stage "Building IPFire"
721 buildipfire
5cfe86e6
HS
722
723 # Setzen des IPFire Builds
8af06406 724 if [ "$FIREBUILD" ]; then
e57bc1fd 725 echo "$FIREBUILD" > $BASEDIR/build/var/ipfire/firebuild
5cfe86e6 726 else
e57bc1fd 727 echo "_(OvO)_" > $BASEDIR/build/var/ipfire/firebuild
5cfe86e6
HS
728 fi
729
15679d9f 730 beautify build_stage "Building installer"
df5e82b3 731 buildinstaller
15679d9f
MT
732
733 beautify build_stage "Building packages"
df5e82b3
MT
734 buildpackages
735 ;;
736shell)
737 # enter a shell inside LFS chroot
738 # may be used to changed kernel settings
739 prepareenv
740 entershell
741 ;;
742changelog)
d1dd6669 743 echo -n "Loading new Changelog from SVN: "
f9315063 744 svn log http://svn.ipfire.eu/svn/ipfire > doc/ChangeLog
d1dd6669 745 echo "Finished!"
df5e82b3 746 ;;
df5e82b3
MT
747clean)
748 for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
749 $LOSETUP -d $i 2>/dev/null
750 done
751 for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
752 umount $i
753 done
754 stdumount
755 for i in `seq 0 7`; do
756 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
757 umount /dev/loop${i} 2>/dev/null;
758 losetup -d /dev/loop${i} 2>/dev/null;
759 fi;
760 done
761 rm -rf $BASEDIR/build
762 rm -rf $BASEDIR/cdrom
f9315063 763 rm -rf $BASEDIR/packages
df5e82b3 764 rm -rf $BASEDIR/log
df5e82b3
MT
765 if [ -h /tools ]; then
766 rm -f /tools
767 fi
768 ;;
f8e5510c 769newpak)
a9b17001
MT
770 # create structure for a new package
771 echo -e "Name of the new package: $2"
772 if [ ! -f "lfs/$2" ]; then
773 echo "`date -u '+%b %e %T'`: Creating directory src/paks/$2"
774 mkdir -p src/paks/$2
775 cd src/paks/$2
f8e5510c 776 echo "`date -u '+%b %e %T'`: Creating files"
a9b17001
MT
777 cp $BASEDIR/lfs/postfix $BASEDIR/lfs/$2
778
f8e5510c 779 touch ROOTFILES
f8e5510c 780 touch {,un}install.sh
a9b17001 781 ## install.sh
f8e5510c
MT
782 echo '#!/bin/bash' > install.sh
783 echo '#' >> install.sh
784 echo '#################################################################' >> install.sh
785 echo '# #' >> install.sh
786 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> install.sh
787 echo '# #' >> install.sh
788 echo '#################################################################' >> install.sh
789 echo '#' >> install.sh
790 echo '# Extract the files' >> install.sh
791 echo 'tar xfz files.tgz -C /' >> install.sh
a9b17001
MT
792 echo 'cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2' >> install.sh
793 ## uninstall.sh
f8e5510c
MT
794 echo '#!/bin/bash' > uninstall.sh
795 echo '#################################################################' >> uninstall.sh
796 echo '# #' >> uninstall.sh
797 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> uninstall.sh
798 echo '# #' >> uninstall.sh
799 echo '#################################################################' >> uninstall.sh
800 echo '#' >> uninstall.sh
801 echo '# Delete the files' >> uninstall.sh
802 echo '## Befehl fehlt noch' >> uninstall.sh
a9b17001 803 echo 'rm -f /opt/pakfire/installed/ROOTFILES.$2' >> uninstall.sh
f8e5510c 804 echo "`date -u '+%b %e %T'`: Adding files to SVN"
a9b17001
MT
805 cd - && svn add lfs/$2 && svn add src/paks/$2
806
807 echo -n "Do you want to remove the folders? [y/n]"
808 read REM
809 if [ "$REM" == "y" ]; then
810 echo "Removing the folders..."
811 svn del src/paks/$2 --force
812 else
813 echo "Folders are kept."
814 fi
df5e82b3 815 else
a9b17001 816 echo "$2 already exists"
df5e82b3 817 fi
df5e82b3
MT
818 exit 0
819 ;;
820prefetch)
821 if [ ! -d $BASEDIR/cache ]; then
822 mkdir $BASEDIR/cache
823 fi
824 mkdir -p $BASEDIR/log
857d9bf2 825 echo -e "${BOLD}Preload all source files${NORMAL}" | tee -a $LOGFILE
df5e82b3
MT
826 FINISHED=0
827 cd $BASEDIR/lfs
828 for c in `seq $MAX_RETRIES`; do
829 if (( FINISHED==1 )); then
830 break
831 fi
832 FINISHED=1
833 cd $BASEDIR/lfs
834 for i in *; do
835 if [ -f "$i" -a "$i" != "Config" ]; then
e22c7973 836 echo -ne "Loading $i"
df5e82b3
MT
837 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
838 if [ $? -ne 0 ]; then
e22c7973 839 beautify message FAIL
df5e82b3
MT
840 FINISHED=0
841 else
842 if [ $c -eq 1 ]; then
e22c7973 843 beautify message DONE
df5e82b3
MT
844 fi
845 fi
846 fi
847 done
848 done
e22c7973 849 echo -e "${BOLD}***Verifying md5sums${NORMAL}"
df5e82b3
MT
850 ERROR=0
851 for i in *; do
852 if [ -f "$i" -a "$i" != "Config" ]; then
853 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
854 if [ $? -ne 0 ]; then
e22c7973
MT
855 echo -ne "MD5 difference in lfs/$i"
856 beautify message FAIL
df5e82b3
MT
857 ERROR=1
858 fi
859 fi
860 done
861 if [ $ERROR -eq 0 ]; then
e22c7973
MT
862 echo -ne "${BOLD}all files md5sum match${NORMAL}"
863 beautify message DONE
864 else
865 echo -ne "${BOLD}not all files were correctly download${NORMAL}"
866 beautify message FAIL
df5e82b3 867 fi
e22c7973 868 cd - >/dev/null 2>&1
df5e82b3 869 ;;
df5e82b3 870toolchain)
9729e787 871 clear
df5e82b3 872 prepareenv
15679d9f 873 beautify build_stage "Toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`"
df5e82b3
MT
874 buildtoolchain
875 BUILDMACHINE=`uname -m`
876 echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
712d859c
MT
877 test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains
878 cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
df5e82b3
MT
879 build/{bin,etc,usr/bin,usr/local} \
880 build/tools/{bin,etc,*-linux-gnu,include,lib,libexec,sbin,share,var} \
881 log >> $LOGFILE
712d859c
MT
882 md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
883 > cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5
df5e82b3
MT
884 stdumount
885 ;;
886gettoolchain)
887 BUILDMACHINE=`uname -m`
888 # arbitrary name to be updated in case of new toolchain package upload
c6cb9d25 889 PACKAGE=$SNAME-$VERSION-toolchain-$BUILDMACHINE
712d859c
MT
890 if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then
891 URL_IPFIRE=`grep URL_IPFIRE lfs/Config | awk '{ print $3 }'`
892 test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains
893 echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
894 cd $BASEDIR/cache/toolchains
895 wget $URL_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5 >& /dev/null
896 if [ $? -ne 0 ]; then
897 echo "`date -u '+%b %e %T'`: error downloading toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE
40a4ea4c 898 else
712d859c
MT
899 if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
900 echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
901 else
902 exiterror "$PACKAGE.md5 did not match, check downloaded package"
903 fi
40a4ea4c 904 fi
712d859c
MT
905 else
906 echo "Toolchain is already downloaded. Exiting..."
df5e82b3
MT
907 fi
908 ;;
15679d9f 909othersrc)
ce56e927 910 prepareenv
15679d9f 911 echo -ne "`date -u '+%b %e %T'`: Build sources iso for $MACHINE" | tee -a $LOGFILE
ce56e927
MT
912 chroot $LFS /tools/bin/env -i HOME=/root \
913 TERM=$TERM PS1='\u:\w\$ ' \
914 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
915 VERSION=$VERSION NAME="$NAME" SNAME="$SNAME" MACHINE=$MACHINE \
916 /bin/bash -x -c "cd /usr/src/lfs && make -f sources-iso LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
917 mv $LFS/install/images/ipfire-* $BASEDIR >> $LOGFILE 2>&1
15679d9f
MT
918 if [ $? -eq "0" ]; then
919 beautify message DONE
920 else
921 beautify message FAIL
922 fi
ce56e927
MT
923 stdumount
924 ;;
c6cb9d25
MT
925svn)
926 case "$2" in
927 update|up)
cc0e56be 928 # clear
15679d9f 929 echo -ne "Loading the latest source files...\n"
7471f6ab
MT
930 if [ $3 ]; then
931 svn update -r $3 | tee -a $PWD/log/_build.svn.update.log
932 else
933 svn update | tee -a $PWD/log/_build.svn.update.log
934 fi
15679d9f
MT
935 if [ $? -eq "0" ]; then
936 beautify message DONE
c6cb9d25 937 else
15679d9f 938 beautify message FAIL
c6cb9d25
MT
939 exit 1
940 fi
15679d9f 941 echo -ne "Writing the svn-info to a file"
c6cb9d25 942 svn info > $PWD/svn_status
15679d9f
MT
943 if [ $? -eq "0" ]; then
944 beautify message DONE
c6cb9d25 945 else
15679d9f 946 beautify message FAIL
c6cb9d25
MT
947 exit 1
948 fi
712d859c 949 chmod 755 $0
cc0e56be 950 exit 0
c6cb9d25
MT
951 ;;
952 commit|ci)
953 clear
6b8cff41
MT
954 if [ -f /usr/bin/mcedit ]; then
955 export EDITOR=/usr/bin/mcedit
956 else
957 if [ -f /usr/bin/nano ]; then
958 export EDITOR=/usr/bin/nano
959 fi
960 fi
961 echo -ne "Selecting editor $EDITOR..."
962 beautify message DONE
d79b46cb 963 if [ -e /sbin/yast ]; then
028698e8
MT
964 if [ "`echo $SVN_REVISION | cut -c 3`" -eq "0" ]; then
965 $0 changelog
966 fi
d79b46cb 967 fi
15679d9f 968 svn commit
c6cb9d25 969 $0 svn up
6b8cff41 970 $0 uploadsrc
c6cb9d25
MT
971 ;;
972 dist)
7471f6ab
MT
973 if [ $3 ]; then
974 SVN_REVISION=$3
975 fi
976 if [ -f ipfire-source-r$SVN_REVISION.tar.gz ]; then
977 echo -ne "REV $SVN_REVISION: SKIPPED!\n"
978 exit 0
979 fi
980 echo -en "REV $SVN_REVISION: Downloading..."
9729e787
MT
981 svn export http://svn.ipfire.eu/svn/ipfire/trunk ipfire-source/ --force > /dev/null
982 svn log http://svn.ipfire.eu/svn/ipfire/trunk -r 1:$SVN_REVISION > ipfire-source/Changelog
983 #svn info http://svn.ipfire.eu/svn/ipfire/trunk -r $SVN_REVISION > ipfire-source/svn_status
15679d9f
MT
984 evaluate 1
985
7471f6ab
MT
986 echo -en "REV $SVN_REVISION: Compressing files..."
987 if [ -e ipfire-source/trunk/make.sh ]; then
988 chmod 755 ipfire-source/trunk/make.sh
989 fi
9dc02b38 990 tar cfz ipfire-source-r$SVN_REVISION.tar.gz ipfire-source
15679d9f 991 evaluate 1
7471f6ab 992 echo -en "REV $SVN_REVISION: Cleaning up..."
c6cb9d25 993 rm ipfire-source/ -r
15679d9f 994 evaluate 1
7471f6ab 995 ;;
028698e8 996 diff|di)
15679d9f 997 echo -ne "Make a local diff to last svn revision"
c6cb9d25 998 svn diff > ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff
15679d9f 999 evaluate 1
c6cb9d25
MT
1000 echo "Diff was successfully saved to ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff"
1001 ;;
1002 esac
f9315063 1003 ;;
15679d9f
MT
1004uploadsrc)
1005 PWD=`pwd`
1006 cd $BASEDIR/cache/
1007 echo -e "Uploading cache to ftp server:"
1008 ncftpls -u $IPFIRE_FTP_USER_INT -p $IPFIRE_FTP_PASS_INT ftp://$IPFIRE_FTP_URL_INT$IPFIRE_FTP_PATH_INT/ > /var/tmp/ftplist
1009 for i in *; do
f59e1e88 1010 if [ "$i" == "toolchains" ]; then continue; fi
15679d9f 1011 grep -q $i /var/tmp/ftplist
0eab8e84 1012 if [ "$?" -ne "0" ]; then
15679d9f
MT
1013 echo -ne "$i"
1014 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 1015 if [ "$?" -eq "0" ]; then
15679d9f 1016 beautify message DONE
0eab8e84 1017 else
15679d9f 1018 beautify message FAIL
0eab8e84
MT
1019 fi
1020 fi
1021 done
15679d9f
MT
1022 rm -f /var/tmp/ftplist
1023 UL_TIME_START=`date +'%s'`
1024 ncftpbatch -d > /dev/null 2>&1
1025 while ps acx | grep -q ncftpbatch
1026 do
1027 UL_TIME=$(expr `date +'%s'` - $UL_TIME_START)
1028 echo -ne "\r ${UL_TIME}s : Upload is running..."
1029 sleep 1
1030 done
1031 beautify message DONE
1032 cd $PWD
1033 exit 0
0eab8e84 1034 ;;
cc0e56be
MT
1035upload)
1036 case "$2" in
1037 iso)
1038 echo -e "Uploading the iso to $IPFIRE_FTP_URL_EXT."
9dc02b38
MT
1039 cat <<EOF > .ftp-commands
1040mkdir $IPFIRE_FTP_PATH_EXT
1041ls -lah
1042quit
1043EOF
1044 ncftp -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT < .ftp-commands
1045 rm -f .ftp-commands
1046 md5sum ipfire-install-$VERSION.i386.iso > ipfire-install-$VERSION.i386.iso.md5
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
1048 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
1049 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 1050 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ svn_status
9dc02b38
MT
1051 if [ "$?" -eq "0" ]; then
1052 echo -e "The iso of Revision $SVN_REVISION was successfully uploaded to $IPFIRE_FTP_URL_EXT$IPFIRE_FTP_PATH_EXT/."
cc0e56be 1053 else
9dc02b38
MT
1054 echo -e "There was an error while uploading the iso to the ftp server."
1055 exit 1
cc0e56be 1056 fi
6aae8d61
MT
1057 if [ "$3" = "--with-sources-cd" ]; then
1058 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
1059 fi
cc0e56be
MT
1060 ;;
1061 paks)
9dc02b38
MT
1062 cat <<EOF > .ftp-commands
1063mkdir $IPFIRE_FTP_PATH_PAK
1064ls -lah
1065quit
1066EOF
1067 ncftp -u $IPFIRE_FTP_USER_PAK -p $IPFIRE_FTP_PASS_PAK $IPFIRE_FTP_URL_PAK < .ftp-commands
1068 rm -f .ftp-commands
cc0e56be
MT
1069 ncftpput -z -u $IPFIRE_FTP_USER_PAK -p $IPFIRE_FTP_PASS_PAK $IPFIRE_FTP_URL_PAK $IPFIRE_FTP_PATH_PAK/ packages/*
1070 if [ "$?" -eq "0" ]; then
9dc02b38 1071 echo -e "The packages were successfully uploaded to $IPFIRE_FTP_URL_PAK$IPFIRE_FTP_PATH_PAK/."
cc0e56be
MT
1072 else
1073 echo -e "There was an error while uploading the packages to the ftp server."
712d859c 1074 exit 1
cc0e56be
MT
1075 fi
1076 ;;
1077 esac
0d0521b6 1078 ;;
cc0e56be 1079batch)
15679d9f
MT
1080 if [ "$2" -eq "--background" ]; then
1081 batch_script
1082 exit $?
1083 fi
27ac55bf 1084 if [ `screen -ls | grep -q ipfire` ]; then
712d859c
MT
1085 echo "Build is already running, sorry!"
1086 exit 1
1087 else
27ac55bf
MT
1088 if [ "$2" = "--rebuild" ]; then
1089 export IPFIRE_REBUILD=1
1090 echo "REBUILD!"
1091 else
1092 export IPFIRE_REBUILD=0
1093 fi
15679d9f
MT
1094 echo -en "${BOLD}***IPFire-Batch-Build is starting...${NORMAL}"
1095 screen -dmS ipfire $0 batch --background
1096 evaluate 1
712d859c
MT
1097 exit 0
1098 fi
cc0e56be 1099 ;;
028698e8 1100watch)
15679d9f 1101 watch_screen
028698e8 1102 ;;
6b8cff41 1103"")
24a4a744
MT
1104 clear
1105 svn info
712d859c 1106 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
1107 do
1108 case $name in
c6cb9d25
MT
1109 "IPFIRE: Prefetch")
1110 $0 prefetch
1111 ;;
1112 "IPFIRE: Build (silent)")
1113 $0 build-silent
1114 ;;
1115 "IPFIRE: Watch Build")
028698e8 1116 $0 watch
c6cb9d25 1117 ;;
712d859c
MT
1118 "IPFIRE: Batch")
1119 $0 batch
1120 ;;
c6cb9d25
MT
1121 "IPFIRE: Clean")
1122 $0 clean
1123 ;;
c6cb9d25
MT
1124 "SVN: Update")
1125 $0 svn update
1126 ;;
c6cb9d25 1127 "Help")
9b0ff0a0 1128 echo "Usage: $0 {build|changelog|clean|gettoolchain|newpak|prefetch|shell|sync|toolchain}"
c6cb9d25
MT
1129 cat doc/make.sh-usage
1130 ;;
712d859c
MT
1131 "LOG: Tail")
1132 tail -f log/_*
1133 ;;
c6cb9d25
MT
1134 "Exit")
1135 break
1136 ;;
24a4a744
MT
1137 esac
1138 done
df5e82b3 1139 ;;
6b8cff41
MT
1140*)
1141 echo "Usage: $0 {build|changelog|clean|gettoolchain|newpak|prefetch|shell|sync|toolchain}"
1142 cat doc/make.sh-usage
1143 ;;
3ea75603 1144esac