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