]> git.ipfire.org Git - ipfire-3.x.git/blame - make.sh
Corrected some issues in collectd.
[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
cf63eea7 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
d3a6643e 191 ipfire_make bind
246556fe
MT
192
193 ### Building some general stuff
194 #
195 ipfire_make openssl
196 ipfire_make pam PASS=1
197 ipfire_make shadow
198 ipfire_make pam PASS=2
199
b8b94b55 200 #ipfire_make libidn ### Do we need this?
cf63eea7 201 ipfire_make pcre
246556fe
MT
202 ipfire_make popt
203 ipfire_make python
b09ca36a 204 ipfire_make pyfire
246556fe
MT
205 ipfire_make libxml2
206 ipfire_make libxslt
207 ipfire_make slang
208 ipfire_make newt
209 ipfire_make cyrus-sasl
cf63eea7
MT
210 ipfire_make openldap
211 ipfire_make sqlite
246556fe
MT
212 ipfire_make curl
213 ipfire_make libusb
214 ipfire_make gnupg
215 ipfire_make sudo
216 #ipfire_make libjpeg ### Do we need this?
217 ipfire_make libpng
218 ipfire_make libtiff
219 ipfire_make libart
220 ipfire_make freetype
221 ipfire_make lzo
b8b94b55
MT
222 ipfire_make lsof
223 ipfire_make br2684ctl
224 ipfire_make etherwake
225 ipfire_make htop
226 ipfire_make beep
246556fe
MT
227
228 ### Building filesystem stuff
229 #
230 ipfire_make reiserfsprogs
231 ipfire_make libaal
232 ipfire_make reiser4progs
a97daddb 233 ipfire_make xfsprogs
90708ef5 234 ipfire_make sysfsutils
246556fe
MT
235
236 ### Building hardware utils
237 #
238 ipfire_make pciutils
239 ipfire_make usbutils
240 ipfire_make hdparm
241 ipfire_make kudzu
b8b94b55 242 ipfire_make smartmontools
90708ef5 243 ipfire_make lm-sensors
246556fe
MT
244
245 ### Building some important tools
246 #
247 ipfire_make fcron
248 ipfire_make which
249 ipfire_make nano
250 ipfire_make screen
251 ipfire_make rrdtool
252 ipfire_make ntp ### Needs config.
253 ipfire_make openssh
b8b94b55
MT
254 ipfire_make ez-ipupdate
255 ipfire_make noip
256 ipfire_make lighttpd
31c59de6 257 ipfire_make lzma
90708ef5 258 ipfire_make collectd
cf63eea7
MT
259 #ipfire_make logrotate
260 #ipfire_make logwatch
d3a6643e
MT
261 ipfire_make cpio
262 ipfire_make cdrtools
263 ipfire_make parted
264 ipfire_make memtest86+
cf63eea7
MT
265 #ipfire_make pakfire
266 #ipfire_make initscripts
d3a6643e 267
cf63eea7
MT
268 ### -------------------------------------------------------------------------
269 ### Tools that maybe not needed
270 #
271 #ipfire_make expat
272 #ipfire_make gmp
273 #ipfire_make gd
274 #ipfire_make libcap
275 #ipfire_make mtools
276 #ipfire_make mISDN
277
278 #ipfire_make nasm
279 #ipfire_make wireless
280 #ipfire_make libsafe
246556fe
MT
281}
282
283################################################################################
284# This builds the entire stage "misc" #
285################################################################################
286misc_build() {
287
288 PATH=/usr/local/ccache/bin:/usr/local/distcc/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/${MACHINE_REAL}-linux/bin
289 STAGE_ORDER=04
290 STAGE=misc
291
292 LOGFILE="$BASEDIR/log_${MACHINE}/_build.misc.log"
293 export LOGFILE
294
d3a6643e 295 ipfire_make stage4
e53fbf32 296
d3a6643e
MT
297 ### Console tools
298 #
67deab0a
MT
299 ipfire_make glib
300 ipfire_make mc
d3a6643e
MT
301 #ipfire_make traceroute
302 #ipfire_make nmap
303 #ipfire_make rsync
304 #ipfire_make tcpdump
67deab0a 305
d3a6643e 306 #ipfire_make squid
d3a6643e
MT
307 #ipfire_make squidguard ## CAN THIS BE BANISHED BY ANYTHING BETTER?
308 #ipfire_make calamaris ## CAN THIS BE BANISHED BY ANYTHING BETTER?
309 #ipfire_make vsftpd
246556fe 310
d3a6643e
MT
311 ### Programs that are still for discussion
312 # package or in the standard system
313 #
314 ## NTFS
315 #ipfire_make fuse
cf63eea7
MT
316 #ipfire_make ntfs-3g
317 #
318 ## Net tools
319 #ipfire_make bwm-ng
320 #ipfire_make openvpn
321 #
322 ## UPNP
323 #ipfire_make libupnp
324 #ipfire_make linux-igd
d3a6643e
MT
325
326 ### These will become addons as usual but will be integrated later
327 #
246556fe
MT
328 #ipfire_make snort
329 #ipfire_make oinkmaster
e53fbf32 330 #ipfire_make centerim
e53fbf32
MT
331 #ipfire_make tripwire
332 #ipfire_make java
31c59de6
MT
333 #ipfire_make cups
334 #ipfire_make ghostscript
335 #ipfire_make foomatic
336 #ipfire_make hplip
337 #ipfire_make samba
31c59de6
MT
338 #ipfire_make postfix
339 #ipfire_make fetchmail
340 #ipfire_make cyrus-imapd
341 #ipfire_make clamav
342 #ipfire_make alsa
343 #ipfire_make mpg123
344 #ipfire_make mpfire
345 #ipfire_make guardian
346 #ipfire_make libid3tag
347 #ipfire_make libmad
348 #ipfire_make libogg
349 #ipfire_make libvorbis
350 #ipfire_make lame
351 #ipfire_make sox
352 #ipfire_make libshout
353 #ipfire_make icecast
354 #ipfire_make icegenerator
355 #ipfire_make mpd
356 #ipfire_make mpc
357 #ipfire_make xvid
358 #ipfire_make libmpeg2
359 #ipfire_make videolan
360 #ipfire_make libpri
361 #ipfire_make asterisk
31c59de6
MT
362 #ipfire_make libsigc++
363 #ipfire_make applejuice
31c59de6
MT
364 #ipfire_make libtorrent
365 #ipfire_make rtorrent
366 #ipfire_make ipfireseeder
31c59de6 367 #ipfire_make nfs
ca8da28e 368
d3a6643e
MT
369 # ---------------------------------------------------------------------------
370 #ipfire_make as86
371 #ipfire_make mbr
df5e82b3
MT
372}
373
ca8da28e
MT
374################################################################################
375# This builds the entire stage "installer" #
376################################################################################
377installer_build() {
378
379 PATH=/usr/local/ccache/bin:/usr/local/distcc/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/${MACHINE_REAL}-linux/bin
380 STAGE_ORDER=05
381 STAGE=installer
382
383 LOGFILE="$BASEDIR/log_${MACHINE}/_build.installer.log"
384 export LOGFILE
246556fe 385
79fda7b6 386 ipfire_make stage5
e53fbf32 387 ipfire_make busybox
b09ca36a 388 ipfire_make installer
e53fbf32 389 ipfire_make initramfs
df5e82b3
MT
390}
391
ca8da28e
MT
392################################################################################
393# This builds the entire stage "packages" #
394################################################################################
395packages_build() {
df5e82b3 396
ca8da28e
MT
397 PATH=/usr/local/ccache/bin:/usr/local/distcc/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/${MACHINE_REAL}-linux/bin
398 STAGE_ORDER=06
399 STAGE=packages
df5e82b3 400
ca8da28e
MT
401 LOGFILE="$BASEDIR/log_${MACHINE}/_build.packages.log"
402 export LOGFILE
0fbb45e9 403
cf63eea7 404 toolchain_make strip
df5e82b3
MT
405
406 # Generating list of packages used
f90f9467 407 ### MISSING ATM
df5e82b3 408
f90f9467 409 ipfire_make cdrom
74dbbc36 410
4dc82852 411 # Check if there is a loop device for building in virtual environments
65151129
MT
412 #if [ -e /dev/loop/0 ] || [ -e /dev/loop0 ]; then
413 # ipfire_make usb-stick
414 #fi
f90f9467 415 mv $LFS/$IMAGES_DIR/{*.iso,*.tgz,*.img.gz} $BASEDIR >> $LOGFILE 2>&1
c9673262 416
f90f9467
MT
417 #ipfire_make core-updates
418 ### DISABLED ATM
419
084ab6f4 420 for i in $(ls -1 $BASEDIR/src/rootfiles/extras); do
453b418b 421 if [ -e $BASEDIR/lfs/$i ]; then
f90f9467
MT
422 echo -n
423 ### Do nothing at the moment, we are gonna use a new packager
453b418b
MT
424 else
425 echo -n $i
426 beautify message SKIP
427 fi
fe7fe395 428 done
f90f9467
MT
429
430 # Cleanup
431 stdumount
432 rm -rf $LFS/tmp/*
433
434 cd $PWD
df5e82b3
MT
435}
436
437# See what we're supposed to do
438case "$1" in
439build)
9729e787 440 clear
ca8da28e
MT
441 #a prebuilt toolchain package is only used if found in cache
442 if [ ! -d $BASEDIR/cache ]; then
443 exiterror "Use make.sh downloadsrc first!"
444 fi
6b96312d
MT
445 cd $BASEDIR/cache/toolchains
446 PACKAGE=`ls -v -r $TOOLCHAINNAME.tar.bz2 2> /dev/null | head -n 1`
df5e82b3 447 #only restore on a clean disk
ca8da28e
MT
448
449 echo -ne "Building for ${BOLD}${MACHINE} on ${MACHINE_REAL}${NORMAL}\n"
450
3888140c 451 if [ -f $BASEDIR/log_${MACHINE}/02_base/stage2-LFS ]; then
ca8da28e
MT
452 prepareenv
453 echo "Using installed toolchain" >> $LOGFILE
454 beautify message DONE "Stage toolchain already built or extracted"
455 else
456 if [ -z "$PACKAGE" ]; then
457 echo "Full toolchain compilation" | tee -a $LOGFILE
df5e82b3 458 prepareenv
ca8da28e
MT
459
460 # Check if host can build the toolchain
461 check_toolchain_prerequisites
462
463 beautify build_stage "Building toolchain"
464 toolchain_build
df5e82b3 465 else
ca8da28e 466 echo "Restore from $PACKAGE" | tee -a $LOGFILE
f90f9467
MT
467 if [ `md5sum $BASEDIR/cache/toolchains/$PACKAGE | awk '{print $1}'` == `cat $BASEDIR/cache/toolchains/$TOOLCHAINNAME.md5 | awk '{print $1}'` ]; then
468 cd $BASEDIR && tar jxf $BASEDIR/cache/toolchains/$PACKAGE
df5e82b3
MT
469 prepareenv
470 else
ca8da28e 471 exiterror "$TOOLCHAINNAME md5 did not match, check downloaded package"
df5e82b3
MT
472 fi
473 fi
ca8da28e
MT
474 fi
475
3888140c 476 if [ ! -e $BASEDIR/log_${MACHINE}/03_ipfire/stage3-LFS ]; then
ca8da28e
MT
477 beautify build_stage "Building base"
478 base_build
df5e82b3 479 else
ca8da28e 480 beautify message DONE "Stage base already built"
df5e82b3 481 fi
5cfe86e6 482
3888140c 483 if [ ! -e $BASEDIR/log_${MACHINE}/04_misc/stage4-LFS ]; then
ca8da28e
MT
484 beautify build_stage "Building $NAME"
485 ipfire_build
486 else
487 beautify message DONE "Stage ipfire already built"
488 fi
5cfe86e6 489
3888140c 490 if [ ! -e $BASEDIR/log_${MACHINE}/05_installer/stage5-LFS ]; then
ca8da28e
MT
491 beautify build_stage "Building miscellaneous"
492 misc_build
5cfe86e6 493 else
ca8da28e 494 beautify message DONE "Stage misc already built"
5cfe86e6
HS
495 fi
496
0b59f25c 497 beautify build_stage "Building installer"
ca8da28e 498 installer_build
15679d9f 499
0b59f25c 500 beautify build_stage "Building packages"
ca8da28e
MT
501 packages_build
502
503 echo ""
ca8da28e 504 echo "... and all this hard work for this:"
f90f9467 505 du -bsh $BASEDIR/${SNAME}-${VERSION}.${MACHINE}.iso
df5e82b3 506 ;;
ca8da28e 507
df5e82b3
MT
508shell)
509 # enter a shell inside LFS chroot
510 # may be used to changed kernel settings
511 prepareenv
512 entershell
513 ;;
ca8da28e 514
df5e82b3 515changelog)
d1dd6669 516 echo -n "Loading new Changelog from SVN: "
223ad6a4 517 svn log http://svn.ipfire.org/svn/ipfire > doc/ChangeLog
a50d04ab 518 beautify message DONE
df5e82b3 519 ;;
ca8da28e 520
df5e82b3 521clean)
ca8da28e
MT
522 echo -ne "Cleaning ${BOLD}$MACHINE${NORMAL} buildtree"
523 for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`
524 do
df5e82b3
MT
525 $LOSETUP -d $i 2>/dev/null
526 done
ca8da28e
MT
527
528 for i in `mount | grep $BASEDIR | cut -d " " -f 1`
529 do
df5e82b3
MT
530 umount $i
531 done
ca8da28e 532
df5e82b3 533 stdumount
ca8da28e
MT
534
535 for i in `seq 0 7`
536 do
537 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
538 umount /dev/loop${i} 2>/dev/null;
539 losetup -d /dev/loop${i} 2>/dev/null;
540 fi;
df5e82b3 541 done
ca8da28e
MT
542
543 rm -rf $BASEDIR/build_${MACHINE}
544 rm -rf $BASEDIR/log_${MACHINE}
f9315063 545 rm -rf $BASEDIR/packages
ca8da28e
MT
546
547 if [ -h $TOOLS_DIR ]; then
548 rm -f $TOOLS_DIR
df5e82b3 549 fi
a50d04ab 550 beautify message DONE
df5e82b3 551 ;;
ca8da28e 552
c3db995c 553downloadsrc)
be472d5a
MT
554 LOGFILE=$BASEDIR/log_${MACHINE}/_build.preparation.log
555
df5e82b3
MT
556 if [ ! -d $BASEDIR/cache ]; then
557 mkdir $BASEDIR/cache
558 fi
be472d5a 559 mkdir -p $BASEDIR/log_${MACHINE}
857d9bf2 560 echo -e "${BOLD}Preload all source files${NORMAL}" | tee -a $LOGFILE
df5e82b3
MT
561 FINISHED=0
562 cd $BASEDIR/lfs
563 for c in `seq $MAX_RETRIES`; do
564 if (( FINISHED==1 )); then
565 break
566 fi
567 FINISHED=1
568 cd $BASEDIR/lfs
569 for i in *; do
570 if [ -f "$i" -a "$i" != "Config" ]; then
e22c7973 571 echo -ne "Loading $i"
df5e82b3
MT
572 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
573 if [ $? -ne 0 ]; then
e22c7973 574 beautify message FAIL
df5e82b3
MT
575 FINISHED=0
576 else
577 if [ $c -eq 1 ]; then
e22c7973 578 beautify message DONE
df5e82b3
MT
579 fi
580 fi
581 fi
582 done
583 done
e22c7973 584 cd - >/dev/null 2>&1
df5e82b3 585 ;;
ca8da28e 586
df5e82b3
MT
587toolchain)
588 prepareenv
ca8da28e
MT
589 # Check if host can build the toolchain
590 check_toolchain_prerequisites
591 toolchain_build
3888140c 592 echo "Create toolchain tar.bz for $MACHINE" | tee -a $LOGFILE
ca8da28e
MT
593 # Safer inside the chroot
594 echo -ne "Stripping lib"
595 chroot $LFS $TOOLS_DIR/bin/find $TOOLS_DIR/lib \
596 -type f \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
597 -exec $TOOLS_DIR/bin/strip --strip-debug {} \; 2>/dev/null
598 beautify message DONE
599 echo -ne "Stripping binaries"
600 chroot $LFS $TOOLS_DIR/bin/find /usr/local /usr/src/binutils-build $TOOLS_DIR/bin $TOOLS_DIR/sbin \
601 -type f \
602 -exec $TOOLS_DIR/bin/strip --strip-all {} \; 2> /dev/null
603 beautify message DONE
604 stdumount
605 echo -ne "Tar creation "
f90f9467 606 [ -d cache/toolchains ] || mkdir cache/toolchains
6b96312d 607 cd $BASEDIR && tar cj \
ca8da28e 608 --exclude='log_${MACHINE}/_build.*.log' \
f90f9467 609 --file=cache/toolchains/$TOOLCHAINNAME.tar.bz2 \
ca8da28e
MT
610 build_${MACHINE} \
611 log_${MACHINE} >> $LOGFILE
612 beautify message DONE
f90f9467
MT
613 echo `ls -sh cache/toolchains/$TOOLCHAINNAME.tar.bz2`
614 md5sum cache/toolchains/$TOOLCHAINNAME.tar.bz2 \
615 > cache/toolchains/$TOOLCHAINNAME.md5
ca8da28e 616
df5e82b3
MT
617 stdumount
618 ;;
ca8da28e 619
df5e82b3 620gettoolchain)
ca8da28e 621 if [ ! -f $BASEDIR/cache/toolchains/$TOOLCHAINNAME.tar.bz2 ]; then
5bd13f01 622 URL_TOOLCHAIN=`grep URL_TOOLCHAIN lfs/Config | awk '{ print $3 }'`
712d859c 623 test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains
6b96312d 624 echo "Loading toolchain for $MACHINE"
712d859c 625 cd $BASEDIR/cache/toolchains
ca8da28e 626 wget -c -nv $URL_TOOLCHAIN/$TOOLCHAINNAME.tar.bz2 $URL_TOOLCHAIN/$TOOLCHAINNAME.md5
712d859c 627 if [ $? -ne 0 ]; then
6b96312d 628 echo -n "ERROR: Downloading toolchain for $MACHINE machine"
ca8da28e 629 beautify message FAIL
6b96312d 630 echo "Precompiled toolchain not always available for every machine"
40a4ea4c 631 else
ca8da28e
MT
632 if [ "`md5sum $TOOLCHAINNAME.tar.bz2 | awk '{print $1}'`" = "`cat $TOOLCHAINNAME.md5 | awk '{print $1}'`" ]; then
633 beautify message DONE
6b96312d 634 echo "Toolchain md5 ok"
712d859c 635 else
ca8da28e 636 exiterror "$TOOLCHAINNAME.md5 did not match, check downloaded package"
712d859c 637 fi
40a4ea4c 638 fi
712d859c 639 else
6b96312d 640 echo -n "Toolchain for $MACHINE is already existing"
ca8da28e 641 beautify message SKIP
df5e82b3
MT
642 fi
643 ;;
ca8da28e 644
15679d9f 645othersrc)
ce56e927 646 prepareenv
15679d9f 647 echo -ne "`date -u '+%b %e %T'`: Build sources iso for $MACHINE" | tee -a $LOGFILE
ce56e927
MT
648 chroot $LFS /tools/bin/env -i HOME=/root \
649 TERM=$TERM PS1='\u:\w\$ ' \
650 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
651 VERSION=$VERSION NAME="$NAME" SNAME="$SNAME" MACHINE=$MACHINE \
652 /bin/bash -x -c "cd /usr/src/lfs && make -f sources-iso LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
653 mv $LFS/install/images/ipfire-* $BASEDIR >> $LOGFILE 2>&1
15679d9f
MT
654 if [ $? -eq "0" ]; then
655 beautify message DONE
656 else
657 beautify message FAIL
658 fi
ce56e927
MT
659 stdumount
660 ;;
ca8da28e 661
c6cb9d25 662svn)
67deab0a 663 . $BASEDIR/tools/make-subversion
c6cb9d25 664 case "$2" in
67deab0a
MT
665 update|up)
666 svn_up
667 ;;
668 commit|ci)
669 clear
670 svn_commit
671 svn_up
672 ;;
673 dist)
674 svn_dist
675 ;;
676 diff|di)
677 svn_diff
678 ;;
c6cb9d25 679 esac
f9315063 680 ;;
ca8da28e 681
15679d9f
MT
682uploadsrc)
683 PWD=`pwd`
684 cd $BASEDIR/cache/
685 echo -e "Uploading cache to ftp server:"
3888140c
MT
686 for i in *; do
687 echo "${i}" | fgrep -q .md5 && continue
688 [ -e ${i}.md5 ] && continue
689 md5sum ${i} | tee ${i}.md5
690 done
fd1b8061 691 ncftpls -u $FTP_CACHE_USER -p $FTP_CACHE_PASS ftp://$FTP_CACHE_URL/$FTP_CACHE_PATH/ > /tmp/ftplist
15679d9f 692 for i in *; do
fd1b8061
MT
693 if [ "$(basename $i)" == "toolchains" ]; then continue; fi
694 grep -q $(basename $i) /tmp/ftplist
0eab8e84 695 if [ "$?" -ne "0" ]; then
fd1b8061
MT
696 echo -ne "$(basename $i)"
697 ncftpput -u $FTP_CACHE_USER -p $FTP_CACHE_PASS $FTP_CACHE_URL $FTP_CACHE_PATH/ $(basename $i)
6fb8ec08 698 if [ "$?" -ne "0" ]; then
15679d9f 699 beautify message FAIL
0eab8e84
MT
700 fi
701 fi
702 done
6fb8ec08 703 rm -f /tmp/ftplist
15679d9f
MT
704 cd $PWD
705 exit 0
0eab8e84 706 ;;
ca8da28e 707
cc0e56be 708upload)
b2c64f8c
MT
709 FTP_ISO_PORT=`echo "$FTP_ISO_URL" | awk -F: '{ print $2 }'`
710 FTP_ISO_URL=`echo "$FTP_ISO_URL" | awk -F: '{ print $1 }'`
711 if [ -z $FTP_ISO_PORT ]; then
712 FTP_ISO_PORT=21
713 fi
714 cat <<EOF > .ftp-commands
de2c999d 715mkdir -p $FTP_ISO_PATH$SVN_REVISION
b2c64f8c 716mkdir -p $FTP_ISO_PATH$SVN_REVISION/paks
9dc02b38
MT
717quit
718EOF
b2c64f8c
MT
719 ncftp -u $FTP_ISO_USER -p $FTP_ISO_PASS -P $FTP_ISO_PORT $FTP_ISO_URL < .ftp-commands
720 rm -f .ftp-commands
721
722 case "$2" in
723 iso)
724 echo -e "Uploading the iso to $FTP_ISO_PATH/$SVN_REVISION."
725
8f55c54e 726 md5sum ipfire-$VERSION.$MACHINE-full.iso > ipfire-$VERSION.$MACHINE-full.iso.md5
dff9df9d
MT
727 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
728 if [ -e "$i" ]; then
b2c64f8c
MT
729 ncftpput -u $FTP_ISO_USER -p $FTP_ISO_PASS -P $FTP_ISO_PORT $FTP_ISO_URL $FTP_ISO_PATH$SVN_REVISION/ $i
730 if [ "$?" -eq "0" ]; then
731 echo "The file with name $i was successfully uploaded to $FTP_ISO_URL$FTP_ISO_PATH$SVN_REVISION/."
732 else
733 echo "There was an error while uploading the file $i to the ftp server."
734 exit 1
735 fi
dff9df9d 736 fi
b2c64f8c 737 done
a4c9c660 738 rm -f ipfire-$VERSION.$MACHINE-full.iso.md5
6aae8d61 739 if [ "$3" = "--with-sources-cd" ]; then
b2c64f8c 740 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 741 fi
cc0e56be
MT
742 ;;
743 paks)
b2c64f8c 744 ncftpput -u $FTP_ISO_USER -p $FTP_ISO_PASS -P $FTP_ISO_PORT $FTP_ISO_URL $FTP_ISO_PATH$SVN_REVISION/paks packages/*
cc0e56be 745 if [ "$?" -eq "0" ]; then
822c5bd0 746 echo -e "The packages were successfully uploaded to $FTP_ISO_URL$FTP_ISO_PATH$SVN_REVISION/."
cc0e56be
MT
747 else
748 echo -e "There was an error while uploading the packages to the ftp server."
712d859c 749 exit 1
cc0e56be
MT
750 fi
751 ;;
752 esac
0d0521b6 753 ;;
ca8da28e 754
cc0e56be 755batch)
c8582074 756 if [ "$2" = "--background" ]; then
15679d9f
MT
757 batch_script
758 exit $?
759 fi
27ac55bf 760 if [ `screen -ls | grep -q ipfire` ]; then
712d859c
MT
761 echo "Build is already running, sorry!"
762 exit 1
763 else
27ac55bf
MT
764 if [ "$2" = "--rebuild" ]; then
765 export IPFIRE_REBUILD=1
766 echo "REBUILD!"
767 else
768 export IPFIRE_REBUILD=0
769 fi
15679d9f
MT
770 echo -en "${BOLD}***IPFire-Batch-Build is starting...${NORMAL}"
771 screen -dmS ipfire $0 batch --background
772 evaluate 1
712d859c
MT
773 exit 0
774 fi
cc0e56be 775 ;;
ca8da28e
MT
776
777watch|attach)
15679d9f 778 watch_screen
028698e8 779 ;;
ca8da28e 780
6b8cff41 781*)
6b8cff41
MT
782 cat doc/make.sh-usage
783 ;;
ca8da28e 784
3ea75603 785esac