]> git.ipfire.org Git - ipfire-2.x.git/blame_incremental - make.sh
ath10k-firmware: added
[ipfire-2.x.git] / make.sh
... / ...
CommitLineData
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-2016 IPFire Team <info@ipfire.org>. #
21# #
22############################################################################
23#
24
25NAME="IPFire" # Software name
26SNAME="ipfire" # Short name
27VERSION="2.17" # Version number
28CORE="100" # Core Level (Filename)
29PAKFIRE_CORE="99" # Core Level (PAKFIRE)
30GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` # Git Branch
31SLOGAN="www.ipfire.org" # Software slogan
32CONFIG_ROOT=/var/ipfire # Configuration rootdir
33NICE=10 # Nice level
34MAX_RETRIES=1 # prefetch/check loop
35BUILD_IMAGES=1 # Flash and Xen Downloader
36KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'`
37GIT_TAG=$(git tag | tail -1) # Git Tag
38GIT_LASTCOMMIT=$(git log | head -n1 | cut -d" " -f2 |head -c8) # Last commit
39TOOLCHAINVER=11
40
41# New architecture variables
42BUILD_ARCH="$(uname -m)"
43BUILDMACHINE="${BUILD_ARCH}"
44
45# Debian specific settings
46if [ ! -e /etc/debian_version ]; then
47 FULLPATH=`which $0`
48else
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
55fi
56
57PWD=`pwd`
58BASENAME=`basename $0`
59BASEDIR=`echo $FULLPATH | sed "s/\/$BASENAME//g"`
60LOGFILE=$BASEDIR/log/_build.preparation.log
61export BASEDIR LOGFILE
62DIR_CHK=$BASEDIR/cache/check
63mkdir $BASEDIR/log/ 2>/dev/null
64
65# Include funtions
66. tools/make-functions
67
68if [ -f .config ]; then
69 . .config
70fi
71
72if [ -n "${TARGET_ARCH}" ]; then
73 configure_target "${TARGET_ARCH}"
74else
75 configure_target "default"
76fi
77
78if [ -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."
87fi
88
89
90prepareenv() {
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
246buildtoolchain() {
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 gcc PASS=L
291 lfsmake1 binutils PASS=2
292 lfsmake1 gcc PASS=2
293 lfsmake1 ccache PASS=2
294 lfsmake1 tcl
295 lfsmake1 expect
296 lfsmake1 dejagnu
297 lfsmake1 ncurses
298 lfsmake1 bash
299 lfsmake1 bzip2
300 lfsmake1 coreutils
301 lfsmake1 diffutils
302 lfsmake1 findutils
303 lfsmake1 gawk
304 lfsmake1 gettext
305 lfsmake1 grep
306 lfsmake1 gzip
307 lfsmake1 m4
308 lfsmake1 make
309 lfsmake1 patch
310 lfsmake1 perl
311 lfsmake1 sed
312 lfsmake1 tar
313 lfsmake1 texinfo
314 lfsmake1 xz
315 lfsmake1 fake-environ
316 lfsmake1 cleanup-toolchain PASS=2
317 export PATH=$ORG_PATH
318}
319
320buildbase() {
321 LOGFILE="$BASEDIR/log/_build.base.log"
322 export LOGFILE
323 lfsmake2 stage2
324 lfsmake2 linux KCFG="-headers"
325 lfsmake2 man-pages
326 lfsmake2 glibc
327 lfsmake2 tzdata
328 lfsmake2 cleanup-toolchain PASS=3
329 lfsmake2 zlib
330 lfsmake2 binutils
331 lfsmake2 gmp
332 lfsmake2 gmp-compat
333 lfsmake2 mpfr
334 lfsmake2 libmpc
335 lfsmake2 file
336 lfsmake2 gcc
337 lfsmake2 sed
338 lfsmake2 berkeley
339 lfsmake2 coreutils
340 lfsmake2 iana-etc
341 lfsmake2 m4
342 lfsmake2 bison
343 lfsmake2 ncurses
344 lfsmake2 procps
345 lfsmake2 libtool
346 lfsmake2 perl
347 lfsmake2 readline
348 lfsmake2 readline-compat
349 lfsmake2 pcre
350 lfsmake2 pcre-compat
351 lfsmake2 autoconf
352 lfsmake2 automake
353 lfsmake2 bash
354 lfsmake2 bzip2
355 lfsmake2 diffutils
356 lfsmake2 e2fsprogs
357 lfsmake2 ed
358 lfsmake2 findutils
359 lfsmake2 flex
360 lfsmake2 gawk
361 lfsmake2 gettext
362 lfsmake2 grep
363 lfsmake2 groff
364 lfsmake2 gperf
365 lfsmake2 gzip
366 lfsmake2 hostname
367 lfsmake2 iproute2
368 lfsmake2 jwhois
369 lfsmake2 kbd
370 lfsmake2 less
371 lfsmake2 make
372 lfsmake2 man
373 lfsmake2 kmod
374 lfsmake2 net-tools
375 lfsmake2 patch
376 lfsmake2 psmisc
377 lfsmake2 shadow
378 lfsmake2 sysklogd
379 lfsmake2 sysvinit
380 lfsmake2 tar
381 lfsmake2 texinfo
382 lfsmake2 util-linux
383 lfsmake2 udev
384 lfsmake2 vim
385 lfsmake2 xz
386 lfsmake2 paxctl
387}
388
389buildipfire() {
390 LOGFILE="$BASEDIR/log/_build.ipfire.log"
391 export LOGFILE
392 ipfiremake configroot
393 ipfiremake backup
394 ipfiremake pkg-config
395 ipfiremake libusb
396 ipfiremake libusb-compat
397 ipfiremake libpcap
398 ipfiremake ppp
399 ipfiremake pptp
400 ipfiremake unzip
401 ipfiremake which
402 ipfiremake linux-firmware
403 ipfiremake ath10k-firmware
404 ipfiremake dvb-firmwares
405 ipfiremake zd1211-firmware
406 ipfiremake rpi-firmware
407 ipfiremake bc
408 ipfiremake u-boot
409 ipfiremake cpio
410 ipfiremake mdadm
411 ipfiremake dracut
412 ipfiremake lvm2
413 ipfiremake multipath-tools
414 ipfiremake freetype
415 ipfiremake grub
416 ipfiremake libmnl
417 ipfiremake libnfnetlink
418 ipfiremake libnetfilter_queue
419 ipfiremake libnetfilter_conntrack
420 ipfiremake libnetfilter_cthelper
421 ipfiremake libnetfilter_cttimeout
422 ipfiremake iptables
423
424 case "${TARGET_ARCH}" in
425 x86_64)
426 ipfiremake linux KCFG=""
427 ipfiremake backports KCFG=""
428 ipfiremake e1000e KCFG=""
429 ipfiremake igb KCFG=""
430 ipfiremake ixgbe KCFG=""
431 ipfiremake xtables-addons KCFG=""
432 ipfiremake linux-initrd KCFG=""
433 ;;
434 i586)
435 # x86-pae (Native and new XEN) kernel build
436 ipfiremake linux KCFG="-pae"
437 ipfiremake backports KCFG="-pae"
438 ipfiremake e1000e KCFG="-pae"
439 ipfiremake igb KCFG="-pae"
440 ipfiremake ixgbe KCFG="-pae"
441 ipfiremake xtables-addons KCFG="-pae"
442 ipfiremake linux-initrd KCFG="-pae"
443
444 # x86 kernel build
445 ipfiremake linux KCFG=""
446 ipfiremake backports KCFG=""
447 ipfiremake e1000e KCFG=""
448 ipfiremake igb KCFG=""
449 ipfiremake ixgbe KCFG=""
450 ipfiremake xtables-addons KCFG=""
451 ipfiremake linux-initrd KCFG=""
452 ;;
453
454 armv5tel)
455 # arm-rpi (Raspberry Pi) kernel build
456 ipfiremake linux KCFG="-rpi"
457 ipfiremake backports 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 e1000e KCFG="-multi"
465 ipfiremake igb KCFG="-multi"
466 ipfiremake ixgbe KCFG="-multi"
467 ipfiremake xtables-addons KCFG="-multi"
468 ipfiremake linux-initrd KCFG="-multi"
469
470 # arm-kirkwood (Dreamplug, ICY-Box ...) kernel build
471 ipfiremake linux KCFG="-kirkwood"
472 ipfiremake backports KCFG="-kirkwood"
473 ipfiremake e1000e KCFG="-kirkwood"
474 ipfiremake igb KCFG="-kirkwood"
475 ipfiremake ixgbe KCFG="-kirkwood"
476 ipfiremake xtables-addons KCFG="-kirkwood"
477 ipfiremake linux-initrd KCFG="-kirkwood"
478 ;;
479 esac
480 ipfiremake xtables-addons USPACE="1"
481 ipfiremake openssl
482 [ "${TARGET_ARCH}" = "i586" ] && ipfiremake openssl KCFG='-sse2'
483 ipfiremake libgpg-error
484 ipfiremake libgcrypt
485 ipfiremake libassuan
486 ipfiremake bind
487 ipfiremake dhcp
488 ipfiremake dhcpcd
489 ipfiremake boost
490 ipfiremake linux-atm
491 ipfiremake expat
492 ipfiremake gdbm
493 ipfiremake pam
494 ipfiremake curl
495 ipfiremake tcl
496 ipfiremake sqlite
497 ipfiremake libffi
498 ipfiremake python
499 ipfiremake ca-certificates
500 ipfiremake fireinfo
501 ipfiremake libnet
502 ipfiremake libnl
503 ipfiremake libnl-3
504 ipfiremake libidn
505 ipfiremake nasm
506 ipfiremake libjpeg
507 ipfiremake libexif
508 ipfiremake libpng
509 ipfiremake libtiff
510 ipfiremake libart
511 ipfiremake gd
512 ipfiremake popt
513 ipfiremake pcre
514 ipfiremake slang
515 ipfiremake newt
516 ipfiremake libsmooth
517 ipfiremake attr
518 ipfiremake acl
519 ipfiremake libcap
520 ipfiremake pciutils
521 ipfiremake usbutils
522 ipfiremake libxml2
523 ipfiremake libxslt
524 ipfiremake BerkeleyDB
525 ipfiremake mysql
526 ipfiremake cyrus-sasl
527 ipfiremake openldap
528 ipfiremake apache2
529 ipfiremake php
530 ipfiremake web-user-interface
531 ipfiremake flag-icons
532 ipfiremake jquery
533 ipfiremake arping
534 ipfiremake beep
535 ipfiremake dvdrtools
536 ipfiremake nettle
537 ipfiremake dnsmasq
538 ipfiremake dosfstools
539 ipfiremake reiserfsprogs
540 ipfiremake xfsprogs
541 ipfiremake sysfsutils
542 ipfiremake fuse
543 ipfiremake ntfs-3g
544 ipfiremake ethtool
545 ipfiremake ez-ipupdate
546 ipfiremake fcron
547 ipfiremake perl-GD
548 ipfiremake GD-Graph
549 ipfiremake GD-TextUtil
550 ipfiremake perl-Device-SerialPort
551 ipfiremake perl-Device-Modem
552 ipfiremake gnupg
553 ipfiremake hdparm
554 ipfiremake sdparm
555 ipfiremake mtools
556 ipfiremake initscripts
557 ipfiremake whatmask
558 ipfiremake conntrack-tools
559 ipfiremake libupnp
560 ipfiremake ipaddr
561 ipfiremake iputils
562 ipfiremake l7-protocols
563 ipfiremake mISDNuser
564 ipfiremake capi4k-utils
565 ipfiremake hwdata
566 ipfiremake logrotate
567 ipfiremake logwatch
568 ipfiremake misc-progs
569 ipfiremake nano
570 ipfiremake URI
571 ipfiremake HTML-Tagset
572 ipfiremake HTML-Parser
573 ipfiremake HTML-Template
574 ipfiremake Compress-Zlib
575 ipfiremake Digest
576 ipfiremake Digest-SHA1
577 ipfiremake Digest-HMAC
578 ipfiremake libwww-perl
579 ipfiremake Net-DNS
580 ipfiremake Net-IPv4Addr
581 ipfiremake Net_SSLeay
582 ipfiremake IO-Stringy
583 ipfiremake IO-Socket-SSL
584 ipfiremake Unix-Syslog
585 ipfiremake Mail-Tools
586 ipfiremake MIME-Tools
587 ipfiremake Net-Server
588 ipfiremake Convert-TNEF
589 ipfiremake Convert-UUlib
590 ipfiremake Archive-Tar
591 ipfiremake Archive-Zip
592 ipfiremake Text-Tabs+Wrap
593 ipfiremake Locale-Country
594 ipfiremake XML-Parser
595 ipfiremake Crypt-PasswdMD5
596 ipfiremake Net-Telnet
597 ipfiremake python-setuptools
598 ipfiremake python-clientform
599 ipfiremake python-mechanize
600 ipfiremake python-feedparser
601 ipfiremake python-rssdler
602 ipfiremake glib
603 ipfiremake GeoIP
604 ipfiremake fwhits
605 ipfiremake noip_updater
606 ipfiremake ntp
607 ipfiremake openssh
608 ipfiremake fontconfig
609 ipfiremake dejavu-fonts-ttf
610 ipfiremake freefont
611 ipfiremake pixman
612 ipfiremake cairo
613 ipfiremake pango
614 ipfiremake rrdtool
615 ipfiremake setserial
616 ipfiremake setup
617 ipfiremake libdnet
618 ipfiremake daq
619 ipfiremake snort
620 ipfiremake oinkmaster
621 ipfiremake squid
622 ipfiremake squidguard
623 ipfiremake calamaris
624 ipfiremake tcpdump
625 ipfiremake traceroute
626 ipfiremake vlan
627 ipfiremake wireless
628 ipfiremake pakfire
629 ipfiremake spandsp
630 ipfiremake lzo
631 ipfiremake openvpn
632 ipfiremake pammysql
633 ipfiremake mpage
634 ipfiremake dbus
635 ipfiremake cups
636 ipfiremake ghostscript
637 ipfiremake foomatic
638 ipfiremake hplip
639 ipfiremake cifs-utils
640 ipfiremake krb5
641 ipfiremake samba
642 ipfiremake sudo
643 ipfiremake mc
644 ipfiremake wget
645 ipfiremake bridge-utils
646 ipfiremake screen
647 ipfiremake smartmontools
648 ipfiremake htop
649 ipfiremake chkconfig
650 ipfiremake postfix
651 ipfiremake fetchmail
652 ipfiremake cyrus-imapd
653 ipfiremake openmailadmin
654 ipfiremake clamav
655 ipfiremake spamassassin
656 ipfiremake amavisd
657 ipfiremake dma
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 sysstat
686 ipfiremake vsftpd
687 ipfiremake strongswan
688 ipfiremake rng-tools
689 ipfiremake lsof
690 ipfiremake br2684ctl
691 ipfiremake pcmciautils
692 ipfiremake lm_sensors
693 ipfiremake liboping
694 ipfiremake collectd
695 ipfiremake elinks
696 ipfiremake igmpproxy
697 ipfiremake fbset
698 ipfiremake sdl
699 ipfiremake qemu
700 ipfiremake sane
701 ipfiremake netpbm
702 ipfiremake phpSANE
703 ipfiremake tunctl
704 ipfiremake netsnmpd
705 ipfiremake nagios
706 ipfiremake nagios_nrpe
707 ipfiremake icinga
708 ipfiremake ebtables
709 ipfiremake directfb
710 ipfiremake dfb++
711 ipfiremake faad2
712 ipfiremake ffmpeg
713 ipfiremake vdr
714 ipfiremake vdr_streamdev
715 ipfiremake vdr_vnsiserver5
716 ipfiremake vdr_vnsiserver3
717 ipfiremake vdr_epgsearch
718 ipfiremake vdr_dvbapi
719 ipfiremake vdr_eepg
720 ipfiremake w_scan
721 ipfiremake icecast
722 ipfiremake icegenerator
723 ipfiremake mpd
724 ipfiremake libmpdclient
725 ipfiremake mpc
726 ipfiremake perl-Net-SMTP-SSL
727 ipfiremake perl-MIME-Base64
728 ipfiremake perl-Authen-SASL
729 ipfiremake perl-MIME-Lite
730 ipfiremake perl-Email-Date-Format
731 ipfiremake git
732 ipfiremake squidclamav
733 ipfiremake vnstat
734 ipfiremake iw
735 ipfiremake wpa_supplicant
736 ipfiremake hostapd
737 ipfiremake pycurl
738 ipfiremake urlgrabber
739 ipfiremake syslinux
740 ipfiremake tftpd
741 ipfiremake cpufrequtils
742 ipfiremake bluetooth
743 ipfiremake gutenprint
744 ipfiremake apcupsd
745 ipfiremake iperf
746 ipfiremake netcat
747 ipfiremake 7zip
748 ipfiremake lynis
749 ipfiremake streamripper
750 ipfiremake sshfs
751 ipfiremake taglib
752 #ipfiremake mediatomb
753 ipfiremake sslh
754 ipfiremake perl-gettext
755 ipfiremake perl-Sort-Naturally
756 ipfiremake vdradmin
757 ipfiremake miau
758 ipfiremake perl-DBI
759 ipfiremake perl-DBD-mysql
760 ipfiremake perl-DBD-SQLite
761 ipfiremake perl-File-ReadBackwards
762 ipfiremake cacti
763 ipfiremake openvmtools
764 ipfiremake nagiosql
765 ipfiremake iftop
766 ipfiremake motion
767 ipfiremake joe
768 ipfiremake monit
769 ipfiremake nut
770 ipfiremake watchdog
771 ipfiremake libpri
772 ipfiremake libsrtp
773 ipfiremake asterisk
774 ipfiremake lcr
775 ipfiremake usb_modeswitch
776 ipfiremake usb_modeswitch_data
777 ipfiremake zerofree
778 ipfiremake pound
779 ipfiremake minicom
780 ipfiremake ddrescue
781 ipfiremake imspector
782 ipfiremake miniupnpd
783 ipfiremake client175
784 ipfiremake powertop
785 ipfiremake parted
786 ipfiremake swig
787 ipfiremake python-m2crypto
788 ipfiremake wireless-regdb
789 ipfiremake crda
790 ipfiremake libsolv
791 ipfiremake python-distutils-extra
792 ipfiremake python-lzma
793 ipfiremake python-progressbar
794 ipfiremake python-xattr
795 ipfiremake intltool
796 ipfiremake ddns
797 ipfiremake transmission
798 ipfiremake dpfhack
799 ipfiremake lcd4linux
800 ipfiremake mtr
801 ipfiremake tcpick
802 ipfiremake minidlna
803 ipfiremake acpid
804 ipfiremake fping
805 ipfiremake telnet
806 ipfiremake xinetd
807 ipfiremake gpgme
808 ipfiremake pygpgme
809 ipfiremake pakfire3
810 ipfiremake stress
811 ipfiremake libstatgrab
812 ipfiremake sarg
813 ipfiremake check_mk_agent
814 ipfiremake libdaemon
815 ipfiremake avahi
816 ipfiremake nginx
817 ipfiremake sendEmail
818 ipfiremake sysbench
819 ipfiremake strace
820 ipfiremake ipfire-netboot
821 ipfiremake lcdproc
822 ipfiremake bitstream
823 ipfiremake multicat
824 ipfiremake keepalived
825 ipfiremake ipvsadm
826 ipfiremake perl-Carp-Clan
827 ipfiremake perl-Date-Calc
828 ipfiremake perl-Date-Manip
829 ipfiremake perl-File-Tail
830 ipfiremake perl-TimeDate
831 ipfiremake swatch
832 ipfiremake tor
833 ipfiremake arm
834 ipfiremake wavemon
835 ipfiremake iptraf-ng
836 ipfiremake iotop
837 ipfiremake stunnel
838 ipfiremake sslscan
839 ipfiremake owncloud
840 ipfiremake bacula
841 ipfiremake batctl
842 ipfiremake perl-PDF-API2
843 ipfiremake squid-accounting
844 ipfiremake pigz
845 ipfiremake tmux
846 ipfiremake perl-Text-CSV_XS
847 ipfiremake swconfig
848 ipfiremake haproxy
849 ipfiremake ipset
850 ipfiremake lua
851 ipfiremake dnsdist
852 ipfiremake bird
853}
854
855buildinstaller() {
856 # Run installer scripts one by one
857 LOGFILE="$BASEDIR/log/_build.installer.log"
858 export LOGFILE
859 ipfiremake memtest
860 ipfiremake installer
861 installmake strip
862}
863
864buildpackages() {
865 LOGFILE="$BASEDIR/log/_build.packages.log"
866 export LOGFILE
867 echo "... see detailed log in _build.*.log files" >> $LOGFILE
868
869
870 # Generating list of packages used
871 echo -n "Generating packages list from logs" | tee -a $LOGFILE
872 rm -f $BASEDIR/doc/packages-list
873 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
874 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
875 echo "* `basename $i`" >>$BASEDIR/doc/packages-list
876 fi
877 done
878 echo "== List of softwares used to build $NAME Version: $VERSION ==" > $BASEDIR/doc/packages-list.txt
879 grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$\|.tgz$\|-config$\|_missing_rootfile$\|install1$\|install2$\|pass1$\|pass2$\|pass3$' \
880 $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt
881 rm -f $BASEDIR/doc/packages-list
882 # packages-list.txt is ready to be displayed for wiki page
883 beautify message DONE
884
885 # Update changelog
886 cd $BASEDIR
887 [ -z $GIT_TAG ] || LAST_TAG=$GIT_TAG
888 [ -z $LAST_TAG ] || EXT="$LAST_TAG..HEAD"
889 git log -n 500 --no-merges --pretty=medium --shortstat $EXT > $BASEDIR/doc/ChangeLog
890
891 # Create images for install
892 ipfiremake cdrom
893
894 # Check if there is a loop device for building in virtual environments
895 modprobe loop 2>/dev/null
896 if [ $BUILD_IMAGES == 1 ] && ([ -e /dev/loop/0 ] || [ -e /dev/loop0 ] || [ -e "/dev/loop-control" ]); then
897 ipfiremake flash-images
898 ipfiremake flash-images SCON=1
899 fi
900
901 mv $LFS/install/images/{*.iso,*.tgz,*.img.gz,*.bz2} $BASEDIR >> $LOGFILE 2>&1
902
903 ipfirepackages
904
905 ipfiremake xen-image
906 mv $LFS/install/images/*.bz2 $BASEDIR >> $LOGFILE 2>&1
907
908 cd $BASEDIR
909
910 # remove not useable iso on armv5tel (needed to build flash images)
911 [ "${TARGET_ARCH}" = "armv5tel" ] && rm -rf *.iso
912
913 for i in `ls *.bz2 *.img.gz *.iso`; do
914 md5sum $i > $i.md5
915 done
916 cd $PWD
917
918 # Cleanup
919 stdumount
920 rm -rf $BASEDIR/build/tmp/*
921
922 # Generating total list of files
923 echo -n "Generating files list from logs" | tee -a $LOGFILE
924 rm -f $BASEDIR/log/FILES
925 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
926 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
927 echo "##" >>$BASEDIR/log/FILES
928 echo "## `basename $i`" >>$BASEDIR/log/FILES
929 echo "##" >>$BASEDIR/log/FILES
930 cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES
931 fi
932 done
933 beautify message DONE
934
935 cd $PWD
936}
937
938ipfirepackages() {
939 ipfiremake core-updates
940
941 local i
942 for i in $(find $BASEDIR/config/rootfiles/packages{/${MACHINE},} -maxdepth 1 -type f); do
943 i=$(basename ${i})
944 if [ -e $BASEDIR/lfs/$i ]; then
945 ipfiredist $i
946 else
947 echo -n $i
948 beautify message SKIP
949 fi
950 done
951 test -d $BASEDIR/packages || mkdir $BASEDIR/packages
952 mv -f $LFS/install/packages/* $BASEDIR/packages >> $LOGFILE 2>&1
953 rm -rf $BASEDIR/build/install/packages/*
954}
955
956while [ $# -gt 0 ]; do
957 case "${1}" in
958 --target=*)
959 configure_target "${1#--target=}"
960 ;;
961 -*)
962 exiterror "Unknown configuration option: ${1}"
963 ;;
964 *)
965 # Found a command, so exit options parsing.
966 break
967 ;;
968 esac
969 shift
970done
971
972# See what we're supposed to do
973case "$1" in
974build)
975 clear
976 PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz 2> /dev/null | head -n 1`
977 #only restore on a clean disk
978 if [ ! -f log/cleanup-toolchain-2-tools ]; then
979 if [ ! -n "$PACKAGE" ]; then
980 beautify build_stage "Full toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`"
981 prepareenv
982 buildtoolchain
983 else
984 PACKAGENAME=${PACKAGE%.tar.gz}
985 beautify build_stage "Packaged toolchain compilation"
986 if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
987 tar zxf $PACKAGE
988 prepareenv
989 else
990 exiterror "$PACKAGENAME md5 did not match, check downloaded package"
991 fi
992 fi
993 else
994 echo -n "Using installed toolchain" | tee -a $LOGFILE
995 beautify message SKIP
996 prepareenv
997 fi
998
999 beautify build_start
1000 beautify build_stage "Building LFS"
1001 buildbase
1002
1003 beautify build_stage "Building IPFire"
1004 buildipfire
1005
1006 beautify build_stage "Building installer"
1007 buildinstaller
1008
1009 beautify build_stage "Building packages"
1010 buildpackages
1011
1012 beautify build_stage "Checking Logfiles for new Files"
1013
1014 cd $BASEDIR
1015 tools/checknewlog.pl
1016 tools/checkrootfiles
1017 cd $PWD
1018
1019 beautify build_end
1020 ;;
1021shell)
1022 # enter a shell inside LFS chroot
1023 # may be used to changed kernel settings
1024 prepareenv
1025 entershell
1026 ;;
1027clean)
1028 echo -en "${BOLD}Cleaning build directory...${NORMAL}"
1029 for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
1030 $LOSETUP -d $i 2>/dev/null
1031 done
1032 for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
1033 umount $i
1034 done
1035 stdumount
1036 for i in `seq 0 7`; do
1037 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
1038 umount /dev/loop${i} 2>/dev/null;
1039 losetup -d /dev/loop${i} 2>/dev/null;
1040 fi;
1041 done
1042 rm -rf $BASEDIR/build
1043 rm -rf $BASEDIR/cdrom
1044 rm -rf $BASEDIR/packages
1045 rm -rf $BASEDIR/log
1046 if [ -h /tools ]; then
1047 rm -f /tools
1048 fi
1049 rm -f $BASEDIR/ipfire-*
1050 beautify message DONE
1051 ;;
1052downloadsrc)
1053 if [ ! -d $BASEDIR/cache ]; then
1054 mkdir $BASEDIR/cache
1055 fi
1056 mkdir -p $BASEDIR/log
1057 echo -e "${BOLD}Preload all source files${NORMAL}" | tee -a $LOGFILE
1058 FINISHED=0
1059 cd $BASEDIR/lfs
1060 for c in `seq $MAX_RETRIES`; do
1061 if (( FINISHED==1 )); then
1062 break
1063 fi
1064 FINISHED=1
1065 cd $BASEDIR/lfs
1066 for i in *; do
1067 if [ -f "$i" -a "$i" != "Config" ]; then
1068 lfsmakecommoncheck ${i} || continue
1069
1070 make -s -f $i LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \
1071 MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
1072 if [ $? -ne 0 ]; then
1073 beautify message FAIL
1074 FINISHED=0
1075 else
1076 if [ $c -eq 1 ]; then
1077 beautify message DONE
1078 fi
1079 fi
1080 fi
1081 done
1082 done
1083 echo -e "${BOLD}***Verifying md5sums${NORMAL}"
1084 ERROR=0
1085 for i in *; do
1086 if [ -f "$i" -a "$i" != "Config" ]; then
1087 lfsmakecommoncheck ${i} > /dev/null || continue
1088 make -s -f $i LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \
1089 MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
1090 if [ $? -ne 0 ]; then
1091 echo -ne "MD5 difference in lfs/$i"
1092 beautify message FAIL
1093 ERROR=1
1094 fi
1095 fi
1096 done
1097 if [ $ERROR -eq 0 ]; then
1098 echo -ne "${BOLD}all files md5sum match${NORMAL}"
1099 beautify message DONE
1100 else
1101 echo -ne "${BOLD}not all files were correctly download${NORMAL}"
1102 beautify message FAIL
1103 fi
1104 cd - >/dev/null 2>&1
1105 ;;
1106toolchain)
1107 clear
1108 prepareenv
1109 beautify build_stage "Toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`"
1110 buildtoolchain
1111 echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $MACHINE" | tee -a $LOGFILE
1112 test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains
1113 cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz \
1114 build/tools build/bin/sh log >> $LOGFILE
1115 md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz \
1116 > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.md5
1117 stdumount
1118 ;;
1119gettoolchain)
1120 # arbitrary name to be updated in case of new toolchain package upload
1121 PACKAGE=$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE
1122 if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then
1123 URL_TOOLCHAIN=`grep URL_TOOLCHAIN lfs/Config | awk '{ print $3 }'`
1124 test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains
1125 echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $MACHINE" | tee -a $LOGFILE
1126 cd $BASEDIR/cache/toolchains
1127 wget -U "IPFireSourceGrabber/2.x" $URL_TOOLCHAIN/$PACKAGE.tar.gz $URL_TOOLCHAIN/$PACKAGE.md5 >& /dev/null
1128 if [ $? -ne 0 ]; then
1129 echo "`date -u '+%b %e %T'`: error downloading $PACKAGE toolchain for $MACHINE machine" | tee -a $LOGFILE
1130 else
1131 if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
1132 echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
1133 else
1134 exiterror "$PACKAGE.md5 did not match, check downloaded package"
1135 fi
1136 fi
1137 else
1138 echo "Toolchain is already downloaded. Exiting..."
1139 fi
1140 ;;
1141othersrc)
1142 prepareenv
1143 echo -ne "`date -u '+%b %e %T'`: Build sources iso for $MACHINE" | tee -a $LOGFILE
1144 chroot $LFS /tools/bin/env -i HOME=/root \
1145 TERM=$TERM PS1='\u:\w\$ ' \
1146 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
1147 VERSION=$VERSION NAME="$NAME" SNAME="$SNAME" MACHINE=$MACHINE \
1148 /bin/bash -x -c "cd /usr/src/lfs && make -f sources-iso LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
1149 mv $LFS/install/images/ipfire-* $BASEDIR >> $LOGFILE 2>&1
1150 if [ $? -eq "0" ]; then
1151 beautify message DONE
1152 else
1153 beautify message FAIL
1154 fi
1155 stdumount
1156 ;;
1157uploadsrc)
1158 PWD=`pwd`
1159 if [ -z $IPFIRE_USER ]; then
1160 echo -n "You have to setup IPFIRE_USER first. See .config for details."
1161 beautify message FAIL
1162 exit 1
1163 fi
1164
1165 URL_SOURCE=$(grep URL_SOURCE lfs/Config | awk '{ print $3 }')
1166 REMOTE_FILES=$(echo "ls -1" | sftp -C ${IPFIRE_USER}@${URL_SOURCE})
1167
1168 for file in ${BASEDIR}/cache/*; do
1169 [ -d "${file}" ] && continue
1170 grep -q "$(basename ${file})" <<<$REMOTE_FILES && continue
1171 NEW_FILES="$NEW_FILES $file"
1172 done
1173 [ -n "$NEW_FILES" ] && scp -2 $NEW_FILES ${IPFIRE_USER}@${URL_SOURCE}
1174 cd $BASEDIR
1175 cd $PWD
1176 exit 0
1177 ;;
1178lang)
1179 update_langs
1180 ;;
1181*)
1182 echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}"
1183 cat doc/make.sh-usage
1184 ;;
1185esac