]> git.ipfire.org Git - ipfire-2.x.git/blob - make.sh
mediatomb: Disable build because it FTBFS
[ipfire-2.x.git] / make.sh
1 #!/bin/bash
2 ############################################################################
3 # #
4 # This file is part of the IPFire Firewall. #
5 # #
6 # IPFire is free software; you can redistribute it and/or modify #
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 # #
11 # IPFire is distributed in the hope that it will be useful, #
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 #
17 # along with IPFire; if not, write to the Free Software #
18 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
19 # #
20 # Copyright (C) 2007-2015 IPFire Team <info@ipfire.org>. #
21 # #
22 ############################################################################
23 #
24
25 NAME="IPFire" # Software name
26 SNAME="ipfire" # Short name
27 VERSION="2.17" # Version number
28 CORE="97" # Core Level (Filename)
29 PAKFIRE_CORE="96" # Core Level (PAKFIRE)
30 GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` # Git Branch
31 SLOGAN="www.ipfire.org" # Software slogan
32 CONFIG_ROOT=/var/ipfire # Configuration rootdir
33 NICE=10 # Nice level
34 MAX_RETRIES=1 # prefetch/check loop
35 BUILD_IMAGES=1 # Flash and Xen Downloader
36 KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'`
37 GIT_TAG=$(git tag | tail -1) # Git Tag
38 GIT_LASTCOMMIT=$(git log | head -n1 | cut -d" " -f2 |head -c8) # Last commit
39 TOOLCHAINVER=10
40
41 # New architecture variables
42 BUILD_ARCH="$(uname -m)"
43 BUILDMACHINE="${BUILD_ARCH}"
44
45 # Debian specific settings
46 if [ ! -e /etc/debian_version ]; then
47 FULLPATH=`which $0`
48 else
49 if [ -x /usr/bin/realpath ]; then
50 FULLPATH=`/usr/bin/realpath $0`
51 else
52 echo "ERROR: Need to do apt-get install realpath"
53 exit 1
54 fi
55 fi
56
57 PWD=`pwd`
58 BASENAME=`basename $0`
59 BASEDIR=`echo $FULLPATH | sed "s/\/$BASENAME//g"`
60 LOGFILE=$BASEDIR/log/_build.preparation.log
61 export BASEDIR LOGFILE
62 DIR_CHK=$BASEDIR/cache/check
63 mkdir $BASEDIR/log/ 2>/dev/null
64
65 # Include funtions
66 . tools/make-functions
67
68 if [ -f .config ]; then
69 . .config
70 fi
71
72 if [ -n "${TARGET_ARCH}" ]; then
73 configure_target "${TARGET_ARCH}"
74 else
75 configure_target "default"
76 fi
77
78 if [ -z $EDITOR ]; then
79 for i in nano emacs vi; do
80 EDITOR=$(which $i 2>/dev/null)
81 if ! [ -z $EDITOR ]; then
82 export EDITOR=$EDITOR
83 break
84 fi
85 done
86 [ -z $EDITOR ] && exiterror "You should have installed an editor."
87 fi
88
89
90 prepareenv() {
91 ############################################################################
92 # #
93 # Are we running the right shell? #
94 # #
95 ############################################################################
96 if [ ! "$BASH" ]; then
97 exiterror "BASH environment variable is not set. You're probably running the wrong shell."
98 fi
99
100 if [ -z "${BASH_VERSION}" ]; then
101 exiterror "Not running BASH shell."
102 fi
103
104
105 ############################################################################
106 # #
107 # Trap on emergency exit #
108 # #
109 ############################################################################
110 trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGKILL SIGSTOP SIGQUIT
111
112
113 ############################################################################
114 # #
115 # Resetting our nice level #
116 # #
117 ############################################################################
118 echo -ne "Resetting our nice level to $NICE" | tee -a $LOGFILE
119 renice $NICE $$ > /dev/null
120 if [ `nice` != "$NICE" ]; then
121 beautify message FAIL
122 exiterror "Failed to set correct nice level"
123 else
124 beautify message DONE
125 fi
126
127
128 ############################################################################
129 # #
130 # Checking if running as root user #
131 # #
132 ############################################################################
133 echo -ne "Checking if we're running as root user" | tee -a $LOGFILE
134 if [ `id -u` != 0 ]; then
135 beautify message FAIL
136 exiterror "Not building as root"
137 else
138 beautify message DONE
139 fi
140
141
142 ############################################################################
143 # #
144 # Checking for necessary temporary space #
145 # #
146 ############################################################################
147 echo -ne "Checking for necessary space on disk $BASE_DEV" | tee -a $LOGFILE
148 BASE_DEV=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $1 }'`
149 BASE_ASPACE=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $4 }'`
150 if (( 2048000 > $BASE_ASPACE )); then
151 BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'`
152 if (( 2048000 - $BASE_USPACE > $BASE_ASPACE )); then
153 beautify message FAIL
154 exiterror "Not enough temporary space available, need at least 2GB on $BASE_DEV"
155 fi
156 else
157 beautify message DONE
158 fi
159
160 ############################################################################
161 # #
162 # Building Linux From Scratch system #
163 # #
164 ############################################################################
165 # Set umask
166 umask 022
167
168 # Set LFS Directory
169 LFS=$BASEDIR/build
170
171 # Check /tools symlink
172 if [ -h /tools ]; then
173 rm -f /tools
174 fi
175 if [ ! -a /tools ]; then
176 ln -s $BASEDIR/build/tools /
177 fi
178 if [ ! -h /tools ]; then
179 exiterror "Could not create /tools symbolic link."
180 fi
181
182 # Setup environment
183 set +h
184 LC_ALL=POSIX
185 if [ -z $MAKETUNING ]; then
186 CPU_COUNT="$(getconf _NPROCESSORS_ONLN 2>/dev/null)"
187 if [ -z "${CPU_COUNT}" ]; then
188 CPU_COUNT=1
189 fi
190
191 MAKETUNING="-j$(( ${CPU_COUNT} * 2 + 1 ))"
192 fi
193 export LFS LC_ALL CFLAGS CXXFLAGS MAKETUNING
194 unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
195
196 # Make some extra directories
197 mkdir -p $BASEDIR/build/{tools,etc,usr/src} 2>/dev/null
198 mkdir -p $BASEDIR/build/{dev/{shm,pts},proc,sys}
199 mkdir -p $BASEDIR/{cache,ccache} 2>/dev/null
200 mkdir -p $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache}
201
202 mknod -m 600 $BASEDIR/build/dev/console c 5 1 2>/dev/null
203 mknod -m 666 $BASEDIR/build/dev/null c 1 3 2>/dev/null
204
205 # Make all sources and proc available under lfs build
206 mount --bind /dev $BASEDIR/build/dev
207 mount --bind /dev/pts $BASEDIR/build/dev/pts
208 mount --bind /dev/shm $BASEDIR/build/dev/shm
209 mount --bind /proc $BASEDIR/build/proc
210 mount --bind /sys $BASEDIR/build/sys
211 mount --bind $BASEDIR/cache $BASEDIR/build/usr/src/cache
212 mount --bind $BASEDIR/ccache $BASEDIR/build/usr/src/ccache
213 mount --bind $BASEDIR/config $BASEDIR/build/usr/src/config
214 mount --bind $BASEDIR/doc $BASEDIR/build/usr/src/doc
215 mount --bind $BASEDIR/html $BASEDIR/build/usr/src/html
216 mount --bind $BASEDIR/langs $BASEDIR/build/usr/src/langs
217 mount --bind $BASEDIR/lfs $BASEDIR/build/usr/src/lfs
218 mount --bind $BASEDIR/log $BASEDIR/build/usr/src/log
219 mount --bind $BASEDIR/src $BASEDIR/build/usr/src/src
220
221 # Run LFS static binary creation scripts one by one
222 export CCACHE_DIR=$BASEDIR/ccache
223 export CCACHE_COMPRESS=1
224 export CCACHE_COMPILERCHECK="string:toolchain-${TOOLCHAINVER}:${TARGET_ARCH}"
225
226 # Remove pre-install list of installed files in case user erase some files before rebuild
227 rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null
228
229 # Prepare string for /etc/system-release.
230 SYSTEM_RELEASE="${NAME} ${VERSION} (${MACHINE})"
231 if [ "$(git status -s | wc -l)" == "0" ]; then
232 GIT_STATUS=""
233 else
234 GIT_STATUS="-dirty"
235 fi
236 case "$GIT_BRANCH" in
237 core*|beta?|rc?)
238 SYSTEM_RELEASE="${SYSTEM_RELEASE} - $GIT_BRANCH$GIT_STATUS"
239 ;;
240 *)
241 SYSTEM_RELEASE="${SYSTEM_RELEASE} - Development Build: $GIT_BRANCH/$GIT_LASTCOMMIT$GIT_STATUS"
242 ;;
243 esac
244 }
245
246 buildtoolchain() {
247 local error=false
248 case "${TARGET_ARCH}:${BUILD_ARCH}" in
249 # x86_64
250 x86_64:x86_64)
251 # This is working.
252 ;;
253
254 # x86
255 i586:i586|i586:i686|i586:x86_64)
256 # These are working.
257 ;;
258 i586:*)
259 error=true
260 ;;
261
262 # ARM
263 armv5tel:armv5tel|armv5tel:armv5tejl|armv5tel:armv6l|armv5tel:armv7l)
264 # These are working.
265 ;;
266 armv5tel:*)
267 error=true
268 ;;
269 esac
270
271 ${error} && \
272 exiterror "Cannot build ${MACHINE} toolchain on $(uname -m). Please use the download if any."
273
274 local gcc=$(type -p gcc)
275 if [ -z "${gcc}" ]; then
276 exiterror "Could not find GCC. You will need a working build enviroment in order to build the toolchain."
277 fi
278
279 LOGFILE="$BASEDIR/log/_build.toolchain.log"
280 export LOGFILE
281
282 local ORG_PATH=$PATH
283 export PATH="/tools/ccache/bin:/tools/bin:$PATH"
284 lfsmake1 ccache PASS=1
285 lfsmake1 binutils PASS=1
286 lfsmake1 gcc PASS=1
287 lfsmake1 linux TOOLS=1 KCFG="-headers"
288 lfsmake1 glibc
289 lfsmake1 cleanup-toolchain PASS=1
290 lfsmake1 binutils PASS=2
291 lfsmake1 gcc PASS=2
292 lfsmake1 ccache PASS=2
293 lfsmake1 tcl
294 lfsmake1 expect
295 lfsmake1 dejagnu
296 lfsmake1 ncurses
297 lfsmake1 bash
298 lfsmake1 bzip2
299 lfsmake1 coreutils
300 lfsmake1 diffutils
301 lfsmake1 findutils
302 lfsmake1 gawk
303 lfsmake1 gettext
304 lfsmake1 grep
305 lfsmake1 gzip
306 lfsmake1 m4
307 lfsmake1 make
308 lfsmake1 patch
309 lfsmake1 perl
310 lfsmake1 sed
311 lfsmake1 tar
312 lfsmake1 texinfo
313 lfsmake1 xz
314 lfsmake1 fake-environ
315 lfsmake1 cleanup-toolchain PASS=2
316 export PATH=$ORG_PATH
317 }
318
319 buildbase() {
320 LOGFILE="$BASEDIR/log/_build.base.log"
321 export LOGFILE
322 lfsmake2 stage2
323 lfsmake2 linux KCFG="-headers"
324 lfsmake2 man-pages
325 lfsmake2 glibc
326 lfsmake2 tzdata
327 lfsmake2 cleanup-toolchain PASS=3
328 lfsmake2 zlib
329 lfsmake2 binutils
330 lfsmake2 gmp
331 lfsmake2 gmp-compat
332 lfsmake2 mpfr
333 lfsmake2 libmpc
334 lfsmake2 file
335 lfsmake2 gcc
336 lfsmake2 sed
337 lfsmake2 berkeley
338 lfsmake2 coreutils
339 lfsmake2 iana-etc
340 lfsmake2 m4
341 lfsmake2 bison
342 lfsmake2 ncurses
343 lfsmake2 procps
344 lfsmake2 libtool
345 lfsmake2 perl
346 lfsmake2 readline
347 lfsmake2 readline-compat
348 lfsmake2 pcre
349 lfsmake2 pcre-compat
350 lfsmake2 autoconf
351 lfsmake2 automake
352 lfsmake2 bash
353 lfsmake2 bzip2
354 lfsmake2 diffutils
355 lfsmake2 e2fsprogs
356 lfsmake2 ed
357 lfsmake2 findutils
358 lfsmake2 flex
359 lfsmake2 gawk
360 lfsmake2 gettext
361 lfsmake2 grep
362 lfsmake2 groff
363 lfsmake2 gperf
364 lfsmake2 gzip
365 lfsmake2 hostname
366 lfsmake2 iproute2
367 lfsmake2 jwhois
368 lfsmake2 kbd
369 lfsmake2 less
370 lfsmake2 make
371 lfsmake2 man
372 lfsmake2 kmod
373 lfsmake2 net-tools
374 lfsmake2 patch
375 lfsmake2 psmisc
376 lfsmake2 shadow
377 lfsmake2 sysklogd
378 lfsmake2 sysvinit
379 lfsmake2 tar
380 lfsmake2 texinfo
381 lfsmake2 util-linux
382 lfsmake2 udev
383 lfsmake2 vim
384 lfsmake2 xz
385 lfsmake2 paxctl
386 }
387
388 buildipfire() {
389 LOGFILE="$BASEDIR/log/_build.ipfire.log"
390 export LOGFILE
391 ipfiremake configroot
392 ipfiremake backup
393 ipfiremake pkg-config
394 ipfiremake libusb
395 ipfiremake libusb-compat
396 ipfiremake libpcap
397 ipfiremake ppp
398 ipfiremake pptp
399 ipfiremake unzip
400 ipfiremake which
401 ipfiremake linux-firmware
402 ipfiremake dvb-firmwares
403 ipfiremake zd1211-firmware
404 ipfiremake rpi-firmware
405 ipfiremake bc
406 ipfiremake u-boot
407 ipfiremake cpio
408 ipfiremake mdadm
409 ipfiremake dracut
410 ipfiremake lvm2
411 ipfiremake multipath-tools
412 ipfiremake freetype
413 ipfiremake grub
414 ipfiremake libmnl
415 ipfiremake libnfnetlink
416 ipfiremake libnetfilter_queue
417 ipfiremake libnetfilter_conntrack
418 ipfiremake libnetfilter_cthelper
419 ipfiremake libnetfilter_cttimeout
420 ipfiremake iptables
421
422 case "${TARGET_ARCH}" in
423 x86_64)
424 ipfiremake linux KCFG=""
425 ipfiremake backports KCFG=""
426 ipfiremake e1000e KCFG=""
427 ipfiremake igb KCFG=""
428 ipfiremake ixgbe KCFG=""
429 ipfiremake xtables-addons KCFG=""
430 ipfiremake linux-initrd KCFG=""
431 ;;
432 i586)
433 # x86-pae (Native and new XEN) kernel build
434 ipfiremake linux KCFG="-pae"
435 ipfiremake backports KCFG="-pae"
436 ipfiremake e1000e KCFG="-pae"
437 ipfiremake igb KCFG="-pae"
438 ipfiremake ixgbe KCFG="-pae"
439 ipfiremake xtables-addons KCFG="-pae"
440 ipfiremake linux-initrd KCFG="-pae"
441
442 # x86 kernel build
443 ipfiremake linux KCFG=""
444 ipfiremake backports KCFG=""
445 ipfiremake e1000e KCFG=""
446 ipfiremake igb KCFG=""
447 ipfiremake ixgbe KCFG=""
448 ipfiremake xtables-addons KCFG=""
449 ipfiremake linux-initrd KCFG=""
450 ;;
451
452 armv5tel)
453 # arm-rpi (Raspberry Pi) kernel build
454 ipfiremake linux KCFG="-rpi"
455 ipfiremake backports KCFG="-rpi"
456 ipfiremake xtables-addons KCFG="-rpi"
457 ipfiremake linux-initrd KCFG="-rpi"
458
459 # arm multi platform (Panda, Wandboard ...) kernel build
460 ipfiremake linux KCFG="-multi"
461 ipfiremake backports KCFG="-multi"
462 ipfiremake e1000e KCFG="-multi"
463 ipfiremake igb KCFG="-multi"
464 ipfiremake ixgbe KCFG="-multi"
465 ipfiremake xtables-addons KCFG="-multi"
466 ipfiremake linux-initrd KCFG="-multi"
467
468 # arm-kirkwood (Dreamplug, ICY-Box ...) kernel build
469 ipfiremake linux KCFG="-kirkwood"
470 ipfiremake backports KCFG="-kirkwood"
471 ipfiremake e1000e KCFG="-kirkwood"
472 ipfiremake igb KCFG="-kirkwood"
473 ipfiremake ixgbe KCFG="-kirkwood"
474 ipfiremake xtables-addons KCFG="-kirkwood"
475 ipfiremake linux-initrd KCFG="-kirkwood"
476 ;;
477 esac
478 ipfiremake xtables-addons USPACE="1"
479 ipfiremake openssl
480 [ "${TARGET_ARCH}" = "i586" ] && ipfiremake openssl KCFG='-sse2'
481 ipfiremake libgpg-error
482 ipfiremake libgcrypt
483 ipfiremake libassuan
484 ipfiremake bind
485 ipfiremake dhcp
486 ipfiremake dhcpcd
487 ipfiremake boost
488 ipfiremake linux-atm
489 ipfiremake expat
490 ipfiremake gdbm
491 ipfiremake pam
492 ipfiremake curl
493 ipfiremake tcl
494 ipfiremake sqlite
495 ipfiremake libffi
496 ipfiremake python
497 ipfiremake ca-certificates
498 ipfiremake fireinfo
499 ipfiremake libnet
500 ipfiremake libnl
501 ipfiremake libnl-3
502 ipfiremake libidn
503 ipfiremake nasm
504 ipfiremake libjpeg
505 ipfiremake libexif
506 ipfiremake libpng
507 ipfiremake libtiff
508 ipfiremake libart
509 ipfiremake gd
510 ipfiremake popt
511 ipfiremake pcre
512 ipfiremake slang
513 ipfiremake newt
514 ipfiremake libsmooth
515 ipfiremake attr
516 ipfiremake acl
517 ipfiremake libcap
518 ipfiremake pciutils
519 ipfiremake usbutils
520 ipfiremake libxml2
521 ipfiremake libxslt
522 ipfiremake BerkeleyDB
523 ipfiremake mysql
524 ipfiremake cyrus-sasl
525 ipfiremake openldap
526 ipfiremake apache2
527 ipfiremake php
528 ipfiremake web-user-interface
529 ipfiremake flag-icons
530 ipfiremake jquery
531 ipfiremake arping
532 ipfiremake beep
533 ipfiremake dvdrtools
534 ipfiremake nettle
535 ipfiremake dnsmasq
536 ipfiremake dosfstools
537 ipfiremake reiserfsprogs
538 ipfiremake xfsprogs
539 ipfiremake sysfsutils
540 ipfiremake fuse
541 ipfiremake ntfs-3g
542 ipfiremake ethtool
543 ipfiremake ez-ipupdate
544 ipfiremake fcron
545 ipfiremake perl-GD
546 ipfiremake GD-Graph
547 ipfiremake GD-TextUtil
548 ipfiremake perl-Device-SerialPort
549 ipfiremake perl-Device-Modem
550 ipfiremake gnupg
551 ipfiremake hdparm
552 ipfiremake sdparm
553 ipfiremake mtools
554 ipfiremake initscripts
555 ipfiremake whatmask
556 ipfiremake conntrack-tools
557 ipfiremake libupnp
558 ipfiremake ipaddr
559 ipfiremake iputils
560 ipfiremake l7-protocols
561 ipfiremake mISDNuser
562 ipfiremake capi4k-utils
563 ipfiremake hwdata
564 ipfiremake logrotate
565 ipfiremake logwatch
566 ipfiremake misc-progs
567 ipfiremake nano
568 ipfiremake URI
569 ipfiremake HTML-Tagset
570 ipfiremake HTML-Parser
571 ipfiremake HTML-Template
572 ipfiremake Compress-Zlib
573 ipfiremake Digest
574 ipfiremake Digest-SHA1
575 ipfiremake Digest-HMAC
576 ipfiremake libwww-perl
577 ipfiremake Net-DNS
578 ipfiremake Net-IPv4Addr
579 ipfiremake Net_SSLeay
580 ipfiremake IO-Stringy
581 ipfiremake IO-Socket-SSL
582 ipfiremake Unix-Syslog
583 ipfiremake Mail-Tools
584 ipfiremake MIME-Tools
585 ipfiremake Net-Server
586 ipfiremake Convert-TNEF
587 ipfiremake Convert-UUlib
588 ipfiremake Archive-Tar
589 ipfiremake Archive-Zip
590 ipfiremake Text-Tabs+Wrap
591 ipfiremake Locale-Country
592 ipfiremake XML-Parser
593 ipfiremake Crypt-PasswdMD5
594 ipfiremake Net-Telnet
595 ipfiremake python-setuptools
596 ipfiremake python-clientform
597 ipfiremake python-mechanize
598 ipfiremake python-feedparser
599 ipfiremake python-rssdler
600 ipfiremake glib
601 ipfiremake GeoIP
602 ipfiremake fwhits
603 ipfiremake noip_updater
604 ipfiremake ntp
605 ipfiremake openssh
606 ipfiremake fontconfig
607 ipfiremake dejavu-fonts-ttf
608 ipfiremake freefont
609 ipfiremake pixman
610 ipfiremake cairo
611 ipfiremake pango
612 ipfiremake rrdtool
613 ipfiremake setserial
614 ipfiremake setup
615 ipfiremake libdnet
616 ipfiremake daq
617 ipfiremake snort
618 ipfiremake oinkmaster
619 ipfiremake squid
620 ipfiremake squidguard
621 ipfiremake calamaris
622 ipfiremake tcpdump
623 ipfiremake traceroute
624 ipfiremake vlan
625 ipfiremake wireless
626 ipfiremake pakfire
627 ipfiremake spandsp
628 ipfiremake lzo
629 ipfiremake openvpn
630 ipfiremake pammysql
631 ipfiremake mpage
632 ipfiremake dbus
633 ipfiremake cups
634 ipfiremake ghostscript
635 ipfiremake foomatic
636 ipfiremake hplip
637 ipfiremake cifs-utils
638 ipfiremake krb5
639 ipfiremake samba
640 ipfiremake sudo
641 ipfiremake mc
642 ipfiremake wget
643 ipfiremake bridge-utils
644 ipfiremake screen
645 ipfiremake smartmontools
646 ipfiremake htop
647 ipfiremake chkconfig
648 ipfiremake postfix
649 ipfiremake fetchmail
650 ipfiremake cyrus-imapd
651 ipfiremake openmailadmin
652 ipfiremake clamav
653 ipfiremake spamassassin
654 ipfiremake amavisd
655 ipfiremake dma
656 ipfiremake alsa
657 ipfiremake mpfire
658 ipfiremake guardian
659 ipfiremake libid3tag
660 ipfiremake libmad
661 ipfiremake libogg
662 ipfiremake libvorbis
663 ipfiremake libdvbpsi
664 ipfiremake flac
665 ipfiremake lame
666 ipfiremake sox
667 ipfiremake libshout
668 ipfiremake xvid
669 ipfiremake libmpeg2
670 ipfiremake libarchive
671 ipfiremake cmake
672 ipfiremake gnump3d
673 ipfiremake rsync
674 ipfiremake tcpwrapper
675 ipfiremake libevent
676 ipfiremake libevent2
677 ipfiremake portmap
678 ipfiremake nfs
679 ipfiremake nmap
680 ipfiremake ncftp
681 ipfiremake etherwake
682 ipfiremake bwm-ng
683 ipfiremake sysstat
684 ipfiremake vsftpd
685 ipfiremake strongswan
686 ipfiremake rng-tools
687 ipfiremake lsof
688 ipfiremake br2684ctl
689 ipfiremake pcmciautils
690 ipfiremake lm_sensors
691 ipfiremake liboping
692 ipfiremake collectd
693 ipfiremake elinks
694 ipfiremake igmpproxy
695 ipfiremake fbset
696 ipfiremake sdl
697 ipfiremake qemu
698 ipfiremake sane
699 ipfiremake netpbm
700 ipfiremake phpSANE
701 ipfiremake tunctl
702 ipfiremake netsnmpd
703 ipfiremake nagios
704 ipfiremake nagios_nrpe
705 ipfiremake icinga
706 ipfiremake ebtables
707 ipfiremake directfb
708 ipfiremake dfb++
709 ipfiremake faad2
710 ipfiremake ffmpeg
711 ipfiremake vdr
712 ipfiremake vdr_streamdev
713 ipfiremake vdr_vnsiserver5
714 ipfiremake vdr_vnsiserver3
715 ipfiremake vdr_epgsearch
716 ipfiremake vdr_dvbapi
717 ipfiremake vdr_eepg
718 ipfiremake w_scan
719 ipfiremake icecast
720 ipfiremake icegenerator
721 ipfiremake mpd
722 ipfiremake libmpdclient
723 ipfiremake mpc
724 ipfiremake perl-Net-SMTP-SSL
725 ipfiremake perl-MIME-Base64
726 ipfiremake perl-Authen-SASL
727 ipfiremake perl-MIME-Lite
728 ipfiremake perl-Email-Date-Format
729 ipfiremake git
730 ipfiremake squidclamav
731 ipfiremake vnstat
732 ipfiremake iw
733 ipfiremake wpa_supplicant
734 ipfiremake hostapd
735 ipfiremake pycurl
736 ipfiremake urlgrabber
737 ipfiremake syslinux
738 ipfiremake tftpd
739 ipfiremake cpufrequtils
740 ipfiremake bluetooth
741 ipfiremake gutenprint
742 ipfiremake apcupsd
743 ipfiremake iperf
744 ipfiremake netcat
745 ipfiremake 7zip
746 ipfiremake lynis
747 ipfiremake streamripper
748 ipfiremake sshfs
749 ipfiremake taglib
750 #ipfiremake mediatomb
751 ipfiremake sslh
752 ipfiremake perl-gettext
753 ipfiremake perl-Sort-Naturally
754 ipfiremake vdradmin
755 ipfiremake miau
756 ipfiremake perl-DBI
757 ipfiremake perl-DBD-mysql
758 ipfiremake perl-DBD-SQLite
759 ipfiremake perl-File-ReadBackwards
760 ipfiremake cacti
761 ipfiremake openvmtools
762 ipfiremake nagiosql
763 ipfiremake iftop
764 ipfiremake motion
765 ipfiremake joe
766 ipfiremake monit
767 ipfiremake nut
768 ipfiremake watchdog
769 ipfiremake libpri
770 ipfiremake libsrtp
771 ipfiremake asterisk
772 ipfiremake lcr
773 ipfiremake usb_modeswitch
774 ipfiremake usb_modeswitch_data
775 ipfiremake zerofree
776 ipfiremake pound
777 ipfiremake minicom
778 ipfiremake ddrescue
779 ipfiremake imspector
780 ipfiremake miniupnpd
781 ipfiremake client175
782 ipfiremake powertop
783 ipfiremake parted
784 ipfiremake swig
785 ipfiremake python-m2crypto
786 ipfiremake wireless-regdb
787 ipfiremake crda
788 ipfiremake libsolv
789 ipfiremake python-distutils-extra
790 ipfiremake python-lzma
791 ipfiremake python-progressbar
792 ipfiremake python-xattr
793 ipfiremake intltool
794 ipfiremake ddns
795 ipfiremake transmission
796 ipfiremake dpfhack
797 ipfiremake lcd4linux
798 ipfiremake mtr
799 ipfiremake tcpick
800 ipfiremake minidlna
801 ipfiremake acpid
802 ipfiremake fping
803 ipfiremake telnet
804 ipfiremake xinetd
805 ipfiremake gpgme
806 ipfiremake pygpgme
807 ipfiremake pakfire3
808 ipfiremake stress
809 ipfiremake libstatgrab
810 ipfiremake sarg
811 ipfiremake check_mk_agent
812 ipfiremake libdaemon
813 ipfiremake avahi
814 ipfiremake nginx
815 ipfiremake sendEmail
816 ipfiremake sysbench
817 ipfiremake strace
818 ipfiremake ipfire-netboot
819 ipfiremake lcdproc
820 ipfiremake bitstream
821 ipfiremake multicat
822 ipfiremake keepalived
823 ipfiremake ipvsadm
824 ipfiremake perl-Carp-Clan
825 ipfiremake perl-Date-Calc
826 ipfiremake perl-Date-Manip
827 ipfiremake perl-File-Tail
828 ipfiremake perl-TimeDate
829 ipfiremake swatch
830 ipfiremake tor
831 ipfiremake arm
832 ipfiremake wavemon
833 ipfiremake iptraf-ng
834 ipfiremake iotop
835 ipfiremake stunnel
836 ipfiremake sslscan
837 ipfiremake owncloud
838 ipfiremake bacula
839 ipfiremake batctl
840 ipfiremake perl-PDF-API2
841 ipfiremake squid-accounting
842 ipfiremake pigz
843 ipfiremake tmux
844 ipfiremake perl-Text-CSV_XS
845 ipfiremake swconfig
846 ipfiremake haproxy
847 ipfiremake ipset
848 }
849
850 buildinstaller() {
851 # Run installer scripts one by one
852 LOGFILE="$BASEDIR/log/_build.installer.log"
853 export LOGFILE
854 ipfiremake memtest
855 ipfiremake installer
856 installmake strip
857 }
858
859 buildpackages() {
860 LOGFILE="$BASEDIR/log/_build.packages.log"
861 export LOGFILE
862 echo "... see detailed log in _build.*.log files" >> $LOGFILE
863
864
865 # Generating list of packages used
866 echo -n "Generating packages list from logs" | tee -a $LOGFILE
867 rm -f $BASEDIR/doc/packages-list
868 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
869 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
870 echo "* `basename $i`" >>$BASEDIR/doc/packages-list
871 fi
872 done
873 echo "== List of softwares used to build $NAME Version: $VERSION ==" > $BASEDIR/doc/packages-list.txt
874 grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$\|.tgz$\|-config$\|_missing_rootfile$\|install1$\|install2$\|pass1$\|pass2$\|pass3$' \
875 $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt
876 rm -f $BASEDIR/doc/packages-list
877 # packages-list.txt is ready to be displayed for wiki page
878 beautify message DONE
879
880 # Update changelog
881 cd $BASEDIR
882 [ -z $GIT_TAG ] || LAST_TAG=$GIT_TAG
883 [ -z $LAST_TAG ] || EXT="$LAST_TAG..HEAD"
884 git log -n 500 --no-merges --pretty=medium --shortstat $EXT > $BASEDIR/doc/ChangeLog
885
886 # Create images for install
887 ipfiremake cdrom
888
889 # Check if there is a loop device for building in virtual environments
890 modprobe loop 2>/dev/null
891 if [ $BUILD_IMAGES == 1 ] && ([ -e /dev/loop/0 ] || [ -e /dev/loop0 ] || [ -e "/dev/loop-control" ]); then
892 ipfiremake flash-images
893 ipfiremake flash-images SCON=1
894 fi
895
896 mv $LFS/install/images/{*.iso,*.tgz,*.img.gz,*.bz2} $BASEDIR >> $LOGFILE 2>&1
897
898 ipfirepackages
899
900 ipfiremake xen-image
901 mv $LFS/install/images/*.bz2 $BASEDIR >> $LOGFILE 2>&1
902
903 cd $BASEDIR
904
905 # remove not useable iso on armv5tel (needed to build flash images)
906 [ "${TARGET_ARCH}" = "armv5tel" ] && rm -rf *.iso
907
908 for i in `ls *.bz2 *.img.gz *.iso`; do
909 md5sum $i > $i.md5
910 done
911 cd $PWD
912
913 # Cleanup
914 stdumount
915 rm -rf $BASEDIR/build/tmp/*
916
917 # Generating total list of files
918 echo -n "Generating files list from logs" | tee -a $LOGFILE
919 rm -f $BASEDIR/log/FILES
920 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
921 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
922 echo "##" >>$BASEDIR/log/FILES
923 echo "## `basename $i`" >>$BASEDIR/log/FILES
924 echo "##" >>$BASEDIR/log/FILES
925 cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES
926 fi
927 done
928 beautify message DONE
929
930 cd $PWD
931 }
932
933 ipfirepackages() {
934 ipfiremake core-updates
935
936 local i
937 for i in $(find $BASEDIR/config/rootfiles/packages{/${MACHINE},} -maxdepth 1 -type f); do
938 i=$(basename ${i})
939 if [ -e $BASEDIR/lfs/$i ]; then
940 ipfiredist $i
941 else
942 echo -n $i
943 beautify message SKIP
944 fi
945 done
946 test -d $BASEDIR/packages || mkdir $BASEDIR/packages
947 mv -f $LFS/install/packages/* $BASEDIR/packages >> $LOGFILE 2>&1
948 rm -rf $BASEDIR/build/install/packages/*
949 }
950
951 while [ $# -gt 0 ]; do
952 case "${1}" in
953 --target=*)
954 configure_target "${1#--target=}"
955 ;;
956 -*)
957 exiterror "Unknown configuration option: ${1}"
958 ;;
959 *)
960 # Found a command, so exit options parsing.
961 break
962 ;;
963 esac
964 shift
965 done
966
967 # See what we're supposed to do
968 case "$1" in
969 build)
970 clear
971 PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz 2> /dev/null | head -n 1`
972 #only restore on a clean disk
973 if [ ! -f log/cleanup-toolchain-2-tools ]; then
974 if [ ! -n "$PACKAGE" ]; then
975 beautify build_stage "Full toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`"
976 prepareenv
977 buildtoolchain
978 else
979 PACKAGENAME=${PACKAGE%.tar.gz}
980 beautify build_stage "Packaged toolchain compilation"
981 if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
982 tar zxf $PACKAGE
983 prepareenv
984 else
985 exiterror "$PACKAGENAME md5 did not match, check downloaded package"
986 fi
987 fi
988 else
989 echo -n "Using installed toolchain" | tee -a $LOGFILE
990 beautify message SKIP
991 prepareenv
992 fi
993
994 beautify build_start
995 beautify build_stage "Building LFS"
996 buildbase
997
998 beautify build_stage "Building IPFire"
999 buildipfire
1000
1001 beautify build_stage "Building installer"
1002 buildinstaller
1003
1004 beautify build_stage "Building packages"
1005 buildpackages
1006
1007 beautify build_stage "Checking Logfiles for new Files"
1008
1009 cd $BASEDIR
1010 tools/checknewlog.pl
1011 tools/checkrootfiles
1012 cd $PWD
1013
1014 beautify build_end
1015 ;;
1016 shell)
1017 # enter a shell inside LFS chroot
1018 # may be used to changed kernel settings
1019 prepareenv
1020 entershell
1021 ;;
1022 clean)
1023 echo -en "${BOLD}Cleaning build directory...${NORMAL}"
1024 for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
1025 $LOSETUP -d $i 2>/dev/null
1026 done
1027 for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
1028 umount $i
1029 done
1030 stdumount
1031 for i in `seq 0 7`; do
1032 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
1033 umount /dev/loop${i} 2>/dev/null;
1034 losetup -d /dev/loop${i} 2>/dev/null;
1035 fi;
1036 done
1037 rm -rf $BASEDIR/build
1038 rm -rf $BASEDIR/cdrom
1039 rm -rf $BASEDIR/packages
1040 rm -rf $BASEDIR/log
1041 if [ -h /tools ]; then
1042 rm -f /tools
1043 fi
1044 rm -f $BASEDIR/ipfire-*
1045 beautify message DONE
1046 ;;
1047 downloadsrc)
1048 if [ ! -d $BASEDIR/cache ]; then
1049 mkdir $BASEDIR/cache
1050 fi
1051 mkdir -p $BASEDIR/log
1052 echo -e "${BOLD}Preload all source files${NORMAL}" | tee -a $LOGFILE
1053 FINISHED=0
1054 cd $BASEDIR/lfs
1055 for c in `seq $MAX_RETRIES`; do
1056 if (( FINISHED==1 )); then
1057 break
1058 fi
1059 FINISHED=1
1060 cd $BASEDIR/lfs
1061 for i in *; do
1062 if [ -f "$i" -a "$i" != "Config" ]; then
1063 lfsmakecommoncheck ${i} || continue
1064
1065 make -s -f $i LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \
1066 MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
1067 if [ $? -ne 0 ]; then
1068 beautify message FAIL
1069 FINISHED=0
1070 else
1071 if [ $c -eq 1 ]; then
1072 beautify message DONE
1073 fi
1074 fi
1075 fi
1076 done
1077 done
1078 echo -e "${BOLD}***Verifying md5sums${NORMAL}"
1079 ERROR=0
1080 for i in *; do
1081 if [ -f "$i" -a "$i" != "Config" ]; then
1082 lfsmakecommoncheck ${i} > /dev/null || continue
1083 make -s -f $i LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \
1084 MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
1085 if [ $? -ne 0 ]; then
1086 echo -ne "MD5 difference in lfs/$i"
1087 beautify message FAIL
1088 ERROR=1
1089 fi
1090 fi
1091 done
1092 if [ $ERROR -eq 0 ]; then
1093 echo -ne "${BOLD}all files md5sum match${NORMAL}"
1094 beautify message DONE
1095 else
1096 echo -ne "${BOLD}not all files were correctly download${NORMAL}"
1097 beautify message FAIL
1098 fi
1099 cd - >/dev/null 2>&1
1100 ;;
1101 toolchain)
1102 clear
1103 prepareenv
1104 beautify build_stage "Toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`"
1105 buildtoolchain
1106 echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $MACHINE" | tee -a $LOGFILE
1107 test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains
1108 cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz \
1109 build/tools build/bin/sh log >> $LOGFILE
1110 md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz \
1111 > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.md5
1112 stdumount
1113 ;;
1114 gettoolchain)
1115 # arbitrary name to be updated in case of new toolchain package upload
1116 PACKAGE=$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE
1117 if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then
1118 URL_TOOLCHAIN=`grep URL_TOOLCHAIN lfs/Config | awk '{ print $3 }'`
1119 test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains
1120 echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $MACHINE" | tee -a $LOGFILE
1121 cd $BASEDIR/cache/toolchains
1122 wget -U "IPFireSourceGrabber/2.x" $URL_TOOLCHAIN/$PACKAGE.tar.gz $URL_TOOLCHAIN/$PACKAGE.md5 >& /dev/null
1123 if [ $? -ne 0 ]; then
1124 echo "`date -u '+%b %e %T'`: error downloading $PACKAGE toolchain for $MACHINE machine" | tee -a $LOGFILE
1125 else
1126 if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
1127 echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
1128 else
1129 exiterror "$PACKAGE.md5 did not match, check downloaded package"
1130 fi
1131 fi
1132 else
1133 echo "Toolchain is already downloaded. Exiting..."
1134 fi
1135 ;;
1136 othersrc)
1137 prepareenv
1138 echo -ne "`date -u '+%b %e %T'`: Build sources iso for $MACHINE" | tee -a $LOGFILE
1139 chroot $LFS /tools/bin/env -i HOME=/root \
1140 TERM=$TERM PS1='\u:\w\$ ' \
1141 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
1142 VERSION=$VERSION NAME="$NAME" SNAME="$SNAME" MACHINE=$MACHINE \
1143 /bin/bash -x -c "cd /usr/src/lfs && make -f sources-iso LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
1144 mv $LFS/install/images/ipfire-* $BASEDIR >> $LOGFILE 2>&1
1145 if [ $? -eq "0" ]; then
1146 beautify message DONE
1147 else
1148 beautify message FAIL
1149 fi
1150 stdumount
1151 ;;
1152 uploadsrc)
1153 PWD=`pwd`
1154 if [ -z $IPFIRE_USER ]; then
1155 echo -n "You have to setup IPFIRE_USER first. See .config for details."
1156 beautify message FAIL
1157 exit 1
1158 fi
1159
1160 URL_SOURCE=$(grep URL_SOURCE lfs/Config | awk '{ print $3 }')
1161 REMOTE_FILES=$(echo "ls -1" | sftp -C ${IPFIRE_USER}@${URL_SOURCE})
1162
1163 for file in ${BASEDIR}/cache/*; do
1164 [ -d "${file}" ] && continue
1165 grep -q "$(basename ${file})" <<<$REMOTE_FILES && continue
1166 NEW_FILES="$NEW_FILES $file"
1167 done
1168 [ -n "$NEW_FILES" ] && scp -2 $NEW_FILES ${IPFIRE_USER}@${URL_SOURCE}
1169 cd $BASEDIR
1170 cd $PWD
1171 exit 0
1172 ;;
1173 lang)
1174 update_langs
1175 ;;
1176 *)
1177 echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}"
1178 cat doc/make.sh-usage
1179 ;;
1180 esac