make.sh: Determine how much memory the build host has
[ipfire-2.x.git] / make.sh
CommitLineData
df5e82b3 1#!/bin/bash
df5e82b3
MT
2############################################################################
3# #
f8e5510c 4# This file is part of the IPFire Firewall. #
df5e82b3 5# #
f8e5510c 6# IPFire is free software; you can redistribute it and/or modify #
df5e82b3
MT
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# #
f8e5510c 11# IPFire is distributed in the hope that it will be useful, #
df5e82b3
MT
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 #
f8e5510c 17# along with IPFire; if not, write to the Free Software #
df5e82b3
MT
18# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
19# #
f7a48dd3 20# Copyright (C) 2007-2017 IPFire Team <info@ipfire.org>. #
df5e82b3
MT
21# #
22############################################################################
df5e82b3
MT
23#
24
e8ee3199
AF
25NAME="IPFire" # Software name
26SNAME="ipfire" # Short name
33513817 27VERSION="2.19" # Version number
cd8a7fc1 28CORE="116" # Core Level (Filename)
4f248f7a 29PAKFIRE_CORE="116" # Core Level (PAKFIRE)
595e89a8 30GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` # Git Branch
e8ee3199
AF
31SLOGAN="www.ipfire.org" # Software slogan
32CONFIG_ROOT=/var/ipfire # Configuration rootdir
33NICE=10 # Nice level
34MAX_RETRIES=1 # prefetch/check loop
305a7b38 35BUILD_IMAGES=1 # Flash and Xen Downloader
15679d9f 36KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'`
e8ee3199
AF
37GIT_TAG=$(git tag | tail -1) # Git Tag
38GIT_LASTCOMMIT=$(git log | head -n1 | cut -d" " -f2 |head -c8) # Last commit
628e8c3a 39
62bf80f8 40TOOLCHAINVER=20170705
03ad5f93 41
bcb9dc13 42# New architecture variables
dc7d6b20 43HOST_ARCH="$(uname -m)"
94571564 44
15679d9f
MT
45# Debian specific settings
46if [ ! -e /etc/debian_version ]; then
df5e82b3 47 FULLPATH=`which $0`
15679d9f 48else
df5e82b3
MT
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
15679d9f 55fi
df5e82b3 56
15679d9f
MT
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
df5e82b3 64
15679d9f
MT
65# Include funtions
66. tools/make-functions
df5e82b3 67
5190eea2
MT
68# Get the amount of memory in this build system
69HOST_MEM=$(system_memory)
70
15679d9f
MT
71if [ -f .config ]; then
72 . .config
15679d9f 73fi
df5e82b3 74
dc7d6b20
MT
75if [ -n "${BUILD_ARCH}" ]; then
76 configure_build "${BUILD_ARCH}"
77elif [ -n "${TARGET_ARCH}" ]; then
78 configure_build "${TARGET_ARCH}"
79 unset TARGET_ARCH
949544f5 80else
dc7d6b20 81 configure_build "default"
949544f5
MT
82fi
83
483b7768
MT
84if [ -z $EDITOR ]; then
85 for i in nano emacs vi; do
86 EDITOR=$(which $i 2>/dev/null)
87 if ! [ -z $EDITOR ]; then
88 export EDITOR=$EDITOR
89 break
90 fi
91 done
92 [ -z $EDITOR ] && exiterror "You should have installed an editor."
93fi
94
d02853e7 95
df5e82b3
MT
96prepareenv() {
97 ############################################################################
98 # #
99 # Are we running the right shell? #
100 # #
101 ############################################################################
102 if [ ! "$BASH" ]; then
1b273e8f 103 exiterror "BASH environment variable is not set. You're probably running the wrong shell."
df5e82b3
MT
104 fi
105
106 if [ -z "${BASH_VERSION}" ]; then
1b273e8f 107 exiterror "Not running BASH shell."
df5e82b3
MT
108 fi
109
110
111 ############################################################################
112 # #
113 # Trap on emergency exit #
114 # #
115 ############################################################################
116 trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGKILL SIGSTOP SIGQUIT
117
118
119 ############################################################################
120 # #
121 # Resetting our nice level #
122 # #
123 ############################################################################
9b0ff0a0 124 echo -ne "Resetting our nice level to $NICE" | tee -a $LOGFILE
df5e82b3
MT
125 renice $NICE $$ > /dev/null
126 if [ `nice` != "$NICE" ]; then
1b273e8f
MT
127 beautify message FAIL
128 exiterror "Failed to set correct nice level"
15679d9f 129 else
1b273e8f 130 beautify message DONE
df5e82b3
MT
131 fi
132
15679d9f 133
df5e82b3
MT
134 ############################################################################
135 # #
136 # Checking if running as root user #
137 # #
138 ############################################################################
9b0ff0a0 139 echo -ne "Checking if we're running as root user" | tee -a $LOGFILE
df5e82b3 140 if [ `id -u` != 0 ]; then
1b273e8f
MT
141 beautify message FAIL
142 exiterror "Not building as root"
15679d9f 143 else
1b273e8f 144 beautify message DONE
df5e82b3
MT
145 fi
146
147
148 ############################################################################
149 # #
150 # Checking for necessary temporary space #
151 # #
152 ############################################################################
9b0ff0a0 153 echo -ne "Checking for necessary space on disk $BASE_DEV" | tee -a $LOGFILE
df5e82b3
MT
154 BASE_DEV=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $1 }'`
155 BASE_ASPACE=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $4 }'`
41921bd9 156 if (( 2048000 > $BASE_ASPACE )); then
1b273e8f
MT
157 BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'`
158 if (( 2048000 - $BASE_USPACE > $BASE_ASPACE )); then
159 beautify message FAIL
160 exiterror "Not enough temporary space available, need at least 2GB on $BASE_DEV"
161 fi
15679d9f 162 else
1b273e8f 163 beautify message DONE
df5e82b3
MT
164 fi
165
166 ############################################################################
167 # #
168 # Building Linux From Scratch system #
169 # #
170 ############################################################################
df5e82b3
MT
171 # Set umask
172 umask 022
173
174 # Set LFS Directory
175 LFS=$BASEDIR/build
176
177 # Check /tools symlink
178 if [ -h /tools ]; then
179 rm -f /tools
180 fi
181 if [ ! -a /tools ]; then
1b273e8f 182 ln -s $BASEDIR/build/tools /
df5e82b3
MT
183 fi
184 if [ ! -h /tools ]; then
1b273e8f 185 exiterror "Could not create /tools symbolic link."
df5e82b3
MT
186 fi
187
188 # Setup environment
189 set +h
190 LC_ALL=POSIX
e4e74858 191 if [ -z $MAKETUNING ]; then
26b34186
MT
192 CPU_COUNT="$(getconf _NPROCESSORS_ONLN 2>/dev/null)"
193 if [ -z "${CPU_COUNT}" ]; then
194 CPU_COUNT=1
195 fi
196
197 MAKETUNING="-j$(( ${CPU_COUNT} * 2 + 1 ))"
e4e74858 198 fi
dd714b8a 199 export LFS LC_ALL CFLAGS CXXFLAGS MAKETUNING
df5e82b3
MT
200 unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
201
202 # Make some extra directories
203 mkdir -p $BASEDIR/build/{tools,etc,usr/src} 2>/dev/null
90d372c4 204 mkdir -p $BASEDIR/build/{dev/{shm,pts},proc,sys}
df5e82b3 205 mkdir -p $BASEDIR/{cache,ccache} 2>/dev/null
90d372c4
MT
206 mkdir -p $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache}
207
208 mknod -m 600 $BASEDIR/build/dev/console c 5 1 2>/dev/null
209 mknod -m 666 $BASEDIR/build/dev/null c 1 3 2>/dev/null
df5e82b3
MT
210
211 # Make all sources and proc available under lfs build
90d372c4 212 mount --bind /dev $BASEDIR/build/dev
857d9bf2
MT
213 mount --bind /dev/pts $BASEDIR/build/dev/pts
214 mount --bind /dev/shm $BASEDIR/build/dev/shm
215 mount --bind /proc $BASEDIR/build/proc
216 mount --bind /sys $BASEDIR/build/sys
df5e82b3
MT
217 mount --bind $BASEDIR/cache $BASEDIR/build/usr/src/cache
218 mount --bind $BASEDIR/ccache $BASEDIR/build/usr/src/ccache
219 mount --bind $BASEDIR/config $BASEDIR/build/usr/src/config
220 mount --bind $BASEDIR/doc $BASEDIR/build/usr/src/doc
221 mount --bind $BASEDIR/html $BASEDIR/build/usr/src/html
222 mount --bind $BASEDIR/langs $BASEDIR/build/usr/src/langs
223 mount --bind $BASEDIR/lfs $BASEDIR/build/usr/src/lfs
224 mount --bind $BASEDIR/log $BASEDIR/build/usr/src/log
225 mount --bind $BASEDIR/src $BASEDIR/build/usr/src/src
226
227 # Run LFS static binary creation scripts one by one
228 export CCACHE_DIR=$BASEDIR/ccache
36d351ff 229 export CCACHE_COMPRESS=1
dc7d6b20 230 export CCACHE_COMPILERCHECK="string:toolchain-${TOOLCHAINVER} ${BUILD_ARCH}"
df5e82b3
MT
231
232 # Remove pre-install list of installed files in case user erase some files before rebuild
233 rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null
7f69895c
AF
234
235 # Prepare string for /etc/system-release.
dc7d6b20 236 SYSTEM_RELEASE="${NAME} ${VERSION} (${BUILD_ARCH})"
7f69895c
AF
237 if [ "$(git status -s | wc -l)" == "0" ]; then
238 GIT_STATUS=""
239 else
240 GIT_STATUS="-dirty"
241 fi
242 case "$GIT_BRANCH" in
243 core*|beta?|rc?)
244 SYSTEM_RELEASE="${SYSTEM_RELEASE} - $GIT_BRANCH$GIT_STATUS"
245 ;;
246 *)
247 SYSTEM_RELEASE="${SYSTEM_RELEASE} - Development Build: $GIT_BRANCH/$GIT_LASTCOMMIT$GIT_STATUS"
248 ;;
249 esac
df5e82b3
MT
250}
251
df5e82b3 252buildtoolchain() {
f13d4e0b 253 local error=false
dc7d6b20 254 case "${BUILD_ARCH}:${HOST_ARCH}" in
fc155193
MT
255 # x86_64
256 x86_64:x86_64)
257 # This is working.
258 ;;
259
f13d4e0b 260 # x86
8399842e 261 i586:i586|i586:i686|i586:x86_64)
f13d4e0b
MT
262 # These are working.
263 ;;
264 i586:*)
265 error=true
266 ;;
267
268 # ARM
4162dbae
MT
269 arvm7hl:armv7hl|armv7hl:armv7l)
270 # These are working.
271 ;;
272
b5548cbb 273 armv5tel:armv5tel|armv5tel:armv5tejl|armv5tel:armv6l|armv5tel:armv7l|armv5tel:aarch64)
f13d4e0b
MT
274 # These are working.
275 ;;
276 armv5tel:*)
277 error=true
278 ;;
279 esac
280
281 ${error} && \
dc7d6b20 282 exiterror "Cannot build ${BUILD_ARCH} toolchain on $(uname -m). Please use the download if any."
f13d4e0b 283
8399842e
MT
284 local gcc=$(type -p gcc)
285 if [ -z "${gcc}" ]; then
286 exiterror "Could not find GCC. You will need a working build enviroment in order to build the toolchain."
6c9d6fcc
AF
287 fi
288
df5e82b3
MT
289 LOGFILE="$BASEDIR/log/_build.toolchain.log"
290 export LOGFILE
40e38688 291
b7093f17 292 lfsmake1 stage1
40e38688
MT
293 lfsmake1 ccache PASS=1
294 lfsmake1 binutils PASS=1
295 lfsmake1 gcc PASS=1
991d11d7 296 lfsmake1 linux KCFG="-headers"
dd714b8a 297 lfsmake1 glibc
764a3f1f 298 lfsmake1 gcc PASS=L
40e38688
MT
299 lfsmake1 binutils PASS=2
300 lfsmake1 gcc PASS=2
40e38688 301 lfsmake1 ccache PASS=2
df5e82b3
MT
302 lfsmake1 tcl
303 lfsmake1 expect
df5e82b3 304 lfsmake1 dejagnu
ec149ba0 305 lfsmake1 pkg-config
dd714b8a
MT
306 lfsmake1 ncurses
307 lfsmake1 bash
df5e82b3 308 lfsmake1 bzip2
b48a6c97 309 lfsmake1 automake
dd714b8a 310 lfsmake1 coreutils
df5e82b3
MT
311 lfsmake1 diffutils
312 lfsmake1 findutils
dd714b8a 313 lfsmake1 gawk
df5e82b3 314 lfsmake1 gettext
dd714b8a
MT
315 lfsmake1 grep
316 lfsmake1 gzip
317 lfsmake1 m4
40e38688 318 lfsmake1 make
df5e82b3 319 lfsmake1 patch
dd714b8a
MT
320 lfsmake1 perl
321 lfsmake1 sed
df5e82b3
MT
322 lfsmake1 tar
323 lfsmake1 texinfo
31e94846 324 lfsmake1 xz
997736b7 325 lfsmake1 fake-environ
174498ef 326 lfsmake1 cleanup-toolchain
df5e82b3
MT
327}
328
329buildbase() {
330 LOGFILE="$BASEDIR/log/_build.base.log"
331 export LOGFILE
df5e82b3 332 lfsmake2 stage2
cc24c14b 333 lfsmake2 linux KCFG="-headers"
df5e82b3
MT
334 lfsmake2 man-pages
335 lfsmake2 glibc
f7623512 336 lfsmake2 tzdata
174498ef 337 lfsmake2 cleanup-toolchain
28d70963 338 lfsmake2 zlib
df5e82b3 339 lfsmake2 binutils
28d70963
MT
340 lfsmake2 gmp
341 lfsmake2 gmp-compat
342 lfsmake2 mpfr
bdfd41c4 343 lfsmake2 libmpc
28d70963 344 lfsmake2 file
df5e82b3 345 lfsmake2 gcc
28d70963 346 lfsmake2 sed
7cf3a80b
ML
347 lfsmake2 autoconf
348 lfsmake2 automake
1e9c3fb2 349 lfsmake2 berkeley
df5e82b3 350 lfsmake2 coreutils
df5e82b3 351 lfsmake2 iana-etc
df5e82b3
MT
352 lfsmake2 m4
353 lfsmake2 bison
ec149ba0 354 lfsmake2 ncurses-compat
9b0ff0a0
MT
355 lfsmake2 ncurses
356 lfsmake2 procps
9b0ff0a0 357 lfsmake2 libtool
df5e82b3 358 lfsmake2 perl
9b0ff0a0 359 lfsmake2 readline
f19b3cb6 360 lfsmake2 readline-compat
eb03f017 361 lfsmake2 bzip2
542244b3
MT
362 lfsmake2 pcre
363 lfsmake2 pcre-compat
df5e82b3 364 lfsmake2 bash
df5e82b3 365 lfsmake2 diffutils
df5e82b3 366 lfsmake2 e2fsprogs
65998e0a 367 lfsmake2 ed
9b0ff0a0
MT
368 lfsmake2 findutils
369 lfsmake2 flex
9b0ff0a0
MT
370 lfsmake2 gawk
371 lfsmake2 gettext
372 lfsmake2 grep
373 lfsmake2 groff
d1347595 374 lfsmake2 gperf
df5e82b3 375 lfsmake2 gzip
f4e9a251 376 lfsmake2 hostname
9b0ff0a0 377 lfsmake2 iproute2
c5e5324c 378 lfsmake2 jwhois
9b0ff0a0
MT
379 lfsmake2 kbd
380 lfsmake2 less
df5e82b3 381 lfsmake2 make
9b0ff0a0 382 lfsmake2 man
ba109afd 383 lfsmake2 kmod
65998e0a 384 lfsmake2 net-tools
df5e82b3 385 lfsmake2 patch
df5e82b3
MT
386 lfsmake2 psmisc
387 lfsmake2 shadow
388 lfsmake2 sysklogd
389 lfsmake2 sysvinit
390 lfsmake2 tar
90d372c4 391 lfsmake2 texinfo
df5e82b3 392 lfsmake2 util-linux
1ee33dda 393 lfsmake2 udev
90d372c4 394 lfsmake2 vim
31e94846 395 lfsmake2 xz
5e00841d 396 lfsmake2 paxctl
df5e82b3
MT
397}
398
15679d9f 399buildipfire() {
907cd036 400 LOGFILE="$BASEDIR/log/_build.ipfire.log"
df5e82b3 401 export LOGFILE
489145db
MT
402 lfsmake2 configroot
403 lfsmake2 initscripts
404 lfsmake2 backup
405 lfsmake2 pkg-config
406 lfsmake2 libusb
407 lfsmake2 libusb-compat
408 lfsmake2 libpcap
409 lfsmake2 ppp
410 lfsmake2 pptp
411 lfsmake2 unzip
412 lfsmake2 which
413 lfsmake2 linux-firmware
414 lfsmake2 ath10k-firmware
415 lfsmake2 dvb-firmwares
416 lfsmake2 mt7601u-firmware
417 lfsmake2 zd1211-firmware
418 lfsmake2 rpi-firmware
419 lfsmake2 bc
420 lfsmake2 u-boot
421 lfsmake2 cpio
422 lfsmake2 mdadm
423 lfsmake2 dracut
424 lfsmake2 lvm2
425 lfsmake2 multipath-tools
426 lfsmake2 freetype
427 lfsmake2 grub
428 lfsmake2 libmnl
429 lfsmake2 libnfnetlink
430 lfsmake2 libnetfilter_queue
431 lfsmake2 libnetfilter_conntrack
432 lfsmake2 libnetfilter_cthelper
433 lfsmake2 libnetfilter_cttimeout
434 lfsmake2 iptables
8e6fb99d 435
dc7d6b20 436 case "${BUILD_ARCH}" in
fc155193 437 x86_64)
489145db
MT
438 lfsmake2 linux KCFG=""
439 lfsmake2 backports KCFG=""
440 lfsmake2 e1000e KCFG=""
441 lfsmake2 igb KCFG=""
442 lfsmake2 ixgbe KCFG=""
443 lfsmake2 xtables-addons KCFG=""
444 lfsmake2 linux-initrd KCFG=""
fc155193 445 ;;
3d02c091
MT
446 i586)
447 # x86-pae (Native and new XEN) kernel build
489145db
MT
448 lfsmake2 linux KCFG="-pae"
449 lfsmake2 backports KCFG="-pae"
450 lfsmake2 e1000e KCFG="-pae"
451 lfsmake2 igb KCFG="-pae"
452 lfsmake2 ixgbe KCFG="-pae"
453 lfsmake2 xtables-addons KCFG="-pae"
454 lfsmake2 linux-initrd KCFG="-pae"
3d02c091
MT
455
456 # x86 kernel build
489145db
MT
457 lfsmake2 linux KCFG=""
458 lfsmake2 backports KCFG=""
459 lfsmake2 e1000e KCFG=""
460 lfsmake2 igb KCFG=""
461 lfsmake2 ixgbe KCFG=""
462 lfsmake2 xtables-addons KCFG=""
463 lfsmake2 linux-initrd KCFG=""
3d02c091 464 ;;
544f40d4 465
3d02c091
MT
466 armv5tel)
467 # arm-rpi (Raspberry Pi) kernel build
489145db
MT
468 lfsmake2 linux KCFG="-rpi"
469 lfsmake2 backports KCFG="-rpi"
470 lfsmake2 xtables-addons KCFG="-rpi"
471 lfsmake2 linux-initrd KCFG="-rpi"
3d02c091
MT
472
473 # arm multi platform (Panda, Wandboard ...) kernel build
489145db
MT
474 lfsmake2 linux KCFG="-multi"
475 lfsmake2 backports KCFG="-multi"
476 lfsmake2 e1000e KCFG="-multi"
477 lfsmake2 igb KCFG="-multi"
478 lfsmake2 ixgbe KCFG="-multi"
479 lfsmake2 xtables-addons KCFG="-multi"
480 lfsmake2 linux-initrd KCFG="-multi"
3d02c091
MT
481
482 # arm-kirkwood (Dreamplug, ICY-Box ...) kernel build
489145db
MT
483 lfsmake2 linux KCFG="-kirkwood"
484 lfsmake2 backports KCFG="-kirkwood"
485 lfsmake2 e1000e KCFG="-kirkwood"
486 lfsmake2 igb KCFG="-kirkwood"
487 lfsmake2 ixgbe KCFG="-kirkwood"
488 lfsmake2 xtables-addons KCFG="-kirkwood"
489 lfsmake2 linux-initrd KCFG="-kirkwood"
3d02c091
MT
490 ;;
491 esac
489145db
MT
492 lfsmake2 xtables-addons USPACE="1"
493 lfsmake2 openssl
494 [ "${BUILD_ARCH}" = "i586" ] && lfsmake2 openssl KCFG='-sse2'
495 lfsmake2 libgpg-error
496 lfsmake2 libgcrypt
497 lfsmake2 libassuan
498 lfsmake2 nettle
499 lfsmake2 libevent
500 lfsmake2 libevent2
89ad036a 501 lfsmake2 libevent2-compat
489145db 502 lfsmake2 expat
c8e9a7a8
WA
503 lfsmake2 apr
504 lfsmake2 aprutil
489145db
MT
505 lfsmake2 unbound
506 lfsmake2 gnutls
507 lfsmake2 bind
508 lfsmake2 dhcp
509 lfsmake2 dhcpcd
510 lfsmake2 boost
511 lfsmake2 linux-atm
512 lfsmake2 gdbm
513 lfsmake2 pam
514 lfsmake2 curl
515 lfsmake2 tcl
516 lfsmake2 sqlite
517 lfsmake2 libffi
518 lfsmake2 python
519 lfsmake2 python3
520 lfsmake2 ca-certificates
521 lfsmake2 fireinfo
522 lfsmake2 libnet
523 lfsmake2 libnl
524 lfsmake2 libnl-3
525 lfsmake2 libidn
526 lfsmake2 nasm
527 lfsmake2 libjpeg
528 lfsmake2 libjpeg-compat
529 lfsmake2 libexif
530 lfsmake2 libpng
531 lfsmake2 libtiff
532 lfsmake2 libart
533 lfsmake2 gd
534 lfsmake2 popt
489145db
MT
535 lfsmake2 slang
536 lfsmake2 newt
537 lfsmake2 libsmooth
538 lfsmake2 attr
539 lfsmake2 acl
540 lfsmake2 libcap
541 lfsmake2 pciutils
542 lfsmake2 usbutils
543 lfsmake2 libxml2
544 lfsmake2 libxslt
545 lfsmake2 BerkeleyDB
546 lfsmake2 mysql
547 lfsmake2 cyrus-sasl
548 lfsmake2 openldap
549 lfsmake2 apache2
550 lfsmake2 php
551 lfsmake2 web-user-interface
552 lfsmake2 flag-icons
553 lfsmake2 jquery
6033b271 554 lfsmake2 bootstrap
489145db
MT
555 lfsmake2 arping
556 lfsmake2 beep
557 lfsmake2 dvdrtools
558 lfsmake2 dosfstools
559 lfsmake2 reiserfsprogs
560 lfsmake2 xfsprogs
561 lfsmake2 sysfsutils
562 lfsmake2 fuse
563 lfsmake2 ntfs-3g
564 lfsmake2 ethtool
565 lfsmake2 ez-ipupdate
566 lfsmake2 fcron
567 lfsmake2 perl-GD
568 lfsmake2 GD-Graph
569 lfsmake2 GD-TextUtil
570 lfsmake2 perl-Device-SerialPort
571 lfsmake2 perl-Device-Modem
572 lfsmake2 perl-Apache-Htpasswd
573 lfsmake2 gnupg
574 lfsmake2 hdparm
575 lfsmake2 sdparm
576 lfsmake2 mtools
577 lfsmake2 whatmask
578 lfsmake2 conntrack-tools
579 lfsmake2 libupnp
580 lfsmake2 ipaddr
581 lfsmake2 iputils
582 lfsmake2 l7-protocols
583 lfsmake2 mISDNuser
584 lfsmake2 capi4k-utils
585 lfsmake2 hwdata
586 lfsmake2 logrotate
587 lfsmake2 logwatch
588 lfsmake2 misc-progs
589 lfsmake2 nano
590 lfsmake2 URI
591 lfsmake2 HTML-Tagset
592 lfsmake2 HTML-Parser
593 lfsmake2 HTML-Template
594 lfsmake2 Compress-Zlib
595 lfsmake2 Digest
596 lfsmake2 Digest-SHA1
597 lfsmake2 Digest-HMAC
598 lfsmake2 libwww-perl
599 lfsmake2 Net-DNS
600 lfsmake2 Net-IPv4Addr
601 lfsmake2 Net_SSLeay
602 lfsmake2 IO-Stringy
603 lfsmake2 IO-Socket-SSL
604 lfsmake2 Unix-Syslog
605 lfsmake2 Mail-Tools
606 lfsmake2 MIME-Tools
607 lfsmake2 Net-Server
608 lfsmake2 Convert-TNEF
609 lfsmake2 Convert-UUlib
610 lfsmake2 Archive-Tar
611 lfsmake2 Archive-Zip
612 lfsmake2 Text-Tabs+Wrap
613 lfsmake2 Locale-Country
614 lfsmake2 XML-Parser
615 lfsmake2 Crypt-PasswdMD5
616 lfsmake2 Net-Telnet
617 lfsmake2 python-setuptools
618 lfsmake2 python-clientform
619 lfsmake2 python-mechanize
620 lfsmake2 python-feedparser
621 lfsmake2 python-rssdler
622 lfsmake2 python-inotify
623 lfsmake2 python-docutils
624 lfsmake2 python-daemon
625 lfsmake2 python-ipaddress
626 lfsmake2 glib
627 lfsmake2 GeoIP
489145db
MT
628 lfsmake2 noip_updater
629 lfsmake2 ntp
630 lfsmake2 openssh
631 lfsmake2 fontconfig
632 lfsmake2 dejavu-fonts-ttf
70f6cba4 633 lfsmake2 ubuntu-font-family
489145db
MT
634 lfsmake2 freefont
635 lfsmake2 pixman
636 lfsmake2 cairo
637 lfsmake2 pango
638 lfsmake2 rrdtool
639 lfsmake2 setserial
640 lfsmake2 setup
641 lfsmake2 libdnet
642 lfsmake2 daq
643 lfsmake2 snort
644 lfsmake2 oinkmaster
645 lfsmake2 squid
646 lfsmake2 squidguard
647 lfsmake2 calamaris
648 lfsmake2 tcpdump
649 lfsmake2 traceroute
650 lfsmake2 vlan
651 lfsmake2 wireless
652 lfsmake2 pakfire
653 lfsmake2 spandsp
654 lfsmake2 lzo
655 lfsmake2 openvpn
656 lfsmake2 pammysql
657 lfsmake2 mpage
658 lfsmake2 dbus
659 lfsmake2 intltool
660 lfsmake2 libdaemon
661 lfsmake2 cups
489145db 662 lfsmake2 lcms2
56170c2a 663 lfsmake2 ghostscript
489145db
MT
664 lfsmake2 qpdf
665 lfsmake2 poppler
666 lfsmake2 cups-filters
667 lfsmake2 epson-inkjet-printer-escpr
668 lfsmake2 foomatic
669 lfsmake2 hplip
670 lfsmake2 cifs-utils
671 lfsmake2 krb5
672 lfsmake2 samba
673 lfsmake2 sudo
674 lfsmake2 mc
675 lfsmake2 wget
676 lfsmake2 bridge-utils
677 lfsmake2 screen
678 lfsmake2 smartmontools
679 lfsmake2 htop
680 lfsmake2 chkconfig
681 lfsmake2 postfix
682 lfsmake2 fetchmail
683 lfsmake2 cyrus-imapd
684 lfsmake2 openmailadmin
685 lfsmake2 clamav
686 lfsmake2 spamassassin
687 lfsmake2 amavisd
688 lfsmake2 dma
689 lfsmake2 alsa
690 lfsmake2 mpfire
691 lfsmake2 guardian
692 lfsmake2 libid3tag
693 lfsmake2 libmad
694 lfsmake2 libogg
695 lfsmake2 libvorbis
696 lfsmake2 libdvbpsi
697 lfsmake2 flac
698 lfsmake2 lame
699 lfsmake2 sox
700 lfsmake2 libshout
701 lfsmake2 xvid
702 lfsmake2 libmpeg2
703 lfsmake2 libarchive
704 lfsmake2 cmake
705 lfsmake2 gnump3d
706 lfsmake2 rsync
707 lfsmake2 tcpwrapper
708 lfsmake2 libtirpc
709 lfsmake2 rpcbind
710 lfsmake2 nfs
711 lfsmake2 gnu-netcat
712 lfsmake2 ncat
713 lfsmake2 nmap
489145db
MT
714 lfsmake2 etherwake
715 lfsmake2 bwm-ng
716 lfsmake2 sysstat
717 lfsmake2 vsftpd
718 lfsmake2 strongswan
719 lfsmake2 rng-tools
720 lfsmake2 lsof
721 lfsmake2 br2684ctl
722 lfsmake2 pcmciautils
723 lfsmake2 lm_sensors
724 lfsmake2 liboping
725 lfsmake2 collectd
726 lfsmake2 elinks
727 lfsmake2 igmpproxy
728 lfsmake2 fbset
729 lfsmake2 opus
730 lfsmake2 python-six
731 lfsmake2 python-pyparsing
732 lfsmake2 spice-protocol
733 lfsmake2 spice
734 lfsmake2 sdl
735 lfsmake2 libusbredir
736 lfsmake2 qemu
737 lfsmake2 sane
738 lfsmake2 netpbm
739 lfsmake2 phpSANE
740 lfsmake2 tunctl
741 lfsmake2 netsnmpd
742 lfsmake2 nagios
743 lfsmake2 nagios_nrpe
744 lfsmake2 icinga
745 lfsmake2 ebtables
746 lfsmake2 directfb
489145db
MT
747 lfsmake2 faad2
748 lfsmake2 ffmpeg
749 lfsmake2 vdr
750 lfsmake2 vdr_streamdev
489145db
MT
751 lfsmake2 vdr_epgsearch
752 lfsmake2 vdr_dvbapi
753 lfsmake2 vdr_eepg
754 lfsmake2 w_scan
755 lfsmake2 icecast
756 lfsmake2 icegenerator
757 lfsmake2 mpd
758 lfsmake2 libmpdclient
759 lfsmake2 mpc
760 lfsmake2 perl-Net-SMTP-SSL
761 lfsmake2 perl-MIME-Base64
762 lfsmake2 perl-Authen-SASL
763 lfsmake2 perl-MIME-Lite
764 lfsmake2 perl-Email-Date-Format
765 lfsmake2 git
766 lfsmake2 squidclamav
767 lfsmake2 vnstat
768 lfsmake2 iw
769 lfsmake2 wpa_supplicant
770 lfsmake2 hostapd
771 lfsmake2 pycurl
772 lfsmake2 urlgrabber
773 lfsmake2 syslinux
774 lfsmake2 tftpd
775 lfsmake2 cpufrequtils
776 lfsmake2 bluetooth
777 lfsmake2 gutenprint
778 lfsmake2 apcupsd
779 lfsmake2 iperf
780 lfsmake2 iperf3
781 lfsmake2 7zip
782 lfsmake2 lynis
783 lfsmake2 streamripper
784 lfsmake2 sshfs
785 lfsmake2 taglib
786 #lfsmake2 mediatomb
787 lfsmake2 sslh
788 lfsmake2 perl-gettext
789 lfsmake2 perl-Sort-Naturally
790 lfsmake2 vdradmin
791 lfsmake2 miau
792 lfsmake2 perl-DBI
793 lfsmake2 perl-DBD-mysql
794 lfsmake2 perl-DBD-SQLite
795 lfsmake2 perl-File-ReadBackwards
796 lfsmake2 cacti
797 lfsmake2 openvmtools
798 lfsmake2 nagiosql
489145db
MT
799 lfsmake2 motion
800 lfsmake2 joe
801 lfsmake2 monit
802 lfsmake2 nut
803 lfsmake2 watchdog
804 lfsmake2 libpri
805 lfsmake2 libsrtp
806 lfsmake2 asterisk
807 lfsmake2 lcr
808 lfsmake2 usb_modeswitch
809 lfsmake2 usb_modeswitch_data
810 lfsmake2 zerofree
811 lfsmake2 pound
812 lfsmake2 minicom
813 lfsmake2 ddrescue
489145db
MT
814 lfsmake2 miniupnpd
815 lfsmake2 client175
816 lfsmake2 powertop
817 lfsmake2 parted
818 lfsmake2 swig
819 lfsmake2 python-m2crypto
820 lfsmake2 wireless-regdb
821 lfsmake2 crda
822 lfsmake2 libsolv
823 lfsmake2 python-distutils-extra
824 lfsmake2 python-lzma
825 lfsmake2 python-progressbar
826 lfsmake2 python-xattr
827 lfsmake2 ddns
828 lfsmake2 transmission
829 lfsmake2 dpfhack
830 lfsmake2 lcd4linux
831 lfsmake2 mtr
489145db
MT
832 lfsmake2 minidlna
833 lfsmake2 acpid
834 lfsmake2 fping
835 lfsmake2 telnet
836 lfsmake2 xinetd
837 lfsmake2 gpgme
838 lfsmake2 pygpgme
839 lfsmake2 pakfire3
840 lfsmake2 stress
841 lfsmake2 libstatgrab
842 lfsmake2 sarg
843 lfsmake2 check_mk_agent
844 lfsmake2 nginx
845 lfsmake2 sendEmail
846 lfsmake2 sysbench
847 lfsmake2 strace
848 lfsmake2 elfutils
849 lfsmake2 ltrace
850 lfsmake2 ipfire-netboot
851 lfsmake2 lcdproc
852 lfsmake2 bitstream
853 lfsmake2 multicat
854 lfsmake2 keepalived
855 lfsmake2 ipvsadm
856 lfsmake2 perl-Carp-Clan
857 lfsmake2 perl-Date-Calc
858 lfsmake2 perl-Date-Manip
859 lfsmake2 perl-File-Tail
860 lfsmake2 perl-TimeDate
861 lfsmake2 swatch
862 lfsmake2 tor
863 lfsmake2 arm
864 lfsmake2 wavemon
865 lfsmake2 iptraf-ng
866 lfsmake2 iotop
867 lfsmake2 stunnel
868 lfsmake2 sslscan
869 lfsmake2 owncloud
870 lfsmake2 bacula
871 lfsmake2 batctl
b62c826f
MT
872 lfsmake2 perl-Font-TTF
873 lfsmake2 perl-IO-String
489145db
MT
874 lfsmake2 perl-PDF-API2
875 lfsmake2 squid-accounting
876 lfsmake2 pigz
877 lfsmake2 tmux
878 lfsmake2 perl-Text-CSV_XS
879 lfsmake2 swconfig
880 lfsmake2 haproxy
881 lfsmake2 ipset
882 lfsmake2 lua
883 lfsmake2 dnsdist
884 lfsmake2 bird
885 lfsmake2 dmidecode
886 lfsmake2 mcelog
887 lfsmake2 rtpproxy
888 lfsmake2 util-macros
889 lfsmake2 libpciaccess
890 lfsmake2 libyajl
891 lfsmake2 libvirt
b190cbe2 892 lfsmake2 python3-libvirt
489145db
MT
893 lfsmake2 freeradius
894 lfsmake2 perl-common-sense
895 lfsmake2 perl-inotify2
896 lfsmake2 perl-Net-IP
0d6cc79d 897 lfsmake2 wio
773caa66 898 lfsmake2 iftop
d0817963 899}
df5e82b3
MT
900
901buildinstaller() {
902 # Run installer scripts one by one
903 LOGFILE="$BASEDIR/log/_build.installer.log"
904 export LOGFILE
489145db
MT
905 lfsmake2 memtest
906 lfsmake2 installer
4960c912 907 lfsmake1 strip
df5e82b3
MT
908}
909
910buildpackages() {
911 LOGFILE="$BASEDIR/log/_build.packages.log"
912 export LOGFILE
913 echo "... see detailed log in _build.*.log files" >> $LOGFILE
0fbb45e9 914
df5e82b3
MT
915
916 # Generating list of packages used
0fbb45e9 917 echo -n "Generating packages list from logs" | tee -a $LOGFILE
df5e82b3
MT
918 rm -f $BASEDIR/doc/packages-list
919 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
920 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
7471f6ab 921 echo "* `basename $i`" >>$BASEDIR/doc/packages-list
df5e82b3
MT
922 fi
923 done
7471f6ab 924 echo "== List of softwares used to build $NAME Version: $VERSION ==" > $BASEDIR/doc/packages-list.txt
4fe9acb2 925 grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$\|.tgz$\|-config$\|_missing_rootfile$\|install1$\|install2$\|pass1$\|pass2$\|pass3$' \
df5e82b3
MT
926 $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt
927 rm -f $BASEDIR/doc/packages-list
c9673262 928 # packages-list.txt is ready to be displayed for wiki page
0fbb45e9 929 beautify message DONE
4b06f504
MT
930
931 # Update changelog
e49f7f0d 932 cd $BASEDIR
c43b07fd
AF
933 [ -z $GIT_TAG ] || LAST_TAG=$GIT_TAG
934 [ -z $LAST_TAG ] || EXT="$LAST_TAG..HEAD"
935 git log -n 500 --no-merges --pretty=medium --shortstat $EXT > $BASEDIR/doc/ChangeLog
df5e82b3 936
9607771a 937 # Create images for install
489145db 938 lfsmake2 cdrom
bada0832 939
4dc82852 940 # Check if there is a loop device for building in virtual environments
841663e7
MT
941 modprobe loop 2>/dev/null
942 if [ $BUILD_IMAGES == 1 ] && ([ -e /dev/loop/0 ] || [ -e /dev/loop0 ] || [ -e "/dev/loop-control" ]); then
489145db
MT
943 lfsmake2 flash-images
944 lfsmake2 flash-images SCON=1
4dc82852 945 fi
c9673262 946
f0fc8807 947 mv $LFS/install/images/{*.iso,*.tgz,*.img.gz,*.bz2} $BASEDIR >> $LOGFILE 2>&1
c9673262 948
0d909a4a 949 ipfirepackages
e67a57fe 950
489145db 951 lfsmake2 xen-image
939c2a21 952 mv $LFS/install/images/*.bz2 $BASEDIR >> $LOGFILE 2>&1
bada0832 953
b307417f 954 cd $BASEDIR
744a04ea
AF
955
956 # remove not useable iso on armv5tel (needed to build flash images)
dc7d6b20 957 [ "${BUILD_ARCH}" = "armv5tel" ] && rm -rf *.iso
744a04ea 958
b307417f
AF
959 for i in `ls *.bz2 *.img.gz *.iso`; do
960 md5sum $i > $i.md5
961 done
962 cd $PWD
963
e67a57fe
MT
964 # Cleanup
965 stdumount
966 rm -rf $BASEDIR/build/tmp/*
967
968 # Generating total list of files
0d909a4a 969 echo -n "Generating files list from logs" | tee -a $LOGFILE
e67a57fe
MT
970 rm -f $BASEDIR/log/FILES
971 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
972 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
973 echo "##" >>$BASEDIR/log/FILES
974 echo "## `basename $i`" >>$BASEDIR/log/FILES
975 echo "##" >>$BASEDIR/log/FILES
976 cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES
977 fi
978 done
0d909a4a 979 beautify message DONE
e67a57fe
MT
980
981 cd $PWD
e67a57fe
MT
982}
983
984ipfirepackages() {
489145db 985 lfsmake2 core-updates
5596077b
MT
986
987 local i
dc7d6b20 988 for i in $(find $BASEDIR/config/rootfiles/packages{/${BUILD_ARCH},} -maxdepth 1 -type f); do
5596077b 989 i=$(basename ${i})
453b418b
MT
990 if [ -e $BASEDIR/lfs/$i ]; then
991 ipfiredist $i
992 else
993 echo -n $i
994 beautify message SKIP
995 fi
fe7fe395 996 done
78331e30 997 test -d $BASEDIR/packages || mkdir $BASEDIR/packages
5c8cfc99 998 mv -f $LFS/install/packages/* $BASEDIR/packages >> $LOGFILE 2>&1
483f59cd 999 rm -rf $BASEDIR/build/install/packages/*
df5e82b3
MT
1000}
1001
bcb9dc13
MT
1002while [ $# -gt 0 ]; do
1003 case "${1}" in
1004 --target=*)
c2e810de 1005 configure_build "${1#--target=}"
bcb9dc13
MT
1006 ;;
1007 -*)
1008 exiterror "Unknown configuration option: ${1}"
1009 ;;
1010 *)
1011 # Found a command, so exit options parsing.
1012 break
1013 ;;
1014 esac
1015 shift
1016done
1017
df5e82b3
MT
1018# See what we're supposed to do
1019case "$1" in
1020build)
9729e787 1021 clear
dc7d6b20 1022 PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.gz 2> /dev/null | head -n 1`
df5e82b3 1023 #only restore on a clean disk
bdc6837d 1024 if [ ! -e "${BASEDIR}/build/tools/.toolchain-successful" ]; then
df5e82b3 1025 if [ ! -n "$PACKAGE" ]; then
ea465705 1026 beautify build_stage "Full toolchain compilation"
df5e82b3
MT
1027 prepareenv
1028 buildtoolchain
1029 else
1030 PACKAGENAME=${PACKAGE%.tar.gz}
15679d9f 1031 beautify build_stage "Packaged toolchain compilation"
df5e82b3
MT
1032 if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
1033 tar zxf $PACKAGE
1034 prepareenv
1035 else
1036 exiterror "$PACKAGENAME md5 did not match, check downloaded package"
1037 fi
1038 fi
1039 else
9729e787
MT
1040 echo -n "Using installed toolchain" | tee -a $LOGFILE
1041 beautify message SKIP
df5e82b3
MT
1042 prepareenv
1043 fi
5cfe86e6 1044
7ab7a9b4 1045 beautify build_start
0b59f25c 1046 beautify build_stage "Building LFS"
df5e82b3 1047 buildbase
15679d9f 1048
0b59f25c 1049 beautify build_stage "Building IPFire"
15679d9f 1050 buildipfire
5cfe86e6 1051
0b59f25c 1052 beautify build_stage "Building installer"
df5e82b3 1053 buildinstaller
15679d9f 1054
0b59f25c 1055 beautify build_stage "Building packages"
df5e82b3 1056 buildpackages
7a5ed24e
CS
1057
1058 beautify build_stage "Checking Logfiles for new Files"
b307417f
AF
1059
1060 cd $BASEDIR
7a5ed24e 1061 tools/checknewlog.pl
e0c923f4 1062 tools/checkrootfiles
b307417f 1063 cd $PWD
a23731d1 1064
7ab7a9b4 1065 beautify build_end
df5e82b3
MT
1066 ;;
1067shell)
1068 # enter a shell inside LFS chroot
1069 # may be used to changed kernel settings
1070 prepareenv
1071 entershell
1072 ;;
df5e82b3 1073clean)
a50d04ab 1074 echo -en "${BOLD}Cleaning build directory...${NORMAL}"
df5e82b3
MT
1075 for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
1076 $LOSETUP -d $i 2>/dev/null
1077 done
1078 for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
1079 umount $i
1080 done
1081 stdumount
1082 for i in `seq 0 7`; do
1083 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
1084 umount /dev/loop${i} 2>/dev/null;
1085 losetup -d /dev/loop${i} 2>/dev/null;
1086 fi;
1087 done
1088 rm -rf $BASEDIR/build
1089 rm -rf $BASEDIR/cdrom
f9315063 1090 rm -rf $BASEDIR/packages
df5e82b3 1091 rm -rf $BASEDIR/log
df5e82b3
MT
1092 if [ -h /tools ]; then
1093 rm -f /tools
1094 fi
b307417f 1095 rm -f $BASEDIR/ipfire-*
a50d04ab 1096 beautify message DONE
df5e82b3 1097 ;;
c3db995c 1098downloadsrc)
df5e82b3
MT
1099 if [ ! -d $BASEDIR/cache ]; then
1100 mkdir $BASEDIR/cache
1101 fi
1102 mkdir -p $BASEDIR/log
857d9bf2 1103 echo -e "${BOLD}Preload all source files${NORMAL}" | tee -a $LOGFILE
df5e82b3
MT
1104 FINISHED=0
1105 cd $BASEDIR/lfs
1106 for c in `seq $MAX_RETRIES`; do
1107 if (( FINISHED==1 )); then
1108 break
1109 fi
1110 FINISHED=1
1111 cd $BASEDIR/lfs
1112 for i in *; do
1113 if [ -f "$i" -a "$i" != "Config" ]; then
846e756e
MT
1114 lfsmakecommoncheck ${i} || continue
1115
dc7d6b20 1116 make -s -f $i LFS_BASEDIR=$BASEDIR BUILD_ARCH="${BUILD_ARCH}" \
51f9e7ac 1117 MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
df5e82b3 1118 if [ $? -ne 0 ]; then
e22c7973 1119 beautify message FAIL
df5e82b3
MT
1120 FINISHED=0
1121 else
1122 if [ $c -eq 1 ]; then
e22c7973 1123 beautify message DONE
df5e82b3
MT
1124 fi
1125 fi
1126 fi
1127 done
1128 done
e22c7973 1129 echo -e "${BOLD}***Verifying md5sums${NORMAL}"
df5e82b3
MT
1130 ERROR=0
1131 for i in *; do
1132 if [ -f "$i" -a "$i" != "Config" ]; then
a4130265 1133 lfsmakecommoncheck ${i} > /dev/null || continue
dc7d6b20 1134 make -s -f $i LFS_BASEDIR=$BASEDIR BUILD_ARCH="${BUILD_ARCH}" \
51f9e7ac 1135 MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
df5e82b3 1136 if [ $? -ne 0 ]; then
e22c7973
MT
1137 echo -ne "MD5 difference in lfs/$i"
1138 beautify message FAIL
df5e82b3
MT
1139 ERROR=1
1140 fi
1141 fi
1142 done
1143 if [ $ERROR -eq 0 ]; then
e22c7973
MT
1144 echo -ne "${BOLD}all files md5sum match${NORMAL}"
1145 beautify message DONE
1146 else
1147 echo -ne "${BOLD}not all files were correctly download${NORMAL}"
1148 beautify message FAIL
df5e82b3 1149 fi
e22c7973 1150 cd - >/dev/null 2>&1
df5e82b3 1151 ;;
df5e82b3 1152toolchain)
9729e787 1153 clear
df5e82b3 1154 prepareenv
602cb8bd 1155 beautify build_stage "Toolchain compilation"
df5e82b3 1156 buildtoolchain
dc7d6b20 1157 echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for ${BUILD_ARCH}" | tee -a $LOGFILE
11104bfe 1158 test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains
dc7d6b20 1159 cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.gz \
3e106ae5 1160 build/tools build/bin/sh log >> $LOGFILE
dc7d6b20
MT
1161 md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.gz \
1162 > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.md5
df5e82b3
MT
1163 stdumount
1164 ;;
1165gettoolchain)
df5e82b3 1166 # arbitrary name to be updated in case of new toolchain package upload
dc7d6b20 1167 PACKAGE=$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}
712d859c 1168 if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then
5bd13f01 1169 URL_TOOLCHAIN=`grep URL_TOOLCHAIN lfs/Config | awk '{ print $3 }'`
11104bfe 1170 test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains
dc7d6b20 1171 echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for ${BUILD_ARCH}" | tee -a $LOGFILE
712d859c 1172 cd $BASEDIR/cache/toolchains
74f3678b 1173 wget -U "IPFireSourceGrabber/2.x" $URL_TOOLCHAIN/$PACKAGE.tar.gz $URL_TOOLCHAIN/$PACKAGE.md5 >& /dev/null
712d859c 1174 if [ $? -ne 0 ]; then
dc7d6b20 1175 echo "`date -u '+%b %e %T'`: error downloading $PACKAGE toolchain for ${BUILD_ARCH} machine" | tee -a $LOGFILE
40a4ea4c 1176 else
712d859c
MT
1177 if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
1178 echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
1179 else
1180 exiterror "$PACKAGE.md5 did not match, check downloaded package"
1181 fi
40a4ea4c 1182 fi
712d859c
MT
1183 else
1184 echo "Toolchain is already downloaded. Exiting..."
df5e82b3
MT
1185 fi
1186 ;;
15679d9f 1187othersrc)
ce56e927 1188 prepareenv
dc7d6b20 1189 echo -ne "`date -u '+%b %e %T'`: Build sources iso for ${BUILD_ARCH}" | tee -a $LOGFILE
ce56e927
MT
1190 chroot $LFS /tools/bin/env -i HOME=/root \
1191 TERM=$TERM PS1='\u:\w\$ ' \
1192 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
dc7d6b20 1193 VERSION=$VERSION NAME="$NAME" SNAME="$SNAME" BUILD_ARCH="${BUILD_ARCH}" \
ce56e927
MT
1194 /bin/bash -x -c "cd /usr/src/lfs && make -f sources-iso LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
1195 mv $LFS/install/images/ipfire-* $BASEDIR >> $LOGFILE 2>&1
15679d9f
MT
1196 if [ $? -eq "0" ]; then
1197 beautify message DONE
1198 else
1199 beautify message FAIL
1200 fi
ce56e927
MT
1201 stdumount
1202 ;;
15679d9f
MT
1203uploadsrc)
1204 PWD=`pwd`
661d9388
CS
1205 if [ -z $IPFIRE_USER ]; then
1206 echo -n "You have to setup IPFIRE_USER first. See .config for details."
1207 beautify message FAIL
1208 exit 1
1209 fi
ae23a606 1210
661d9388 1211 URL_SOURCE=$(grep URL_SOURCE lfs/Config | awk '{ print $3 }')
15e38431 1212 REMOTE_FILES=$(echo "ls -1" | sftp -C ${IPFIRE_USER}@${URL_SOURCE})
661d9388 1213
15e38431
MT
1214 for file in ${BASEDIR}/cache/*; do
1215 [ -d "${file}" ] && continue
1216 grep -q "$(basename ${file})" <<<$REMOTE_FILES && continue
661d9388 1217 NEW_FILES="$NEW_FILES $file"
0eab8e84 1218 done
661d9388
CS
1219 [ -n "$NEW_FILES" ] && scp -2 $NEW_FILES ${IPFIRE_USER}@${URL_SOURCE}
1220 cd $BASEDIR
15679d9f
MT
1221 cd $PWD
1222 exit 0
0eab8e84 1223 ;;
bf7c473f
MT
1224lang)
1225 update_langs
1226 ;;
6b8cff41 1227*)
a50d04ab 1228 echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}"
6b8cff41
MT
1229 cat doc/make.sh-usage
1230 ;;
3ea75603 1231esac