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