]> git.ipfire.org Git - people/stevee/ipfire-3.x.git/blame - make.sh
I did a simple modification of busybox configuration.
[people/stevee/ipfire-3.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# #
06209efc 20# Copyright (C) 2007 IPFire-Team <info@ipfire.org>. #
df5e82b3
MT
21# #
22############################################################################
df5e82b3
MT
23#
24
06209efc
MT
25NAME="IPFire" # Software name
26SNAME="ipfire" # Short name
ca8da28e
MT
27VERSION="2.9" # Version number
28TOOLCHAINVERSION="${VERSION}" # Toolchain
06209efc 29SLOGAN="www.ipfire.org" # Software slogan
df5e82b3 30
15679d9f 31# Include funtions
ca8da28e 32. tools/make-include
df5e82b3 33
df5e82b3 34
ca8da28e
MT
35################################################################################
36# This builds the entire stage "toolchain" #
37################################################################################
38toolchain_build() {
df5e82b3 39
ca8da28e
MT
40 ORG_PATH=$PATH
41 export PATH=$BASEDIR/build_${MACHINE}/usr/local/ccache/bin:$BASEDIR/build_${MACHINE}/usr/local/distcc/bin:$BASEDIR/build_${MACHINE}/$TOOLS_DIR/bin:$PATH
42 STAGE_ORDER=01
43 STAGE=toolchain
df5e82b3 44
ca8da28e
MT
45 LOGFILE="$BASEDIR/log_${MACHINE}/_build.toolchain.log"
46 export LOGFILE
47
48 NATIVEGCC=`gcc --version | grep GCC | awk {'print $3'}`
49 export NATIVEGCC GCCmajor=${NATIVEGCC:0:1} GCCminor=${NATIVEGCC:2:1} GCCrelease=${NATIVEGCC:4:1}
50
51 # make distcc first so that CCACHE_PREFIX works immediately
0e61af85 52 [ -z "$DISTCC_HOSTS" ] || toolchain_make distcc
ca8da28e
MT
53 toolchain_make ccache
54
be472d5a
MT
55 toolchain_make binutils PASS=1
56 toolchain_make gcc PASS=1
57 toolchain_make linux
ca8da28e 58 toolchain_make glibc
be472d5a 59 toolchain_make adjust-toolchain
ca8da28e
MT
60 toolchain_make tcl
61 toolchain_make expect
62 toolchain_make dejagnu
be472d5a
MT
63 toolchain_make gcc PASS=2
64 toolchain_make binutils PASS=2
ca8da28e
MT
65 toolchain_make ncurses
66 toolchain_make bash
67 toolchain_make bzip2
68 toolchain_make coreutils
69 toolchain_make diffutils
70 toolchain_make findutils
71 toolchain_make gawk
72 toolchain_make gettext
73 toolchain_make grep
74 toolchain_make gzip
ca8da28e
MT
75 toolchain_make make
76 toolchain_make patch
77 toolchain_make perl
78 toolchain_make sed
79 toolchain_make tar
80 toolchain_make texinfo
81 toolchain_make util-linux
3888140c 82 # toolchain_make strip
ca8da28e
MT
83 export PATH=$ORG_PATH
84}
df5e82b3 85
ca8da28e
MT
86################################################################################
87# This builds the entire stage "base" #
88################################################################################
89base_build() {
90
91 PATH=/usr/local/ccache/bin:/usr/local/distcc/bin:/bin:/usr/bin:/sbin:/usr/sbin:$TOOLS_DIR/bin
92 STAGE_ORDER=02
93 STAGE=base
94
95 LOGFILE="$BASEDIR/log_${MACHINE}/_build.base.log"
96 export LOGFILE
3888140c 97
ca8da28e 98 ipfire_make stage2
3888140c 99 ipfire_make linux
ca8da28e
MT
100 ipfire_make man-pages
101 ipfire_make glibc
3888140c 102 ipfire_make adjust-toolchain
ca8da28e
MT
103 ipfire_make binutils
104 ipfire_make gcc
105 ipfire_make berkeley
3888140c
MT
106 ipfire_make sed
107 ipfire_make e2fsprogs
ca8da28e
MT
108 ipfire_make coreutils
109 ipfire_make iana-etc
110 ipfire_make m4
111 ipfire_make bison
112 ipfire_make ncurses
113 ipfire_make procps
ca8da28e
MT
114 ipfire_make libtool
115 ipfire_make perl
116 ipfire_make readline
117 ipfire_make zlib
118 ipfire_make autoconf
119 ipfire_make automake
120 ipfire_make bash
121 ipfire_make bzip2
122 ipfire_make diffutils
ca8da28e
MT
123 ipfire_make file
124 ipfire_make findutils
125 ipfire_make flex
0e61af85 126 ipfire_make grub
ca8da28e
MT
127 ipfire_make gawk
128 ipfire_make gettext
129 ipfire_make grep
130 ipfire_make groff
131 ipfire_make gzip
132 ipfire_make inetutils
133 ipfire_make iproute2
134 ipfire_make kbd
135 ipfire_make less
ca8da28e 136 ipfire_make make
0e61af85 137 ipfire_make man-db
ca8da28e 138 ipfire_make mktemp
0e61af85 139 ipfire_make module-init-tools
ca8da28e
MT
140 ipfire_make patch
141 ipfire_make psmisc
ca8da28e
MT
142 ipfire_make shadow
143 ipfire_make sysklogd
144 ipfire_make sysvinit
145 ipfire_make tar
146 ipfire_make texinfo
246556fe 147 ipfire_make udev ## NEED TO INSTALL CONFIG
ca8da28e
MT
148 ipfire_make util-linux
149 ipfire_make vim
ca8da28e 150}
df5e82b3 151
ca8da28e
MT
152################################################################################
153# This builds the entire stage "ipfire" #
154################################################################################
155ipfire_build() {
156 PATH=/usr/local/ccache/bin:/usr/local/distcc/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/${MACHINE_REAL}-linux/bin
157 STAGE_ORDER=03
158 STAGE=ipfire
159
160 LOGFILE="$BASEDIR/log_${MACHINE}/_build.ipfire.log"
161 export LOGFILE
246556fe
MT
162
163 ### Building the configuration dirs and files
164 #
165 ipfire_make stage3
166
167 ### Building the kernel stuff
168 #
f76aefec 169 ipfire_make linux
246556fe 170
a97daddb
MT
171 ### Building pkg-config
172 #
173 ipfire_make pkg-config
174
246556fe
MT
175 ### Building some network stuff
176 #
177 ipfire_make libpcap
178 ipfire_make linux-atm
179 ipfire_make ppp
180 ipfire_make rp-pppoe
181 ipfire_make dhcp
182 ipfire_make iptables
a97daddb
MT
183 ipfire_make libnfnetlink
184 ipfire_make libnetfilter_queue
185 ipfire_make libnetfilter_conntrack
246556fe 186 ipfire_make dnsmasq
a97daddb
MT
187 ipfire_make l7-protocols
188 ipfire_make iptstate
189 ipfire_make bridge-utils
190 ipfire_make vlan
246556fe
MT
191
192 ### Building some general stuff
193 #
194 ipfire_make openssl
195 ipfire_make pam PASS=1
196 ipfire_make shadow
197 ipfire_make pam PASS=2
198
b8b94b55 199 #ipfire_make libidn ### Do we need this?
246556fe
MT
200 ipfire_make pcre
201 ipfire_make popt
202 ipfire_make python
203 ipfire_make libxml2
204 ipfire_make libxslt
205 ipfire_make slang
206 ipfire_make newt
207 ipfire_make cyrus-sasl
208 ipfire_make openldap
209 ipfire_make sqlite
210 ipfire_make curl
211 ipfire_make libusb
212 ipfire_make gnupg
213 ipfire_make sudo
214 #ipfire_make libjpeg ### Do we need this?
215 ipfire_make libpng
216 ipfire_make libtiff
217 ipfire_make libart
218 ipfire_make freetype
219 ipfire_make lzo
b8b94b55
MT
220 ipfire_make lsof
221 ipfire_make br2684ctl
222 ipfire_make etherwake
223 ipfire_make htop
224 ipfire_make beep
246556fe
MT
225
226 ### Building filesystem stuff
227 #
228 ipfire_make reiserfsprogs
229 ipfire_make libaal
230 ipfire_make reiser4progs
a97daddb 231 ipfire_make xfsprogs
246556fe
MT
232
233 ### Building hardware utils
234 #
235 ipfire_make pciutils
236 ipfire_make usbutils
237 ipfire_make hdparm
238 ipfire_make kudzu
b8b94b55 239 ipfire_make smartmontools
246556fe
MT
240
241 ### Building some important tools
242 #
243 ipfire_make fcron
244 ipfire_make which
245 ipfire_make nano
246 ipfire_make screen
247 ipfire_make rrdtool
248 ipfire_make ntp ### Needs config.
249 ipfire_make openssh
b8b94b55
MT
250 ipfire_make ez-ipupdate
251 ipfire_make noip
252 ipfire_make lighttpd
31c59de6 253 ipfire_make lzma
246556fe
MT
254
255 ### Programs that are still for discussion
256 # package or in the standard system
257 #
258 ## NTFS
259 #ipfire_make fuse
260 #ipfire_make ntfs-3g
261 #
262 ## Net tools
263 #ipfire_make bwm-ng
264 #ipfire_make openvpn
265 #
266 ## UPNP
267 #ipfire_make libupnp
268 #ipfire_make linux-igd
269
270 #ipfire_make pakfire
271 #ipfire_make initscripts
272
e53fbf32
MT
273 #ipfire_make backup
274 #ipfire_make expat
275 #ipfire_make gmp
276 #ipfire_make gd
277 #ipfire_make libcap
246556fe 278
e53fbf32
MT
279 #ipfire_make bind
280 #ipfire_make cdrtools
281 #ipfire_make dosfstools
282 #ipfire_make sysfsutils
283 #ipfire_make mtools
284 #ipfire_make mISDN
285 #ipfire_make logrotate
286 #ipfire_make logwatch
287 #ipfire_make nasm
246556fe 288
e53fbf32
MT
289 #ipfire_make wireless
290 #ipfire_make libsafe
246556fe
MT
291}
292
293################################################################################
294# This builds the entire stage "misc" #
295################################################################################
296misc_build() {
297
298 PATH=/usr/local/ccache/bin:/usr/local/distcc/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/${MACHINE_REAL}-linux/bin
299 STAGE_ORDER=04
300 STAGE=misc
301
302 LOGFILE="$BASEDIR/log_${MACHINE}/_build.misc.log"
303 export LOGFILE
304
e53fbf32
MT
305 #ipfire_make stage4
306
67deab0a
MT
307 ipfire_make glib
308 ipfire_make mc
309
e53fbf32 310 ipfire_make cpio
31c59de6 311 ipfire_make cdrtools
e53fbf32 312 ipfire_make parted
31c59de6 313 ipfire_make memtest86+
f90f9467
MT
314 #ipfire_make as86
315 #ipfire_make mbr
246556fe
MT
316
317 #ipfire_make snort
318 #ipfire_make oinkmaster
319 #ipfire_make squid
320 #ipfire_make squid-graph
321 #ipfire_make squidguard
322 #ipfire_make calamaris
e53fbf32
MT
323 #ipfire_make tcpdump
324 #ipfire_make traceroute
325 #ipfire_make vsftpd
326 #ipfire_make centerim
327 #ipfire_make ncftp
328 #ipfire_make tripwire
329 #ipfire_make java
31c59de6
MT
330 #ipfire_make spandsp
331 #ipfire_make cups
332 #ipfire_make ghostscript
333 #ipfire_make foomatic
334 #ipfire_make hplip
335 #ipfire_make samba
31c59de6
MT
336 #ipfire_make wget
337 #ipfire_make postfix
338 #ipfire_make fetchmail
339 #ipfire_make cyrus-imapd
340 #ipfire_make clamav
341 #ipfire_make alsa
342 #ipfire_make mpg123
343 #ipfire_make mpfire
344 #ipfire_make guardian
345 #ipfire_make libid3tag
346 #ipfire_make libmad
347 #ipfire_make libogg
348 #ipfire_make libvorbis
349 #ipfire_make lame
350 #ipfire_make sox
351 #ipfire_make libshout
352 #ipfire_make icecast
353 #ipfire_make icegenerator
354 #ipfire_make mpd
355 #ipfire_make mpc
356 #ipfire_make xvid
357 #ipfire_make libmpeg2
358 #ipfire_make videolan
359 #ipfire_make libpri
360 #ipfire_make asterisk
361 #ipfire_make gnump3d
362 #ipfire_make libsigc++
363 #ipfire_make applejuice
364 #ipfire_make ocaml
365 #ipfire_make mldonkey
366 #ipfire_make libtorrent
367 #ipfire_make rtorrent
368 #ipfire_make ipfireseeder
369 #ipfire_make rsync
370 #ipfire_make nfs
371 #ipfire_make nmap
ca8da28e 372
df5e82b3
MT
373}
374
ca8da28e
MT
375################################################################################
376# This builds the entire stage "installer" #
377################################################################################
378installer_build() {
379
380 PATH=/usr/local/ccache/bin:/usr/local/distcc/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/${MACHINE_REAL}-linux/bin
381 STAGE_ORDER=05
382 STAGE=installer
383
384 LOGFILE="$BASEDIR/log_${MACHINE}/_build.installer.log"
385 export LOGFILE
246556fe 386
e53fbf32 387 ipfire_make busybox
f90f9467 388 #ipfire_make installer
e53fbf32
MT
389 ipfire_make initramfs
390
e53fbf32 391 #ipfire_make klibc ##### Maybe this will be in the installer pass
246556fe
MT
392 #ipfire_make mkinitcpio
393 #ipfire_make udev KLIBC=1
df5e82b3
MT
394}
395
ca8da28e
MT
396################################################################################
397# This builds the entire stage "packages" #
398################################################################################
399packages_build() {
df5e82b3 400
ca8da28e
MT
401 PATH=/usr/local/ccache/bin:/usr/local/distcc/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/${MACHINE_REAL}-linux/bin
402 STAGE_ORDER=06
403 STAGE=packages
df5e82b3 404
ca8da28e
MT
405 LOGFILE="$BASEDIR/log_${MACHINE}/_build.packages.log"
406 export LOGFILE
407
df5e82b3 408 echo "... see detailed log in _build.*.log files" >> $LOGFILE
0fbb45e9 409
ca8da28e 410 ipfire_make strip
df5e82b3
MT
411
412 # Generating list of packages used
f90f9467 413 ### MISSING ATM
df5e82b3 414
f90f9467 415 ipfire_make cdrom
74dbbc36 416
4dc82852 417 # Check if there is a loop device for building in virtual environments
eedc26d9 418 if [ -e /dev/loop/0 ] || [ -e /dev/loop0 ]; then
ca8da28e 419 ipfire_make usb-stick
4dc82852 420 fi
f90f9467 421 mv $LFS/$IMAGES_DIR/{*.iso,*.tgz,*.img.gz} $BASEDIR >> $LOGFILE 2>&1
c9673262 422
f90f9467
MT
423 #ipfire_make core-updates
424 ### DISABLED ATM
425
084ab6f4 426 for i in $(ls -1 $BASEDIR/src/rootfiles/extras); do
453b418b 427 if [ -e $BASEDIR/lfs/$i ]; then
f90f9467
MT
428 echo -n
429 ### Do nothing at the moment, we are gonna use a new packager
453b418b
MT
430 else
431 echo -n $i
432 beautify message SKIP
433 fi
fe7fe395 434 done
f90f9467
MT
435
436 # Cleanup
437 stdumount
438 rm -rf $LFS/tmp/*
439
440 cd $PWD
df5e82b3
MT
441}
442
443# See what we're supposed to do
444case "$1" in
445build)
9729e787 446 clear
ca8da28e
MT
447 #a prebuilt toolchain package is only used if found in cache
448 if [ ! -d $BASEDIR/cache ]; then
449 exiterror "Use make.sh downloadsrc first!"
450 fi
6b96312d
MT
451 cd $BASEDIR/cache/toolchains
452 PACKAGE=`ls -v -r $TOOLCHAINNAME.tar.bz2 2> /dev/null | head -n 1`
df5e82b3 453 #only restore on a clean disk
ca8da28e
MT
454
455 echo -ne "Building for ${BOLD}${MACHINE} on ${MACHINE_REAL}${NORMAL}\n"
456
3888140c 457 if [ -f $BASEDIR/log_${MACHINE}/02_base/stage2-LFS ]; then
ca8da28e
MT
458 prepareenv
459 echo "Using installed toolchain" >> $LOGFILE
460 beautify message DONE "Stage toolchain already built or extracted"
461 else
462 if [ -z "$PACKAGE" ]; then
463 echo "Full toolchain compilation" | tee -a $LOGFILE
df5e82b3 464 prepareenv
ca8da28e
MT
465
466 # Check if host can build the toolchain
467 check_toolchain_prerequisites
468
469 beautify build_stage "Building toolchain"
470 toolchain_build
df5e82b3 471 else
ca8da28e 472 echo "Restore from $PACKAGE" | tee -a $LOGFILE
f90f9467
MT
473 if [ `md5sum $BASEDIR/cache/toolchains/$PACKAGE | awk '{print $1}'` == `cat $BASEDIR/cache/toolchains/$TOOLCHAINNAME.md5 | awk '{print $1}'` ]; then
474 cd $BASEDIR && tar jxf $BASEDIR/cache/toolchains/$PACKAGE
df5e82b3
MT
475 prepareenv
476 else
ca8da28e 477 exiterror "$TOOLCHAINNAME md5 did not match, check downloaded package"
df5e82b3
MT
478 fi
479 fi
ca8da28e
MT
480 fi
481
3888140c 482 if [ ! -e $BASEDIR/log_${MACHINE}/03_ipfire/stage3-LFS ]; then
ca8da28e
MT
483 beautify build_stage "Building base"
484 base_build
df5e82b3 485 else
ca8da28e 486 beautify message DONE "Stage base already built"
df5e82b3 487 fi
5cfe86e6 488
3888140c 489 if [ ! -e $BASEDIR/log_${MACHINE}/04_misc/stage4-LFS ]; then
ca8da28e
MT
490 beautify build_stage "Building $NAME"
491 ipfire_build
492 else
493 beautify message DONE "Stage ipfire already built"
494 fi
5cfe86e6 495
3888140c 496 if [ ! -e $BASEDIR/log_${MACHINE}/05_installer/stage5-LFS ]; then
ca8da28e
MT
497 beautify build_stage "Building miscellaneous"
498 misc_build
5cfe86e6 499 else
ca8da28e 500 beautify message DONE "Stage misc already built"
5cfe86e6
HS
501 fi
502
0b59f25c 503 beautify build_stage "Building installer"
ca8da28e 504 installer_build
15679d9f 505
0b59f25c 506 beautify build_stage "Building packages"
ca8da28e
MT
507 packages_build
508
509 echo ""
ca8da28e 510 echo "... and all this hard work for this:"
f90f9467 511 du -bsh $BASEDIR/${SNAME}-${VERSION}.${MACHINE}.iso
df5e82b3 512 ;;
ca8da28e 513
df5e82b3
MT
514shell)
515 # enter a shell inside LFS chroot
516 # may be used to changed kernel settings
517 prepareenv
518 entershell
519 ;;
ca8da28e 520
df5e82b3 521changelog)
d1dd6669 522 echo -n "Loading new Changelog from SVN: "
223ad6a4 523 svn log http://svn.ipfire.org/svn/ipfire > doc/ChangeLog
a50d04ab 524 beautify message DONE
df5e82b3 525 ;;
ca8da28e 526
df5e82b3 527clean)
ca8da28e
MT
528 echo -ne "Cleaning ${BOLD}$MACHINE${NORMAL} buildtree"
529 for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`
530 do
df5e82b3
MT
531 $LOSETUP -d $i 2>/dev/null
532 done
ca8da28e
MT
533
534 for i in `mount | grep $BASEDIR | cut -d " " -f 1`
535 do
df5e82b3
MT
536 umount $i
537 done
ca8da28e 538
df5e82b3 539 stdumount
ca8da28e
MT
540
541 for i in `seq 0 7`
542 do
543 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
544 umount /dev/loop${i} 2>/dev/null;
545 losetup -d /dev/loop${i} 2>/dev/null;
546 fi;
df5e82b3 547 done
ca8da28e
MT
548
549 rm -rf $BASEDIR/build_${MACHINE}
550 rm -rf $BASEDIR/log_${MACHINE}
f9315063 551 rm -rf $BASEDIR/packages
ca8da28e
MT
552
553 if [ -h $TOOLS_DIR ]; then
554 rm -f $TOOLS_DIR
df5e82b3 555 fi
a50d04ab 556 beautify message DONE
df5e82b3 557 ;;
ca8da28e 558
c3db995c 559downloadsrc)
be472d5a
MT
560 LOGFILE=$BASEDIR/log_${MACHINE}/_build.preparation.log
561
df5e82b3
MT
562 if [ ! -d $BASEDIR/cache ]; then
563 mkdir $BASEDIR/cache
564 fi
be472d5a 565 mkdir -p $BASEDIR/log_${MACHINE}
857d9bf2 566 echo -e "${BOLD}Preload all source files${NORMAL}" | tee -a $LOGFILE
df5e82b3
MT
567 FINISHED=0
568 cd $BASEDIR/lfs
569 for c in `seq $MAX_RETRIES`; do
570 if (( FINISHED==1 )); then
571 break
572 fi
573 FINISHED=1
574 cd $BASEDIR/lfs
575 for i in *; do
576 if [ -f "$i" -a "$i" != "Config" ]; then
e22c7973 577 echo -ne "Loading $i"
df5e82b3
MT
578 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
579 if [ $? -ne 0 ]; then
e22c7973 580 beautify message FAIL
df5e82b3
MT
581 FINISHED=0
582 else
583 if [ $c -eq 1 ]; then
e22c7973 584 beautify message DONE
df5e82b3
MT
585 fi
586 fi
587 fi
588 done
589 done
e22c7973 590 cd - >/dev/null 2>&1
df5e82b3 591 ;;
ca8da28e 592
df5e82b3
MT
593toolchain)
594 prepareenv
ca8da28e
MT
595 # Check if host can build the toolchain
596 check_toolchain_prerequisites
597 toolchain_build
3888140c 598 echo "Create toolchain tar.bz for $MACHINE" | tee -a $LOGFILE
ca8da28e
MT
599 # Safer inside the chroot
600 echo -ne "Stripping lib"
601 chroot $LFS $TOOLS_DIR/bin/find $TOOLS_DIR/lib \
602 -type f \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
603 -exec $TOOLS_DIR/bin/strip --strip-debug {} \; 2>/dev/null
604 beautify message DONE
605 echo -ne "Stripping binaries"
606 chroot $LFS $TOOLS_DIR/bin/find /usr/local /usr/src/binutils-build $TOOLS_DIR/bin $TOOLS_DIR/sbin \
607 -type f \
608 -exec $TOOLS_DIR/bin/strip --strip-all {} \; 2> /dev/null
609 beautify message DONE
610 stdumount
611 echo -ne "Tar creation "
f90f9467 612 [ -d cache/toolchains ] || mkdir cache/toolchains
6b96312d 613 cd $BASEDIR && tar cj \
ca8da28e 614 --exclude='log_${MACHINE}/_build.*.log' \
f90f9467 615 --file=cache/toolchains/$TOOLCHAINNAME.tar.bz2 \
ca8da28e
MT
616 build_${MACHINE} \
617 log_${MACHINE} >> $LOGFILE
618 beautify message DONE
f90f9467
MT
619 echo `ls -sh cache/toolchains/$TOOLCHAINNAME.tar.bz2`
620 md5sum cache/toolchains/$TOOLCHAINNAME.tar.bz2 \
621 > cache/toolchains/$TOOLCHAINNAME.md5
ca8da28e 622
df5e82b3
MT
623 stdumount
624 ;;
ca8da28e 625
df5e82b3 626gettoolchain)
ca8da28e 627 if [ ! -f $BASEDIR/cache/toolchains/$TOOLCHAINNAME.tar.bz2 ]; then
5bd13f01 628 URL_TOOLCHAIN=`grep URL_TOOLCHAIN lfs/Config | awk '{ print $3 }'`
712d859c 629 test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains
6b96312d 630 echo "Loading toolchain for $MACHINE"
712d859c 631 cd $BASEDIR/cache/toolchains
ca8da28e 632 wget -c -nv $URL_TOOLCHAIN/$TOOLCHAINNAME.tar.bz2 $URL_TOOLCHAIN/$TOOLCHAINNAME.md5
712d859c 633 if [ $? -ne 0 ]; then
6b96312d 634 echo -n "ERROR: Downloading toolchain for $MACHINE machine"
ca8da28e 635 beautify message FAIL
6b96312d 636 echo "Precompiled toolchain not always available for every machine"
40a4ea4c 637 else
ca8da28e
MT
638 if [ "`md5sum $TOOLCHAINNAME.tar.bz2 | awk '{print $1}'`" = "`cat $TOOLCHAINNAME.md5 | awk '{print $1}'`" ]; then
639 beautify message DONE
6b96312d 640 echo "Toolchain md5 ok"
712d859c 641 else
ca8da28e 642 exiterror "$TOOLCHAINNAME.md5 did not match, check downloaded package"
712d859c 643 fi
40a4ea4c 644 fi
712d859c 645 else
6b96312d 646 echo -n "Toolchain for $MACHINE is already existing"
ca8da28e 647 beautify message SKIP
df5e82b3
MT
648 fi
649 ;;
ca8da28e 650
15679d9f 651othersrc)
ce56e927 652 prepareenv
15679d9f 653 echo -ne "`date -u '+%b %e %T'`: Build sources iso for $MACHINE" | tee -a $LOGFILE
ce56e927
MT
654 chroot $LFS /tools/bin/env -i HOME=/root \
655 TERM=$TERM PS1='\u:\w\$ ' \
656 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
657 VERSION=$VERSION NAME="$NAME" SNAME="$SNAME" MACHINE=$MACHINE \
658 /bin/bash -x -c "cd /usr/src/lfs && make -f sources-iso LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
659 mv $LFS/install/images/ipfire-* $BASEDIR >> $LOGFILE 2>&1
15679d9f
MT
660 if [ $? -eq "0" ]; then
661 beautify message DONE
662 else
663 beautify message FAIL
664 fi
ce56e927
MT
665 stdumount
666 ;;
ca8da28e 667
c6cb9d25 668svn)
67deab0a 669 . $BASEDIR/tools/make-subversion
c6cb9d25 670 case "$2" in
67deab0a
MT
671 update|up)
672 svn_up
673 ;;
674 commit|ci)
675 clear
676 svn_commit
677 svn_up
678 ;;
679 dist)
680 svn_dist
681 ;;
682 diff|di)
683 svn_diff
684 ;;
c6cb9d25 685 esac
f9315063 686 ;;
ca8da28e 687
15679d9f
MT
688uploadsrc)
689 PWD=`pwd`
690 cd $BASEDIR/cache/
691 echo -e "Uploading cache to ftp server:"
3888140c
MT
692 for i in *; do
693 echo "${i}" | fgrep -q .md5 && continue
694 [ -e ${i}.md5 ] && continue
695 md5sum ${i} | tee ${i}.md5
696 done
fd1b8061 697 ncftpls -u $FTP_CACHE_USER -p $FTP_CACHE_PASS ftp://$FTP_CACHE_URL/$FTP_CACHE_PATH/ > /tmp/ftplist
15679d9f 698 for i in *; do
fd1b8061
MT
699 if [ "$(basename $i)" == "toolchains" ]; then continue; fi
700 grep -q $(basename $i) /tmp/ftplist
0eab8e84 701 if [ "$?" -ne "0" ]; then
fd1b8061
MT
702 echo -ne "$(basename $i)"
703 ncftpput -u $FTP_CACHE_USER -p $FTP_CACHE_PASS $FTP_CACHE_URL $FTP_CACHE_PATH/ $(basename $i)
6fb8ec08 704 if [ "$?" -ne "0" ]; then
15679d9f 705 beautify message FAIL
0eab8e84
MT
706 fi
707 fi
708 done
6fb8ec08 709 rm -f /tmp/ftplist
15679d9f
MT
710 cd $PWD
711 exit 0
0eab8e84 712 ;;
ca8da28e 713
cc0e56be 714upload)
b2c64f8c
MT
715 FTP_ISO_PORT=`echo "$FTP_ISO_URL" | awk -F: '{ print $2 }'`
716 FTP_ISO_URL=`echo "$FTP_ISO_URL" | awk -F: '{ print $1 }'`
717 if [ -z $FTP_ISO_PORT ]; then
718 FTP_ISO_PORT=21
719 fi
720 cat <<EOF > .ftp-commands
de2c999d 721mkdir -p $FTP_ISO_PATH$SVN_REVISION
b2c64f8c 722mkdir -p $FTP_ISO_PATH$SVN_REVISION/paks
9dc02b38
MT
723quit
724EOF
b2c64f8c
MT
725 ncftp -u $FTP_ISO_USER -p $FTP_ISO_PASS -P $FTP_ISO_PORT $FTP_ISO_URL < .ftp-commands
726 rm -f .ftp-commands
727
728 case "$2" in
729 iso)
730 echo -e "Uploading the iso to $FTP_ISO_PATH/$SVN_REVISION."
731
8f55c54e 732 md5sum ipfire-$VERSION.$MACHINE-full.iso > ipfire-$VERSION.$MACHINE-full.iso.md5
dff9df9d
MT
733 for i in svn_status ipfire-source-r$SVN_REVISION.tar.gz ipfire-$VERSION.$MACHINE-full.iso ipfire-$VERSION.$MACHINE-full.iso.md5 ipfire-$VERSION.$MACHINE-devel.iso ipfire-$VERSION.$MACHINE-devel.iso.md5; do
734 if [ -e "$i" ]; then
b2c64f8c
MT
735 ncftpput -u $FTP_ISO_USER -p $FTP_ISO_PASS -P $FTP_ISO_PORT $FTP_ISO_URL $FTP_ISO_PATH$SVN_REVISION/ $i
736 if [ "$?" -eq "0" ]; then
737 echo "The file with name $i was successfully uploaded to $FTP_ISO_URL$FTP_ISO_PATH$SVN_REVISION/."
738 else
739 echo "There was an error while uploading the file $i to the ftp server."
740 exit 1
741 fi
dff9df9d 742 fi
b2c64f8c 743 done
a4c9c660 744 rm -f ipfire-$VERSION.$MACHINE-full.iso.md5
6aae8d61 745 if [ "$3" = "--with-sources-cd" ]; then
b2c64f8c 746 ncftpput -u $FTP_ISO_USER -p $FTP_ISO_PASS -P $FTP_ISO_PORT $FTP_ISO_URL $FTP_ISO_PATH/$SVN_REVISION/ ipfire-sources-cd-$VERSION.$MACHINE.iso
6aae8d61 747 fi
cc0e56be
MT
748 ;;
749 paks)
b2c64f8c 750 ncftpput -u $FTP_ISO_USER -p $FTP_ISO_PASS -P $FTP_ISO_PORT $FTP_ISO_URL $FTP_ISO_PATH$SVN_REVISION/paks packages/*
cc0e56be 751 if [ "$?" -eq "0" ]; then
822c5bd0 752 echo -e "The packages were successfully uploaded to $FTP_ISO_URL$FTP_ISO_PATH$SVN_REVISION/."
cc0e56be
MT
753 else
754 echo -e "There was an error while uploading the packages to the ftp server."
712d859c 755 exit 1
cc0e56be
MT
756 fi
757 ;;
758 esac
0d0521b6 759 ;;
ca8da28e 760
cc0e56be 761batch)
c8582074 762 if [ "$2" = "--background" ]; then
15679d9f
MT
763 batch_script
764 exit $?
765 fi
27ac55bf 766 if [ `screen -ls | grep -q ipfire` ]; then
712d859c
MT
767 echo "Build is already running, sorry!"
768 exit 1
769 else
27ac55bf
MT
770 if [ "$2" = "--rebuild" ]; then
771 export IPFIRE_REBUILD=1
772 echo "REBUILD!"
773 else
774 export IPFIRE_REBUILD=0
775 fi
15679d9f
MT
776 echo -en "${BOLD}***IPFire-Batch-Build is starting...${NORMAL}"
777 screen -dmS ipfire $0 batch --background
778 evaluate 1
712d859c
MT
779 exit 0
780 fi
cc0e56be 781 ;;
ca8da28e
MT
782
783watch|attach)
15679d9f 784 watch_screen
028698e8 785 ;;
ca8da28e 786
6b8cff41 787*)
6b8cff41
MT
788 cat doc/make.sh-usage
789 ;;
ca8da28e 790
3ea75603 791esac