]> git.ipfire.org Git - ipfire-2.x.git/blob - make.sh
kernel: Add a preliminary kernel from the i586 PAE configuration
[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="93" # Core Level (Filename)
29 PAKFIRE_CORE="93" # 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=9
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_64
249 x86_64:x86_64)
250 # This is working.
251 ;;
252
253 # x86
254 i586:i586|i586:i686|i586:x86_64)
255 # These are working.
256 ;;
257 i586:*)
258 error=true
259 ;;
260
261 # ARM
262 armv5tel:armv5tel|armv5tel:armv5tejl|armv5tel:armv6l|armv5tel:armv7l)
263 # These are working.
264 ;;
265 armv5tel:*)
266 error=true
267 ;;
268 esac
269
270 ${error} && \
271 exiterror "Cannot build ${MACHINE} toolchain on $(uname -m). Please use the download if any."
272
273 local gcc=$(type -p gcc)
274 if [ -z "${gcc}" ]; then
275 exiterror "Could not find GCC. You will need a working build enviroment in order to build the toolchain."
276 fi
277
278 LOGFILE="$BASEDIR/log/_build.toolchain.log"
279 export LOGFILE
280
281 local ORG_PATH=$PATH
282 export PATH="/tools/ccache/bin:/tools/bin:$PATH"
283 lfsmake1 ccache PASS=1
284 lfsmake1 binutils PASS=1
285 lfsmake1 gcc PASS=1
286 lfsmake1 linux TOOLS=1 KCFG="-headers"
287 lfsmake1 glibc
288 lfsmake1 cleanup-toolchain PASS=1
289 lfsmake1 binutils PASS=2
290 lfsmake1 gcc PASS=2
291 lfsmake1 ccache PASS=2
292 lfsmake1 tcl
293 lfsmake1 expect
294 lfsmake1 dejagnu
295 lfsmake1 ncurses
296 lfsmake1 bash
297 lfsmake1 bzip2
298 lfsmake1 coreutils
299 lfsmake1 diffutils
300 lfsmake1 findutils
301 lfsmake1 gawk
302 lfsmake1 gettext
303 lfsmake1 grep
304 lfsmake1 gzip
305 lfsmake1 m4
306 lfsmake1 make
307 lfsmake1 patch
308 lfsmake1 perl
309 lfsmake1 sed
310 lfsmake1 tar
311 lfsmake1 texinfo
312 lfsmake1 xz
313 lfsmake1 fake-environ
314 lfsmake1 cleanup-toolchain PASS=2
315 export PATH=$ORG_PATH
316 }
317
318 buildbase() {
319 LOGFILE="$BASEDIR/log/_build.base.log"
320 export LOGFILE
321 lfsmake2 stage2
322 lfsmake2 linux KCFG="-headers"
323 lfsmake2 man-pages
324 lfsmake2 glibc
325 lfsmake2 tzdata
326 lfsmake2 cleanup-toolchain PASS=3
327 lfsmake2 zlib
328 lfsmake2 binutils
329 lfsmake2 gmp
330 lfsmake2 gmp-compat
331 lfsmake2 mpfr
332 lfsmake2 file
333 lfsmake2 gcc
334 lfsmake2 sed
335 lfsmake2 berkeley
336 lfsmake2 coreutils
337 lfsmake2 iana-etc
338 lfsmake2 m4
339 lfsmake2 bison
340 lfsmake2 ncurses
341 lfsmake2 procps
342 lfsmake2 libtool
343 lfsmake2 perl
344 lfsmake2 readline
345 lfsmake2 readline-compat
346 lfsmake2 pcre
347 lfsmake2 pcre-compat
348 lfsmake2 autoconf
349 lfsmake2 automake
350 lfsmake2 bash
351 lfsmake2 bzip2
352 lfsmake2 diffutils
353 lfsmake2 e2fsprogs
354 lfsmake2 ed
355 lfsmake2 findutils
356 lfsmake2 flex
357 lfsmake2 gawk
358 lfsmake2 gettext
359 lfsmake2 grep
360 lfsmake2 groff
361 lfsmake2 gperf
362 lfsmake2 gzip
363 lfsmake2 hostname
364 lfsmake2 iproute2
365 lfsmake2 jwhois
366 lfsmake2 kbd
367 lfsmake2 less
368 lfsmake2 make
369 lfsmake2 man
370 lfsmake2 kmod
371 lfsmake2 net-tools
372 lfsmake2 patch
373 lfsmake2 psmisc
374 lfsmake2 shadow
375 lfsmake2 sysklogd
376 lfsmake2 sysvinit
377 lfsmake2 tar
378 lfsmake2 texinfo
379 lfsmake2 util-linux
380 lfsmake2 udev
381 lfsmake2 vim
382 lfsmake2 xz
383 lfsmake2 paxctl
384 }
385
386 buildipfire() {
387 LOGFILE="$BASEDIR/log/_build.ipfire.log"
388 export LOGFILE
389 ipfiremake configroot
390 ipfiremake backup
391 ipfiremake pkg-config
392 ipfiremake libusb
393 ipfiremake libusb-compat
394 ipfiremake libpcap
395 ipfiremake ppp
396 ipfiremake pptp
397 ipfiremake unzip
398 ipfiremake which
399 ipfiremake linux-firmware
400 ipfiremake dvb-firmwares
401 ipfiremake zd1211-firmware
402 ipfiremake rpi-firmware
403 ipfiremake bc
404 ipfiremake u-boot
405 ipfiremake cpio
406 ipfiremake mdadm
407 ipfiremake dracut
408 ipfiremake lvm2
409 ipfiremake multipath-tools
410 ipfiremake freetype
411 ipfiremake grub
412 ipfiremake libmnl
413 ipfiremake libnfnetlink
414 ipfiremake libnetfilter_queue
415 ipfiremake libnetfilter_conntrack
416 ipfiremake libnetfilter_cthelper
417 ipfiremake libnetfilter_cttimeout
418 ipfiremake iptables
419
420 case "${TARGET_ARCH}" in
421 x86_64)
422 ipfiremake linux KCFG=""
423 ipfiremake backports KCFG=""
424 ipfiremake cryptodev 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 cryptodev 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 cryptodev KCFG=""
446 ipfiremake e1000e KCFG=""
447 # ipfiremake igb KCFG=""
448 ipfiremake ixgbe KCFG=""
449 ipfiremake xtables-addons KCFG=""
450 ipfiremake linux-initrd KCFG=""
451 ;;
452
453 armv5tel)
454 # arm-rpi (Raspberry Pi) kernel build
455 ipfiremake linux KCFG="-rpi"
456 ipfiremake backports KCFG="-rpi"
457 ipfiremake cryptodev KCFG="-rpi"
458 ipfiremake xtables-addons KCFG="-rpi"
459 ipfiremake linux-initrd KCFG="-rpi"
460
461 # arm multi platform (Panda, Wandboard ...) kernel build
462 ipfiremake linux KCFG="-multi"
463 ipfiremake backports KCFG="-multi"
464 ipfiremake cryptodev KCFG="-multi"
465 ipfiremake e1000e KCFG="-multi"
466 # ipfiremake igb KCFG="-multi"
467 ipfiremake ixgbe KCFG="-multi"
468 ipfiremake xtables-addons KCFG="-multi"
469 ipfiremake linux-initrd KCFG="-multi"
470
471 # arm-kirkwood (Dreamplug, ICY-Box ...) kernel build
472 ipfiremake linux KCFG="-kirkwood"
473 ipfiremake backports KCFG="-kirkwood"
474 ipfiremake cryptodev KCFG="-kirkwood"
475 ipfiremake e1000e KCFG="-kirkwood"
476 # ipfiremake igb KCFG="-kirkwood"
477 ipfiremake ixgbe KCFG="-kirkwood"
478 ipfiremake xtables-addons KCFG="-kirkwood"
479 ipfiremake linux-initrd KCFG="-kirkwood"
480 ;;
481 esac
482 ipfiremake xtables-addons USPACE="1"
483 ipfiremake openssl
484 [ "${TARGET_ARCH}" = "i586" ] && ipfiremake openssl KCFG='-sse2'
485 ipfiremake libgpg-error
486 ipfiremake libgcrypt
487 ipfiremake libassuan
488 ipfiremake bind
489 ipfiremake dhcp
490 ipfiremake dhcpcd
491 ipfiremake boost
492 ipfiremake linux-atm
493 ipfiremake expat
494 ipfiremake gdbm
495 ipfiremake pam
496 ipfiremake curl
497 ipfiremake tcl
498 ipfiremake sqlite
499 ipfiremake libffi
500 ipfiremake python
501 ipfiremake ca-certificates
502 ipfiremake fireinfo
503 ipfiremake libnet
504 ipfiremake libnl
505 ipfiremake libnl-3
506 ipfiremake libidn
507 ipfiremake nasm
508 ipfiremake libjpeg
509 ipfiremake libexif
510 ipfiremake libpng
511 ipfiremake libtiff
512 ipfiremake libart
513 ipfiremake gd
514 ipfiremake popt
515 ipfiremake pcre
516 ipfiremake slang
517 ipfiremake newt
518 ipfiremake libsmooth
519 ipfiremake attr
520 ipfiremake acl
521 ipfiremake libcap
522 ipfiremake pciutils
523 ipfiremake usbutils
524 ipfiremake libxml2
525 ipfiremake libxslt
526 ipfiremake BerkeleyDB
527 ipfiremake mysql
528 ipfiremake cyrus-sasl
529 ipfiremake openldap
530 ipfiremake apache2
531 ipfiremake php
532 ipfiremake web-user-interface
533 ipfiremake flag-icons
534 ipfiremake jquery
535 ipfiremake arping
536 ipfiremake beep
537 ipfiremake dvdrtools
538 ipfiremake nettle
539 ipfiremake dnsmasq
540 ipfiremake dosfstools
541 ipfiremake reiserfsprogs
542 ipfiremake xfsprogs
543 ipfiremake sysfsutils
544 ipfiremake fuse
545 ipfiremake ntfs-3g
546 ipfiremake ethtool
547 ipfiremake ez-ipupdate
548 ipfiremake fcron
549 ipfiremake perl-GD
550 ipfiremake GD-Graph
551 ipfiremake GD-TextUtil
552 ipfiremake perl-Device-SerialPort
553 ipfiremake perl-Device-Modem
554 ipfiremake gnupg
555 ipfiremake hdparm
556 ipfiremake sdparm
557 ipfiremake mtools
558 ipfiremake initscripts
559 ipfiremake whatmask
560 ipfiremake conntrack-tools
561 ipfiremake libupnp
562 ipfiremake ipaddr
563 ipfiremake iputils
564 ipfiremake l7-protocols
565 ipfiremake mISDNuser
566 ipfiremake capi4k-utils
567 ipfiremake hwdata
568 ipfiremake logrotate
569 ipfiremake logwatch
570 ipfiremake misc-progs
571 ipfiremake nano
572 ipfiremake URI
573 ipfiremake HTML-Tagset
574 ipfiremake HTML-Parser
575 ipfiremake HTML-Template
576 ipfiremake Compress-Zlib
577 ipfiremake Digest
578 ipfiremake Digest-SHA1
579 ipfiremake Digest-HMAC
580 ipfiremake libwww-perl
581 ipfiremake Net-DNS
582 ipfiremake Net-IPv4Addr
583 ipfiremake Net_SSLeay
584 ipfiremake IO-Stringy
585 ipfiremake IO-Socket-SSL
586 ipfiremake Unix-Syslog
587 ipfiremake Mail-Tools
588 ipfiremake MIME-Tools
589 ipfiremake Net-Server
590 ipfiremake Convert-TNEF
591 ipfiremake Convert-UUlib
592 ipfiremake Archive-Tar
593 ipfiremake Archive-Zip
594 ipfiremake Text-Tabs+Wrap
595 ipfiremake Locale-Country
596 ipfiremake XML-Parser
597 ipfiremake Crypt-PasswdMD5
598 ipfiremake Net-Telnet
599 ipfiremake python-setuptools
600 ipfiremake python-clientform
601 ipfiremake python-mechanize
602 ipfiremake python-feedparser
603 ipfiremake python-rssdler
604 ipfiremake glib
605 ipfiremake GeoIP
606 ipfiremake fwhits
607 ipfiremake noip_updater
608 ipfiremake ntp
609 ipfiremake openssh
610 ipfiremake fontconfig
611 ipfiremake dejavu-fonts-ttf
612 ipfiremake freefont
613 ipfiremake pixman
614 ipfiremake cairo
615 ipfiremake pango
616 ipfiremake rrdtool
617 ipfiremake setserial
618 ipfiremake setup
619 ipfiremake libdnet
620 ipfiremake daq
621 ipfiremake snort
622 ipfiremake oinkmaster
623 ipfiremake squid
624 ipfiremake squidguard
625 ipfiremake calamaris
626 ipfiremake tcpdump
627 ipfiremake traceroute
628 ipfiremake vlan
629 ipfiremake wireless
630 ipfiremake pakfire
631 ipfiremake spandsp
632 ipfiremake lzo
633 ipfiremake openvpn
634 ipfiremake pammysql
635 ipfiremake mpage
636 ipfiremake dbus
637 ipfiremake cups
638 ipfiremake ghostscript
639 ipfiremake foomatic
640 ipfiremake hplip
641 ipfiremake cifs-utils
642 ipfiremake krb5
643 ipfiremake samba
644 ipfiremake sudo
645 ipfiremake mc
646 ipfiremake wget
647 ipfiremake bridge-utils
648 ipfiremake screen
649 ipfiremake smartmontools
650 ipfiremake htop
651 ipfiremake postfix
652 ipfiremake fetchmail
653 ipfiremake cyrus-imapd
654 ipfiremake openmailadmin
655 ipfiremake clamav
656 ipfiremake spamassassin
657 ipfiremake amavisd
658 ipfiremake alsa
659 ipfiremake mpfire
660 ipfiremake guardian
661 ipfiremake libid3tag
662 ipfiremake libmad
663 ipfiremake libogg
664 ipfiremake libvorbis
665 ipfiremake libdvbpsi
666 ipfiremake flac
667 ipfiremake lame
668 ipfiremake sox
669 ipfiremake libshout
670 ipfiremake xvid
671 ipfiremake libmpeg2
672 ipfiremake libarchive
673 ipfiremake cmake
674 ipfiremake gnump3d
675 ipfiremake rsync
676 ipfiremake tcpwrapper
677 ipfiremake libevent
678 ipfiremake libevent2
679 ipfiremake portmap
680 ipfiremake nfs
681 ipfiremake nmap
682 ipfiremake ncftp
683 ipfiremake etherwake
684 ipfiremake bwm-ng
685 ipfiremake tripwire
686 ipfiremake sysstat
687 ipfiremake vsftpd
688 ipfiremake strongswan
689 ipfiremake rng-tools
690 ipfiremake lsof
691 ipfiremake br2684ctl
692 ipfiremake pcmciautils
693 ipfiremake lm_sensors
694 ipfiremake liboping
695 ipfiremake collectd
696 ipfiremake elinks
697 ipfiremake igmpproxy
698 ipfiremake fbset
699 ipfiremake sdl
700 ipfiremake qemu
701 ipfiremake sane
702 ipfiremake netpbm
703 ipfiremake phpSANE
704 ipfiremake tunctl
705 ipfiremake netsnmpd
706 ipfiremake nagios
707 ipfiremake nagios_nrpe
708 ipfiremake icinga
709 ipfiremake ebtables
710 ipfiremake directfb
711 ipfiremake dfb++
712 ipfiremake faad2
713 ipfiremake ffmpeg
714 ipfiremake vdr
715 ipfiremake vdr_streamdev
716 ipfiremake vdr_vnsiserver5
717 ipfiremake vdr_vnsiserver3
718 ipfiremake vdr_epgsearch
719 ipfiremake vdr_dvbapi
720 ipfiremake vdr_eepg
721 ipfiremake w_scan
722 ipfiremake icecast
723 ipfiremake icegenerator
724 ipfiremake mpd
725 ipfiremake libmpdclient
726 ipfiremake mpc
727 ipfiremake perl-Net-SMTP-SSL
728 ipfiremake perl-MIME-Base64
729 ipfiremake perl-Authen-SASL
730 ipfiremake git
731 ipfiremake squidclamav
732 ipfiremake vnstat
733 ipfiremake iw
734 ipfiremake wpa_supplicant
735 ipfiremake hostapd
736 ipfiremake pycurl
737 ipfiremake urlgrabber
738 ipfiremake syslinux
739 ipfiremake tftpd
740 ipfiremake cpufrequtils
741 ipfiremake bluetooth
742 ipfiremake gutenprint
743 ipfiremake apcupsd
744 ipfiremake iperf
745 ipfiremake netcat
746 ipfiremake 7zip
747 ipfiremake lynis
748 ipfiremake streamripper
749 ipfiremake sshfs
750 ipfiremake taglib
751 ipfiremake mediatomb
752 ipfiremake sslh
753 ipfiremake perl-gettext
754 ipfiremake perl-Sort-Naturally
755 ipfiremake vdradmin
756 ipfiremake miau
757 ipfiremake perl-DBI
758 ipfiremake perl-DBD-mysql
759 ipfiremake perl-DBD-SQLite
760 ipfiremake perl-File-ReadBackwards
761 ipfiremake cacti
762 ipfiremake openvmtools
763 ipfiremake nagiosql
764 ipfiremake iftop
765 ipfiremake motion
766 ipfiremake joe
767 ipfiremake monit
768 ipfiremake nut
769 ipfiremake watchdog
770 ipfiremake libpri
771 ipfiremake libsrtp
772 ipfiremake asterisk
773 ipfiremake lcr
774 ipfiremake usb_modeswitch
775 ipfiremake usb_modeswitch_data
776 ipfiremake zerofree
777 ipfiremake pound
778 ipfiremake minicom
779 ipfiremake ddrescue
780 ipfiremake imspector
781 ipfiremake miniupnpd
782 ipfiremake client175
783 ipfiremake powertop
784 ipfiremake parted
785 ipfiremake swig
786 ipfiremake python-m2crypto
787 ipfiremake wireless-regdb
788 ipfiremake crda
789 ipfiremake libsolv
790 ipfiremake python-distutils-extra
791 ipfiremake python-lzma
792 ipfiremake python-progressbar
793 ipfiremake python-xattr
794 ipfiremake intltool
795 ipfiremake ddns
796 ipfiremake transmission
797 ipfiremake dpfhack
798 ipfiremake lcd4linux
799 ipfiremake mtr
800 ipfiremake tcpick
801 ipfiremake minidlna
802 ipfiremake acpid
803 ipfiremake fping
804 ipfiremake telnet
805 ipfiremake xinetd
806 ipfiremake gpgme
807 ipfiremake pygpgme
808 ipfiremake pakfire3
809 ipfiremake stress
810 ipfiremake libstatgrab
811 ipfiremake sarg
812 ipfiremake check_mk_agent
813 ipfiremake libdaemon
814 ipfiremake avahi
815 ipfiremake nginx
816 ipfiremake sendEmail
817 ipfiremake sysbench
818 ipfiremake strace
819 ipfiremake ipfire-netboot
820 ipfiremake lcdproc
821 ipfiremake bitstream
822 ipfiremake multicat
823 ipfiremake keepalived
824 ipfiremake ipvsadm
825 ipfiremake perl-Carp-Clan
826 ipfiremake perl-Date-Calc
827 ipfiremake perl-Date-Manip
828 ipfiremake perl-File-Tail
829 ipfiremake perl-TimeDate
830 ipfiremake swatch
831 ipfiremake tor
832 ipfiremake arm
833 ipfiremake wavemon
834 ipfiremake iptraf-ng
835 ipfiremake iotop
836 ipfiremake stunnel
837 ipfiremake sslscan
838 ipfiremake owncloud
839 ipfiremake bacula
840 ipfiremake batctl
841 ipfiremake perl-PDF-API2
842 ipfiremake squid-accounting
843 ipfiremake pigz
844 ipfiremake tmux
845 ipfiremake perl-Text-CSV_XS
846 ipfiremake swconfig
847 ipfiremake haproxy
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 for i in `ls *.bz2 *.img.gz *.iso`; do
905 md5sum $i > $i.md5
906 done
907 cd $PWD
908
909 # Cleanup
910 stdumount
911 rm -rf $BASEDIR/build/tmp/*
912
913 # Generating total list of files
914 echo -n "Generating files list from logs" | tee -a $LOGFILE
915 rm -f $BASEDIR/log/FILES
916 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
917 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
918 echo "##" >>$BASEDIR/log/FILES
919 echo "## `basename $i`" >>$BASEDIR/log/FILES
920 echo "##" >>$BASEDIR/log/FILES
921 cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES
922 fi
923 done
924 beautify message DONE
925
926 cd $PWD
927 }
928
929 ipfirepackages() {
930 ipfiremake core-updates
931
932 local i
933 for i in $(find $BASEDIR/config/rootfiles/packages{/${MACHINE},} -maxdepth 1 -type f); do
934 i=$(basename ${i})
935 if [ -e $BASEDIR/lfs/$i ]; then
936 ipfiredist $i
937 else
938 echo -n $i
939 beautify message SKIP
940 fi
941 done
942 test -d $BASEDIR/packages || mkdir $BASEDIR/packages
943 mv -f $LFS/install/packages/* $BASEDIR/packages >> $LOGFILE 2>&1
944 rm -rf $BASEDIR/build/install/packages/*
945 }
946
947 while [ $# -gt 0 ]; do
948 case "${1}" in
949 --target=*)
950 configure_target "${1#--target=}"
951 ;;
952 -*)
953 exiterror "Unknown configuration option: ${1}"
954 ;;
955 *)
956 # Found a command, so exit options parsing.
957 break
958 ;;
959 esac
960 shift
961 done
962
963 # See what we're supposed to do
964 case "$1" in
965 build)
966 clear
967 PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz 2> /dev/null | head -n 1`
968 #only restore on a clean disk
969 if [ ! -f log/cleanup-toolchain-2-tools ]; then
970 if [ ! -n "$PACKAGE" ]; then
971 beautify build_stage "Full toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`"
972 prepareenv
973 buildtoolchain
974 else
975 PACKAGENAME=${PACKAGE%.tar.gz}
976 beautify build_stage "Packaged toolchain compilation"
977 if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
978 tar zxf $PACKAGE
979 prepareenv
980 else
981 exiterror "$PACKAGENAME md5 did not match, check downloaded package"
982 fi
983 fi
984 else
985 echo -n "Using installed toolchain" | tee -a $LOGFILE
986 beautify message SKIP
987 prepareenv
988 fi
989
990 beautify build_start
991 beautify build_stage "Building LFS"
992 buildbase
993
994 beautify build_stage "Building IPFire"
995 buildipfire
996
997 beautify build_stage "Building installer"
998 buildinstaller
999
1000 beautify build_stage "Building packages"
1001 buildpackages
1002
1003 beautify build_stage "Checking Logfiles for new Files"
1004
1005 cd $BASEDIR
1006 tools/checknewlog.pl
1007 tools/checkrootfiles
1008 cd $PWD
1009
1010 beautify build_end
1011 ;;
1012 shell)
1013 # enter a shell inside LFS chroot
1014 # may be used to changed kernel settings
1015 prepareenv
1016 entershell
1017 ;;
1018 clean)
1019 echo -en "${BOLD}Cleaning build directory...${NORMAL}"
1020 for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
1021 $LOSETUP -d $i 2>/dev/null
1022 done
1023 for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
1024 umount $i
1025 done
1026 stdumount
1027 for i in `seq 0 7`; do
1028 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
1029 umount /dev/loop${i} 2>/dev/null;
1030 losetup -d /dev/loop${i} 2>/dev/null;
1031 fi;
1032 done
1033 rm -rf $BASEDIR/build
1034 rm -rf $BASEDIR/cdrom
1035 rm -rf $BASEDIR/packages
1036 rm -rf $BASEDIR/log
1037 if [ -h /tools ]; then
1038 rm -f /tools
1039 fi
1040 rm -f $BASEDIR/ipfire-*
1041 beautify message DONE
1042 ;;
1043 downloadsrc)
1044 if [ ! -d $BASEDIR/cache ]; then
1045 mkdir $BASEDIR/cache
1046 fi
1047 mkdir -p $BASEDIR/log
1048 echo -e "${BOLD}Preload all source files${NORMAL}" | tee -a $LOGFILE
1049 FINISHED=0
1050 cd $BASEDIR/lfs
1051 for c in `seq $MAX_RETRIES`; do
1052 if (( FINISHED==1 )); then
1053 break
1054 fi
1055 FINISHED=1
1056 cd $BASEDIR/lfs
1057 for i in *; do
1058 if [ -f "$i" -a "$i" != "Config" ]; then
1059 lfsmakecommoncheck ${i} || continue
1060
1061 make -s -f $i LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \
1062 MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
1063 if [ $? -ne 0 ]; then
1064 beautify message FAIL
1065 FINISHED=0
1066 else
1067 if [ $c -eq 1 ]; then
1068 beautify message DONE
1069 fi
1070 fi
1071 fi
1072 done
1073 done
1074 echo -e "${BOLD}***Verifying md5sums${NORMAL}"
1075 ERROR=0
1076 for i in *; do
1077 if [ -f "$i" -a "$i" != "Config" ]; then
1078 lfsmakecommoncheck ${i} > /dev/null || continue
1079 make -s -f $i LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \
1080 MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
1081 if [ $? -ne 0 ]; then
1082 echo -ne "MD5 difference in lfs/$i"
1083 beautify message FAIL
1084 ERROR=1
1085 fi
1086 fi
1087 done
1088 if [ $ERROR -eq 0 ]; then
1089 echo -ne "${BOLD}all files md5sum match${NORMAL}"
1090 beautify message DONE
1091 else
1092 echo -ne "${BOLD}not all files were correctly download${NORMAL}"
1093 beautify message FAIL
1094 fi
1095 cd - >/dev/null 2>&1
1096 ;;
1097 toolchain)
1098 clear
1099 prepareenv
1100 beautify build_stage "Toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`"
1101 buildtoolchain
1102 echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $MACHINE" | tee -a $LOGFILE
1103 test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains
1104 cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz \
1105 build/tools build/bin/sh log >> $LOGFILE
1106 md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz \
1107 > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.md5
1108 stdumount
1109 ;;
1110 gettoolchain)
1111 # arbitrary name to be updated in case of new toolchain package upload
1112 PACKAGE=$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE
1113 if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then
1114 URL_TOOLCHAIN=`grep URL_TOOLCHAIN lfs/Config | awk '{ print $3 }'`
1115 test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains
1116 echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $MACHINE" | tee -a $LOGFILE
1117 cd $BASEDIR/cache/toolchains
1118 wget -U "IPFireSourceGrabber/2.x" $URL_TOOLCHAIN/$PACKAGE.tar.gz $URL_TOOLCHAIN/$PACKAGE.md5 >& /dev/null
1119 if [ $? -ne 0 ]; then
1120 echo "`date -u '+%b %e %T'`: error downloading $PACKAGE toolchain for $MACHINE machine" | tee -a $LOGFILE
1121 else
1122 if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
1123 echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
1124 else
1125 exiterror "$PACKAGE.md5 did not match, check downloaded package"
1126 fi
1127 fi
1128 else
1129 echo "Toolchain is already downloaded. Exiting..."
1130 fi
1131 ;;
1132 othersrc)
1133 prepareenv
1134 echo -ne "`date -u '+%b %e %T'`: Build sources iso for $MACHINE" | tee -a $LOGFILE
1135 chroot $LFS /tools/bin/env -i HOME=/root \
1136 TERM=$TERM PS1='\u:\w\$ ' \
1137 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
1138 VERSION=$VERSION NAME="$NAME" SNAME="$SNAME" MACHINE=$MACHINE \
1139 /bin/bash -x -c "cd /usr/src/lfs && make -f sources-iso LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
1140 mv $LFS/install/images/ipfire-* $BASEDIR >> $LOGFILE 2>&1
1141 if [ $? -eq "0" ]; then
1142 beautify message DONE
1143 else
1144 beautify message FAIL
1145 fi
1146 stdumount
1147 ;;
1148 uploadsrc)
1149 PWD=`pwd`
1150 if [ -z $IPFIRE_USER ]; then
1151 echo -n "You have to setup IPFIRE_USER first. See .config for details."
1152 beautify message FAIL
1153 exit 1
1154 fi
1155
1156 URL_SOURCE=$(grep URL_SOURCE lfs/Config | awk '{ print $3 }')
1157 REMOTE_FILES=$(echo "ls -1" | sftp -C ${IPFIRE_USER}@${URL_SOURCE})
1158
1159 for file in ${BASEDIR}/cache/*; do
1160 [ -d "${file}" ] && continue
1161 grep -q "$(basename ${file})" <<<$REMOTE_FILES && continue
1162 NEW_FILES="$NEW_FILES $file"
1163 done
1164 [ -n "$NEW_FILES" ] && scp -2 $NEW_FILES ${IPFIRE_USER}@${URL_SOURCE}
1165 cd $BASEDIR
1166 cd $PWD
1167 exit 0
1168 ;;
1169 lang)
1170 update_langs
1171 ;;
1172 *)
1173 echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}"
1174 cat doc/make.sh-usage
1175 ;;
1176 esac