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