]> git.ipfire.org Git - people/jschlag/ipfire-2.x.git/blob - make.sh
Drop cryptodev
[people/jschlag/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="96" # Core Level (Filename)
29 PAKFIRE_CORE="95" # 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 file
334 lfsmake2 gcc
335 lfsmake2 sed
336 lfsmake2 berkeley
337 lfsmake2 coreutils
338 lfsmake2 iana-etc
339 lfsmake2 m4
340 lfsmake2 bison
341 lfsmake2 ncurses
342 lfsmake2 procps
343 lfsmake2 libtool
344 lfsmake2 perl
345 lfsmake2 readline
346 lfsmake2 readline-compat
347 lfsmake2 pcre
348 lfsmake2 pcre-compat
349 lfsmake2 autoconf
350 lfsmake2 automake
351 lfsmake2 bash
352 lfsmake2 bzip2
353 lfsmake2 diffutils
354 lfsmake2 e2fsprogs
355 lfsmake2 ed
356 lfsmake2 findutils
357 lfsmake2 flex
358 lfsmake2 gawk
359 lfsmake2 gettext
360 lfsmake2 grep
361 lfsmake2 groff
362 lfsmake2 gperf
363 lfsmake2 gzip
364 lfsmake2 hostname
365 lfsmake2 iproute2
366 lfsmake2 jwhois
367 lfsmake2 kbd
368 lfsmake2 less
369 lfsmake2 make
370 lfsmake2 man
371 lfsmake2 kmod
372 lfsmake2 net-tools
373 lfsmake2 patch
374 lfsmake2 psmisc
375 lfsmake2 shadow
376 lfsmake2 sysklogd
377 lfsmake2 sysvinit
378 lfsmake2 tar
379 lfsmake2 texinfo
380 lfsmake2 util-linux
381 lfsmake2 udev
382 lfsmake2 vim
383 lfsmake2 xz
384 lfsmake2 paxctl
385 }
386
387 buildipfire() {
388 LOGFILE="$BASEDIR/log/_build.ipfire.log"
389 export LOGFILE
390 ipfiremake configroot
391 ipfiremake backup
392 ipfiremake pkg-config
393 ipfiremake libusb
394 ipfiremake libusb-compat
395 ipfiremake libpcap
396 ipfiremake ppp
397 ipfiremake pptp
398 ipfiremake unzip
399 ipfiremake which
400 ipfiremake linux-firmware
401 ipfiremake dvb-firmwares
402 ipfiremake zd1211-firmware
403 ipfiremake rpi-firmware
404 ipfiremake bc
405 ipfiremake u-boot
406 ipfiremake cpio
407 ipfiremake mdadm
408 ipfiremake dracut
409 ipfiremake lvm2
410 ipfiremake multipath-tools
411 ipfiremake freetype
412 ipfiremake grub
413 ipfiremake libmnl
414 ipfiremake libnfnetlink
415 ipfiremake libnetfilter_queue
416 ipfiremake libnetfilter_conntrack
417 ipfiremake libnetfilter_cthelper
418 ipfiremake libnetfilter_cttimeout
419 ipfiremake iptables
420
421 case "${TARGET_ARCH}" in
422 x86_64)
423 ipfiremake linux KCFG=""
424 ipfiremake backports KCFG=""
425 ipfiremake e1000e KCFG=""
426 ipfiremake igb KCFG=""
427 ipfiremake ixgbe KCFG=""
428 ipfiremake xtables-addons KCFG=""
429 ipfiremake linux-initrd KCFG=""
430 ;;
431 i586)
432 # x86-pae (Native and new XEN) kernel build
433 ipfiremake linux KCFG="-pae"
434 ipfiremake backports KCFG="-pae"
435 ipfiremake e1000e KCFG="-pae"
436 ipfiremake igb KCFG="-pae"
437 ipfiremake ixgbe KCFG="-pae"
438 ipfiremake xtables-addons KCFG="-pae"
439 ipfiremake linux-initrd KCFG="-pae"
440
441 # x86 kernel build
442 ipfiremake linux KCFG=""
443 ipfiremake backports KCFG=""
444 ipfiremake e1000e KCFG=""
445 ipfiremake igb KCFG=""
446 ipfiremake ixgbe KCFG=""
447 ipfiremake xtables-addons KCFG=""
448 ipfiremake linux-initrd KCFG=""
449 ;;
450
451 armv5tel)
452 # arm-rpi (Raspberry Pi) kernel build
453 ipfiremake linux KCFG="-rpi"
454 ipfiremake backports KCFG="-rpi"
455 ipfiremake xtables-addons KCFG="-rpi"
456 ipfiremake linux-initrd KCFG="-rpi"
457
458 # arm multi platform (Panda, Wandboard ...) kernel build
459 ipfiremake linux KCFG="-multi"
460 ipfiremake backports KCFG="-multi"
461 ipfiremake e1000e KCFG="-multi"
462 ipfiremake igb KCFG="-multi"
463 ipfiremake ixgbe KCFG="-multi"
464 ipfiremake xtables-addons KCFG="-multi"
465 ipfiremake linux-initrd KCFG="-multi"
466
467 # arm-kirkwood (Dreamplug, ICY-Box ...) kernel build
468 ipfiremake linux KCFG="-kirkwood"
469 ipfiremake backports KCFG="-kirkwood"
470 ipfiremake e1000e KCFG="-kirkwood"
471 ipfiremake igb KCFG="-kirkwood"
472 ipfiremake ixgbe KCFG="-kirkwood"
473 ipfiremake xtables-addons KCFG="-kirkwood"
474 ipfiremake linux-initrd KCFG="-kirkwood"
475 ;;
476 esac
477 ipfiremake xtables-addons USPACE="1"
478 ipfiremake openssl
479 [ "${TARGET_ARCH}" = "i586" ] && ipfiremake openssl KCFG='-sse2'
480 ipfiremake libgpg-error
481 ipfiremake libgcrypt
482 ipfiremake libassuan
483 ipfiremake bind
484 ipfiremake dhcp
485 ipfiremake dhcpcd
486 ipfiremake boost
487 ipfiremake linux-atm
488 ipfiremake expat
489 ipfiremake gdbm
490 ipfiremake pam
491 ipfiremake curl
492 ipfiremake tcl
493 ipfiremake sqlite
494 ipfiremake libffi
495 ipfiremake python
496 ipfiremake ca-certificates
497 ipfiremake fireinfo
498 ipfiremake libnet
499 ipfiremake libnl
500 ipfiremake libnl-3
501 ipfiremake libidn
502 ipfiremake nasm
503 ipfiremake libjpeg
504 ipfiremake libexif
505 ipfiremake libpng
506 ipfiremake libtiff
507 ipfiremake libart
508 ipfiremake gd
509 ipfiremake popt
510 ipfiremake pcre
511 ipfiremake slang
512 ipfiremake newt
513 ipfiremake libsmooth
514 ipfiremake attr
515 ipfiremake acl
516 ipfiremake libcap
517 ipfiremake pciutils
518 ipfiremake usbutils
519 ipfiremake libxml2
520 ipfiremake libxslt
521 ipfiremake BerkeleyDB
522 ipfiremake mysql
523 ipfiremake cyrus-sasl
524 ipfiremake openldap
525 ipfiremake apache2
526 ipfiremake php
527 ipfiremake web-user-interface
528 ipfiremake flag-icons
529 ipfiremake jquery
530 ipfiremake arping
531 ipfiremake beep
532 ipfiremake dvdrtools
533 ipfiremake nettle
534 ipfiremake dnsmasq
535 ipfiremake dosfstools
536 ipfiremake reiserfsprogs
537 ipfiremake xfsprogs
538 ipfiremake sysfsutils
539 ipfiremake fuse
540 ipfiremake ntfs-3g
541 ipfiremake ethtool
542 ipfiremake ez-ipupdate
543 ipfiremake fcron
544 ipfiremake perl-GD
545 ipfiremake GD-Graph
546 ipfiremake GD-TextUtil
547 ipfiremake perl-Device-SerialPort
548 ipfiremake perl-Device-Modem
549 ipfiremake gnupg
550 ipfiremake hdparm
551 ipfiremake sdparm
552 ipfiremake mtools
553 ipfiremake initscripts
554 ipfiremake whatmask
555 ipfiremake conntrack-tools
556 ipfiremake libupnp
557 ipfiremake ipaddr
558 ipfiremake iputils
559 ipfiremake l7-protocols
560 ipfiremake mISDNuser
561 ipfiremake capi4k-utils
562 ipfiremake hwdata
563 ipfiremake logrotate
564 ipfiremake logwatch
565 ipfiremake misc-progs
566 ipfiremake nano
567 ipfiremake URI
568 ipfiremake HTML-Tagset
569 ipfiremake HTML-Parser
570 ipfiremake HTML-Template
571 ipfiremake Compress-Zlib
572 ipfiremake Digest
573 ipfiremake Digest-SHA1
574 ipfiremake Digest-HMAC
575 ipfiremake libwww-perl
576 ipfiremake Net-DNS
577 ipfiremake Net-IPv4Addr
578 ipfiremake Net_SSLeay
579 ipfiremake IO-Stringy
580 ipfiremake IO-Socket-SSL
581 ipfiremake Unix-Syslog
582 ipfiremake Mail-Tools
583 ipfiremake MIME-Tools
584 ipfiremake Net-Server
585 ipfiremake Convert-TNEF
586 ipfiremake Convert-UUlib
587 ipfiremake Archive-Tar
588 ipfiremake Archive-Zip
589 ipfiremake Text-Tabs+Wrap
590 ipfiremake Locale-Country
591 ipfiremake XML-Parser
592 ipfiremake Crypt-PasswdMD5
593 ipfiremake Net-Telnet
594 ipfiremake python-setuptools
595 ipfiremake python-clientform
596 ipfiremake python-mechanize
597 ipfiremake python-feedparser
598 ipfiremake python-rssdler
599 ipfiremake glib
600 ipfiremake GeoIP
601 ipfiremake fwhits
602 ipfiremake noip_updater
603 ipfiremake ntp
604 ipfiremake openssh
605 ipfiremake fontconfig
606 ipfiremake dejavu-fonts-ttf
607 ipfiremake freefont
608 ipfiremake pixman
609 ipfiremake cairo
610 ipfiremake pango
611 ipfiremake rrdtool
612 ipfiremake setserial
613 ipfiremake setup
614 ipfiremake libdnet
615 ipfiremake daq
616 ipfiremake snort
617 ipfiremake oinkmaster
618 ipfiremake squid
619 ipfiremake squidguard
620 ipfiremake calamaris
621 ipfiremake tcpdump
622 ipfiremake traceroute
623 ipfiremake vlan
624 ipfiremake wireless
625 ipfiremake pakfire
626 ipfiremake spandsp
627 ipfiremake lzo
628 ipfiremake openvpn
629 ipfiremake pammysql
630 ipfiremake mpage
631 ipfiremake dbus
632 ipfiremake cups
633 ipfiremake ghostscript
634 ipfiremake foomatic
635 ipfiremake hplip
636 ipfiremake cifs-utils
637 ipfiremake krb5
638 ipfiremake samba
639 ipfiremake sudo
640 ipfiremake mc
641 ipfiremake wget
642 ipfiremake bridge-utils
643 ipfiremake screen
644 ipfiremake smartmontools
645 ipfiremake htop
646 ipfiremake chkconfig
647 ipfiremake postfix
648 ipfiremake fetchmail
649 ipfiremake cyrus-imapd
650 ipfiremake openmailadmin
651 ipfiremake clamav
652 ipfiremake spamassassin
653 ipfiremake amavisd
654 ipfiremake dma
655 ipfiremake alsa
656 ipfiremake mpfire
657 ipfiremake guardian
658 ipfiremake libid3tag
659 ipfiremake libmad
660 ipfiremake libogg
661 ipfiremake libvorbis
662 ipfiremake libdvbpsi
663 ipfiremake flac
664 ipfiremake lame
665 ipfiremake sox
666 ipfiremake libshout
667 ipfiremake xvid
668 ipfiremake libmpeg2
669 ipfiremake libarchive
670 ipfiremake cmake
671 ipfiremake gnump3d
672 ipfiremake rsync
673 ipfiremake tcpwrapper
674 ipfiremake libevent
675 ipfiremake libevent2
676 ipfiremake portmap
677 ipfiremake nfs
678 ipfiremake nmap
679 ipfiremake ncftp
680 ipfiremake etherwake
681 ipfiremake bwm-ng
682 ipfiremake tripwire
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