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