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