HinzugefĆ¼gt:
[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
f8e5510c 28 VERSION="1.4" # Version number
3ea75603
MT
29 SLOGAN="We secure your network" # Software slogan
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`
35
7476f476
HS
36 # Setzen des IPFire Builds
37 if [ -e ./.svn ]; then
38 FIREBUILD=`cat .svn/entries |sed -n 's/^[ \t]*revision=\"// p' | sed -n 's/\".*$// p'`
39# VERSION="$VERSION (Build:$FIREBUILD)"
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
54
55 PWD=`pwd`
56 BASENAME=`basename $0`
57 BASEDIR=`echo $FULLPATH | sed "s/\/$BASENAME//g"`
58 LOGFILE=$BASEDIR/log/_build.preparation.log
59 export BASEDIR LOGFILE
60 DIR_CHK=$BASEDIR/cache/check
61 mkdir $BASEDIR/log/ 2>/dev/null
62
63 if [ 'x86_64' = $MACHINE -o 'i686' = $MACHINE -o 'i586' = $MACHINE -o 'i486' = $MACHINE -o 'i386' = $MACHINE ]; then
5cfe86e6 64
df5e82b3
MT
65 echo "`date -u '+%b %e %T'`: Machine is ix86 (or equivalent)" | tee -a $LOGFILE
66 MACHINE=i386
67 BUILDTARGET=i386-pc-linux-gnu
68 CFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer"
69 CXXFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer"
70 elif [ 'alpha' = $MACHINE ]; then
71 echo "`date -u '+%b %e %T'`: Machine is Alpha AXP" | tee -a $LOGFILE
72 BUILDTARGET=alpha-unknown-linux-gnu
73 CFLAGS="-O2 -mcpu=ev4 -mieee -pipe"
74 CXXFLAGS="-O2 -mcpu=ev4 -mieee -pipe"
75 else
76 echo "`date -u '+%b %e %T'`: Can't determine your architecture - $MACHINE" | tee -a $LOGFILE
77 exit 1
78 fi
79
80# Define immediately
81stdumount() {
82 umount $BASEDIR/build/dev/pts 2>/dev/null;
94025eea
MT
83 umount $BASEDIR/build/proc 2>/dev/null;
84 umount $BASEDIR/build/install/mnt 2>/dev/null;
df5e82b3
MT
85 umount $BASEDIR/build/usr/src/cache 2>/dev/null;
86 umount $BASEDIR/build/usr/src/ccache 2>/dev/null;
87 umount $BASEDIR/build/usr/src/config 2>/dev/null;
94025eea
MT
88 umount $BASEDIR/build/usr/src/doc 2>/dev/null;
89 umount $BASEDIR/build/usr/src/html 2>/dev/null;
df5e82b3 90 umount $BASEDIR/build/usr/src/langs 2>/dev/null;
94025eea
MT
91 umount $BASEDIR/build/usr/src/lfs 2>/dev/null;
92 umount $BASEDIR/build/usr/src/log 2>/dev/null;
93 umount $BASEDIR/build/usr/src/src 2>/dev/null;
df5e82b3
MT
94}
95
96exiterror() {
97 stdumount
98 for i in `seq 0 7`; do
99 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
100 losetup -d /dev/loop${i} 2>/dev/null
101 fi;
102 done
103 echo "ERROR: $*"
104 echo " Check $LOGFILE for errors if applicable"
105 exit 1
106}
107
108entershell() {
109 if [ ! -e $BASEDIR/build/usr/src/lfs/ ]; then
110 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/"
111 fi
112 echo "Entering to a shell inside LFS chroot, go out with exit"
113 chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
114 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
115 VERSION=$VERSION CONFIG_ROOT=$CONFIG_ROOT \
116 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
117 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
118 CCACHE_DIR=/usr/src/ccache \
119 CCACHE_HASHDIR=1 \
120 KVER=$KVER \
121 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
122 KGCC="ccache /usr/bin/gcc" \
123 /tools/bin/bash
124 if [ $? -ne 0 ]; then
125 exiterror "chroot error"
126 else
127 stdumount
128 fi
129}
130
131prepareenv() {
132 ############################################################################
133 # #
134 # Are we running the right shell? #
135 # #
136 ############################################################################
137 if [ ! "$BASH" ]; then
138 exiterror "BASH environment variable is not set. You're probably running the wrong shell."
139 fi
140
141 if [ -z "${BASH_VERSION}" ]; then
142 exiterror "Not running BASH shell."
143 fi
144
145
146 ############################################################################
147 # #
148 # Trap on emergency exit #
149 # #
150 ############################################################################
151 trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGKILL SIGSTOP SIGQUIT
152
153
154 ############################################################################
155 # #
156 # Resetting our nice level #
157 # #
158 ############################################################################
159 echo "`date -u '+%b %e %T'`: Resetting our nice level to $NICE" | tee -a $LOGFILE
160 renice $NICE $$ > /dev/null
161 if [ `nice` != "$NICE" ]; then
162 exiterror "Failed to set correct nice level"
163 fi
164
165 ############################################################################
166 # #
167 # Checking if running as root user #
168 # #
169 ############################################################################
170 echo "`date -u '+%b %e %T'`: Checking if we're running as root user" | tee -a $LOGFILE
171 if [ `id -u` != 0 ]; then
172 exiterror "Not building as root"
173 fi
174
175
176 ############################################################################
177 # #
178 # Checking for necessary temporary space #
179 # #
180 ############################################################################
181 echo "`date -u '+%b %e %T'`: Checking for necessary space on disk $BASE_DEV" | tee -a $LOGFILE
182 BASE_DEV=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $1 }'`
183 BASE_ASPACE=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $4 }'`
184 if (( 2202000 > $BASE_ASPACE )); then
185 BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'`
186 if (( 2202000 - $BASE_USPACE > $BASE_ASPACE )); then
187 exiterror "Not enough temporary space available, need at least 2.1GB on $BASE_DEV"
188 fi
189 fi
190
191 ############################################################################
192 # #
193 # Building Linux From Scratch system #
194 # #
195 ############################################################################
196 echo "`date -u '+%b %e %T'`: Building Linux From Scratch system" | tee -a $LOGFILE
197
198 # Set umask
199 umask 022
200
201 # Set LFS Directory
202 LFS=$BASEDIR/build
203
204 # Check /tools symlink
205 if [ -h /tools ]; then
206 rm -f /tools
207 fi
208 if [ ! -a /tools ]; then
209 ln -s $BASEDIR/build/tools /
210 fi
211 if [ ! -h /tools ]; then
212 exiterror "Could not create /tools symbolic link."
213 fi
214
215 # Setup environment
216 set +h
217 LC_ALL=POSIX
218 export LFS LC_ALL CFLAGS CXXFLAGS
219 unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
220
221 # Make some extra directories
222 mkdir -p $BASEDIR/build/{tools,etc,usr/src} 2>/dev/null
223 mkdir -p $BASEDIR/{cache,ccache} 2>/dev/null
224 mkdir -p $BASEDIR/build/dev/pts $BASEDIR/build/proc $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache}
225
226 # Make all sources and proc available under lfs build
227 mount --bind /dev/pts $BASEDIR/build/dev/pts
228 mount --bind /proc $BASEDIR/build/proc
229 mount --bind $BASEDIR/cache $BASEDIR/build/usr/src/cache
230 mount --bind $BASEDIR/ccache $BASEDIR/build/usr/src/ccache
231 mount --bind $BASEDIR/config $BASEDIR/build/usr/src/config
232 mount --bind $BASEDIR/doc $BASEDIR/build/usr/src/doc
233 mount --bind $BASEDIR/html $BASEDIR/build/usr/src/html
234 mount --bind $BASEDIR/langs $BASEDIR/build/usr/src/langs
235 mount --bind $BASEDIR/lfs $BASEDIR/build/usr/src/lfs
236 mount --bind $BASEDIR/log $BASEDIR/build/usr/src/log
237 mount --bind $BASEDIR/src $BASEDIR/build/usr/src/src
238
239 # Run LFS static binary creation scripts one by one
240 export CCACHE_DIR=$BASEDIR/ccache
241 export CCACHE_HASHDIR=1
242
243 # Remove pre-install list of installed files in case user erase some files before rebuild
244 rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null
245}
246
247
248############################################################################
249# #
250# Necessary shell functions #
251# #
252############################################################################
253lfsmake1() {
254 if [ -f $BASEDIR/lfs/$1 ]; then
255 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
256 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1
257 if [ $? -ne 0 ]; then
258 exiterror "Download error in $1"
259 fi
260 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
261 if [ $? -ne 0 ]; then
262 exiterror "md5sum error in $1, check file in cache or signature"
263 fi
264 cd $BASEDIR/lfs && make -f $* BUILDTARGET=$BUILDTARGET \
265 MACHINE=$MACHINE \
266 LFS_BASEDIR=$BASEDIR \
267 ROOT=$LFS \
268 KVER=$KVER \
269 install >> $LOGFILE 2>&1
270 if [ $? -ne 0 ]; then
271 exiterror "Building $*";
272 fi
273 else
274 exiterror "No such file or directory: $BASEDIR/$1"
275 fi
276 return 0
277}
278
279lfsmake2() {
280 if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
281 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
282 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1
283 if [ $? -ne 0 ]; then
284 exiterror "Download error in $1"
285 fi
286 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
287 if [ $? -ne 0 ]; then
288 exiterror "md5sum error in $1, check file in cache or signature"
289 fi
290 chroot $LFS /tools/bin/env -i HOME=/root \
291 TERM=$TERM PS1='\u:\w\$ ' \
292 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
293 VERSION=$VERSION \
294 CONFIG_ROOT=$CONFIG_ROOT \
295 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
296 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
297 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
298 KVER=$KVER \
299 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
300 /tools/bin/bash -x -c "cd /usr/src/lfs && \
301 make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
302 if [ $? -ne 0 ]; then
303 exiterror "Building $*"
304 fi
305 else
306 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
307 fi
308 return 0
309}
310
311ipcopmake() {
312 if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
313 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
314 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1
315 if [ $? -ne 0 ]; then
316 exiterror "Download error in $1"
317 fi
318 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
319 if [ $? -ne 0 ]; then
320 exiterror "md5sum error in $1, check file in cache or signature"
321 fi
322 chroot $LFS /tools/bin/env -i HOME=/root \
323 TERM=$TERM PS1='\u:\w\$ ' \
324 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
325 VERSION=$VERSION \
326 CONFIG_ROOT=$CONFIG_ROOT \
327 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
328 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
329 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
330 KVER=$KVER \
331 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
332 /bin/bash -x -c "cd /usr/src/lfs && \
333 make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
334 if [ $? -ne 0 ]; then
335 exiterror "Building $*"
336 fi
337 else
338 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
339 fi
340 return 0
341}
342
e7164bb4
MT
343ipfiredist() {
344 if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
a68fedca 345# if [ ! `ls -w1 $BASEDIR/packages/*.tar.gz | grep $1` ]; then
e7164bb4 346 echo "`date -u '+%b %e %T'`: Packaging $1" | tee -a $LOGFILE
e7164bb4
MT
347 chroot $LFS /tools/bin/env -i HOME=/root \
348 TERM=$TERM PS1='\u:\w\$ ' \
349 PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
350 VERSION=$VERSION \
351 CONFIG_ROOT=$CONFIG_ROOT \
352 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
353 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \
354 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
355 KVER=$KVER \
356 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
357 /bin/bash -x -c "cd /usr/src/lfs && \
358 make -f $1 LFS_BASEDIR=/usr/src dist" >>$LOGFILE 2>&1
359 if [ $? -ne 0 ]; then
360 exiterror "Packaging $1"
361 fi
a68fedca
MT
362# else
363# echo "`date -u '+%b %e %T'`: Packaging: The package $1 already exists"
364# fi
e7164bb4
MT
365 else
366 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
367 fi
e7164bb4
MT
368 return 0
369}
370
df5e82b3
MT
371
372installmake() {
373 if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
374 echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE
375 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1
376 if [ $? -ne 0 ]; then
377 exiterror "Download error in $1"
378 fi
379 cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
380 if [ $? -ne 0 ]; then
381 exiterror "md5sum error in $1, check file in cache or signature"
382 fi
383 chroot $LFS /tools/bin/env -i HOME=/root \
384 TERM=$TERM PS1='\u:\w\$ ' \
385 PATH=/usr/local/bin:/opt/$MACHINE-uClibc/usr/bin:/bin:/usr/bin:/sbin:/usr/sbin \
386 VERSION=$VERSION \
387 CONFIG_ROOT=$CONFIG_ROOT \
388 LFS_PASS="install" \
389 NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
390 CFLAGS="-Os" CXXFLAGS="-Os" \
391 CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \
392 KVER=$KVER \
393 BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \
394 /bin/bash -x -c "cd /usr/src/lfs && \
395 make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
396 if [ $? -ne 0 ]; then
397 exiterror "Building $*"
398 fi
399 else
400 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
401 fi
402 return 0
403}
404
405buildtoolchain() {
406 LOGFILE="$BASEDIR/log/_build.toolchain.log"
407 export LOGFILE
408 echo -ne "`date -u '+%b %e %T'`: Stage1 toolchain build \n" | tee -a $LOGFILE
409 # Build sed now, as we use some extensions
410 ORG_PATH=$PATH
411 NATIVEGCC=`gcc --version | grep GCC | awk {'print $3'}`
412 export NATIVEGCC GCCmajor=${NATIVEGCC:0:1} GCCminor=${NATIVEGCC:2:1} GCCrelease=${NATIVEGCC:4:1}
413 lfsmake1 ccache
414 lfsmake1 sed LFS_PASS=1
415 lfsmake1 m4 LFS_PASS=1
416 lfsmake1 bison LFS_PASS=1
417 lfsmake1 flex LFS_PASS=1
418 lfsmake1 binutils LFS_PASS=1
419 lfsmake1 gcc LFS_PASS=1
420 export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH
421
422 lfsmake1 linux
423 lfsmake1 tcl
424 lfsmake1 expect
425 lfsmake1 glibc
426 lfsmake1 dejagnu
427 lfsmake1 gcc LFS_PASS=2
428 lfsmake1 binutils LFS_PASS=2
429 lfsmake1 gawk
430 lfsmake1 coreutils
431 lfsmake1 bzip2
432 lfsmake1 gzip
433 lfsmake1 diffutils
434 lfsmake1 findutils
435 lfsmake1 make
436 lfsmake1 grep
437 lfsmake1 sed LFS_PASS=2
438 lfsmake1 m4 LFS_PASS=2
439 lfsmake1 bison LFS_PASS=2
440 lfsmake1 flex LFS_PASS=2
441 lfsmake1 gettext
442 lfsmake1 ncurses
443 lfsmake1 patch
444 lfsmake1 tar
445 lfsmake1 texinfo
446 lfsmake1 bash
447 lfsmake1 util-linux
448 lfsmake1 perl
449 export PATH=$ORG_PATH
450}
451
452buildbase() {
453 LOGFILE="$BASEDIR/log/_build.base.log"
454 export LOGFILE
455 echo -ne "`date -u '+%b %e %T'`: Stage2 linux base build \n" | tee -a $LOGFILE
456 # Run LFS dynamic binary creation scripts one by one
457 lfsmake2 stage2
458 lfsmake2 makedev
459 lfsmake2 linux
460 lfsmake2 man-pages
461 lfsmake2 glibc
462 lfsmake2 binutils
463 lfsmake2 gcc
464 lfsmake2 coreutils
465 lfsmake2 zlib
466 lfsmake2 mktemp
467 lfsmake2 iana-etc
468 lfsmake2 findutils
469 lfsmake2 gawk
470 lfsmake2 ncurses
471 lfsmake2 vim
472 lfsmake2 m4
473 lfsmake2 bison
474 lfsmake2 less
475 lfsmake2 groff
476 lfsmake2 sed
477 lfsmake2 flex
478 lfsmake2 gettext
479 lfsmake2 net-tools
480 lfsmake2 inetutils
481 lfsmake2 perl
482 lfsmake2 texinfo
483 lfsmake2 autoconf
484 lfsmake2 automake
485 lfsmake2 bash
486 lfsmake2 file
487 lfsmake2 libtool
488 lfsmake2 bzip2
489 lfsmake2 diffutils
490 lfsmake2 ed
491 lfsmake2 kbd
492 lfsmake2 e2fsprogs
493 lfsmake2 grep
494 if [ 'i386' = $MACHINE ]; then
495 lfsmake2 grub
496 elif [ 'alpha' = $MACHINE ]; then
497 lfsmake2 aboot
498 fi
499 lfsmake2 gzip
500 lfsmake2 man
501 lfsmake2 make
502 lfsmake2 modutils
503 lfsmake2 patch
504 lfsmake2 procinfo
505 lfsmake2 procps
506 lfsmake2 psmisc
507 lfsmake2 shadow
508 lfsmake2 sysklogd
509 lfsmake2 sysvinit
510 lfsmake2 tar
511 lfsmake2 util-linux
512}
513
514buildipcop() {
907cd036
MT
515 # Run IPFire make scripts one by one
516 LOGFILE="$BASEDIR/log/_build.ipfire.log"
df5e82b3
MT
517 export LOGFILE
518 echo -ne "`date -u '+%b %e %T'`: Stage3 $NAME build \n" | tee -a $LOGFILE
519
520 # Build these first as some of the kernel packages below rely on
521 # these for some of their client program functionality
522 ipcopmake configroot
523 ipcopmake dhcp
524 ipcopmake dhcpcd
525 ipcopmake libusb
526 ipcopmake libpcap
527 ipcopmake linux-atm
528 ipcopmake ppp
529 ipcopmake rp-pppoe
530 ipcopmake unzip
531 # Do SMP now
532 if [ 'i386' = $MACHINE ]; then
533 # abuse the SMP flag, and make an minimal installer kernel first
534 # so that the boot floppy always works.....
3e45cc09
MT
535 ipcopmake linux LFS_PASS=ipfire SMP=installer
536 ipcopmake linux LFS_PASS=ipfire SMP=1
df5e82b3
MT
537 ipcopmake 3cp4218 SMP=1
538 ipcopmake amedyn SMP=1
539 ipcopmake cxacru SMP=1
540 ipcopmake eagle SMP=1
541
542 # These are here because they have i386 only binary libraries
543 # included in the package.
544 ipcopmake cnx_pci SMP=1
545 ipcopmake fcdsl SMP=1
546 ipcopmake fcdsl2 SMP=1
547 ipcopmake fcdslsl SMP=1
548 ipcopmake fcdslusb SMP=1
549 ipcopmake fcdslslusb SMP=1
6ca65b88 550 ipcopmake fcpci SMP=1
ff7df9d4 551 ipcopmake fcclassic SMP=1
df5e82b3
MT
552 ipcopmake pulsar SMP=1
553 ipcopmake unicorn SMP=1
554 fi
555
3e45cc09 556 ipcopmake linux LFS_PASS=ipfire
df5e82b3
MT
557 ipcopmake 3cp4218
558 ipcopmake amedyn
559 ipcopmake cxacru
560 ipcopmake eciadsl
561 ipcopmake eagle
562 ipcopmake speedtouch
563 if [ 'i386' = $MACHINE ]; then
564 # These are here because they have i386 only binary libraries
565 # included in the package.
566 ipcopmake cnx_pci
567 ipcopmake fcdsl
568 ipcopmake fcdsl2
569 ipcopmake fcdslsl
570 ipcopmake fcdslusb
6ca65b88 571 ipcopmake fcdslslusb
ff7df9d4
MT
572 ipcopmake fcpci
573 ipcopmake fcclassic
df5e82b3
MT
574 ipcopmake pulsar
575 ipcopmake unicorn
576 fi
577
578 ipcopmake pcmcia-cs
579 ipcopmake expat
580 ipcopmake gdbm
581 ipcopmake gmp
582 ipcopmake openssl
583 ipcopmake python
584 ipcopmake libnet
585 ipcopmake libpng
586 ipcopmake gd
587 ipcopmake popt
588 ipcopmake slang
589 ipcopmake newt
590 ipcopmake libcap
591 ipcopmake pciutils
592 ipcopmake pcre
593 ipcopmake apache
594 ipcopmake arping
595 ipcopmake beep
596 ipcopmake bind
597 ipcopmake capi4k-utils
598 ipcopmake cdrtools
599 ipcopmake dnsmasq
600 ipcopmake dosfstools
601 ipcopmake ethtool
602 ipcopmake ez-ipupdate
603 ipcopmake fcron
604 ipcopmake perl-GD
605 ipcopmake gnupg
606 ipcopmake hdparm
607 ipcopmake ibod
608 ipcopmake initscripts
609 ipcopmake iptables
610 ipcopmake ipac-ng
611 ipcopmake ipaddr
612 ipcopmake iproute2
613 ipcopmake iptstate
614 ipcopmake iputils
78331e30 615 ipcopmake l7-protocols
df5e82b3
MT
616 ipcopmake isapnptools
617 ipcopmake isdn4k-utils
618 ipcopmake kudzu
619 ipcopmake logrotate
620 ipcopmake logwatch
621 ipcopmake mingetty
622 ipcopmake misc-progs
623 ipcopmake mtools
624 ipcopmake nano
625 ipcopmake nash
626 ipcopmake nasm
627 ipcopmake URI
628 ipcopmake HTML-Tagset
629 ipcopmake HTML-Parser
630 ipcopmake Compress-Zlib
631 ipcopmake Digest
632 ipcopmake Digest-SHA1
633 ipcopmake Digest-HMAC
634 ipcopmake libwww-perl
635 ipcopmake Net-DNS
636 ipcopmake Net-IPv4Addr
637 ipcopmake Net_SSLeay
4f8b6695
MT
638 ipcopmake IO-Stringy
639 ipcopmake Unix-Syslog
640 ipcopmake Mail-Tools
641 ipcopmake MIME-Tools
642 ipcopmake Net-Server
643 ipcopmake Convert-TNEF
644 ipcopmake Convert-UUlib
645 ipcopmake Archive-Tar
646 ipcopmake Archive-Zip
f28d0ddc 647 ipcopmake Text-Tabs+Wrap
90350ff3 648 ipcopmake Locale-Country
dace10b5 649 ipcopmake GeoIP
df8c7810 650 ipcopmake fwhits
6d4147d2
MT
651 ipcopmake berkeley
652 ipcopmake BerkeleyDB ## The Perl module
df5e82b3
MT
653 ipcopmake noip_updater
654 ipcopmake ntp
655 ipcopmake oinkmaster
656 ipcopmake openssh
657 ipcopmake openswan
658 ipcopmake pptpclient
659 ipcopmake rrdtool
660 ipcopmake setserial
661 ipcopmake setup
662 ipcopmake snort
663 #ipcopmake speedycgi
6d4147d2
MT
664 ipcopmake saslauthd PASS=1
665 ipcopmake openldap
df5e82b3
MT
666 ipcopmake squid
667 ipcopmake squid-graph
60cbd6e7 668 ipcopmake squidguard
df5e82b3
MT
669 ipcopmake tcpdump
670 ipcopmake traceroute
671 ipcopmake vlan
5fcb6d5a 672 #ipcopmake wireless
df5e82b3
MT
673 ipcopmake libsafe
674 ipcopmake 3c5x9setup
894c6feb 675# echo -ne "`date -u '+%b %e %T'`: Building ### IPFire modules ### \n" | tee -a $LOGFILE
b34fd95d 676 ipcopmake pakfire
6ef0bff8 677 ipcopmake startscripts
5e69ef1a 678## Zuerst die Libs und dann die Programme. Ordnung muss sein!
6ef0bff8 679 ipcopmake java
5e69ef1a 680 ipcopmake libtiff
c3defe9b 681 ipcopmake libjpeg
a7b1824c
MT
682 ipcopmake lcms
683 ipcopmake libmng
684 ipcopmake freetype
685 ipcopmake bootsplash
5e69ef1a
MT
686 ipcopmake libxml2
687 ipcopmake spandsp
688 ipcopmake lzo
6ef0bff8 689 ipcopmake openvpn
f8e5510c
MT
690 ipcopmake pkg-config
691 ipcopmake glib
180cd3be 692 ipcopmake xampp
5e69ef1a
MT
693 ipcopmake pam
694 ipcopmake pammysql
371d9df0 695 ipcopmake saslauthd PASS=2
a31b2bc4 696 ipcopmake xinetd
316160b0
MT
697 ipcopmake ghostscript
698 ipcopmake cups
b34fd95d 699# ipcopmake lpd ## Im Moment aus, da CUPS vorhanden ist.
98d413ac 700 ipcopmake samba
5e69ef1a
MT
701 ipcopmake sudo
702 ipcopmake mc
703 ipcopmake pwlib
704 ipcopmake openh323
1fe6c87b 705 ipcopmake wget
60cbd6e7 706 ipcopmake wput
1fe6c87b 707 ipcopmake bridge-utils
3e45cc09
MT
708 ipcopmake screen
709 ipcopmake hddtemp
710 ipcopmake htop
711 ipcopmake lynx
b34fd95d 712 echo -ne "`date -u '+%b %e %T'`: Building ### Mailserver ### \n" | tee -a $LOGFILE
94025eea 713 ipcopmake postfix
6c666a3b 714 ipcopmake procmail
93dc5548
MT
715 ipcopmake fetchmail
716 ipcopmake cyrusimap
f28d0ddc 717 ipcopmake web-cyradm
33a31f1a 718 ipcopmake mailx
f9315063
MT
719 ipcopmake clamav
720 ipcopmake razor
4f8b6695 721 ipcopmake spamassassin
f28d0ddc 722# ipcopmake amavisd
b34fd95d 723 echo -ne "`date -u '+%b %e %T'`: Building ### VoIP-Server ### \n" | tee -a $LOGFILE
94025eea 724 ipcopmake stund
b684b13b
MT
725 ipcopmake zaptel
726 ipcopmake libpri
727 ipcopmake bristuff
728# ipcopmake asterisk
894c6feb 729 ipcopmake mpg123
b34fd95d 730 echo -ne "`date -u '+%b %e %T'`: Building ### MP3-Server ### \n" | tee -a $LOGFILE
316160b0
MT
731 ipcopmake lame
732 ipcopmake gnump3d
6ef0bff8
MT
733 echo -ne "`date -u '+%b %e %T'`: Building ### P2P-Clients ### \n" | tee -a $LOGFILE
734 ipcopmake applejuice
907cd036 735 ipcopmake edonkeyclc
894c6feb 736# ipcopmake sane
3e45cc09
MT
737 echo -ne "`date -u '+%b %e %T'`: Building ### Net-Tools ### \n" | tee -a $LOGFILE
738 ipcopmake ntop
894c6feb 739# ipcopmake rsync
3b9f6349 740 ipcopmake tcpwrapper
769a61c5 741 ipcopmake portmap
894c6feb 742 ipcopmake nfs
907cd036 743 ipcopmake nmap
3e45cc09 744 ipcopmake iftop
ef05c8bb 745 ipcopmake ncftp
ca35618d 746 ipcopmake cftp
60cbd6e7 747 ipcopmake etherwake
33a31f1a 748 ipcopmake ethereal
0eab8e84 749# ipcopmake stunnel # Ausgeschaltet, weil wir es doch nicht nutzen
df5e82b3
MT
750}
751
752buildinstaller() {
753 # Run installer scripts one by one
754 LOGFILE="$BASEDIR/log/_build.installer.log"
755 export LOGFILE
756 echo -ne "`date -u '+%b %e %T'`: Stage4 installer build \n" | tee -a $LOGFILE
757 if [ 'i386' = $MACHINE ]; then
758 ipcopmake syslinux
759 ipcopmake as86
760 ipcopmake mbr
761 ipcopmake uClibc
762 fi
763 installmake busybox
764 installmake sysvinit
765 installmake e2fsprogs
766 installmake misc-progs
767 installmake slang
768 installmake util-linux
769 installmake newt
770 installmake pciutils
771 installmake pcmcia-cs
772 installmake kbd
773 installmake installer
774 installmake scsi.img
775 installmake driver.img
776 installmake initrd
777 installmake boot.img
778}
779
780buildpackages() {
781 LOGFILE="$BASEDIR/log/_build.packages.log"
782 export LOGFILE
783 echo "... see detailed log in _build.*.log files" >> $LOGFILE
784 echo -ne "`date -u '+%b %e %T'`: Stage5 packages build \n" | tee -a $LOGFILE
785 # Strip files
786 echo "`date -u '+%b %e %T'`: Stripping files" | tee -a $LOGFILE
787 find $LFS/lib $LFS/usr/lib $LFS/usr/share/rrdtool-* $LFS/install ! -type l \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
788 ! -name 'libc.so' ! -name 'libpthread.so' ! -name 'libcrypto.so.0.9.7.sha1' \
90350ff3 789 -exec $LFS/tools/bin/strip --strip-all {} \; >> $LOGFILE 2>&1
df5e82b3
MT
790 # add -ls before -exec if you want to verify what files are stripped
791
792 find $LFS/{,s}bin $LFS/usr/{,s}bin $LFS/usr/local/{,s}bin ! -type l \
793 -exec file {} \; | grep " ELF " | cut -f1 -d ':' | xargs $LFS/tools/bin/strip --strip-all >> $LOGFILE 2>&1
794 # there add -v to strip to verify
795
796 if [ 'i386' = $MACHINE ]; then
797 # Create fcdsl packages
798 echo "`date -u '+%b %e %T'`: Building fcdsl tgz" | tee -a $LOGFILE
799 cp $LFS/install/images/fcdsl/license.txt $LFS >> $LOGFILE 2>&1
800 touch $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}
801 cd $LFS && tar cvfz $LFS/install/images/$SNAME-fcdsl-$VERSION.$MACHINE.tgz \
802 lib/modules/$KVER/misc/fcdsl*.o.gz \
803 lib/modules/$KVER-smp/misc/fcdsl*.o.gz \
804 usr/lib/isdn/{fds?base.bin,fd?ubase.frm} \
805 etc/fcdsl/fcdsl*.conf \
806 etc/drdsl/{drdsl,drdsl.ini} \
807 license.txt \
808 var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} >> $LOGFILE 2>&1
809 rm -f $LFS/license.txt >> $LOGFILE 2>&1
810 cd $BASEDIR
811 fi
df5e82b3
MT
812
813 # Generating list of packages used
814 echo "`date -u '+%b %e %T'`: Generating packages list from logs" | tee -a $LOGFILE
815 rm -f $BASEDIR/doc/packages-list
816 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
817 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
3ea75603 818 echo " * `basename $i`" >>$BASEDIR/doc/packages-list
df5e82b3
MT
819 fi
820 done
3ea75603 821 echo "====== List of softwares used to build $NAME Version: $VERSION ======" > $BASEDIR/doc/packages-list.txt
e67a57fe 822 grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipcop$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$' \
df5e82b3
MT
823 $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt
824 rm -f $BASEDIR/doc/packages-list
c9673262 825 # packages-list.txt is ready to be displayed for wiki page
df5e82b3
MT
826
827 # Create ISO for CDRom and USB-superfloppy
c3defe9b 828 ipcopmake cdrom
e67a57fe 829 rm -f $LFS/install/images/*usb*
c3defe9b 830 cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1
c9673262 831
e67a57fe
MT
832 ipfirepackages
833
834 # Cleanup
835 stdumount
836 rm -rf $BASEDIR/build/tmp/*
837
838 # Generating total list of files
839 echo "`date -u '+%b %e %T'`: Generating files list from logs" | tee -a $LOGFILE
840 rm -f $BASEDIR/log/FILES
841 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
842 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
843 echo "##" >>$BASEDIR/log/FILES
844 echo "## `basename $i`" >>$BASEDIR/log/FILES
845 echo "##" >>$BASEDIR/log/FILES
846 cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES
847 fi
848 done
849
850 cd $PWD
851
852}
853
854ipfirepackages() {
013a23e2
MT
855 if [ -d "$BASEDIR/packages" ]; then
856 for i in `ls $BASEDIR/packages`; do
857 touch $BASEDIR/build/install/packages/$i.empty
858 done
859 fi
f0ca8c34 860 ipfiredist amavisd
78331e30 861 ipfiredist applejuice
b684b13b 862 # ipfiredist asterisk
c7acba4a 863 ipfiredist clamav
483f59cd 864 ipfiredist cups
78331e30
MT
865 ipfiredist cyrusimap
866 ipfiredist fetchmail
867 ipfiredist gnump3d
0d0521b6 868 ipfiredist java
78331e30
MT
869 ipfiredist lame
870 ipfiredist libtiff
871 ipfiredist libxml2
f0ca8c34
MT
872 ipfiredist mailx
873 ipfiredist nfs
874 ipfiredist nmap
3e45cc09 875 ipfiredist ntop
78331e30 876 ipfiredist postfix
371d9df0 877 ipfiredist procmail
90350ff3 878 ipfiredist samba
f0ca8c34 879 ipfiredist spamassassin
f28d0ddc 880 ipfiredist web-cyradm
483f59cd 881 ipfiredist xampp
78331e30
MT
882 ipfiredist xinetd
883 test -d $BASEDIR/packages || mkdir $BASEDIR/packages
a8b159e7 884 mv -f $LFS/install/packages/*.{tar.gz,md5} $BASEDIR/packages >> $LOGFILE 2>&1
483f59cd 885 rm -rf $BASEDIR/build/install/packages/*
df5e82b3
MT
886}
887
888# See what we're supposed to do
889case "$1" in
890build)
891 BUILDMACHINE=`uname -m`
21757737 892 PACKAGE=`ls -v -r $BASEDIR/cache/$SNAME-1.4-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
df5e82b3
MT
893 #only restore on a clean disk
894 if [ ! -f log/perl-*-tools ]; then
895 if [ ! -n "$PACKAGE" ]; then
896 echo "`date -u '+%b %e %T'`: Full toolchain compilation" | tee -a $LOGFILE
897 prepareenv
898 buildtoolchain
899 else
900 PACKAGENAME=${PACKAGE%.tar.gz}
901 echo "`date -u '+%b %e %T'`: Restore from $PACKAGE" | tee -a $LOGFILE
902 if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
903 tar zxf $PACKAGE
904 prepareenv
905 else
906 exiterror "$PACKAGENAME md5 did not match, check downloaded package"
907 fi
908 fi
909 else
910 echo "`date -u '+%b %e %T'`: Using installed toolchain" | tee -a $LOGFILE
911 prepareenv
912 fi
5cfe86e6 913
df5e82b3
MT
914 buildbase
915 buildipcop
5cfe86e6
HS
916
917 # Setzen des IPFire Builds
8af06406 918 if [ "$FIREBUILD" ]; then
e57bc1fd 919 echo "$FIREBUILD" > $BASEDIR/build/var/ipfire/firebuild
5cfe86e6 920 else
e57bc1fd 921 echo "_(OvO)_" > $BASEDIR/build/var/ipfire/firebuild
5cfe86e6
HS
922 fi
923
df5e82b3
MT
924 buildinstaller
925 buildpackages
926 ;;
927shell)
928 # enter a shell inside LFS chroot
929 # may be used to changed kernel settings
930 prepareenv
931 entershell
932 ;;
933changelog)
d1dd6669 934 echo -n "Loading new Changelog from SVN: "
f9315063 935 svn log http://svn.ipfire.eu/svn/ipfire > doc/ChangeLog
d1dd6669 936 echo "Finished!"
df5e82b3
MT
937 ;;
938check)
939 echo "Checking sources files availability on the web"
940 if [ ! -d $DIR_CHK ]; then
941 mkdir -p $DIR_CHK
942 fi
943 FINISHED=0
944 cd $BASEDIR/lfs
945 for c in `seq $MAX_RETRIES`; do
946 if (( FINISHED==1 )); then
947 break
948 fi
949 FINISHED=1
950 cd $BASEDIR/lfs
951 for i in *; do
952 if [ -f "$i" -a "$i" != "Config" ]; then
953 make -s -f $i MACHINE=$MACHINE LFS_BASEDIR=$BASEDIR ROOT=$BASEDIR/build \
954 MESSAGE="$i\t ($c/$MAX_RETRIES)" check
955 if [ $? -ne 0 ]; then
956 echo "Check : wget error in lfs/$i"
957 FINISHED=0
958 fi
959 fi
960 done
961 done
962 cd -
963 ;;
964checkclean)
965 echo "Erasing sources files availability tags"
966 rm -rf $DIR_CHK/*
967 ;;
968clean)
969 for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
970 $LOSETUP -d $i 2>/dev/null
971 done
972 for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
973 umount $i
974 done
975 stdumount
976 for i in `seq 0 7`; do
977 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
978 umount /dev/loop${i} 2>/dev/null;
979 losetup -d /dev/loop${i} 2>/dev/null;
980 fi;
981 done
982 rm -rf $BASEDIR/build
983 rm -rf $BASEDIR/cdrom
f9315063 984 rm -rf $BASEDIR/packages
df5e82b3 985 rm -rf $BASEDIR/log
df5e82b3
MT
986 if [ -h /tools ]; then
987 rm -f /tools
988 fi
989 ;;
990dist)
4f8b6695 991 echo -ne "Updating & building source package from SVN: "
a414d696
MT
992 svn up > /dev/null
993 svn export http://svn.ipfire.eu/svn/ipfire ipfire-source/ --force > /dev/null
ecc898f7
MT
994 tar cfz ipfire-source-`date +'%Y-%m-%d'`-r`svn info | grep Revision | cut -c 11-`.tar.gz ipfire-source
995 rm ipfire-source/ -r
4f8b6695 996 echo "Finished!"
df5e82b3 997 ;;
f8e5510c 998newpak)
a9b17001
MT
999 # create structure for a new package
1000 echo -e "Name of the new package: $2"
1001 if [ ! -f "lfs/$2" ]; then
1002 echo "`date -u '+%b %e %T'`: Creating directory src/paks/$2"
1003 mkdir -p src/paks/$2
1004 cd src/paks/$2
f8e5510c 1005 echo "`date -u '+%b %e %T'`: Creating files"
a9b17001
MT
1006 cp $BASEDIR/lfs/postfix $BASEDIR/lfs/$2
1007
f8e5510c 1008 touch ROOTFILES
f8e5510c 1009 touch {,un}install.sh
a9b17001 1010 ## install.sh
f8e5510c
MT
1011 echo '#!/bin/bash' > install.sh
1012 echo '#' >> install.sh
1013 echo '#################################################################' >> install.sh
1014 echo '# #' >> install.sh
1015 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> install.sh
1016 echo '# #' >> install.sh
1017 echo '#################################################################' >> install.sh
1018 echo '#' >> install.sh
1019 echo '# Extract the files' >> install.sh
1020 echo 'tar xfz files.tgz -C /' >> install.sh
a9b17001
MT
1021 echo 'cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2' >> install.sh
1022 ## uninstall.sh
f8e5510c
MT
1023 echo '#!/bin/bash' > uninstall.sh
1024 echo '#################################################################' >> uninstall.sh
1025 echo '# #' >> uninstall.sh
1026 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> uninstall.sh
1027 echo '# #' >> uninstall.sh
1028 echo '#################################################################' >> uninstall.sh
1029 echo '#' >> uninstall.sh
1030 echo '# Delete the files' >> uninstall.sh
1031 echo '## Befehl fehlt noch' >> uninstall.sh
a9b17001 1032 echo 'rm -f /opt/pakfire/installed/ROOTFILES.$2' >> uninstall.sh
f8e5510c 1033 echo "`date -u '+%b %e %T'`: Adding files to SVN"
a9b17001
MT
1034 cd - && svn add lfs/$2 && svn add src/paks/$2
1035
1036 echo -n "Do you want to remove the folders? [y/n]"
1037 read REM
1038 if [ "$REM" == "y" ]; then
1039 echo "Removing the folders..."
1040 svn del src/paks/$2 --force
1041 else
1042 echo "Folders are kept."
1043 fi
df5e82b3 1044 else
a9b17001 1045 echo "$2 already exists"
df5e82b3 1046 fi
df5e82b3
MT
1047 exit 0
1048 ;;
1049prefetch)
1050 if [ ! -d $BASEDIR/cache ]; then
1051 mkdir $BASEDIR/cache
1052 fi
1053 mkdir -p $BASEDIR/log
1054 echo "`date -u '+%b %e %T'`:Preload all source files" | tee -a $LOGFILE
1055 FINISHED=0
1056 cd $BASEDIR/lfs
1057 for c in `seq $MAX_RETRIES`; do
1058 if (( FINISHED==1 )); then
1059 break
1060 fi
1061 FINISHED=1
1062 cd $BASEDIR/lfs
1063 for i in *; do
1064 if [ -f "$i" -a "$i" != "Config" ]; then
1065 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
1066 if [ $? -ne 0 ]; then
1067 echo "Prefetch : wget error in lfs/$i"
1068 FINISHED=0
1069 else
1070 if [ $c -eq 1 ]; then
1071 echo "Prefetch : lfs/$i files loaded"
1072 fi
1073 fi
1074 fi
1075 done
1076 done
1077 echo "Prefetch : verifying md5sum"
1078 ERROR=0
1079 for i in *; do
1080 if [ -f "$i" -a "$i" != "Config" ]; then
1081 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
1082 if [ $? -ne 0 ]; then
1083 echo "md5 difference in lfs/$i"
1084 ERROR=1
1085 fi
1086 fi
1087 done
1088 if [ $ERROR -eq 0 ]; then
1089 echo "Prefetch : all files md5sum match"
1090 fi
1091 cd -
1092 ;;
df5e82b3
MT
1093toolchain)
1094 prepareenv
1095 buildtoolchain
1096 BUILDMACHINE=`uname -m`
1097 echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
1098 cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
1099 build/{bin,etc,usr/bin,usr/local} \
1100 build/tools/{bin,etc,*-linux-gnu,include,lib,libexec,sbin,share,var} \
1101 log >> $LOGFILE
1102 md5sum cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
1103 > cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5
1104 stdumount
1105 ;;
1106gettoolchain)
1107 BUILDMACHINE=`uname -m`
1108 # arbitrary name to be updated in case of new toolchain package upload
e29556d8
MT
1109 PACKAGE=$SNAME-1.4-toolchain-$BUILDMACHINE
1110 URL_IPFIRE=`grep URL_IPFIRE lfs/Config | awk '{ print $3 }'`
df5e82b3
MT
1111 echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
1112 cd $BASEDIR/cache
21757737 1113 wget $URL_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5 >& /dev/null
df5e82b3
MT
1114 if [ $? -ne 0 ]; then
1115 echo "`date -u '+%b %e %T'`: error downloading toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE
21757737
MT
1116# else
1117# if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
1118# echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
1119# echo "`date -u '+%b %e %T'`: Uncompressing toolchain" | tee -a $LOGFILE
1120# cd $BASEDIR && tar xfz cache/$PACKAGE.tar.gz -C .
1121# rm -f $BASEDIR/cache/$PACKAGE.{tar.gz,md5}
1122# else
1123# exiterror "$PACKAGE.md5 did not match, check downloaded package"
1124# fi
df5e82b3
MT
1125 fi
1126 ;;
78331e30
MT
1127paks)
1128 prepareenv
c7acba4a
MT
1129 # buildpackages
1130 ipfirepackages
78331e30 1131 ;;
a9b17001
MT
1132update)
1133 echo "Load the latest source-files:"
1134 svn update
1135 ;;
3b9f6349
MT
1136commit)
1137 echo "Upload the changed files:"
3b9f6349 1138 svn commit
ff7df9d4 1139 ./make.sh sync
e67a57fe 1140 svn up > /dev/null
3b9f6349 1141 ;;
f9315063
MT
1142make)
1143 echo "Do a complete compile:"
78331e30 1144 ./make.sh prefetch && ./make.sh gettoolchain && ./make.sh build
4f8b6695
MT
1145 ;;
1146diff)
1147 echo -ne "Make a local diff to last SVN revision: "
1148 svn diff > ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff
1149 echo "Finished!"
1150 echo "Diff was successfully saved to ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff"
f9315063 1151 ;;
0eab8e84
MT
1152sync)
1153 echo -e "Syncing Cache to FTP:"
a68fedca
MT
1154 if [ -f .pass ]; then
1155 PASS="`cat .pass`"
1156 else
1157 echo -ne "Password for mirror.ipfire.org: "; read PASS
1158 fi
ef05c8bb 1159 rm -f doc/packages-to-remove-from-ftp
0eab8e84
MT
1160 ncftpls -u web3 -p $PASS ftp://mirror.ipfire.org/html/source-packages/source/ > ftplist
1161 for i in `ls -w1 cache/`; do
1162 grep $i ftplist
1163 if [ "$?" -ne "0" ]; then
1164 ncftpput -u web3 -p $PASS mirror.ipfire.org /html/source-packages/source cache/$i
1165 if [ "$?" -eq "0" ]; then
1166 echo -e "$i was successfully uploaded to the ftp server."
1167 else
1168 echo -e "There was an error while uploading $i to the ftp server."
1169 fi
1170 fi
1171 done
ef05c8bb
MT
1172 for i in `cat ftplist`; do
1173 ls -w1 cache/ | grep $i
1174 if [ "$?" -eq "1" ]; then
1175 echo $i | grep -v toolchain >> doc/packages-to-remove-from-ftp
1176 fi
1177 done
0eab8e84
MT
1178 rm -f ftplist
1179 ;;
0d0521b6 1180pub-iso)
e67a57fe 1181 echo -e "Upload the ISO to the beta-mirror!"
a68fedca
MT
1182 if [ -f .pass ]; then
1183 PASS="`cat .pass`"
1184 else
1185 echo -ne "Password for mirror.ipfire.org: "; read PASS
1186 fi
e67a57fe
MT
1187 ncftpls -u web3 -p $PASS ftp://mirror.ipfire.org/html/source-packages/beta/ | grep `svn info | grep Revision | cut -c 11-`
1188 if [ "$?" -eq "1" ]; then
1189 cp $BASEDIR/ipfire-install-1.4.i386.iso $BASEDIR/ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso
1190 md5sum ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso > ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso.md5
1191 ncftpput -u web3 -p $PASS mirror.ipfire.org /html/source-packages/beta/ ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso
1192 ncftpput -u web3 -p $PASS mirror.ipfire.org /html/source-packages/beta/ ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso.md5
1193 if [ "$?" -eq "0" ]; then
1194 echo -e "The ISO of Revision `svn info | grep Revision | cut -c 11-` was successfully uploaded to the ftp server."
1195 else
1196 echo -e "There was an error while uploading the ISO to the ftp server."
1197 fi
1198 else
1199 echo -e "File with name ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso already exists on the ftp server!"
1200 fi
1201 rm -f ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso{,.md5}
1202 ;;
0d0521b6
MT
1203pub-paks)
1204 echo -e "Upload the packages to the beta-mirror!"
a68fedca
MT
1205 if [ -f .pass ]; then
1206 PASS="`cat .pass`"
1207 else
1208 echo -ne "Password for mirror.ipfire.org: "; read PASS
1209 fi
0d0521b6
MT
1210 ncftpput -z -u web3 -p $PASS mirror.ipfire.org /html/source-packages/packages/ packages/*
1211 if [ "$?" -eq "0" ]; then
1212 echo -e "The packages were successfully uploaded to the ftp server."
1213 else
1214 echo -e "There was an error while uploading the packages to the ftp server."
1215 fi
1216 ;;
df5e82b3 1217*)
0d0521b6 1218 echo "Usage: $0 {build|changelog|check|checkclean|clean|commit|diff|dist|gettoolchain|make|newpak|prefetch|pub-iso|pub-paks|shell|sync|toolchain|update}"
df5e82b3
MT
1219 cat doc/make.sh-usage
1220 exit 1
1221 ;;
3ea75603 1222esac