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