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