]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blame - make.sh
MONSTER-REVISION!
[people/teissler/ipfire-2.x.git] / make.sh
CommitLineData
df5e82b3
MT
1#!/bin/bash
2#
3############################################################################
4# #
f8e5510c 5# This file is part of the IPFire Firewall. #
df5e82b3 6# #
f8e5510c 7# IPFire is free software; you can redistribute it and/or modify #
df5e82b3
MT
8# it under the terms of the GNU General Public License as published by #
9# the Free Software Foundation; either version 2 of the License, or #
10# (at your option) any later version. #
11# #
f8e5510c 12# IPFire is distributed in the hope that it will be useful, #
df5e82b3
MT
13# but WITHOUT ANY WARRANTY; without even the implied warranty of #
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
15# GNU General Public License for more details. #
16# #
17# You should have received a copy of the GNU General Public License #
f8e5510c 18# along with IPFire; if not, write to the Free Software #
df5e82b3
MT
19# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
20# #
f8e5510c 21# Copyright (C) 2006 IPFire-Team <entwickler@ipfire.org>. #
df5e82b3
MT
22# #
23############################################################################
df5e82b3
MT
24#
25
f8e5510c 26 NAME="IPFire" # Software name
3ea75603 27 SNAME="ipfire" # Short name
e3a8510a 28 VERSION="2.0" # Version number
028698e8 29 SLOGAN="www.ipfire.eu" # Software slogan
3ea75603 30 CONFIG_ROOT=/var/ipfire # Configuration rootdir
df5e82b3 31 NICE=10
0eab8e84 32 MAX_RETRIES=3 # prefetch/check loop
df5e82b3
MT
33 KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'`
34 MACHINE=`uname -m`
cc0e56be 35 SVN_REVISION=`svn info | grep Revision | cut -c 11-`
df5e82b3 36
7476f476
HS
37 # Setzen des IPFire Builds
38 if [ -e ./.svn ]; then
39 FIREBUILD=`cat .svn/entries |sed -n 's/^[ \t]*revision=\"// p' | sed -n 's/\".*$// p'`
7476f476
HS
40 fi
41
df5e82b3
MT
42 # Debian specific settings
43 if [ ! -e /etc/debian_version ]; then
44 FULLPATH=`which $0`
45 else
46 if [ -x /usr/bin/realpath ]; then
47 FULLPATH=`/usr/bin/realpath $0`
48 else
49 echo "ERROR: Need to do apt-get install realpath"
50 exit 1
51 fi
52 fi
53
df5e82b3
MT
54 PWD=`pwd`
55 BASENAME=`basename $0`
56 BASEDIR=`echo $FULLPATH | sed "s/\/$BASENAME//g"`
57 LOGFILE=$BASEDIR/log/_build.preparation.log
58 export BASEDIR LOGFILE
59 DIR_CHK=$BASEDIR/cache/check
60 mkdir $BASEDIR/log/ 2>/dev/null
61
cc0e56be
MT
62 if [ -f .config ]; then
63 . .config
64 fi
65
df5e82b3 66 if [ 'x86_64' = $MACHINE -o 'i686' = $MACHINE -o 'i586' = $MACHINE -o 'i486' = $MACHINE -o 'i386' = $MACHINE ]; then
c6cb9d25 67 echo "`date -u '+%b %e %T'`: Machine is ix86 (or equivalent)" >> $LOGFILE
df5e82b3
MT
68 MACHINE=i386
69 BUILDTARGET=i386-pc-linux-gnu
70 CFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer"
71 CXXFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer"
72 elif [ 'alpha' = $MACHINE ]; then
c6cb9d25 73 echo "`date -u '+%b %e %T'`: Machine is Alpha AXP" >> $LOGFILE
df5e82b3
MT
74 BUILDTARGET=alpha-unknown-linux-gnu
75 CFLAGS="-O2 -mcpu=ev4 -mieee -pipe"
76 CXXFLAGS="-O2 -mcpu=ev4 -mieee -pipe"
77 else
c6cb9d25 78 echo "`date -u '+%b %e %T'`: Can't determine your architecture - $MACHINE" >> $LOGFILE
df5e82b3
MT
79 exit 1
80 fi
81
82# Define immediately
83stdumount() {
84 umount $BASEDIR/build/dev/pts 2>/dev/null;
94025eea
MT
85 umount $BASEDIR/build/proc 2>/dev/null;
86 umount $BASEDIR/build/install/mnt 2>/dev/null;
df5e82b3
MT
87 umount $BASEDIR/build/usr/src/cache 2>/dev/null;
88 umount $BASEDIR/build/usr/src/ccache 2>/dev/null;
89 umount $BASEDIR/build/usr/src/config 2>/dev/null;
94025eea
MT
90 umount $BASEDIR/build/usr/src/doc 2>/dev/null;
91 umount $BASEDIR/build/usr/src/html 2>/dev/null;
df5e82b3 92 umount $BASEDIR/build/usr/src/langs 2>/dev/null;
94025eea
MT
93 umount $BASEDIR/build/usr/src/lfs 2>/dev/null;
94 umount $BASEDIR/build/usr/src/log 2>/dev/null;
95 umount $BASEDIR/build/usr/src/src 2>/dev/null;
df5e82b3
MT
96}
97
98exiterror() {
99 stdumount
100 for i in `seq 0 7`; do
101 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
102 losetup -d /dev/loop${i} 2>/dev/null
103 fi;
104 done
105 echo "ERROR: $*"
106 echo " Check $LOGFILE for errors if applicable"
107 exit 1
108}
109
110entershell() {
111 if [ ! -e $BASEDIR/build/usr/src/lfs/ ]; then
112 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/"
113 fi
114 echo "Entering to a shell inside LFS chroot, go out with exit"
115 chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
116 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
117 VERSION=$VERSION CONFIG_ROOT=$CONFIG_ROOT \
118 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
119 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
120 CCACHE_DIR=/usr/src/ccache \
121 CCACHE_HASHDIR=1 \
122 KVER=$KVER \
123 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
124 KGCC="ccache /usr/bin/gcc" \
125 /tools/bin/bash
126 if [ $? -ne 0 ]; then
127 exiterror "chroot error"
128 else
129 stdumount
130 fi
131}
132
133prepareenv() {
134 ############################################################################
135 # #
136 # Are we running the right shell? #
137 # #
138 ############################################################################
139 if [ ! "$BASH" ]; then
140 exiterror "BASH environment variable is not set. You're probably running the wrong shell."
141 fi
142
143 if [ -z "${BASH_VERSION}" ]; then
144 exiterror "Not running BASH shell."
145 fi
146
147
148 ############################################################################
149 # #
150 # Trap on emergency exit #
151 # #
152 ############################################################################
153 trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGKILL SIGSTOP SIGQUIT
154
155
156 ############################################################################
157 # #
158 # Resetting our nice level #
159 # #
160 ############################################################################
161 echo "`date -u '+%b %e %T'`: Resetting our nice level to $NICE" | tee -a $LOGFILE
162 renice $NICE $$ > /dev/null
163 if [ `nice` != "$NICE" ]; then
164 exiterror "Failed to set correct nice level"
165 fi
166
167 ############################################################################
168 # #
169 # Checking if running as root user #
170 # #
171 ############################################################################
172 echo "`date -u '+%b %e %T'`: Checking if we're running as root user" | tee -a $LOGFILE
173 if [ `id -u` != 0 ]; then
174 exiterror "Not building as root"
175 fi
176
177
178 ############################################################################
179 # #
180 # Checking for necessary temporary space #
181 # #
182 ############################################################################
183 echo "`date -u '+%b %e %T'`: Checking for necessary space on disk $BASE_DEV" | tee -a $LOGFILE
184 BASE_DEV=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $1 }'`
185 BASE_ASPACE=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $4 }'`
186 if (( 2202000 > $BASE_ASPACE )); then
187 BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'`
188 if (( 2202000 - $BASE_USPACE > $BASE_ASPACE )); then
189 exiterror "Not enough temporary space available, need at least 2.1GB on $BASE_DEV"
190 fi
191 fi
192
193 ############################################################################
194 # #
195 # Building Linux From Scratch system #
196 # #
197 ############################################################################
198 echo "`date -u '+%b %e %T'`: Building Linux From Scratch system" | tee -a $LOGFILE
199
200 # Set umask
201 umask 022
202
203 # Set LFS Directory
204 LFS=$BASEDIR/build
205
206 # Check /tools symlink
207 if [ -h /tools ]; then
208 rm -f /tools
209 fi
210 if [ ! -a /tools ]; then
211 ln -s $BASEDIR/build/tools /
212 fi
213 if [ ! -h /tools ]; then
214 exiterror "Could not create /tools symbolic link."
215 fi
216
217 # Setup environment
218 set +h
219 LC_ALL=POSIX
220 export LFS LC_ALL CFLAGS CXXFLAGS
221 unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
222
223 # Make some extra directories
224 mkdir -p $BASEDIR/build/{tools,etc,usr/src} 2>/dev/null
225 mkdir -p $BASEDIR/{cache,ccache} 2>/dev/null
226 mkdir -p $BASEDIR/build/dev/pts $BASEDIR/build/proc $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache}
227
228 # Make all sources and proc available under lfs build
229 mount --bind /dev/pts $BASEDIR/build/dev/pts
230 mount --bind /proc $BASEDIR/build/proc
231 mount --bind $BASEDIR/cache $BASEDIR/build/usr/src/cache
232 mount --bind $BASEDIR/ccache $BASEDIR/build/usr/src/ccache
233 mount --bind $BASEDIR/config $BASEDIR/build/usr/src/config
234 mount --bind $BASEDIR/doc $BASEDIR/build/usr/src/doc
235 mount --bind $BASEDIR/html $BASEDIR/build/usr/src/html
236 mount --bind $BASEDIR/langs $BASEDIR/build/usr/src/langs
237 mount --bind $BASEDIR/lfs $BASEDIR/build/usr/src/lfs
238 mount --bind $BASEDIR/log $BASEDIR/build/usr/src/log
239 mount --bind $BASEDIR/src $BASEDIR/build/usr/src/src
240
241 # Run LFS static binary creation scripts one by one
242 export CCACHE_DIR=$BASEDIR/ccache
243 export CCACHE_HASHDIR=1
244
245 # Remove pre-install list of installed files in case user erase some files before rebuild
246 rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null
247}
248
249
250############################################################################
251# #
252# Necessary shell functions #
253# #
254############################################################################
255lfsmake1() {
256 if [ -f $BASEDIR/lfs/$1 ]; then
257 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
258 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1
259 if [ $? -ne 0 ]; then
260 exiterror "Download error in $1"
261 fi
262 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
263 if [ $? -ne 0 ]; then
264 exiterror "md5sum error in $1, check file in cache or signature"
265 fi
266 cd $BASEDIR/lfs && make -f $* BUILDTARGET=$BUILDTARGET \
267 MACHINE=$MACHINE \
268 LFS_BASEDIR=$BASEDIR \
269 ROOT=$LFS \
270 KVER=$KVER \
271 install >> $LOGFILE 2>&1
272 if [ $? -ne 0 ]; then
273 exiterror "Building $*";
274 fi
275 else
276 exiterror "No such file or directory: $BASEDIR/$1"
277 fi
278 return 0
279}
280
281lfsmake2() {
282 if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
283 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
284 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1
285 if [ $? -ne 0 ]; then
286 exiterror "Download error in $1"
287 fi
288 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
289 if [ $? -ne 0 ]; then
290 exiterror "md5sum error in $1, check file in cache or signature"
291 fi
292 chroot $LFS /tools/bin/env -i HOME=/root \
293 TERM=$TERM PS1='\u:\w\$ ' \
294 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
295 VERSION=$VERSION \
296 CONFIG_ROOT=$CONFIG_ROOT \
297 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
298 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
299 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
300 KVER=$KVER \
301 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
302 /tools/bin/bash -x -c "cd /usr/src/lfs && \
303 make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
304 if [ $? -ne 0 ]; then
305 exiterror "Building $*"
306 fi
307 else
308 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
309 fi
310 return 0
311}
312
313ipcopmake() {
314 if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
315 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
316 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1
317 if [ $? -ne 0 ]; then
318 exiterror "Download error in $1"
319 fi
320 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
321 if [ $? -ne 0 ]; then
322 exiterror "md5sum error in $1, check file in cache or signature"
323 fi
324 chroot $LFS /tools/bin/env -i HOME=/root \
325 TERM=$TERM PS1='\u:\w\$ ' \
326 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
327 VERSION=$VERSION \
328 CONFIG_ROOT=$CONFIG_ROOT \
329 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
330 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
331 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
332 KVER=$KVER \
333 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
334 /bin/bash -x -c "cd /usr/src/lfs && \
335 make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
336 if [ $? -ne 0 ]; then
337 exiterror "Building $*"
338 fi
339 else
340 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
341 fi
342 return 0
343}
344
e7164bb4
MT
345ipfiredist() {
346 if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
913668ba 347# if [ ! `ls -w1 $BASEDIR/packages/*.ipfire | grep $1` ]; then
e7164bb4 348 echo "`date -u '+%b %e %T'`: Packaging $1" | tee -a $LOGFILE
e7164bb4
MT
349 chroot $LFS /tools/bin/env -i HOME=/root \
350 TERM=$TERM PS1='\u:\w\$ ' \
351 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
352 VERSION=$VERSION \
353 CONFIG_ROOT=$CONFIG_ROOT \
354 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
355 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
356 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
357 KVER=$KVER \
358 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
359 /bin/bash -x -c "cd /usr/src/lfs && \
360 make -f $1 LFS_BASEDIR=/usr/src dist" >>$LOGFILE 2>&1
361 if [ $? -ne 0 ]; then
362 exiterror "Packaging $1"
363 fi
a68fedca
MT
364# else
365# echo "`date -u '+%b %e %T'`: Packaging: The package $1 already exists"
366# fi
e7164bb4
MT
367 else
368 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
369 fi
e7164bb4
MT
370 return 0
371}
372
df5e82b3
MT
373
374installmake() {
375 if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
376 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
377 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1
378 if [ $? -ne 0 ]; then
379 exiterror "Download error in $1"
380 fi
381 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
382 if [ $? -ne 0 ]; then
383 exiterror "md5sum error in $1, check file in cache or signature"
384 fi
385 chroot $LFS /tools/bin/env -i HOME=/root \
386 TERM=$TERM PS1='\u:\w\$ ' \
387 PATH=/usr/local/bin:/opt/$MACHINE-uClibc/usr/bin:/bin:/usr/bin:/sbin:/usr/sbin \
388 VERSION=$VERSION \
389 CONFIG_ROOT=$CONFIG_ROOT \
390 LFS_PASS="install" \
391 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
392 CFLAGS="-Os" CXXFLAGS="-Os" \
393 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
394 KVER=$KVER \
395 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
396 /bin/bash -x -c "cd /usr/src/lfs && \
397 make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
398 if [ $? -ne 0 ]; then
399 exiterror "Building $*"
400 fi
401 else
402 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
403 fi
404 return 0
405}
406
407buildtoolchain() {
408 LOGFILE="$BASEDIR/log/_build.toolchain.log"
409 export LOGFILE
410 echo -ne "`date -u '+%b %e %T'`: Stage1 toolchain build \n" | tee -a $LOGFILE
411 # Build sed now, as we use some extensions
412 ORG_PATH=$PATH
413 NATIVEGCC=`gcc --version | grep GCC | awk {'print $3'}`
414 export NATIVEGCC GCCmajor=${NATIVEGCC:0:1} GCCminor=${NATIVEGCC:2:1} GCCrelease=${NATIVEGCC:4:1}
415 lfsmake1 ccache
416 lfsmake1 sed LFS_PASS=1
417 lfsmake1 m4 LFS_PASS=1
418 lfsmake1 bison LFS_PASS=1
419 lfsmake1 flex LFS_PASS=1
420 lfsmake1 binutils LFS_PASS=1
421 lfsmake1 gcc LFS_PASS=1
422 export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH
423
424 lfsmake1 linux
425 lfsmake1 tcl
426 lfsmake1 expect
427 lfsmake1 glibc
428 lfsmake1 dejagnu
429 lfsmake1 gcc LFS_PASS=2
430 lfsmake1 binutils LFS_PASS=2
431 lfsmake1 gawk
432 lfsmake1 coreutils
433 lfsmake1 bzip2
434 lfsmake1 gzip
435 lfsmake1 diffutils
436 lfsmake1 findutils
437 lfsmake1 make
438 lfsmake1 grep
439 lfsmake1 sed LFS_PASS=2
440 lfsmake1 m4 LFS_PASS=2
441 lfsmake1 bison LFS_PASS=2
442 lfsmake1 flex LFS_PASS=2
443 lfsmake1 gettext
444 lfsmake1 ncurses
445 lfsmake1 patch
446 lfsmake1 tar
447 lfsmake1 texinfo
448 lfsmake1 bash
449 lfsmake1 util-linux
450 lfsmake1 perl
451 export PATH=$ORG_PATH
452}
453
454buildbase() {
455 LOGFILE="$BASEDIR/log/_build.base.log"
456 export LOGFILE
457 echo -ne "`date -u '+%b %e %T'`: Stage2 linux base build \n" | tee -a $LOGFILE
458 # Run LFS dynamic binary creation scripts one by one
459 lfsmake2 stage2
460 lfsmake2 makedev
461 lfsmake2 linux
462 lfsmake2 man-pages
463 lfsmake2 glibc
464 lfsmake2 binutils
465 lfsmake2 gcc
466 lfsmake2 coreutils
467 lfsmake2 zlib
468 lfsmake2 mktemp
469 lfsmake2 iana-etc
470 lfsmake2 findutils
471 lfsmake2 gawk
472 lfsmake2 ncurses
473 lfsmake2 vim
474 lfsmake2 m4
475 lfsmake2 bison
476 lfsmake2 less
477 lfsmake2 groff
478 lfsmake2 sed
479 lfsmake2 flex
480 lfsmake2 gettext
481 lfsmake2 net-tools
482 lfsmake2 inetutils
483 lfsmake2 perl
484 lfsmake2 texinfo
485 lfsmake2 autoconf
486 lfsmake2 automake
487 lfsmake2 bash
488 lfsmake2 file
489 lfsmake2 libtool
490 lfsmake2 bzip2
491 lfsmake2 diffutils
492 lfsmake2 ed
493 lfsmake2 kbd
494 lfsmake2 e2fsprogs
495 lfsmake2 grep
496 if [ 'i386' = $MACHINE ]; then
497 lfsmake2 grub
498 elif [ 'alpha' = $MACHINE ]; then
499 lfsmake2 aboot
500 fi
501 lfsmake2 gzip
502 lfsmake2 man
503 lfsmake2 make
504 lfsmake2 modutils
505 lfsmake2 patch
506 lfsmake2 procinfo
507 lfsmake2 procps
508 lfsmake2 psmisc
509 lfsmake2 shadow
510 lfsmake2 sysklogd
511 lfsmake2 sysvinit
512 lfsmake2 tar
513 lfsmake2 util-linux
514}
515
516buildipcop() {
907cd036
MT
517 # Run IPFire make scripts one by one
518 LOGFILE="$BASEDIR/log/_build.ipfire.log"
df5e82b3
MT
519 export LOGFILE
520 echo -ne "`date -u '+%b %e %T'`: Stage3 $NAME build \n" | tee -a $LOGFILE
521
522 # Build these first as some of the kernel packages below rely on
523 # these for some of their client program functionality
524 ipcopmake configroot
525 ipcopmake dhcp
526 ipcopmake dhcpcd
527 ipcopmake libusb
528 ipcopmake libpcap
529 ipcopmake linux-atm
530 ipcopmake ppp
531 ipcopmake rp-pppoe
532 ipcopmake unzip
533 # Do SMP now
534 if [ 'i386' = $MACHINE ]; then
535 # abuse the SMP flag, and make an minimal installer kernel first
536 # so that the boot floppy always works.....
3e45cc09
MT
537 ipcopmake linux LFS_PASS=ipfire SMP=installer
538 ipcopmake linux LFS_PASS=ipfire SMP=1
df5e82b3
MT
539 ipcopmake 3cp4218 SMP=1
540 ipcopmake amedyn SMP=1
541 ipcopmake cxacru SMP=1
542 ipcopmake eagle SMP=1
543
544 # These are here because they have i386 only binary libraries
545 # included in the package.
546 ipcopmake cnx_pci SMP=1
547 ipcopmake fcdsl SMP=1
548 ipcopmake fcdsl2 SMP=1
549 ipcopmake fcdslsl SMP=1
550 ipcopmake fcdslusb SMP=1
551 ipcopmake fcdslslusb SMP=1
6ca65b88 552 ipcopmake fcpci SMP=1
ff7df9d4 553 ipcopmake fcclassic SMP=1
df5e82b3
MT
554 ipcopmake pulsar SMP=1
555 ipcopmake unicorn SMP=1
1fde937c 556 ipcopmake promise-sata-300-tx SMP=1
df5e82b3
MT
557 fi
558
3e45cc09 559 ipcopmake linux LFS_PASS=ipfire
df5e82b3
MT
560 ipcopmake 3cp4218
561 ipcopmake amedyn
562 ipcopmake cxacru
563 ipcopmake eciadsl
564 ipcopmake eagle
565 ipcopmake speedtouch
566 if [ 'i386' = $MACHINE ]; then
567 # These are here because they have i386 only binary libraries
568 # included in the package.
569 ipcopmake cnx_pci
570 ipcopmake fcdsl
571 ipcopmake fcdsl2
572 ipcopmake fcdslsl
573 ipcopmake fcdslusb
6ca65b88 574 ipcopmake fcdslslusb
ff7df9d4
MT
575 ipcopmake fcpci
576 ipcopmake fcclassic
1fde937c
MT
577 ipcopmake pulsar
578 ipcopmake unicorn
579 ipcopmake promise-sata-300-tx
df5e82b3
MT
580 fi
581
582 ipcopmake pcmcia-cs
583 ipcopmake expat
584 ipcopmake gdbm
585 ipcopmake gmp
586 ipcopmake openssl
587 ipcopmake python
588 ipcopmake libnet
589 ipcopmake libpng
2ae94d2d
MT
590 ipcopmake libtiff
591 ipcopmake libjpeg
592 ipcopmake lcms
593 ipcopmake libmng
594 ipcopmake freetype
df5e82b3
MT
595 ipcopmake gd
596 ipcopmake popt
597 ipcopmake slang
598 ipcopmake newt
599 ipcopmake libcap
600 ipcopmake pciutils
601 ipcopmake pcre
7b6b8153 602 ipcopmake readline
048123a8 603 ipcopmake libxml2
f4509bca
MT
604 ipcopmake berkeley
605 ipcopmake BerkeleyDB ## The Perl module
606 ipcopmake mysql
7b6b8153
MT
607 ipcopmake saslauthd PASS=1
608 ipcopmake openldap
7b6b8153
MT
609 ipcopmake apache2
610 ipcopmake php
df5e82b3
MT
611 ipcopmake arping
612 ipcopmake beep
613 ipcopmake bind
614 ipcopmake capi4k-utils
615 ipcopmake cdrtools
616 ipcopmake dnsmasq
617 ipcopmake dosfstools
618 ipcopmake ethtool
619 ipcopmake ez-ipupdate
620 ipcopmake fcron
621 ipcopmake perl-GD
622 ipcopmake gnupg
623 ipcopmake hdparm
624 ipcopmake ibod
625 ipcopmake initscripts
626 ipcopmake iptables
627 ipcopmake ipac-ng
628 ipcopmake ipaddr
629 ipcopmake iproute2
630 ipcopmake iptstate
631 ipcopmake iputils
78331e30 632 ipcopmake l7-protocols
df5e82b3
MT
633 ipcopmake isapnptools
634 ipcopmake isdn4k-utils
635 ipcopmake kudzu
636 ipcopmake logrotate
637 ipcopmake logwatch
638 ipcopmake mingetty
639 ipcopmake misc-progs
640 ipcopmake mtools
641 ipcopmake nano
642 ipcopmake nash
643 ipcopmake nasm
644 ipcopmake URI
645 ipcopmake HTML-Tagset
646 ipcopmake HTML-Parser
647 ipcopmake Compress-Zlib
648 ipcopmake Digest
649 ipcopmake Digest-SHA1
650 ipcopmake Digest-HMAC
651 ipcopmake libwww-perl
652 ipcopmake Net-DNS
653 ipcopmake Net-IPv4Addr
654 ipcopmake Net_SSLeay
4f8b6695
MT
655 ipcopmake IO-Stringy
656 ipcopmake Unix-Syslog
657 ipcopmake Mail-Tools
658 ipcopmake MIME-Tools
659 ipcopmake Net-Server
660 ipcopmake Convert-TNEF
661 ipcopmake Convert-UUlib
662 ipcopmake Archive-Tar
663 ipcopmake Archive-Zip
f28d0ddc 664 ipcopmake Text-Tabs+Wrap
90350ff3 665 ipcopmake Locale-Country
dace10b5 666 ipcopmake GeoIP
df8c7810 667 ipcopmake fwhits
df5e82b3
MT
668 ipcopmake noip_updater
669 ipcopmake ntp
670 ipcopmake oinkmaster
671 ipcopmake openssh
672 ipcopmake openswan
673 ipcopmake pptpclient
674 ipcopmake rrdtool
675 ipcopmake setserial
676 ipcopmake setup
677 ipcopmake snort
df5e82b3
MT
678 ipcopmake squid
679 ipcopmake squid-graph
60cbd6e7 680 ipcopmake squidguard
df5e82b3
MT
681 ipcopmake tcpdump
682 ipcopmake traceroute
683 ipcopmake vlan
0145f271 684 ipcopmake wireless
df5e82b3
MT
685 ipcopmake libsafe
686 ipcopmake 3c5x9setup
b34fd95d 687 ipcopmake pakfire
6ef0bff8 688 ipcopmake startscripts
6ef0bff8 689 ipcopmake java
a7b1824c 690 ipcopmake bootsplash
5e69ef1a
MT
691 ipcopmake spandsp
692 ipcopmake lzo
6ef0bff8 693 ipcopmake openvpn
f8e5510c
MT
694 ipcopmake pkg-config
695 ipcopmake glib
5e69ef1a
MT
696 ipcopmake pam
697 ipcopmake pammysql
371d9df0 698 ipcopmake saslauthd PASS=2
a31b2bc4 699 ipcopmake xinetd
316160b0
MT
700 ipcopmake ghostscript
701 ipcopmake cups
98d413ac 702 ipcopmake samba
5e69ef1a
MT
703 ipcopmake sudo
704 ipcopmake mc
1fe6c87b 705 ipcopmake wget
60cbd6e7 706 ipcopmake wput
1fe6c87b 707 ipcopmake bridge-utils
3e45cc09
MT
708 ipcopmake screen
709 ipcopmake hddtemp
1fde937c 710 ipcopmake smartmontools
3e45cc09
MT
711 ipcopmake htop
712 ipcopmake lynx
b34fd95d 713 echo -ne "`date -u '+%b %e %T'`: Building ### Mailserver ### \n" | tee -a $LOGFILE
94025eea 714 ipcopmake postfix
6c666a3b 715 ipcopmake procmail
93dc5548
MT
716 ipcopmake fetchmail
717 ipcopmake cyrusimap
f1baee3e 718 ipcopmake webcyradm
33a31f1a 719 ipcopmake mailx
f9315063
MT
720 ipcopmake clamav
721 ipcopmake razor
4f8b6695 722 ipcopmake spamassassin
f28d0ddc 723# ipcopmake amavisd
b34fd95d 724 echo -ne "`date -u '+%b %e %T'`: Building ### VoIP-Server ### \n" | tee -a $LOGFILE
94025eea 725 ipcopmake stund
b684b13b
MT
726 ipcopmake zaptel
727 ipcopmake libpri
728 ipcopmake bristuff
40a4ea4c 729 ipcopmake asterisk
894c6feb 730 ipcopmake mpg123
d1b6aa72 731 echo -ne "`date -u '+%b %e %T'`: Building ### Multimedia-Server ### \n" | tee -a $LOGFILE
8a7ededb 732 ipcopmake libmad
5ac2da9f
MT
733 ipcopmake libogg
734 ipcopmake libvorbis
316160b0 735 ipcopmake lame
d1b6aa72
MT
736 ipcopmake xvid
737 ipcopmake mpeg2dec
738 ipcopmake ffmpeg
5ac2da9f 739 ipcopmake sox
316160b0 740 ipcopmake gnump3d
d1b6aa72 741 ipcopmake videolan
6ef0bff8
MT
742 echo -ne "`date -u '+%b %e %T'`: Building ### P2P-Clients ### \n" | tee -a $LOGFILE
743 ipcopmake applejuice
02dc0a76
MT
744 ipcopmake ocaml
745 ipcopmake mldonkey
3e45cc09
MT
746 echo -ne "`date -u '+%b %e %T'`: Building ### Net-Tools ### \n" | tee -a $LOGFILE
747 ipcopmake ntop
f1baee3e 748 ipcopmake rsync
3b9f6349 749 ipcopmake tcpwrapper
769a61c5 750 ipcopmake portmap
894c6feb 751 ipcopmake nfs
907cd036 752 ipcopmake nmap
52345790 753 ipcopmake mbmon
3e45cc09 754 ipcopmake iftop
ef05c8bb 755 ipcopmake ncftp
ca35618d 756 ipcopmake cftp
60cbd6e7 757 ipcopmake etherwake
33a31f1a 758 ipcopmake ethereal
712d859c 759 ipcopmake tftp-hpa
f1baee3e 760 ipcopmake subversion
7a98bae5 761 ipcopmake iptraf
2ae94d2d 762 ipcopmake nagios
0145f271 763 ipcopmake yasuc
f1baee3e 764 ipcopmake apache2 PASS=CONFIG
df5e82b3
MT
765}
766
767buildinstaller() {
768 # Run installer scripts one by one
769 LOGFILE="$BASEDIR/log/_build.installer.log"
770 export LOGFILE
771 echo -ne "`date -u '+%b %e %T'`: Stage4 installer build \n" | tee -a $LOGFILE
772 if [ 'i386' = $MACHINE ]; then
773 ipcopmake syslinux
774 ipcopmake as86
775 ipcopmake mbr
776 ipcopmake uClibc
777 fi
778 installmake busybox
779 installmake sysvinit
780 installmake e2fsprogs
781 installmake misc-progs
782 installmake slang
783 installmake util-linux
784 installmake newt
785 installmake pciutils
786 installmake pcmcia-cs
787 installmake kbd
788 installmake installer
789 installmake scsi.img
790 installmake driver.img
791 installmake initrd
792 installmake boot.img
793}
794
795buildpackages() {
796 LOGFILE="$BASEDIR/log/_build.packages.log"
797 export LOGFILE
798 echo "... see detailed log in _build.*.log files" >> $LOGFILE
799 echo -ne "`date -u '+%b %e %T'`: Stage5 packages build \n" | tee -a $LOGFILE
800 # Strip files
801 echo "`date -u '+%b %e %T'`: Stripping files" | tee -a $LOGFILE
802 find $LFS/lib $LFS/usr/lib $LFS/usr/share/rrdtool-* $LFS/install ! -type l \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
803 ! -name 'libc.so' ! -name 'libpthread.so' ! -name 'libcrypto.so.0.9.7.sha1' \
90350ff3 804 -exec $LFS/tools/bin/strip --strip-all {} \; >> $LOGFILE 2>&1
df5e82b3
MT
805 # add -ls before -exec if you want to verify what files are stripped
806
807 find $LFS/{,s}bin $LFS/usr/{,s}bin $LFS/usr/local/{,s}bin ! -type l \
808 -exec file {} \; | grep " ELF " | cut -f1 -d ':' | xargs $LFS/tools/bin/strip --strip-all >> $LOGFILE 2>&1
809 # there add -v to strip to verify
810
811 if [ 'i386' = $MACHINE ]; then
812 # Create fcdsl packages
813 echo "`date -u '+%b %e %T'`: Building fcdsl tgz" | tee -a $LOGFILE
814 cp $LFS/install/images/fcdsl/license.txt $LFS >> $LOGFILE 2>&1
815 touch $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}
816 cd $LFS && tar cvfz $LFS/install/images/$SNAME-fcdsl-$VERSION.$MACHINE.tgz \
817 lib/modules/$KVER/misc/fcdsl*.o.gz \
818 lib/modules/$KVER-smp/misc/fcdsl*.o.gz \
819 usr/lib/isdn/{fds?base.bin,fd?ubase.frm} \
820 etc/fcdsl/fcdsl*.conf \
821 etc/drdsl/{drdsl,drdsl.ini} \
822 license.txt \
823 var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} >> $LOGFILE 2>&1
824 rm -f $LFS/license.txt >> $LOGFILE 2>&1
825 cd $BASEDIR
826 fi
df5e82b3
MT
827
828 # Generating list of packages used
829 echo "`date -u '+%b %e %T'`: Generating packages list from logs" | tee -a $LOGFILE
830 rm -f $BASEDIR/doc/packages-list
831 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
832 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
7471f6ab 833 echo "* `basename $i`" >>$BASEDIR/doc/packages-list
df5e82b3
MT
834 fi
835 done
7471f6ab
MT
836 echo "== List of softwares used to build $NAME Version: $VERSION ==" > $BASEDIR/doc/packages-list.txt
837 grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipfire$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$\|.tgz$' \
df5e82b3
MT
838 $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt
839 rm -f $BASEDIR/doc/packages-list
c9673262 840 # packages-list.txt is ready to be displayed for wiki page
df5e82b3
MT
841
842 # Create ISO for CDRom and USB-superfloppy
c3defe9b 843 ipcopmake cdrom
e67a57fe 844 rm -f $LFS/install/images/*usb*
c3defe9b 845 cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1
c9673262 846
e67a57fe
MT
847 ipfirepackages
848
849 # Cleanup
850 stdumount
851 rm -rf $BASEDIR/build/tmp/*
852
853 # Generating total list of files
854 echo "`date -u '+%b %e %T'`: Generating files list from logs" | tee -a $LOGFILE
855 rm -f $BASEDIR/log/FILES
856 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
857 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
858 echo "##" >>$BASEDIR/log/FILES
859 echo "## `basename $i`" >>$BASEDIR/log/FILES
860 echo "##" >>$BASEDIR/log/FILES
861 cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES
862 fi
863 done
913668ba 864 cd $BASEDIR/packages; ls -w1 *.ipfire | awk -F ".ipfire" '{ print $1 }' > $BASEDIR/packages/packages_list.txt
5e773594 865 echo -n "###EOF###" >> $BASEDIR/packages/packages_list.txt
e67a57fe
MT
866
867 cd $PWD
868
869}
870
871ipfirepackages() {
013a23e2
MT
872 if [ -d "$BASEDIR/packages" ]; then
873 for i in `ls $BASEDIR/packages`; do
874 touch $BASEDIR/build/install/packages/$i.empty
875 done
876 fi
f1baee3e 877# ipfiredist amavisd
78331e30 878 ipfiredist applejuice
5ac2da9f 879 ipfiredist asterisk
c7acba4a 880 ipfiredist clamav
483f59cd 881 ipfiredist cups
78331e30
MT
882 ipfiredist cyrusimap
883 ipfiredist fetchmail
d1b6aa72 884 ipfiredist ffmpeg
78331e30 885 ipfiredist gnump3d
7a98bae5 886 ipfiredist iptraf
0d0521b6 887 ipfiredist java
78331e30 888 ipfiredist lame
d1b6aa72 889 ipfiredist libmad
ae179f6e 890 ipfiredist libogg
78331e30 891 ipfiredist libtiff
ae179f6e 892 ipfiredist libvorbis
f0ca8c34 893 ipfiredist mailx
3ab910dd 894 ipfiredist mldonkey
d1b6aa72 895 ipfiredist mpeg2dec
2ae94d2d 896 ipfiredist nagios
f0ca8c34
MT
897 ipfiredist nfs
898 ipfiredist nmap
3e45cc09 899 ipfiredist ntop
27ac55bf 900 ipfiredist portmap
78331e30 901 ipfiredist postfix
371d9df0 902 ipfiredist procmail
90350ff3 903 ipfiredist samba
ae179f6e 904 ipfiredist sox
f0ca8c34 905 ipfiredist spamassassin
7a98bae5 906 ipfiredist subversion
d1b6aa72 907 ipfiredist videolan
f1baee3e 908 ipfiredist webcyradm
d1b6aa72 909 ipfiredist xvid
0145f271 910 ipfiredist yasuc
78331e30 911 test -d $BASEDIR/packages || mkdir $BASEDIR/packages
d535503d 912 mv -f $LFS/install/packages/*.{ipfire,md5} $BASEDIR/packages >> $LOGFILE 2>&1
483f59cd 913 rm -rf $BASEDIR/build/install/packages/*
df5e82b3
MT
914}
915
cc0e56be
MT
916update_logs() {
917 tar cfz log/ipfire-logs-`date +'%Y-%m-%d-%H:%M'`.tgz log/_build.*
918 rm -f log/_build.*
919}
920
df5e82b3
MT
921# See what we're supposed to do
922case "$1" in
923build)
924 BUILDMACHINE=`uname -m`
712d859c 925 PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
df5e82b3
MT
926 #only restore on a clean disk
927 if [ ! -f log/perl-*-tools ]; then
928 if [ ! -n "$PACKAGE" ]; then
929 echo "`date -u '+%b %e %T'`: Full toolchain compilation" | tee -a $LOGFILE
930 prepareenv
931 buildtoolchain
932 else
933 PACKAGENAME=${PACKAGE%.tar.gz}
934 echo "`date -u '+%b %e %T'`: Restore from $PACKAGE" | tee -a $LOGFILE
935 if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
936 tar zxf $PACKAGE
937 prepareenv
938 else
939 exiterror "$PACKAGENAME md5 did not match, check downloaded package"
940 fi
941 fi
942 else
943 echo "`date -u '+%b %e %T'`: Using installed toolchain" | tee -a $LOGFILE
944 prepareenv
945 fi
5cfe86e6 946
df5e82b3
MT
947 buildbase
948 buildipcop
5cfe86e6
HS
949
950 # Setzen des IPFire Builds
8af06406 951 if [ "$FIREBUILD" ]; then
e57bc1fd 952 echo "$FIREBUILD" > $BASEDIR/build/var/ipfire/firebuild
5cfe86e6 953 else
e57bc1fd 954 echo "_(OvO)_" > $BASEDIR/build/var/ipfire/firebuild
5cfe86e6
HS
955 fi
956
df5e82b3
MT
957 buildinstaller
958 buildpackages
959 ;;
960shell)
961 # enter a shell inside LFS chroot
962 # may be used to changed kernel settings
963 prepareenv
964 entershell
965 ;;
966changelog)
d1dd6669 967 echo -n "Loading new Changelog from SVN: "
f9315063 968 svn log http://svn.ipfire.eu/svn/ipfire > doc/ChangeLog
d1dd6669 969 echo "Finished!"
df5e82b3
MT
970 ;;
971check)
972 echo "Checking sources files availability on the web"
973 if [ ! -d $DIR_CHK ]; then
974 mkdir -p $DIR_CHK
975 fi
976 FINISHED=0
977 cd $BASEDIR/lfs
978 for c in `seq $MAX_RETRIES`; do
979 if (( FINISHED==1 )); then
980 break
981 fi
982 FINISHED=1
983 cd $BASEDIR/lfs
984 for i in *; do
985 if [ -f "$i" -a "$i" != "Config" ]; then
986 make -s -f $i MACHINE=$MACHINE LFS_BASEDIR=$BASEDIR ROOT=$BASEDIR/build \
987 MESSAGE="$i\t ($c/$MAX_RETRIES)" check
988 if [ $? -ne 0 ]; then
989 echo "Check : wget error in lfs/$i"
990 FINISHED=0
991 fi
992 fi
993 done
994 done
995 cd -
996 ;;
997checkclean)
998 echo "Erasing sources files availability tags"
999 rm -rf $DIR_CHK/*
1000 ;;
1001clean)
1002 for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
1003 $LOSETUP -d $i 2>/dev/null
1004 done
1005 for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
1006 umount $i
1007 done
1008 stdumount
1009 for i in `seq 0 7`; do
1010 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
1011 umount /dev/loop${i} 2>/dev/null;
1012 losetup -d /dev/loop${i} 2>/dev/null;
1013 fi;
1014 done
1015 rm -rf $BASEDIR/build
1016 rm -rf $BASEDIR/cdrom
f9315063 1017 rm -rf $BASEDIR/packages
df5e82b3 1018 rm -rf $BASEDIR/log
df5e82b3
MT
1019 if [ -h /tools ]; then
1020 rm -f /tools
1021 fi
1022 ;;
f8e5510c 1023newpak)
a9b17001
MT
1024 # create structure for a new package
1025 echo -e "Name of the new package: $2"
1026 if [ ! -f "lfs/$2" ]; then
1027 echo "`date -u '+%b %e %T'`: Creating directory src/paks/$2"
1028 mkdir -p src/paks/$2
1029 cd src/paks/$2
f8e5510c 1030 echo "`date -u '+%b %e %T'`: Creating files"
a9b17001
MT
1031 cp $BASEDIR/lfs/postfix $BASEDIR/lfs/$2
1032
f8e5510c 1033 touch ROOTFILES
f8e5510c 1034 touch {,un}install.sh
a9b17001 1035 ## install.sh
f8e5510c
MT
1036 echo '#!/bin/bash' > install.sh
1037 echo '#' >> install.sh
1038 echo '#################################################################' >> install.sh
1039 echo '# #' >> install.sh
1040 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> install.sh
1041 echo '# #' >> install.sh
1042 echo '#################################################################' >> install.sh
1043 echo '#' >> install.sh
1044 echo '# Extract the files' >> install.sh
1045 echo 'tar xfz files.tgz -C /' >> install.sh
a9b17001
MT
1046 echo 'cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2' >> install.sh
1047 ## uninstall.sh
f8e5510c
MT
1048 echo '#!/bin/bash' > uninstall.sh
1049 echo '#################################################################' >> uninstall.sh
1050 echo '# #' >> uninstall.sh
1051 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> uninstall.sh
1052 echo '# #' >> uninstall.sh
1053 echo '#################################################################' >> uninstall.sh
1054 echo '#' >> uninstall.sh
1055 echo '# Delete the files' >> uninstall.sh
1056 echo '## Befehl fehlt noch' >> uninstall.sh
a9b17001 1057 echo 'rm -f /opt/pakfire/installed/ROOTFILES.$2' >> uninstall.sh
f8e5510c 1058 echo "`date -u '+%b %e %T'`: Adding files to SVN"
a9b17001
MT
1059 cd - && svn add lfs/$2 && svn add src/paks/$2
1060
1061 echo -n "Do you want to remove the folders? [y/n]"
1062 read REM
1063 if [ "$REM" == "y" ]; then
1064 echo "Removing the folders..."
1065 svn del src/paks/$2 --force
1066 else
1067 echo "Folders are kept."
1068 fi
df5e82b3 1069 else
a9b17001 1070 echo "$2 already exists"
df5e82b3 1071 fi
df5e82b3
MT
1072 exit 0
1073 ;;
1074prefetch)
1075 if [ ! -d $BASEDIR/cache ]; then
1076 mkdir $BASEDIR/cache
1077 fi
1078 mkdir -p $BASEDIR/log
1079 echo "`date -u '+%b %e %T'`:Preload all source files" | tee -a $LOGFILE
1080 FINISHED=0
1081 cd $BASEDIR/lfs
1082 for c in `seq $MAX_RETRIES`; do
1083 if (( FINISHED==1 )); then
1084 break
1085 fi
1086 FINISHED=1
1087 cd $BASEDIR/lfs
1088 for i in *; do
1089 if [ -f "$i" -a "$i" != "Config" ]; then
1090 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
1091 if [ $? -ne 0 ]; then
1092 echo "Prefetch : wget error in lfs/$i"
1093 FINISHED=0
1094 else
1095 if [ $c -eq 1 ]; then
1096 echo "Prefetch : lfs/$i files loaded"
1097 fi
1098 fi
1099 fi
1100 done
1101 done
1102 echo "Prefetch : verifying md5sum"
1103 ERROR=0
1104 for i in *; do
1105 if [ -f "$i" -a "$i" != "Config" ]; then
1106 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
1107 if [ $? -ne 0 ]; then
1108 echo "md5 difference in lfs/$i"
1109 ERROR=1
1110 fi
1111 fi
1112 done
1113 if [ $ERROR -eq 0 ]; then
1114 echo "Prefetch : all files md5sum match"
1115 fi
1116 cd -
1117 ;;
df5e82b3
MT
1118toolchain)
1119 prepareenv
1120 buildtoolchain
1121 BUILDMACHINE=`uname -m`
1122 echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
712d859c
MT
1123 test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains
1124 cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
df5e82b3
MT
1125 build/{bin,etc,usr/bin,usr/local} \
1126 build/tools/{bin,etc,*-linux-gnu,include,lib,libexec,sbin,share,var} \
1127 log >> $LOGFILE
712d859c
MT
1128 md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
1129 > cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5
df5e82b3
MT
1130 stdumount
1131 ;;
1132gettoolchain)
1133 BUILDMACHINE=`uname -m`
1134 # arbitrary name to be updated in case of new toolchain package upload
c6cb9d25 1135 PACKAGE=$SNAME-$VERSION-toolchain-$BUILDMACHINE
712d859c
MT
1136 if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then
1137 URL_IPFIRE=`grep URL_IPFIRE lfs/Config | awk '{ print $3 }'`
1138 test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains
1139 echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
1140 cd $BASEDIR/cache/toolchains
1141 wget $URL_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5 >& /dev/null
1142 if [ $? -ne 0 ]; then
1143 echo "`date -u '+%b %e %T'`: error downloading toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE
40a4ea4c 1144 else
712d859c
MT
1145 if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
1146 echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
1147 else
1148 exiterror "$PACKAGE.md5 did not match, check downloaded package"
1149 fi
40a4ea4c 1150 fi
712d859c
MT
1151 else
1152 echo "Toolchain is already downloaded. Exiting..."
df5e82b3
MT
1153 fi
1154 ;;
ce56e927
MT
1155sources-iso)
1156 prepareenv
1157 echo "`date -u '+%b %e %T'`: Build sources iso for $MACHINE" | tee -a $LOGFILE
1158 chroot $LFS /tools/bin/env -i HOME=/root \
1159 TERM=$TERM PS1='\u:\w\$ ' \
1160 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
1161 VERSION=$VERSION NAME="$NAME" SNAME="$SNAME" MACHINE=$MACHINE \
1162 /bin/bash -x -c "cd /usr/src/lfs && make -f sources-iso LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
1163 mv $LFS/install/images/ipfire-* $BASEDIR >> $LOGFILE 2>&1
1164 stdumount
1165 ;;
c6cb9d25
MT
1166svn)
1167 case "$2" in
1168 update|up)
cc0e56be 1169 # clear
028698e8 1170 echo "Loading the latest source files..."
7471f6ab
MT
1171 if [ $3 ]; then
1172 svn update -r $3 | tee -a $PWD/log/_build.svn.update.log
1173 else
1174 svn update | tee -a $PWD/log/_build.svn.update.log
1175 fi
c6cb9d25 1176 if [ $? -eq 0 ]; then
028698e8 1177 echo "Finished!"
c6cb9d25 1178 else
028698e8 1179 echo "Failure!"
c6cb9d25
MT
1180 exit 1
1181 fi
028698e8 1182 echo -n "Writing the svn-info to a file..."
c6cb9d25
MT
1183 svn info > $PWD/svn_status
1184 if [ "$?" -eq "0" ]; then
028698e8 1185 echo ".Finished!"
c6cb9d25 1186 else
028698e8 1187 echo ".Failure!"
c6cb9d25
MT
1188 exit 1
1189 fi
712d859c 1190 chmod 755 $0
cc0e56be 1191 exit 0
c6cb9d25
MT
1192 ;;
1193 commit|ci)
1194 clear
d79b46cb 1195 if [ -e /sbin/yast ]; then
028698e8
MT
1196 if [ "`echo $SVN_REVISION | cut -c 3`" -eq "0" ]; then
1197 $0 changelog
1198 fi
d79b46cb
MT
1199 fi
1200 echo "Upload the changed files..."
c6cb9d25 1201 sleep 1
d79b46cb
MT
1202 IPFIRE_SVN_MESSAGE=/tmp/ipfire-svn-co-message.txt
1203 rm -f $IPFIRE_SVN_MESSAGE
1204 mcedit $IPFIRE_SVN_MESSAGE
1205 svn commit -F $IPFIRE_SVN_MESSAGE
1206 rm -f $IPFIRE_SVN_MESSAGE
c6cb9d25
MT
1207 $0 svn up
1208 ;;
1209 dist)
7471f6ab
MT
1210 if [ $3 ]; then
1211 SVN_REVISION=$3
1212 fi
1213 if [ -f ipfire-source-r$SVN_REVISION.tar.gz ]; then
1214 echo -ne "REV $SVN_REVISION: SKIPPED!\n"
1215 exit 0
1216 fi
1217 echo -en "REV $SVN_REVISION: Downloading..."
c6cb9d25 1218 svn export http://svn.ipfire.eu/svn/ipfire ipfire-source/ --force > /dev/null
7471f6ab 1219 svn log http://svn.ipfire.eu/svn/ipfire -r 1:$SVN_REVISION > ipfire-source/Changelog
9fa7d717 1220 #svn info http://svn.ipfire.eu/svn/ipfire -r $SVN_REVISION > ipfire-source/svn_status
c6cb9d25 1221 if [ "$?" -eq "0" ]; then
7471f6ab 1222 echo -en "\r"
c6cb9d25 1223 else
7471f6ab 1224 echo -en "\n"
c6cb9d25
MT
1225 exit 1
1226 fi
7471f6ab
MT
1227 echo -en "REV $SVN_REVISION: Compressing files..."
1228 if [ -e ipfire-source/trunk/make.sh ]; then
1229 chmod 755 ipfire-source/trunk/make.sh
1230 fi
9dc02b38 1231 tar cfz ipfire-source-r$SVN_REVISION.tar.gz ipfire-source
c6cb9d25 1232 if [ "$?" -eq "0" ]; then
7471f6ab 1233 echo -ne "\r"
c6cb9d25 1234 else
7471f6ab 1235 echo -ne "\n"
c6cb9d25
MT
1236 exit 1
1237 fi
7471f6ab 1238 echo -en "REV $SVN_REVISION: Cleaning up..."
c6cb9d25
MT
1239 rm ipfire-source/ -r
1240 if [ "$?" -eq "0" ]; then
7471f6ab 1241 echo -ne "\rREV $SVN_REVISION: ##### FINISHED! #####\n"
c6cb9d25 1242 else
7471f6ab 1243 echo -ne "\n"
c6cb9d25
MT
1244 exit 1
1245 fi
1246 ;;
7471f6ab
MT
1247 alldist|ad)
1248 echo -e "### THIS WILL TAKE A LONG TIME!\nDOING A FETCH FROM REV 1 TO REV $SVN_REVISION!\n"
1249 for i in `seq 1 $SVN_REVISION`; do
1250 $0 svn dist $i
1251 done
1252 ;;
028698e8 1253 diff|di)
c6cb9d25
MT
1254 echo -ne "Make a local diff to last svn revision..."
1255 svn diff > ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff
1256 if [ "$?" -eq "0" ]; then
1257 echo ".Done!"
1258 else
1259 echo ".Fail!"
1260 exit 1
1261 fi
1262 echo "Diff was successfully saved to ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff"
1263 ;;
1264 esac
f9315063 1265 ;;
cc0e56be
MT
1266make-config)
1267 echo -e "This is for creating your configuration..."
cc0e56be
MT
1268 echo -e "We will need some input:"
1269 echo -e ""
1270 echo -n "FTP-DOMAIN FOR THE ISO: "
1271 read IPFIRE_FTP_URL_EXT
1272 echo -n "PATH FOR $IPFIRE_FTP_URL_EXT: "
1273 read IPFIRE_FTP_PATH_EXT
1274 echo -n "USERNAME FOR $IPFIRE_FTP_URL_EXT: "
1275 read IPFIRE_FTP_USER_EXT
1276 echo -n "PASSWORD FOR $IPFIRE_FTP_URL_EXT: "
712d859c 1277 read -s IPFIRE_FTP_PASS_EXT
cc0e56be
MT
1278 echo ""
1279 echo "(You can leave this empty if the cache-server is the same as your iso-server.)"
1280 echo -n "FTP-DOMAIN FOR THE CACHE: "
1281 read IPFIRE_FTP_URL_INT
1282 echo -n "PATH FOR $IPFIRE_FTP_URL_INT: "
1283 read IPFIRE_FTP_PATH_INT
1284 if [ $IPFIRE_FTP_URL_INT ]; then
1285 echo -n "USERNAME FOR $IPFIRE_FTP_URL_INT: "
1286 read IPFIRE_FTP_USER_INT
1287 echo -n "PASSWORD FOR $IPFIRE_FTP_URL_INT: "
712d859c 1288 read -s IPFIRE_FTP_PASS_INT
cc0e56be
MT
1289 else
1290 IPFIRE_FTP_URL_INT=$IPFIRE_FTP_URL_EXT
1291 IPFIRE_FTP_USER_INT=$IPFIRE_FTP_USER_EXT
1292 IPFIRE_FTP_PASS_INT=$IPFIRE_FTP_PASS_EXT
1293 echo "USERNAME FOR $IPFIRE_FTP_URL_INT: $IPFIRE_FTP_USER_INT"
712d859c 1294 echo "PASSWORD FOR $IPFIRE_FTP_URL_INT: !HIDDEN!"
cc0e56be
MT
1295 fi
1296 echo ""
1297 echo "(You can leave this empty if the pak-server is the same as your iso-server.)"
1298 echo -n "FTP-DOMAIN FOR THE PAKS: "
1299 read IPFIRE_FTP_URL_PAK
1300 echo -n "PATH FOR $IPFIRE_FTP_URL_PAK: "
1301 read IPFIRE_FTP_PATH_PAK
1302 if [ $IPFIRE_FTP_URL_PAK ]; then
1303 echo -n "USERNAME FOR $IPFIRE_FTP_URL_PAK: "
1304 read IPFIRE_FTP_USER_PAK
1305 echo -n "PASSWORD FOR $IPFIRE_FTP_URL_PAK: "
712d859c 1306 read -s IPFIRE_FTP_PASS_PAK
a68fedca 1307 else
cc0e56be
MT
1308 IPFIRE_FTP_URL_PAK=$IPFIRE_FTP_URL_EXT
1309 IPFIRE_FTP_USER_PAK=$IPFIRE_FTP_USER_EXT
1310 IPFIRE_FTP_PASS_PAK=$IPFIRE_FTP_PASS_EXT
1311 echo "USERNAME FOR $IPFIRE_FTP_URL_PAK: $IPFIRE_FTP_USER_PAK"
712d859c 1312 echo "PASSWORD FOR $IPFIRE_FTP_URL_PAK: !HIDDEN!"
a68fedca 1313 fi
cc0e56be
MT
1314 echo ""
1315 echo -e "ONE OR MORE EMAIL ADDRESS(ES) TO WHICH THE REPORTS WILL BE SENT"
1316 echo -e "(seperated by comma)"
1317 read IPFIRE_MAIL_REPORT
1318 echo -n "EMAIL FROM: "
1319 read IPFIRE_MAIL_FROM
1320 echo -n "EMAIL SERVER: "
1321 read IPFIRE_MAIL_SERVER
1322 echo -n "LOGIN TO MAIL SERVER: "
1323 read IPFIRE_MAIL_USER
1324 echo -n "MAIL PASSWORD: "
712d859c 1325 read -s IPFIRE_MAIL_PASS
cc0e56be
MT
1326 echo -n "Saving..."
1327 for i in `seq 20`; do
1328 sleep 0.1; echo -n "."
1329 done
1330 echo ".Finished!"
1331 cat <<END > .config
1332### ISO server
1333IPFIRE_FTP_URL_EXT=$IPFIRE_FTP_URL_EXT
1334IPFIRE_FTP_PATH_EXT=$IPFIRE_FTP_PATH_EXT
1335IPFIRE_FTP_USER_EXT=$IPFIRE_FTP_USER_EXT
1336IPFIRE_FTP_PASS_EXT=$IPFIRE_FTP_PASS_EXT
1337### cache server
1338IPFIRE_FTP_URL_INT=$IPFIRE_FTP_URL_INT
1339IPFIRE_FTP_PATH_INT=$IPFIRE_FTP_PATH_INT
1340IPFIRE_FTP_USER_INT=$IPFIRE_FTP_USER_INT
1341IPFIRE_FTP_PASS_INT=$IPFIRE_FTP_PASS_INT
1342### paks server
1343IPFIRE_FTP_URL_PAK=$IPFIRE_FTP_URL_PAK
1344IPFIRE_FTP_PATH_PAK=$IPFIRE_FTP_PATH_PAK
1345IPFIRE_FTP_USER_PAK=$IPFIRE_FTP_USER_PAK
1346IPFIRE_FTP_PASS_PAK=$IPFIRE_FTP_PASS_PAK
1347### mail reports
1348IPFIRE_MAIL_REPORT=$IPFIRE_MAIL_REPORT
1349IPFIRE_MAIL_FROM=$IPFIRE_MAIL_FROM
1350IPFIRE_MAIL_SERVER=$IPFIRE_MAIL_SERVER
1351IPFIRE_MAIL_USER=$IPFIRE_MAIL_USER
1352IPFIRE_MAIL_PASS=$IPFIRE_MAIL_PASS
1353END
1354 ;;
1355sync)
1356 echo -e "Syncing cache to ftp:"
ce56e927 1357# rm -f doc/packages-to-remove-from-ftp
cc0e56be 1358 ncftpls -u $IPFIRE_FTP_USER_INT -p $IPFIRE_FTP_PASS_INT ftp://$IPFIRE_FTP_URL_INT$IPFIRE_FTP_PATH_INT/ > ftplist
0eab8e84
MT
1359 for i in `ls -w1 cache/`; do
1360 grep $i ftplist
1361 if [ "$?" -ne "0" ]; then
cc0e56be 1362 ncftpput -u $IPFIRE_FTP_USER_INT -p $IPFIRE_FTP_PASS_INT $IPFIRE_FTP_URL_INT $IPFIRE_FTP_PATH_INT/ cache/$i
0eab8e84
MT
1363 if [ "$?" -eq "0" ]; then
1364 echo -e "$i was successfully uploaded to the ftp server."
1365 else
1366 echo -e "There was an error while uploading $i to the ftp server."
1367 fi
1368 fi
1369 done
1370 rm -f ftplist
1371 ;;
cc0e56be
MT
1372upload)
1373 case "$2" in
1374 iso)
1375 echo -e "Uploading the iso to $IPFIRE_FTP_URL_EXT."
9dc02b38
MT
1376 cat <<EOF > .ftp-commands
1377mkdir $IPFIRE_FTP_PATH_EXT
1378ls -lah
1379quit
1380EOF
1381 ncftp -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT < .ftp-commands
1382 rm -f .ftp-commands
1383 md5sum ipfire-install-$VERSION.i386.iso > ipfire-install-$VERSION.i386.iso.md5
1384 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-install-$VERSION.i386.iso
1385 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-install-$VERSION.i386.iso.md5
1386 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-source-r$SVN_REVISION.tar.gz
6aae8d61 1387 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ svn_status
9dc02b38
MT
1388 if [ "$?" -eq "0" ]; then
1389 echo -e "The iso of Revision $SVN_REVISION was successfully uploaded to $IPFIRE_FTP_URL_EXT$IPFIRE_FTP_PATH_EXT/."
cc0e56be 1390 else
9dc02b38
MT
1391 echo -e "There was an error while uploading the iso to the ftp server."
1392 exit 1
cc0e56be 1393 fi
6aae8d61
MT
1394 if [ "$3" = "--with-sources-cd" ]; then
1395 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-sources-cd-$VERSION.$MACHINE.iso
1396 fi
cc0e56be
MT
1397 ;;
1398 paks)
9dc02b38
MT
1399 cat <<EOF > .ftp-commands
1400mkdir $IPFIRE_FTP_PATH_PAK
1401ls -lah
1402quit
1403EOF
1404 ncftp -u $IPFIRE_FTP_USER_PAK -p $IPFIRE_FTP_PASS_PAK $IPFIRE_FTP_URL_PAK < .ftp-commands
1405 rm -f .ftp-commands
cc0e56be
MT
1406 ncftpput -z -u $IPFIRE_FTP_USER_PAK -p $IPFIRE_FTP_PASS_PAK $IPFIRE_FTP_URL_PAK $IPFIRE_FTP_PATH_PAK/ packages/*
1407 if [ "$?" -eq "0" ]; then
9dc02b38 1408 echo -e "The packages were successfully uploaded to $IPFIRE_FTP_URL_PAK$IPFIRE_FTP_PATH_PAK/."
cc0e56be
MT
1409 else
1410 echo -e "There was an error while uploading the packages to the ftp server."
712d859c 1411 exit 1
cc0e56be
MT
1412 fi
1413 ;;
1414 esac
0d0521b6 1415 ;;
52345790
MT
1416build-only)
1417 rm -f $BASEDIR/log/$2*
1418 BUILDMACHINE=`uname -m`
1419 prepareenv
1420 ipcopmake $2
1421 ;;
c6cb9d25
MT
1422build-silent)
1423 screen -dmS ipfire $0 build
1424 echo "Build started... This will take a while!"
1425 echo "You can see the status with 'screen -x ipfire'."
1426 ;;
cc0e56be
MT
1427mail)
1428 chmod 755 tools/sendEmail
1429 ATTACHMENT=/tmp/ipfire-build-logs-R$SVN_REVISION.tar.gz
1430 if [ "$2" = "ERROR" ]; then
1431 SUBJECT="ERROR: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1432 echo "ERROR: $0 build!"
1433 cat <<END > /tmp/ipfire_mail_body
1434When I was building IPFire on `hostname`, I have found an ERROR!
1435Here you can see the logs and detect the reason for this error.
1436
1437Best Regards
1438Your IPFire-Build-Script
1439END
1440 fi
1441 if [ "$2" = "SUCCESS" ]; then
1442 SUBJECT="SUCCESS: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1443 cat <<END > /tmp/ipfire_mail_body
1444Building IPFire on `hostname` in Revision $SVN_REVISION was successfull!
1445You can find the ISO on your ftp server.
1446
1447Statistics:
1448-----------
1449Started: $IPFIRE_START_TIME
1450Finished: `date`
1451
1452Best Regards
1453Your IPFire-Build-Script
1454END
1455 fi
1456 if [ "$2" = "SVNUPDATE" ]; then
1457 SUBJECT="SVNUPDATE: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1458 echo "ERROR: $0 svn up!"
1459 cat <<END > /tmp/ipfire_mail_body
1460When I was downloading the latest svn source,
1461I have found an ERROR!
1462Here you can see the logs and detect the reason for this error.
1463
1464Best Regards
1465Your IPFire-Build-Script
1466END
1467 fi
712d859c
MT
1468
1469 if [ "$2" = "SVNDIST" ]; then
1470 SUBJECT="SVNDIST: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1471 echo "ERROR: $0 svn dist!"
1472 cat <<END > /tmp/ipfire_mail_body
1473When I was exporting the latest svn source,
1474I have found an ERROR!
1475Here you can see the logs and detect the reason for this error.
1476
1477Best Regards
1478Your IPFire-Build-Script
1479END
1480 fi
1481
cc0e56be
MT
1482 if [ "$2" = "PREFETCH" ]; then
1483 SUBJECT="PREFETCH: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1484 echo "ERROR: $0 prefetch!"
1485 cat <<END > /tmp/ipfire_mail_body
1486When I was downloading the source packages,
1487I have found an ERROR!
1488Here you can see the logs and detect the reason for this error.
1489
1490Best Regards
1491Your IPFire-Build-Script
1492END
1493 fi
1494
1495 if [ "$2" = "ISO" ]; then
1496 SUBJECT="ISO: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1497 echo "ERROR: $0 upload iso!"
1498 cat <<END > /tmp/ipfire_mail_body
1499When I was uploading the iso image,
1500I have found an ERROR!
1501Here you can see the logs and detect the reason for this error.
1502
1503Best Regards
1504Your IPFire-Build-Script
1505END
1506 fi
1507
1508 if [ "$2" = "PAKS" ]; then
1509 SUBJECT="PAKS: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1510 echo "ERROR: $0 upload paks!"
1511 cat <<END > /tmp/ipfire_mail_body
1512When I was uploading the packages,
1513I have found an ERROR!
1514Here you can see the logs and detect the reason for this error.
1515
1516Best Regards
1517Your IPFire-Build-Script
1518END
1519 fi
1520
1521 tar cfz $ATTACHMENT log/_build*
1522 cat <<END >> /tmp/ipfire_mail_body
1523
1524Here is a summary... The full logs are in the attachment.
1525---------------------------------------------------------
1526
1527`tail log/_*`
1528END
1529 cat /tmp/ipfire_mail_body | tools/sendEmail -q \
1530 -f $IPFIRE_MAIL_FROM \
1531 -t $IPFIRE_MAIL_REPORT \
1532 -u $SUBJECT \
1533 -s $IPFIRE_MAIL_SERVER:25 \
1534 -xu $IPFIRE_MAIL_USER \
1535 -xp $IPFIRE_MAIL_PASS \
1536 -l log/_build.mail.log \
1537 -a $ATTACHMENT # -v
1538 rm -f /tmp/ipfire_mail_body $ATTACHMENT
1539 ;;
1540unattended)
712d859c
MT
1541 if [ ! -f .config ]; then
1542 echo "No configuration found. Try ./make.sh make-config."
1543 fi
cc0e56be
MT
1544 ### This is our procedure that will compile the IPFire by herself...
1545 echo "### UPDATE LOGS"
1546 update_logs
cc0e56be 1547
27ac55bf
MT
1548 if [ "$IPFIRE_REBUILD" -eq "0" ]; then
1549 echo "### SAVING TIME"
1550 export IPFIRE_START_TIME=`date`
ce56e927 1551
27ac55bf
MT
1552 echo "### GETTING TOOLCHAIN"
1553 $0 gettoolchain
1554
1555 echo "### RUNNING SVN-UPDATE"
1556 $0 svn update
1557 if [ $? -ne 0 ]; then
1558 $0 mail SVNUPDATE
1559 exit 1
1560 fi
712d859c 1561
27ac55bf
MT
1562 echo "### EXPORT SOURCES"
1563 $0 svn dist
1564 if [ $? -ne 0 ]; then
1565 $0 mail SVNDIST
1566 exit 1
1567 fi
cc0e56be 1568
27ac55bf
MT
1569 echo "### RUNNING PREFETCH"
1570 $0 prefetch | grep -q "md5 difference"
1571 if [ $? -eq 0 ]; then
1572 $0 mail PREFETCH
1573 exit 1
1574 fi
cc0e56be
MT
1575 fi
1576
1577 echo "### RUNNING BUILD"
1578 $0 build
1579 if [ $? -ne 0 ]; then
1580 $0 mail ERROR
1581 exit 1
1582 fi
1583
ce56e927 1584 echo "### MAKING SOURCES-ISO"
92b5fba4
MT
1585 echo "DISABLED by Delaco!"
1586 #$0 sources-iso
ce56e927 1587
cc0e56be
MT
1588 echo "### UPLOADING ISO"
1589 $0 upload iso
1590 if [ $? -ne 0 ]; then
1591 $0 mail ISO
1592 exit 1
1593 fi
1594
1595 echo "### UPLOADING PAKS"
1596 $0 upload paks
1597 if [ $? -ne 0 ]; then
1598 $0 mail PAKS
1599 exit 1
1600 fi
1601
1602 echo "### SUCCESS!"
1603 $0 mail SUCCESS
712d859c 1604 exit 0
cc0e56be
MT
1605 ;;
1606batch)
27ac55bf 1607 if [ `screen -ls | grep -q ipfire` ]; then
712d859c
MT
1608 echo "Build is already running, sorry!"
1609 exit 1
1610 else
27ac55bf
MT
1611 if [ "$2" = "--rebuild" ]; then
1612 export IPFIRE_REBUILD=1
1613 echo "REBUILD!"
1614 else
1615 export IPFIRE_REBUILD=0
1616 fi
712d859c
MT
1617 echo -n "IPFire-Batch-Build is starting..."
1618 screen -dmS ipfire $0 unattended
1619 if [ "$?" -eq "0" ]; then
1620 echo ".Done!"
1621 else
1622 echo ".ERROR!"
1623 exit 1
1624 fi
712d859c
MT
1625 exit 0
1626 fi
cc0e56be 1627 ;;
028698e8
MT
1628watch)
1629 echo "Exit with Ctrl+A, Ctrl+D."
1630 echo -n "Preparing..."
1631 for i in `seq 5`; do
1632 sleep 0.1; echo -n "."
1633 done
1634 echo ".Ready!"
1635 sleep 0.3
1636 screen -x ipfire
1637 ;;
df5e82b3 1638*)
24a4a744
MT
1639 clear
1640 svn info
712d859c 1641 select name in "Exit" "IPFIRE: Prefetch" "IPFIRE: Build (silent)" "IPFIRE: Watch Build" "IPFIRE: Batch" "IPFIRE: Clean" "SVN: Commit" "SVN: Update" "SVN: Status" "SVN: Diff" "LOG: Tail" "Help"
24a4a744
MT
1642 do
1643 case $name in
c6cb9d25
MT
1644 "IPFIRE: Prefetch")
1645 $0 prefetch
1646 ;;
1647 "IPFIRE: Build (silent)")
1648 $0 build-silent
1649 ;;
1650 "IPFIRE: Watch Build")
028698e8 1651 $0 watch
c6cb9d25 1652 ;;
712d859c
MT
1653 "IPFIRE: Batch")
1654 $0 batch
1655 ;;
c6cb9d25
MT
1656 "IPFIRE: Clean")
1657 $0 clean
1658 ;;
1659 "SVN: Commit")
d63e8889
RZ
1660 echo "Are your sure to Update all Files to the Server (write: yes)?"; read input
1661 if [ "$input" == "yes" ]; then
1662 $0 svn commit
1663 fi
d1b6aa72 1664 $0 sync
c6cb9d25
MT
1665 ;;
1666 "SVN: Update")
1667 $0 svn update
1668 ;;
1669 "SVN: Status")
1670 svn status # | grep -v ^?
1671 ;;
1672 "SVN: Diff")
1673 $0 svn diff
1674 ;;
1675 "Help")
1676 echo "Usage: $0 {build|changelog|check|checkclean|clean|gettoolchain|newpak|prefetch|shell|sync|toolchain}"
1677 cat doc/make.sh-usage
1678 ;;
712d859c
MT
1679 "LOG: Tail")
1680 tail -f log/_*
1681 ;;
c6cb9d25
MT
1682 "Exit")
1683 break
1684 ;;
24a4a744
MT
1685 esac
1686 done
df5e82b3 1687 ;;
3ea75603 1688esac