]> git.ipfire.org Git - ipfire-2.x.git/blame - make.sh
Vergessen es ins BuildScript zu machen.
[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
0deae25a 29 SLOGAN="www.ipfire.org" # 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
f4509bca
MT
602 ipcopmake berkeley
603 ipcopmake BerkeleyDB ## The Perl module
604 ipcopmake mysql
df5e82b3
MT
605 ipcopmake apache
606 ipcopmake arping
607 ipcopmake beep
608 ipcopmake bind
609 ipcopmake capi4k-utils
610 ipcopmake cdrtools
611 ipcopmake dnsmasq
612 ipcopmake dosfstools
613 ipcopmake ethtool
614 ipcopmake ez-ipupdate
615 ipcopmake fcron
616 ipcopmake perl-GD
617 ipcopmake gnupg
618 ipcopmake hdparm
619 ipcopmake ibod
620 ipcopmake initscripts
621 ipcopmake iptables
622 ipcopmake ipac-ng
623 ipcopmake ipaddr
624 ipcopmake iproute2
625 ipcopmake iptstate
626 ipcopmake iputils
78331e30 627 ipcopmake l7-protocols
df5e82b3
MT
628 ipcopmake isapnptools
629 ipcopmake isdn4k-utils
630 ipcopmake kudzu
631 ipcopmake logrotate
632 ipcopmake logwatch
633 ipcopmake mingetty
634 ipcopmake misc-progs
635 ipcopmake mtools
636 ipcopmake nano
637 ipcopmake nash
638 ipcopmake nasm
639 ipcopmake URI
640 ipcopmake HTML-Tagset
641 ipcopmake HTML-Parser
642 ipcopmake Compress-Zlib
643 ipcopmake Digest
644 ipcopmake Digest-SHA1
645 ipcopmake Digest-HMAC
646 ipcopmake libwww-perl
647 ipcopmake Net-DNS
648 ipcopmake Net-IPv4Addr
649 ipcopmake Net_SSLeay
4f8b6695
MT
650 ipcopmake IO-Stringy
651 ipcopmake Unix-Syslog
652 ipcopmake Mail-Tools
653 ipcopmake MIME-Tools
654 ipcopmake Net-Server
655 ipcopmake Convert-TNEF
656 ipcopmake Convert-UUlib
657 ipcopmake Archive-Tar
658 ipcopmake Archive-Zip
f28d0ddc 659 ipcopmake Text-Tabs+Wrap
90350ff3 660 ipcopmake Locale-Country
dace10b5 661 ipcopmake GeoIP
df8c7810 662 ipcopmake fwhits
df5e82b3
MT
663 ipcopmake noip_updater
664 ipcopmake ntp
665 ipcopmake oinkmaster
666 ipcopmake openssh
667 ipcopmake openswan
668 ipcopmake pptpclient
669 ipcopmake rrdtool
670 ipcopmake setserial
671 ipcopmake setup
672 ipcopmake snort
673 #ipcopmake speedycgi
6d4147d2
MT
674 ipcopmake saslauthd PASS=1
675 ipcopmake openldap
df5e82b3
MT
676 ipcopmake squid
677 ipcopmake squid-graph
60cbd6e7 678 ipcopmake squidguard
df5e82b3
MT
679 ipcopmake tcpdump
680 ipcopmake traceroute
681 ipcopmake vlan
5fcb6d5a 682 #ipcopmake wireless
df5e82b3
MT
683 ipcopmake libsafe
684 ipcopmake 3c5x9setup
894c6feb 685# echo -ne "`date -u '+%b %e %T'`: Building ### IPFire modules ### \n" | tee -a $LOGFILE
b34fd95d 686 ipcopmake pakfire
6ef0bff8 687 ipcopmake startscripts
5e69ef1a 688## Zuerst die Libs und dann die Programme. Ordnung muss sein!
6ef0bff8 689 ipcopmake java
a7b1824c 690 ipcopmake bootsplash
5e69ef1a
MT
691 ipcopmake libxml2
692 ipcopmake spandsp
693 ipcopmake lzo
6ef0bff8 694 ipcopmake openvpn
f8e5510c
MT
695 ipcopmake pkg-config
696 ipcopmake glib
180cd3be 697 ipcopmake xampp
5e69ef1a
MT
698 ipcopmake pam
699 ipcopmake pammysql
371d9df0 700 ipcopmake saslauthd PASS=2
a31b2bc4 701 ipcopmake xinetd
316160b0
MT
702 ipcopmake ghostscript
703 ipcopmake cups
b34fd95d 704# ipcopmake lpd ## Im Moment aus, da CUPS vorhanden ist.
98d413ac 705 ipcopmake samba
5e69ef1a
MT
706 ipcopmake sudo
707 ipcopmake mc
40a4ea4c
MT
708# ipcopmake pwlib
709# ipcopmake openh323
1fe6c87b 710 ipcopmake wget
60cbd6e7 711 ipcopmake wput
1fe6c87b 712 ipcopmake bridge-utils
3e45cc09
MT
713 ipcopmake screen
714 ipcopmake hddtemp
1fde937c 715 ipcopmake smartmontools
3e45cc09
MT
716 ipcopmake htop
717 ipcopmake lynx
b34fd95d 718 echo -ne "`date -u '+%b %e %T'`: Building ### Mailserver ### \n" | tee -a $LOGFILE
94025eea 719 ipcopmake postfix
6c666a3b 720 ipcopmake procmail
93dc5548
MT
721 ipcopmake fetchmail
722 ipcopmake cyrusimap
f28d0ddc 723 ipcopmake web-cyradm
33a31f1a 724 ipcopmake mailx
f9315063
MT
725 ipcopmake clamav
726 ipcopmake razor
4f8b6695 727 ipcopmake spamassassin
f28d0ddc 728# ipcopmake amavisd
b34fd95d 729 echo -ne "`date -u '+%b %e %T'`: Building ### VoIP-Server ### \n" | tee -a $LOGFILE
94025eea 730 ipcopmake stund
b684b13b
MT
731 ipcopmake zaptel
732 ipcopmake libpri
733 ipcopmake bristuff
40a4ea4c 734 ipcopmake asterisk
894c6feb 735 ipcopmake mpg123
d1b6aa72 736 echo -ne "`date -u '+%b %e %T'`: Building ### Multimedia-Server ### \n" | tee -a $LOGFILE
8a7ededb 737 ipcopmake libmad
5ac2da9f
MT
738 ipcopmake libogg
739 ipcopmake libvorbis
316160b0 740 ipcopmake lame
d1b6aa72
MT
741 ipcopmake xvid
742 ipcopmake mpeg2dec
743 ipcopmake ffmpeg
5ac2da9f 744 ipcopmake sox
316160b0 745 ipcopmake gnump3d
d1b6aa72 746 ipcopmake videolan
6ef0bff8
MT
747 echo -ne "`date -u '+%b %e %T'`: Building ### P2P-Clients ### \n" | tee -a $LOGFILE
748 ipcopmake applejuice
02dc0a76
MT
749 ipcopmake ocaml
750 ipcopmake mldonkey
751# ipcopmake edonkeyclc
894c6feb 752# ipcopmake sane
3e45cc09
MT
753 echo -ne "`date -u '+%b %e %T'`: Building ### Net-Tools ### \n" | tee -a $LOGFILE
754 ipcopmake ntop
894c6feb 755# ipcopmake rsync
3b9f6349 756 ipcopmake tcpwrapper
769a61c5 757 ipcopmake portmap
894c6feb 758 ipcopmake nfs
907cd036 759 ipcopmake nmap
52345790 760 ipcopmake mbmon
3e45cc09 761 ipcopmake iftop
ef05c8bb 762 ipcopmake ncftp
ca35618d 763 ipcopmake cftp
60cbd6e7 764 ipcopmake etherwake
33a31f1a 765 ipcopmake ethereal
712d859c 766 ipcopmake tftp-hpa
7a98bae5
MT
767 ipcopmake subversion
768 ipcopmake iptraf
2ae94d2d 769 ipcopmake nagios
0eab8e84 770# ipcopmake stunnel # Ausgeschaltet, weil wir es doch nicht nutzen
df5e82b3
MT
771}
772
773buildinstaller() {
774 # Run installer scripts one by one
775 LOGFILE="$BASEDIR/log/_build.installer.log"
776 export LOGFILE
777 echo -ne "`date -u '+%b %e %T'`: Stage4 installer build \n" | tee -a $LOGFILE
778 if [ 'i386' = $MACHINE ]; then
779 ipcopmake syslinux
780 ipcopmake as86
781 ipcopmake mbr
782 ipcopmake uClibc
783 fi
784 installmake busybox
785 installmake sysvinit
786 installmake e2fsprogs
787 installmake misc-progs
788 installmake slang
789 installmake util-linux
790 installmake newt
791 installmake pciutils
792 installmake pcmcia-cs
793 installmake kbd
794 installmake installer
795 installmake scsi.img
796 installmake driver.img
797 installmake initrd
798 installmake boot.img
799}
800
801buildpackages() {
802 LOGFILE="$BASEDIR/log/_build.packages.log"
803 export LOGFILE
804 echo "... see detailed log in _build.*.log files" >> $LOGFILE
805 echo -ne "`date -u '+%b %e %T'`: Stage5 packages build \n" | tee -a $LOGFILE
806 # Strip files
807 echo "`date -u '+%b %e %T'`: Stripping files" | tee -a $LOGFILE
808 find $LFS/lib $LFS/usr/lib $LFS/usr/share/rrdtool-* $LFS/install ! -type l \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
809 ! -name 'libc.so' ! -name 'libpthread.so' ! -name 'libcrypto.so.0.9.7.sha1' \
90350ff3 810 -exec $LFS/tools/bin/strip --strip-all {} \; >> $LOGFILE 2>&1
df5e82b3
MT
811 # add -ls before -exec if you want to verify what files are stripped
812
813 find $LFS/{,s}bin $LFS/usr/{,s}bin $LFS/usr/local/{,s}bin ! -type l \
814 -exec file {} \; | grep " ELF " | cut -f1 -d ':' | xargs $LFS/tools/bin/strip --strip-all >> $LOGFILE 2>&1
815 # there add -v to strip to verify
816
817 if [ 'i386' = $MACHINE ]; then
818 # Create fcdsl packages
819 echo "`date -u '+%b %e %T'`: Building fcdsl tgz" | tee -a $LOGFILE
820 cp $LFS/install/images/fcdsl/license.txt $LFS >> $LOGFILE 2>&1
821 touch $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}
822 cd $LFS && tar cvfz $LFS/install/images/$SNAME-fcdsl-$VERSION.$MACHINE.tgz \
823 lib/modules/$KVER/misc/fcdsl*.o.gz \
824 lib/modules/$KVER-smp/misc/fcdsl*.o.gz \
825 usr/lib/isdn/{fds?base.bin,fd?ubase.frm} \
826 etc/fcdsl/fcdsl*.conf \
827 etc/drdsl/{drdsl,drdsl.ini} \
828 license.txt \
829 var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} >> $LOGFILE 2>&1
830 rm -f $LFS/license.txt >> $LOGFILE 2>&1
831 cd $BASEDIR
832 fi
df5e82b3
MT
833
834 # Generating list of packages used
835 echo "`date -u '+%b %e %T'`: Generating packages list from logs" | tee -a $LOGFILE
836 rm -f $BASEDIR/doc/packages-list
837 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
838 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
3ea75603 839 echo " * `basename $i`" >>$BASEDIR/doc/packages-list
df5e82b3
MT
840 fi
841 done
3ea75603 842 echo "====== List of softwares used to build $NAME Version: $VERSION ======" > $BASEDIR/doc/packages-list.txt
712d859c 843 grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipfire$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$\|^ipfire-logs' \
df5e82b3
MT
844 $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt
845 rm -f $BASEDIR/doc/packages-list
c9673262 846 # packages-list.txt is ready to be displayed for wiki page
df5e82b3
MT
847
848 # Create ISO for CDRom and USB-superfloppy
c3defe9b 849 ipcopmake cdrom
e67a57fe 850 rm -f $LFS/install/images/*usb*
c3defe9b 851 cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1
c9673262 852
e67a57fe
MT
853 ipfirepackages
854
855 # Cleanup
856 stdumount
857 rm -rf $BASEDIR/build/tmp/*
858
859 # Generating total list of files
860 echo "`date -u '+%b %e %T'`: Generating files list from logs" | tee -a $LOGFILE
861 rm -f $BASEDIR/log/FILES
862 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
863 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
864 echo "##" >>$BASEDIR/log/FILES
865 echo "## `basename $i`" >>$BASEDIR/log/FILES
866 echo "##" >>$BASEDIR/log/FILES
867 cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES
868 fi
869 done
913668ba 870 cd $BASEDIR/packages; ls -w1 *.ipfire | awk -F ".ipfire" '{ print $1 }' > $BASEDIR/packages/packages_list.txt
5e773594 871 echo -n "###EOF###" >> $BASEDIR/packages/packages_list.txt
e67a57fe
MT
872
873 cd $PWD
874
875}
876
877ipfirepackages() {
013a23e2
MT
878 if [ -d "$BASEDIR/packages" ]; then
879 for i in `ls $BASEDIR/packages`; do
880 touch $BASEDIR/build/install/packages/$i.empty
881 done
882 fi
f0ca8c34 883 ipfiredist amavisd
78331e30 884 ipfiredist applejuice
5ac2da9f 885 ipfiredist asterisk
c7acba4a 886 ipfiredist clamav
483f59cd 887 ipfiredist cups
78331e30
MT
888 ipfiredist cyrusimap
889 ipfiredist fetchmail
d1b6aa72 890 ipfiredist ffmpeg
78331e30 891 ipfiredist gnump3d
7a98bae5 892 ipfiredist iptraf
0d0521b6 893 ipfiredist java
78331e30 894 ipfiredist lame
d1b6aa72 895 ipfiredist libmad
ae179f6e 896 ipfiredist libogg
78331e30 897 ipfiredist libtiff
ae179f6e 898 ipfiredist libvorbis
78331e30 899 ipfiredist libxml2
f0ca8c34 900 ipfiredist mailx
3ab910dd 901 ipfiredist mldonkey
d1b6aa72 902 ipfiredist mpeg2dec
2ae94d2d 903 ipfiredist nagios
f0ca8c34
MT
904 ipfiredist nfs
905 ipfiredist nmap
3e45cc09 906 ipfiredist ntop
27ac55bf 907 ipfiredist portmap
78331e30 908 ipfiredist postfix
371d9df0 909 ipfiredist procmail
90350ff3 910 ipfiredist samba
ae179f6e 911 ipfiredist sox
f0ca8c34 912 ipfiredist spamassassin
7a98bae5 913 ipfiredist subversion
d1b6aa72 914 ipfiredist videolan
f28d0ddc 915 ipfiredist web-cyradm
483f59cd 916 ipfiredist xampp
43f8b5f1 917# ipfiredist xinetd
d1b6aa72 918 ipfiredist xvid
78331e30 919 test -d $BASEDIR/packages || mkdir $BASEDIR/packages
d535503d 920 mv -f $LFS/install/packages/*.{ipfire,md5} $BASEDIR/packages >> $LOGFILE 2>&1
483f59cd 921 rm -rf $BASEDIR/build/install/packages/*
df5e82b3
MT
922}
923
cc0e56be
MT
924update_logs() {
925 tar cfz log/ipfire-logs-`date +'%Y-%m-%d-%H:%M'`.tgz log/_build.*
926 rm -f log/_build.*
927}
928
df5e82b3
MT
929# See what we're supposed to do
930case "$1" in
931build)
932 BUILDMACHINE=`uname -m`
712d859c 933 PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
df5e82b3
MT
934 #only restore on a clean disk
935 if [ ! -f log/perl-*-tools ]; then
936 if [ ! -n "$PACKAGE" ]; then
937 echo "`date -u '+%b %e %T'`: Full toolchain compilation" | tee -a $LOGFILE
938 prepareenv
939 buildtoolchain
940 else
941 PACKAGENAME=${PACKAGE%.tar.gz}
942 echo "`date -u '+%b %e %T'`: Restore from $PACKAGE" | tee -a $LOGFILE
943 if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
944 tar zxf $PACKAGE
945 prepareenv
946 else
947 exiterror "$PACKAGENAME md5 did not match, check downloaded package"
948 fi
949 fi
950 else
951 echo "`date -u '+%b %e %T'`: Using installed toolchain" | tee -a $LOGFILE
952 prepareenv
953 fi
5cfe86e6 954
df5e82b3
MT
955 buildbase
956 buildipcop
5cfe86e6
HS
957
958 # Setzen des IPFire Builds
8af06406 959 if [ "$FIREBUILD" ]; then
e57bc1fd 960 echo "$FIREBUILD" > $BASEDIR/build/var/ipfire/firebuild
5cfe86e6 961 else
e57bc1fd 962 echo "_(OvO)_" > $BASEDIR/build/var/ipfire/firebuild
5cfe86e6
HS
963 fi
964
df5e82b3
MT
965 buildinstaller
966 buildpackages
967 ;;
968shell)
969 # enter a shell inside LFS chroot
970 # may be used to changed kernel settings
971 prepareenv
972 entershell
973 ;;
974changelog)
d1dd6669 975 echo -n "Loading new Changelog from SVN: "
f9315063 976 svn log http://svn.ipfire.eu/svn/ipfire > doc/ChangeLog
d1dd6669 977 echo "Finished!"
df5e82b3
MT
978 ;;
979check)
980 echo "Checking sources files availability on the web"
981 if [ ! -d $DIR_CHK ]; then
982 mkdir -p $DIR_CHK
983 fi
984 FINISHED=0
985 cd $BASEDIR/lfs
986 for c in `seq $MAX_RETRIES`; do
987 if (( FINISHED==1 )); then
988 break
989 fi
990 FINISHED=1
991 cd $BASEDIR/lfs
992 for i in *; do
993 if [ -f "$i" -a "$i" != "Config" ]; then
994 make -s -f $i MACHINE=$MACHINE LFS_BASEDIR=$BASEDIR ROOT=$BASEDIR/build \
995 MESSAGE="$i\t ($c/$MAX_RETRIES)" check
996 if [ $? -ne 0 ]; then
997 echo "Check : wget error in lfs/$i"
998 FINISHED=0
999 fi
1000 fi
1001 done
1002 done
1003 cd -
1004 ;;
1005checkclean)
1006 echo "Erasing sources files availability tags"
1007 rm -rf $DIR_CHK/*
1008 ;;
1009clean)
1010 for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
1011 $LOSETUP -d $i 2>/dev/null
1012 done
1013 for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
1014 umount $i
1015 done
1016 stdumount
1017 for i in `seq 0 7`; do
1018 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
1019 umount /dev/loop${i} 2>/dev/null;
1020 losetup -d /dev/loop${i} 2>/dev/null;
1021 fi;
1022 done
1023 rm -rf $BASEDIR/build
1024 rm -rf $BASEDIR/cdrom
f9315063 1025 rm -rf $BASEDIR/packages
df5e82b3 1026 rm -rf $BASEDIR/log
df5e82b3
MT
1027 if [ -h /tools ]; then
1028 rm -f /tools
1029 fi
1030 ;;
f8e5510c 1031newpak)
a9b17001
MT
1032 # create structure for a new package
1033 echo -e "Name of the new package: $2"
1034 if [ ! -f "lfs/$2" ]; then
1035 echo "`date -u '+%b %e %T'`: Creating directory src/paks/$2"
1036 mkdir -p src/paks/$2
1037 cd src/paks/$2
f8e5510c 1038 echo "`date -u '+%b %e %T'`: Creating files"
a9b17001
MT
1039 cp $BASEDIR/lfs/postfix $BASEDIR/lfs/$2
1040
f8e5510c 1041 touch ROOTFILES
f8e5510c 1042 touch {,un}install.sh
a9b17001 1043 ## install.sh
f8e5510c
MT
1044 echo '#!/bin/bash' > install.sh
1045 echo '#' >> install.sh
1046 echo '#################################################################' >> install.sh
1047 echo '# #' >> install.sh
1048 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> install.sh
1049 echo '# #' >> install.sh
1050 echo '#################################################################' >> install.sh
1051 echo '#' >> install.sh
1052 echo '# Extract the files' >> install.sh
1053 echo 'tar xfz files.tgz -C /' >> install.sh
a9b17001
MT
1054 echo 'cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2' >> install.sh
1055 ## uninstall.sh
f8e5510c
MT
1056 echo '#!/bin/bash' > uninstall.sh
1057 echo '#################################################################' >> uninstall.sh
1058 echo '# #' >> uninstall.sh
1059 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> uninstall.sh
1060 echo '# #' >> uninstall.sh
1061 echo '#################################################################' >> uninstall.sh
1062 echo '#' >> uninstall.sh
1063 echo '# Delete the files' >> uninstall.sh
1064 echo '## Befehl fehlt noch' >> uninstall.sh
a9b17001 1065 echo 'rm -f /opt/pakfire/installed/ROOTFILES.$2' >> uninstall.sh
f8e5510c 1066 echo "`date -u '+%b %e %T'`: Adding files to SVN"
a9b17001
MT
1067 cd - && svn add lfs/$2 && svn add src/paks/$2
1068
1069 echo -n "Do you want to remove the folders? [y/n]"
1070 read REM
1071 if [ "$REM" == "y" ]; then
1072 echo "Removing the folders..."
1073 svn del src/paks/$2 --force
1074 else
1075 echo "Folders are kept."
1076 fi
df5e82b3 1077 else
a9b17001 1078 echo "$2 already exists"
df5e82b3 1079 fi
df5e82b3
MT
1080 exit 0
1081 ;;
1082prefetch)
1083 if [ ! -d $BASEDIR/cache ]; then
1084 mkdir $BASEDIR/cache
1085 fi
1086 mkdir -p $BASEDIR/log
1087 echo "`date -u '+%b %e %T'`:Preload all source files" | tee -a $LOGFILE
1088 FINISHED=0
1089 cd $BASEDIR/lfs
1090 for c in `seq $MAX_RETRIES`; do
1091 if (( FINISHED==1 )); then
1092 break
1093 fi
1094 FINISHED=1
1095 cd $BASEDIR/lfs
1096 for i in *; do
1097 if [ -f "$i" -a "$i" != "Config" ]; then
1098 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
1099 if [ $? -ne 0 ]; then
1100 echo "Prefetch : wget error in lfs/$i"
1101 FINISHED=0
1102 else
1103 if [ $c -eq 1 ]; then
1104 echo "Prefetch : lfs/$i files loaded"
1105 fi
1106 fi
1107 fi
1108 done
1109 done
1110 echo "Prefetch : verifying md5sum"
1111 ERROR=0
1112 for i in *; do
1113 if [ -f "$i" -a "$i" != "Config" ]; then
1114 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
1115 if [ $? -ne 0 ]; then
1116 echo "md5 difference in lfs/$i"
1117 ERROR=1
1118 fi
1119 fi
1120 done
1121 if [ $ERROR -eq 0 ]; then
1122 echo "Prefetch : all files md5sum match"
1123 fi
1124 cd -
1125 ;;
df5e82b3
MT
1126toolchain)
1127 prepareenv
1128 buildtoolchain
1129 BUILDMACHINE=`uname -m`
1130 echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
712d859c
MT
1131 test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains
1132 cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
df5e82b3
MT
1133 build/{bin,etc,usr/bin,usr/local} \
1134 build/tools/{bin,etc,*-linux-gnu,include,lib,libexec,sbin,share,var} \
1135 log >> $LOGFILE
712d859c
MT
1136 md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
1137 > cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5
df5e82b3
MT
1138 stdumount
1139 ;;
1140gettoolchain)
1141 BUILDMACHINE=`uname -m`
1142 # arbitrary name to be updated in case of new toolchain package upload
c6cb9d25 1143 PACKAGE=$SNAME-$VERSION-toolchain-$BUILDMACHINE
712d859c
MT
1144 if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then
1145 URL_IPFIRE=`grep URL_IPFIRE lfs/Config | awk '{ print $3 }'`
1146 test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains
1147 echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
1148 cd $BASEDIR/cache/toolchains
1149 wget $URL_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5 >& /dev/null
1150 if [ $? -ne 0 ]; then
1151 echo "`date -u '+%b %e %T'`: error downloading toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE
40a4ea4c 1152 else
712d859c
MT
1153 if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
1154 echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
1155 else
1156 exiterror "$PACKAGE.md5 did not match, check downloaded package"
1157 fi
40a4ea4c 1158 fi
712d859c
MT
1159 else
1160 echo "Toolchain is already downloaded. Exiting..."
df5e82b3
MT
1161 fi
1162 ;;
ce56e927
MT
1163sources-iso)
1164 prepareenv
1165 echo "`date -u '+%b %e %T'`: Build sources iso for $MACHINE" | tee -a $LOGFILE
1166 chroot $LFS /tools/bin/env -i HOME=/root \
1167 TERM=$TERM PS1='\u:\w\$ ' \
1168 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
1169 VERSION=$VERSION NAME="$NAME" SNAME="$SNAME" MACHINE=$MACHINE \
1170 /bin/bash -x -c "cd /usr/src/lfs && make -f sources-iso LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
1171 mv $LFS/install/images/ipfire-* $BASEDIR >> $LOGFILE 2>&1
1172 stdumount
1173 ;;
c6cb9d25
MT
1174svn)
1175 case "$2" in
1176 update|up)
cc0e56be 1177 # clear
c6cb9d25
MT
1178 echo -n "Load the latest source files..."
1179 svn update >> $PWD/log/_build.svn.update.log
1180 if [ $? -eq 0 ]; then
1181 echo ".Done!"
1182 else
1183 echo ".Fail!"
1184 exit 1
1185 fi
1186 echo -n "Write the svn info to a file..."
1187 svn info > $PWD/svn_status
1188 if [ "$?" -eq "0" ]; then
1189 echo ".Done!"
1190 else
1191 echo ".Fail!"
1192 exit 1
1193 fi
712d859c 1194 chmod 755 $0
913668ba 1195 tail log/_build.svn.update.log
cc0e56be 1196 exit 0
c6cb9d25
MT
1197 ;;
1198 commit|ci)
1199 clear
d79b46cb
MT
1200 if [ -e /sbin/yast ]; then
1201 $0 changelog
1202 fi
1203 echo "Upload the changed files..."
c6cb9d25 1204 sleep 1
d79b46cb
MT
1205 IPFIRE_SVN_MESSAGE=/tmp/ipfire-svn-co-message.txt
1206 rm -f $IPFIRE_SVN_MESSAGE
1207 mcedit $IPFIRE_SVN_MESSAGE
1208 svn commit -F $IPFIRE_SVN_MESSAGE
1209 rm -f $IPFIRE_SVN_MESSAGE
c6cb9d25
MT
1210 $0 svn up
1211 ;;
1212 dist)
a7fb5630 1213 #$0 svn up
c6cb9d25
MT
1214 echo -ne "Download source package from svn..."
1215 svn export http://svn.ipfire.eu/svn/ipfire ipfire-source/ --force > /dev/null
1216 if [ "$?" -eq "0" ]; then
1217 echo ".Done!"
1218 else
1219 echo ".Fail!"
1220 exit 1
1221 fi
1222 echo -n "Compress files..."
9dc02b38 1223 tar cfz ipfire-source-r$SVN_REVISION.tar.gz ipfire-source
c6cb9d25
MT
1224 if [ "$?" -eq "0" ]; then
1225 echo ".Done!"
1226 else
1227 echo ".Fail!"
1228 exit 1
1229 fi
1230 echo -n "Cleanup..."
1231 rm ipfire-source/ -r
1232 if [ "$?" -eq "0" ]; then
1233 echo ".Done!"
1234 else
1235 echo ".Fail!"
1236 exit 1
1237 fi
1238 ;;
1239 diff)
1240 echo -ne "Make a local diff to last svn revision..."
1241 svn diff > ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff
1242 if [ "$?" -eq "0" ]; then
1243 echo ".Done!"
1244 else
1245 echo ".Fail!"
1246 exit 1
1247 fi
1248 echo "Diff was successfully saved to ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff"
1249 ;;
1250 esac
f9315063 1251 ;;
cc0e56be
MT
1252make-config)
1253 echo -e "This is for creating your configuration..."
cc0e56be
MT
1254 echo -e "We will need some input:"
1255 echo -e ""
1256 echo -n "FTP-DOMAIN FOR THE ISO: "
1257 read IPFIRE_FTP_URL_EXT
1258 echo -n "PATH FOR $IPFIRE_FTP_URL_EXT: "
1259 read IPFIRE_FTP_PATH_EXT
1260 echo -n "USERNAME FOR $IPFIRE_FTP_URL_EXT: "
1261 read IPFIRE_FTP_USER_EXT
1262 echo -n "PASSWORD FOR $IPFIRE_FTP_URL_EXT: "
712d859c 1263 read -s IPFIRE_FTP_PASS_EXT
cc0e56be
MT
1264 echo ""
1265 echo "(You can leave this empty if the cache-server is the same as your iso-server.)"
1266 echo -n "FTP-DOMAIN FOR THE CACHE: "
1267 read IPFIRE_FTP_URL_INT
1268 echo -n "PATH FOR $IPFIRE_FTP_URL_INT: "
1269 read IPFIRE_FTP_PATH_INT
1270 if [ $IPFIRE_FTP_URL_INT ]; then
1271 echo -n "USERNAME FOR $IPFIRE_FTP_URL_INT: "
1272 read IPFIRE_FTP_USER_INT
1273 echo -n "PASSWORD FOR $IPFIRE_FTP_URL_INT: "
712d859c 1274 read -s IPFIRE_FTP_PASS_INT
cc0e56be
MT
1275 else
1276 IPFIRE_FTP_URL_INT=$IPFIRE_FTP_URL_EXT
1277 IPFIRE_FTP_USER_INT=$IPFIRE_FTP_USER_EXT
1278 IPFIRE_FTP_PASS_INT=$IPFIRE_FTP_PASS_EXT
1279 echo "USERNAME FOR $IPFIRE_FTP_URL_INT: $IPFIRE_FTP_USER_INT"
712d859c 1280 echo "PASSWORD FOR $IPFIRE_FTP_URL_INT: !HIDDEN!"
cc0e56be
MT
1281 fi
1282 echo ""
1283 echo "(You can leave this empty if the pak-server is the same as your iso-server.)"
1284 echo -n "FTP-DOMAIN FOR THE PAKS: "
1285 read IPFIRE_FTP_URL_PAK
1286 echo -n "PATH FOR $IPFIRE_FTP_URL_PAK: "
1287 read IPFIRE_FTP_PATH_PAK
1288 if [ $IPFIRE_FTP_URL_PAK ]; then
1289 echo -n "USERNAME FOR $IPFIRE_FTP_URL_PAK: "
1290 read IPFIRE_FTP_USER_PAK
1291 echo -n "PASSWORD FOR $IPFIRE_FTP_URL_PAK: "
712d859c 1292 read -s IPFIRE_FTP_PASS_PAK
a68fedca 1293 else
cc0e56be
MT
1294 IPFIRE_FTP_URL_PAK=$IPFIRE_FTP_URL_EXT
1295 IPFIRE_FTP_USER_PAK=$IPFIRE_FTP_USER_EXT
1296 IPFIRE_FTP_PASS_PAK=$IPFIRE_FTP_PASS_EXT
1297 echo "USERNAME FOR $IPFIRE_FTP_URL_PAK: $IPFIRE_FTP_USER_PAK"
712d859c 1298 echo "PASSWORD FOR $IPFIRE_FTP_URL_PAK: !HIDDEN!"
a68fedca 1299 fi
cc0e56be
MT
1300 echo ""
1301 echo -e "ONE OR MORE EMAIL ADDRESS(ES) TO WHICH THE REPORTS WILL BE SENT"
1302 echo -e "(seperated by comma)"
1303 read IPFIRE_MAIL_REPORT
1304 echo -n "EMAIL FROM: "
1305 read IPFIRE_MAIL_FROM
1306 echo -n "EMAIL SERVER: "
1307 read IPFIRE_MAIL_SERVER
1308 echo -n "LOGIN TO MAIL SERVER: "
1309 read IPFIRE_MAIL_USER
1310 echo -n "MAIL PASSWORD: "
712d859c 1311 read -s IPFIRE_MAIL_PASS
cc0e56be
MT
1312 echo -n "Saving..."
1313 for i in `seq 20`; do
1314 sleep 0.1; echo -n "."
1315 done
1316 echo ".Finished!"
1317 cat <<END > .config
1318### ISO server
1319IPFIRE_FTP_URL_EXT=$IPFIRE_FTP_URL_EXT
1320IPFIRE_FTP_PATH_EXT=$IPFIRE_FTP_PATH_EXT
1321IPFIRE_FTP_USER_EXT=$IPFIRE_FTP_USER_EXT
1322IPFIRE_FTP_PASS_EXT=$IPFIRE_FTP_PASS_EXT
1323### cache server
1324IPFIRE_FTP_URL_INT=$IPFIRE_FTP_URL_INT
1325IPFIRE_FTP_PATH_INT=$IPFIRE_FTP_PATH_INT
1326IPFIRE_FTP_USER_INT=$IPFIRE_FTP_USER_INT
1327IPFIRE_FTP_PASS_INT=$IPFIRE_FTP_PASS_INT
1328### paks server
1329IPFIRE_FTP_URL_PAK=$IPFIRE_FTP_URL_PAK
1330IPFIRE_FTP_PATH_PAK=$IPFIRE_FTP_PATH_PAK
1331IPFIRE_FTP_USER_PAK=$IPFIRE_FTP_USER_PAK
1332IPFIRE_FTP_PASS_PAK=$IPFIRE_FTP_PASS_PAK
1333### mail reports
1334IPFIRE_MAIL_REPORT=$IPFIRE_MAIL_REPORT
1335IPFIRE_MAIL_FROM=$IPFIRE_MAIL_FROM
1336IPFIRE_MAIL_SERVER=$IPFIRE_MAIL_SERVER
1337IPFIRE_MAIL_USER=$IPFIRE_MAIL_USER
1338IPFIRE_MAIL_PASS=$IPFIRE_MAIL_PASS
1339END
1340 ;;
1341sync)
1342 echo -e "Syncing cache to ftp:"
ce56e927 1343# rm -f doc/packages-to-remove-from-ftp
cc0e56be 1344 ncftpls -u $IPFIRE_FTP_USER_INT -p $IPFIRE_FTP_PASS_INT ftp://$IPFIRE_FTP_URL_INT$IPFIRE_FTP_PATH_INT/ > ftplist
0eab8e84
MT
1345 for i in `ls -w1 cache/`; do
1346 grep $i ftplist
1347 if [ "$?" -ne "0" ]; then
cc0e56be 1348 ncftpput -u $IPFIRE_FTP_USER_INT -p $IPFIRE_FTP_PASS_INT $IPFIRE_FTP_URL_INT $IPFIRE_FTP_PATH_INT/ cache/$i
0eab8e84
MT
1349 if [ "$?" -eq "0" ]; then
1350 echo -e "$i was successfully uploaded to the ftp server."
1351 else
1352 echo -e "There was an error while uploading $i to the ftp server."
1353 fi
1354 fi
1355 done
ce56e927
MT
1356# for i in `cat ftplist`; do
1357# ls -w1 cache/ | grep $i
1358# if [ "$?" -eq "1" ]; then
1359# echo $i | grep -v toolchain >> doc/packages-to-remove-from-ftp
1360# fi
1361# done
0eab8e84
MT
1362 rm -f ftplist
1363 ;;
cc0e56be
MT
1364upload)
1365 case "$2" in
1366 iso)
1367 echo -e "Uploading the iso to $IPFIRE_FTP_URL_EXT."
9dc02b38
MT
1368 cat <<EOF > .ftp-commands
1369mkdir $IPFIRE_FTP_PATH_EXT
1370ls -lah
1371quit
1372EOF
1373 ncftp -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT < .ftp-commands
1374 rm -f .ftp-commands
1375 md5sum ipfire-install-$VERSION.i386.iso > ipfire-install-$VERSION.i386.iso.md5
1376 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-install-$VERSION.i386.iso
1377 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
1378 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 1379 ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ svn_status
9dc02b38
MT
1380 if [ "$?" -eq "0" ]; then
1381 echo -e "The iso of Revision $SVN_REVISION was successfully uploaded to $IPFIRE_FTP_URL_EXT$IPFIRE_FTP_PATH_EXT/."
cc0e56be 1382 else
9dc02b38
MT
1383 echo -e "There was an error while uploading the iso to the ftp server."
1384 exit 1
cc0e56be 1385 fi
6aae8d61
MT
1386 if [ "$3" = "--with-sources-cd" ]; then
1387 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
1388 fi
cc0e56be
MT
1389 ;;
1390 paks)
9dc02b38
MT
1391 cat <<EOF > .ftp-commands
1392mkdir $IPFIRE_FTP_PATH_PAK
1393ls -lah
1394quit
1395EOF
1396 ncftp -u $IPFIRE_FTP_USER_PAK -p $IPFIRE_FTP_PASS_PAK $IPFIRE_FTP_URL_PAK < .ftp-commands
1397 rm -f .ftp-commands
cc0e56be
MT
1398 ncftpput -z -u $IPFIRE_FTP_USER_PAK -p $IPFIRE_FTP_PASS_PAK $IPFIRE_FTP_URL_PAK $IPFIRE_FTP_PATH_PAK/ packages/*
1399 if [ "$?" -eq "0" ]; then
9dc02b38 1400 echo -e "The packages were successfully uploaded to $IPFIRE_FTP_URL_PAK$IPFIRE_FTP_PATH_PAK/."
cc0e56be
MT
1401 else
1402 echo -e "There was an error while uploading the packages to the ftp server."
712d859c 1403 exit 1
cc0e56be
MT
1404 fi
1405 ;;
1406 esac
0d0521b6 1407 ;;
52345790
MT
1408build-only)
1409 rm -f $BASEDIR/log/$2*
1410 BUILDMACHINE=`uname -m`
1411 prepareenv
1412 ipcopmake $2
1413 ;;
c6cb9d25
MT
1414build-silent)
1415 screen -dmS ipfire $0 build
1416 echo "Build started... This will take a while!"
1417 echo "You can see the status with 'screen -x ipfire'."
1418 ;;
cc0e56be
MT
1419mail)
1420 chmod 755 tools/sendEmail
1421 ATTACHMENT=/tmp/ipfire-build-logs-R$SVN_REVISION.tar.gz
1422 if [ "$2" = "ERROR" ]; then
1423 SUBJECT="ERROR: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1424 echo "ERROR: $0 build!"
1425 cat <<END > /tmp/ipfire_mail_body
1426When I was building IPFire on `hostname`, I have found an ERROR!
1427Here you can see the logs and detect the reason for this error.
1428
1429Best Regards
1430Your IPFire-Build-Script
1431END
1432 fi
1433 if [ "$2" = "SUCCESS" ]; then
1434 SUBJECT="SUCCESS: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1435 cat <<END > /tmp/ipfire_mail_body
1436Building IPFire on `hostname` in Revision $SVN_REVISION was successfull!
1437You can find the ISO on your ftp server.
1438
1439Statistics:
1440-----------
1441Started: $IPFIRE_START_TIME
1442Finished: `date`
1443
1444Best Regards
1445Your IPFire-Build-Script
1446END
1447 fi
1448 if [ "$2" = "SVNUPDATE" ]; then
1449 SUBJECT="SVNUPDATE: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1450 echo "ERROR: $0 svn up!"
1451 cat <<END > /tmp/ipfire_mail_body
1452When I was downloading the latest svn source,
1453I have found an ERROR!
1454Here you can see the logs and detect the reason for this error.
1455
1456Best Regards
1457Your IPFire-Build-Script
1458END
1459 fi
712d859c
MT
1460
1461 if [ "$2" = "SVNDIST" ]; then
1462 SUBJECT="SVNDIST: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1463 echo "ERROR: $0 svn dist!"
1464 cat <<END > /tmp/ipfire_mail_body
1465When I was exporting the latest svn source,
1466I have found an ERROR!
1467Here you can see the logs and detect the reason for this error.
1468
1469Best Regards
1470Your IPFire-Build-Script
1471END
1472 fi
1473
cc0e56be
MT
1474 if [ "$2" = "PREFETCH" ]; then
1475 SUBJECT="PREFETCH: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1476 echo "ERROR: $0 prefetch!"
1477 cat <<END > /tmp/ipfire_mail_body
1478When I was downloading the source packages,
1479I have found an ERROR!
1480Here you can see the logs and detect the reason for this error.
1481
1482Best Regards
1483Your IPFire-Build-Script
1484END
1485 fi
1486
1487 if [ "$2" = "ISO" ]; then
1488 SUBJECT="ISO: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1489 echo "ERROR: $0 upload iso!"
1490 cat <<END > /tmp/ipfire_mail_body
1491When I was uploading the iso image,
1492I have found an ERROR!
1493Here you can see the logs and detect the reason for this error.
1494
1495Best Regards
1496Your IPFire-Build-Script
1497END
1498 fi
1499
1500 if [ "$2" = "PAKS" ]; then
1501 SUBJECT="PAKS: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
1502 echo "ERROR: $0 upload paks!"
1503 cat <<END > /tmp/ipfire_mail_body
1504When I was uploading the packages,
1505I have found an ERROR!
1506Here you can see the logs and detect the reason for this error.
1507
1508Best Regards
1509Your IPFire-Build-Script
1510END
1511 fi
1512
1513 tar cfz $ATTACHMENT log/_build*
1514 cat <<END >> /tmp/ipfire_mail_body
1515
1516Here is a summary... The full logs are in the attachment.
1517---------------------------------------------------------
1518
1519`tail log/_*`
1520END
1521 cat /tmp/ipfire_mail_body | tools/sendEmail -q \
1522 -f $IPFIRE_MAIL_FROM \
1523 -t $IPFIRE_MAIL_REPORT \
1524 -u $SUBJECT \
1525 -s $IPFIRE_MAIL_SERVER:25 \
1526 -xu $IPFIRE_MAIL_USER \
1527 -xp $IPFIRE_MAIL_PASS \
1528 -l log/_build.mail.log \
1529 -a $ATTACHMENT # -v
1530 rm -f /tmp/ipfire_mail_body $ATTACHMENT
1531 ;;
1532unattended)
712d859c
MT
1533 if [ ! -f .config ]; then
1534 echo "No configuration found. Try ./make.sh make-config."
1535 fi
cc0e56be
MT
1536 ### This is our procedure that will compile the IPFire by herself...
1537 echo "### UPDATE LOGS"
1538 update_logs
cc0e56be 1539
27ac55bf
MT
1540 if [ "$IPFIRE_REBUILD" -eq "0" ]; then
1541 echo "### SAVING TIME"
1542 export IPFIRE_START_TIME=`date`
ce56e927 1543
27ac55bf
MT
1544 echo "### GETTING TOOLCHAIN"
1545 $0 gettoolchain
1546
1547 echo "### RUNNING SVN-UPDATE"
1548 $0 svn update
1549 if [ $? -ne 0 ]; then
1550 $0 mail SVNUPDATE
1551 exit 1
1552 fi
712d859c 1553
27ac55bf
MT
1554 echo "### EXPORT SOURCES"
1555 $0 svn dist
1556 if [ $? -ne 0 ]; then
1557 $0 mail SVNDIST
1558 exit 1
1559 fi
cc0e56be 1560
27ac55bf
MT
1561 echo "### RUNNING PREFETCH"
1562 $0 prefetch | grep -q "md5 difference"
1563 if [ $? -eq 0 ]; then
1564 $0 mail PREFETCH
1565 exit 1
1566 fi
cc0e56be
MT
1567 fi
1568
1569 echo "### RUNNING BUILD"
1570 $0 build
1571 if [ $? -ne 0 ]; then
1572 $0 mail ERROR
1573 exit 1
1574 fi
1575
ce56e927 1576 echo "### MAKING SOURCES-ISO"
92b5fba4
MT
1577 echo "DISABLED by Delaco!"
1578 #$0 sources-iso
ce56e927 1579
cc0e56be
MT
1580 echo "### UPLOADING ISO"
1581 $0 upload iso
1582 if [ $? -ne 0 ]; then
1583 $0 mail ISO
1584 exit 1
1585 fi
1586
1587 echo "### UPLOADING PAKS"
1588 $0 upload paks
1589 if [ $? -ne 0 ]; then
1590 $0 mail PAKS
1591 exit 1
1592 fi
1593
1594 echo "### SUCCESS!"
1595 $0 mail SUCCESS
712d859c 1596 exit 0
cc0e56be
MT
1597 ;;
1598batch)
27ac55bf 1599 if [ `screen -ls | grep -q ipfire` ]; then
712d859c
MT
1600 echo "Build is already running, sorry!"
1601 exit 1
1602 else
27ac55bf
MT
1603 if [ "$2" = "--rebuild" ]; then
1604 export IPFIRE_REBUILD=1
1605 echo "REBUILD!"
1606 else
1607 export IPFIRE_REBUILD=0
1608 fi
712d859c
MT
1609 echo -n "IPFire-Batch-Build is starting..."
1610 screen -dmS ipfire $0 unattended
1611 if [ "$?" -eq "0" ]; then
1612 echo ".Done!"
1613 else
1614 echo ".ERROR!"
1615 exit 1
1616 fi
712d859c
MT
1617 exit 0
1618 fi
cc0e56be 1619 ;;
df5e82b3 1620*)
24a4a744
MT
1621 clear
1622 svn info
712d859c 1623 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
1624 do
1625 case $name in
c6cb9d25
MT
1626 "IPFIRE: Prefetch")
1627 $0 prefetch
1628 ;;
1629 "IPFIRE: Build (silent)")
1630 $0 build-silent
1631 ;;
1632 "IPFIRE: Watch Build")
1633 echo "Exit with Ctrl+A, Ctrl+D."
1634 echo -n "Preparing..."
1635 for i in `seq 10`; do
1636 sleep 0.1; echo -n "."
1637 done
1638 echo ".Ready!"
cc0e56be 1639 sleep 0.3
c6cb9d25
MT
1640 screen -x ipfire
1641 ;;
712d859c
MT
1642 "IPFIRE: Batch")
1643 $0 batch
1644 ;;
c6cb9d25
MT
1645 "IPFIRE: Clean")
1646 $0 clean
1647 ;;
1648 "SVN: Commit")
d63e8889
RZ
1649 echo "Are your sure to Update all Files to the Server (write: yes)?"; read input
1650 if [ "$input" == "yes" ]; then
1651 $0 svn commit
1652 fi
d1b6aa72 1653 $0 sync
c6cb9d25
MT
1654 ;;
1655 "SVN: Update")
1656 $0 svn update
1657 ;;
1658 "SVN: Status")
1659 svn status # | grep -v ^?
1660 ;;
1661 "SVN: Diff")
1662 $0 svn diff
1663 ;;
1664 "Help")
1665 echo "Usage: $0 {build|changelog|check|checkclean|clean|gettoolchain|newpak|prefetch|shell|sync|toolchain}"
1666 cat doc/make.sh-usage
1667 ;;
712d859c
MT
1668 "LOG: Tail")
1669 tail -f log/_*
1670 ;;
c6cb9d25
MT
1671 "Exit")
1672 break
1673 ;;
24a4a744
MT
1674 esac
1675 done
df5e82b3 1676 ;;
3ea75603 1677esac