]> git.ipfire.org Git - ipfire-2.x.git/blame_incremental - make.sh
Großes Update:
[ipfire-2.x.git] / make.sh
... / ...
CommitLineData
1#!/bin/bash
2#
3############################################################################
4# #
5# This file is part of the IPFire Firewall. #
6# #
7# IPFire is free software; you can redistribute it and/or modify #
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# #
12# IPFire is distributed in the hope that it will be useful, #
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 #
18# along with IPFire; if not, write to the Free Software #
19# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
20# #
21# Copyright (C) 2006 IPFire-Team <entwickler@ipfire.org>. #
22# #
23############################################################################
24#
25
26 NAME="IPFire" # Software name
27 SNAME="ipfire" # Short name
28 VERSION="1.4" # Version number
29 SLOGAN="We secure your network" # Software slogan
30 CONFIG_ROOT=/var/ipfire # Configuration rootdir
31 NICE=10
32 MAX_RETRIES=3 # prefetch/check loop
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;
76 umount $BASEDIR/build/proc 2>/dev/null;
77 umount $BASEDIR/build/install/mnt 2>/dev/null;
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;
81 umount $BASEDIR/build/usr/src/doc 2>/dev/null;
82 umount $BASEDIR/build/usr/src/html 2>/dev/null;
83 umount $BASEDIR/build/usr/src/langs 2>/dev/null;
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;
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
336ipfiredist() {
337 if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
338 if [ "`ls -w1 $BASEDIR/packages/ | grep $1; echo $?`" -ne "0" ]; then
339 echo "`date -u '+%b %e %T'`: Packaging $1" | tee -a $LOGFILE
340 cp -f $BASEDIR/src/scripts/make-packages.sh $BASEDIR/build/usr/local/bin
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
356 else
357 echo "`date -u '+%b %e %T'`: Package $1 already exists" | tee -a $LOGFILE
358 fi
359 else
360 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"
361 fi
362 return 0
363}
364
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() {
509 # Run IPFire make scripts one by one
510 LOGFILE="$BASEDIR/log/_build.ipfire.log"
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.....
529 ipcopmake linux LFS_PASS=ipcop SMP=installer
530 ipcopmake linux LFS_PASS=ipcop SMP=1
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
544 ipcopmake fcpci SMP=1
545 ipcopmake pulsar SMP=1
546 ipcopmake unicorn SMP=1
547 fi
548
549 ipcopmake linux LFS_PASS=ipcop
550 ipcopmake 3cp4218
551 ipcopmake amedyn
552 ipcopmake cxacru
553 ipcopmake eciadsl
554 ipcopmake eagle
555 ipcopmake speedtouch
556 if [ 'i386' = $MACHINE ]; then
557 # These are here because they have i386 only binary libraries
558 # included in the package.
559 ipcopmake cnx_pci
560 ipcopmake fcdsl
561 ipcopmake fcdsl2
562 ipcopmake fcdslsl
563 ipcopmake fcdslusb
564 ipcopmake fcdslslusb
565 ipcopmake fcpci
566 ipcopmake pulsar
567 ipcopmake unicorn
568 fi
569
570 ipcopmake pcmcia-cs
571 ipcopmake expat
572 ipcopmake gdbm
573 ipcopmake gmp
574 ipcopmake openssl
575 ipcopmake python
576 ipcopmake libnet
577 ipcopmake libpng
578 ipcopmake gd
579 ipcopmake popt
580 ipcopmake slang
581 ipcopmake newt
582 ipcopmake libcap
583 ipcopmake pciutils
584 ipcopmake pcre
585 ipcopmake apache
586 ipcopmake arping
587 ipcopmake beep
588 ipcopmake bind
589 ipcopmake capi4k-utils
590 ipcopmake cdrtools
591 ipcopmake dnsmasq
592 ipcopmake dosfstools
593 ipcopmake ethtool
594 ipcopmake ez-ipupdate
595 ipcopmake fcron
596 ipcopmake perl-GD
597 ipcopmake gnupg
598 ipcopmake hdparm
599 ipcopmake ibod
600 ipcopmake initscripts
601 ipcopmake iptables
602 ipcopmake ipac-ng
603 ipcopmake ipaddr
604 ipcopmake iproute2
605 ipcopmake iptstate
606 ipcopmake iputils
607 ipcopmake l7-protocols
608 ipcopmake isapnptools
609 ipcopmake isdn4k-utils
610 ipcopmake kudzu
611 ipcopmake logrotate
612 ipcopmake logwatch
613 ipcopmake mingetty
614 ipcopmake misc-progs
615 ipcopmake mtools
616 ipcopmake nano
617 ipcopmake nash
618 ipcopmake nasm
619 ipcopmake URI
620 ipcopmake HTML-Tagset
621 ipcopmake HTML-Parser
622 ipcopmake Compress-Zlib
623 ipcopmake Digest
624 ipcopmake Digest-SHA1
625 ipcopmake Digest-HMAC
626 ipcopmake libwww-perl
627 ipcopmake Net-DNS
628 ipcopmake Net-IPv4Addr
629 ipcopmake Net_SSLeay
630 ipcopmake IO-Stringy
631 ipcopmake Unix-Syslog
632 ipcopmake Mail-Tools
633 ipcopmake MIME-Tools
634 ipcopmake Net-Server
635 ipcopmake Convert-TNEF
636 ipcopmake Convert-UUlib
637 ipcopmake Archive-Tar
638 ipcopmake Archive-Zip
639 ipcopmake GeoIP
640 ipcopmake fwhits
641 ipcopmake noip_updater
642 ipcopmake ntp
643 ipcopmake oinkmaster
644 ipcopmake openssh
645 ipcopmake openswan
646 ipcopmake pptpclient
647 ipcopmake rrdtool
648 ipcopmake setserial
649 ipcopmake setup
650 ipcopmake snort
651 #ipcopmake speedycgi
652 ipcopmake squid
653 ipcopmake squid-graph
654 ipcopmake tcpdump
655 ipcopmake traceroute
656 ipcopmake vlan
657 #ipcopmake wireless
658 ipcopmake libsafe
659 ipcopmake 3c5x9setup
660 echo -ne "`date -u '+%b %e %T'`: Building ### IPFire modules ### \n" | tee -a $LOGFILE
661 ipcopmake pakfire
662 ipcopmake startscripts
663## Zuerst die Libs und dann die Programme. Ordnung muss sein!
664 ipcopmake berkeley
665 ipcopmake BerkeleyDB ## The Perl module
666 ipcopmake java
667 ipcopmake libtiff
668 ipcopmake libjpeg
669 ipcopmake libxml2
670 ipcopmake spandsp
671 ipcopmake lzo
672 ipcopmake openvpn
673 ipcopmake pkg-config
674 ipcopmake glib
675 ipcopmake xampp
676 ipcopmake pam
677 ipcopmake pammysql
678 ipcopmake saslauthd PASS=1
679 ipcopmake openldap
680 ipcopmake saslauthd PASS=2
681 ipcopmake xinetd
682 ipcopmake ghostscript
683 ipcopmake cups
684# ipcopmake lpd ## Im Moment aus, da CUPS vorhanden ist.
685 ipcopmake samba
686 ipcopmake sudo
687 ipcopmake mc
688 ipcopmake pwlib
689 ipcopmake openh323
690 ipcopmake wget
691 ipcopmake bridge-utils
692 echo -ne "`date -u '+%b %e %T'`: Building ### Mailserver ### \n" | tee -a $LOGFILE
693 ipcopmake postfix
694 ipcopmake fetchmail
695 ipcopmake cyrusimap
696 ipcopmake procmail
697 ipcopmake mailx
698 ipcopmake clamav
699 ipcopmake razor
700 ipcopmake spamassassin
701 ipcopmake amavisd
702 echo -ne "`date -u '+%b %e %T'`: Building ### VoIP-Server ### \n" | tee -a $LOGFILE
703 ipcopmake stund
704 ipcopmake asterisk
705 echo -ne "`date -u '+%b %e %T'`: Building ### MP3-Server ### \n" | tee -a $LOGFILE
706 ipcopmake lame
707 ipcopmake gnump3d
708 echo -ne "`date -u '+%b %e %T'`: Building ### P2P-Clients ### \n" | tee -a $LOGFILE
709 ipcopmake applejuice
710 ipcopmake edonkeyclc
711 ipcopmake sane
712 ipcopmake rsync
713 ipcopmake tcpwrapper
714 ipcopmake portmap
715 ipcopmake screen
716 ipcopmake nmap
717 ipcopmake htop
718 ipcopmake nfs
719 ipcopmake ncftp
720 ipcopmake ethereal
721# wget http://www.guzu.net/linux/hddtemp.db && mv hddtemp.db $BASEDIR/build/etc/hddtemp.db
722# ipcopmake hddtemp
723# ipcopmake stunnel # Ausgeschaltet, weil wir es doch nicht nutzen
724}
725
726buildinstaller() {
727 # Run installer scripts one by one
728 LOGFILE="$BASEDIR/log/_build.installer.log"
729 export LOGFILE
730 echo -ne "`date -u '+%b %e %T'`: Stage4 installer build \n" | tee -a $LOGFILE
731 if [ 'i386' = $MACHINE ]; then
732 ipcopmake syslinux
733 ipcopmake as86
734 ipcopmake mbr
735 ipcopmake uClibc
736 fi
737 installmake busybox
738 installmake sysvinit
739 installmake e2fsprogs
740 installmake misc-progs
741 installmake slang
742 installmake util-linux
743 installmake newt
744 installmake pciutils
745 installmake pcmcia-cs
746 installmake kbd
747 installmake installer
748 installmake scsi.img
749 installmake driver.img
750 installmake initrd
751 installmake boot.img
752}
753
754buildpackages() {
755 LOGFILE="$BASEDIR/log/_build.packages.log"
756 export LOGFILE
757 echo "... see detailed log in _build.*.log files" >> $LOGFILE
758 echo -ne "`date -u '+%b %e %T'`: Stage5 packages build \n" | tee -a $LOGFILE
759 # Strip files
760 echo "`date -u '+%b %e %T'`: Stripping files" | tee -a $LOGFILE
761 find $LFS/lib $LFS/usr/lib $LFS/usr/share/rrdtool-* $LFS/install ! -type l \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
762 ! -name 'libc.so' ! -name 'libpthread.so' ! -name 'libcrypto.so.0.9.7.sha1' \
763 -ls -exec $LFS/tools/bin/strip --strip-all {} \; >> $LOGFILE 2>&1
764 # add -ls before -exec if you want to verify what files are stripped
765
766 find $LFS/{,s}bin $LFS/usr/{,s}bin $LFS/usr/local/{,s}bin ! -type l \
767 -exec file {} \; | grep " ELF " | cut -f1 -d ':' | xargs $LFS/tools/bin/strip --strip-all >> $LOGFILE 2>&1
768 # there add -v to strip to verify
769
770 if [ 'i386' = $MACHINE ]; then
771 # Create fcdsl packages
772 echo "`date -u '+%b %e %T'`: Building fcdsl tgz" | tee -a $LOGFILE
773 cp $LFS/install/images/fcdsl/license.txt $LFS >> $LOGFILE 2>&1
774 touch $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}
775 cd $LFS && tar cvfz $LFS/install/images/$SNAME-fcdsl-$VERSION.$MACHINE.tgz \
776 lib/modules/$KVER/misc/fcdsl*.o.gz \
777 lib/modules/$KVER-smp/misc/fcdsl*.o.gz \
778 usr/lib/isdn/{fds?base.bin,fd?ubase.frm} \
779 etc/fcdsl/fcdsl*.conf \
780 etc/drdsl/{drdsl,drdsl.ini} \
781 license.txt \
782 var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} >> $LOGFILE 2>&1
783 rm -f $LFS/license.txt >> $LOGFILE 2>&1
784 cd $BASEDIR
785 fi
786
787# Create update for this version
788# echo "`date -u '+%b %e %T'`: Building update $VERSION tgz" | tee -a $LOGFILE
789# tar -cz -C $BASEDIR/build --files-from=$BASEDIR/updates/$VERSION/ROOTFILES.$MACHINE-$VERSION -f $BASEDIR/updates/$VERSION/patch.tar.gz --exclude='#*';
790# chmod 755 $BASEDIR/updates/$VERSION/setup
791# tar -cz -C $BASEDIR/updates/$VERSION -f $LFS/install/images/$SNAME-update-$VERSION.$MACHINE.tgz patch.tar.gz setup information
792# rm -f $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}
793
794 # Generating list of packages used
795 echo "`date -u '+%b %e %T'`: Generating packages list from logs" | tee -a $LOGFILE
796 rm -f $BASEDIR/doc/packages-list
797 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
798 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
799 echo " * `basename $i`" >>$BASEDIR/doc/packages-list
800 fi
801 done
802 echo "====== List of softwares used to build $NAME Version: $VERSION ======" > $BASEDIR/doc/packages-list.txt
803 grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipcop$\|setup$\|stage2$\|smp$\|tools$\|tools1$\|tools2$' \
804 $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt
805 rm -f $BASEDIR/doc/packages-list
806 # packages-list.txt is ready to be displayed for wiki page
807
808 # Create ISO for CDRom and USB-superfloppy
809 ipcopmake cdrom
810 cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1
811
812 ipfiredist applejuice
813 ipfiredist asterisk
814 ipfiredist cyrusimap
815 ipfiredist fetchmail
816 ipfiredist gnump3d
817 ipfiredist lame
818 ipfiredist libtiff
819 ipfiredist libxml2
820 ipfiredist mc
821 ipfiredist postfix
822 ipfiredist pwlib
823 ipfiredist sane
824 ipfiredist spandsp
825 ipfiredist sudo
826 ipfiredist xampp
827 ipfiredist xinetd
828 test -d $BASEDIR/packages || mkdir $BASEDIR/packages
829 mv -f $LFS/paks/*.tar.gz $LFS/paks/*.md5 $BASEDIR/packages >> $LOGFILE 2>&1
830 rm -rf $LFS/paks
831 rm -rf $BASEDIR/build/tmp/*
832
833 # Cleanup
834 stdumount
835 rm -rf $BASEDIR/build/tmp/*
836
837 # Generating total list of files
838 echo "`date -u '+%b %e %T'`: Generating files list from logs" | tee -a $LOGFILE
839 rm -f $BASEDIR/log/FILES
840 for i in `ls -1tr $BASEDIR/log/[^_]*`; do
841 if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
842 echo "##" >>$BASEDIR/log/FILES
843 echo "## `basename $i`" >>$BASEDIR/log/FILES
844 echo "##" >>$BASEDIR/log/FILES
845 cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES
846 fi
847 done
848
849 cd $PWD
850
851}
852
853# See what we're supposed to do
854case "$1" in
855build)
856 BUILDMACHINE=`uname -m`
857 PACKAGE=`ls -v -r $BASEDIR/cache/$SNAME-1.4.*-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
858 #only restore on a clean disk
859 if [ ! -f log/perl-*-tools ]; then
860 if [ ! -n "$PACKAGE" ]; then
861 echo "`date -u '+%b %e %T'`: Full toolchain compilation" | tee -a $LOGFILE
862 prepareenv
863 buildtoolchain
864 else
865 PACKAGENAME=${PACKAGE%.tar.gz}
866 echo "`date -u '+%b %e %T'`: Restore from $PACKAGE" | tee -a $LOGFILE
867 if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
868 tar zxf $PACKAGE
869 prepareenv
870 else
871 exiterror "$PACKAGENAME md5 did not match, check downloaded package"
872 fi
873 fi
874 else
875 echo "`date -u '+%b %e %T'`: Using installed toolchain" | tee -a $LOGFILE
876 prepareenv
877 fi
878 buildbase
879 buildipcop
880 buildinstaller
881 buildpackages
882 ;;
883shell)
884 # enter a shell inside LFS chroot
885 # may be used to changed kernel settings
886 prepareenv
887 entershell
888 ;;
889changelog)
890 echo -n "Loading new Changelog from SVN: "
891 svn log http://svn.ipfire.eu/svn/ipfire > doc/ChangeLog
892 echo "Finished!"
893 ;;
894check)
895 echo "Checking sources files availability on the web"
896 if [ ! -d $DIR_CHK ]; then
897 mkdir -p $DIR_CHK
898 fi
899 FINISHED=0
900 cd $BASEDIR/lfs
901 for c in `seq $MAX_RETRIES`; do
902 if (( FINISHED==1 )); then
903 break
904 fi
905 FINISHED=1
906 cd $BASEDIR/lfs
907 for i in *; do
908 if [ -f "$i" -a "$i" != "Config" ]; then
909 make -s -f $i MACHINE=$MACHINE LFS_BASEDIR=$BASEDIR ROOT=$BASEDIR/build \
910 MESSAGE="$i\t ($c/$MAX_RETRIES)" check
911 if [ $? -ne 0 ]; then
912 echo "Check : wget error in lfs/$i"
913 FINISHED=0
914 fi
915 fi
916 done
917 done
918 cd -
919 ;;
920checkclean)
921 echo "Erasing sources files availability tags"
922 rm -rf $DIR_CHK/*
923 ;;
924clean)
925 for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
926 $LOSETUP -d $i 2>/dev/null
927 done
928 for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
929 umount $i
930 done
931 stdumount
932 for i in `seq 0 7`; do
933 if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
934 umount /dev/loop${i} 2>/dev/null;
935 losetup -d /dev/loop${i} 2>/dev/null;
936 fi;
937 done
938 rm -rf $BASEDIR/build
939 rm -rf $BASEDIR/cdrom
940 rm -rf $BASEDIR/packages
941 rm -rf $BASEDIR/log
942 if [ -h /tools ]; then
943 rm -f /tools
944 fi
945 ;;
946dist)
947 echo -ne "Updating & building source package from SVN: "
948 svn up > /dev/null
949 svn export http://svn.ipfire.eu/svn/ipfire ipfire-source/ --force > /dev/null
950 tar cfz ipfire-source-`date +'%Y-%m-%d'`-r`svn info | grep Revision | cut -c 11-`.tar.gz ipfire-source
951 rm ipfire-source/ -r
952 echo "Finished!"
953 ;;
954newpak)
955 # create structure for a new package
956 echo -e "Name of the new package: $2"
957 if [ ! -f "lfs/$2" ]; then
958 echo "`date -u '+%b %e %T'`: Creating directory src/paks/$2"
959 mkdir -p src/paks/$2
960 cd src/paks/$2
961 echo "`date -u '+%b %e %T'`: Creating files"
962 cp $BASEDIR/lfs/postfix $BASEDIR/lfs/$2
963
964 touch ROOTFILES
965 touch CONFFILES
966 touch {,un}install.sh
967 ## install.sh
968 echo '#!/bin/bash' > install.sh
969 echo '#' >> install.sh
970 echo '#################################################################' >> install.sh
971 echo '# #' >> install.sh
972 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> install.sh
973 echo '# #' >> install.sh
974 echo '#################################################################' >> install.sh
975 echo '#' >> install.sh
976 echo '# Extract the files' >> install.sh
977 echo 'tar xfz files.tgz -C /' >> install.sh
978 echo 'cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2' >> install.sh
979 ## uninstall.sh
980 echo '#!/bin/bash' > uninstall.sh
981 echo '#################################################################' >> uninstall.sh
982 echo '# #' >> uninstall.sh
983 echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> uninstall.sh
984 echo '# #' >> uninstall.sh
985 echo '#################################################################' >> uninstall.sh
986 echo '#' >> uninstall.sh
987 echo '# Delete the files' >> uninstall.sh
988 echo '## Befehl fehlt noch' >> uninstall.sh
989 echo 'rm -f /opt/pakfire/installed/ROOTFILES.$2' >> uninstall.sh
990 echo "`date -u '+%b %e %T'`: Adding files to SVN"
991 cd - && svn add lfs/$2 && svn add src/paks/$2
992
993 echo -n "Do you want to remove the folders? [y/n]"
994 read REM
995 if [ "$REM" == "y" ]; then
996 echo "Removing the folders..."
997 svn del src/paks/$2 --force
998 else
999 echo "Folders are kept."
1000 fi
1001 else
1002 echo "$2 already exists"
1003 fi
1004 exit 0
1005 ;;
1006prefetch)
1007 if [ ! -d $BASEDIR/cache ]; then
1008 mkdir $BASEDIR/cache
1009 fi
1010 mkdir -p $BASEDIR/log
1011 echo "`date -u '+%b %e %T'`:Preload all source files" | tee -a $LOGFILE
1012 FINISHED=0
1013 cd $BASEDIR/lfs
1014 for c in `seq $MAX_RETRIES`; do
1015 if (( FINISHED==1 )); then
1016 break
1017 fi
1018 FINISHED=1
1019 cd $BASEDIR/lfs
1020 for i in *; do
1021 if [ -f "$i" -a "$i" != "Config" ]; then
1022 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
1023 if [ $? -ne 0 ]; then
1024 echo "Prefetch : wget error in lfs/$i"
1025 FINISHED=0
1026 else
1027 if [ $c -eq 1 ]; then
1028 echo "Prefetch : lfs/$i files loaded"
1029 fi
1030 fi
1031 fi
1032 done
1033 done
1034 echo "Prefetch : verifying md5sum"
1035 ERROR=0
1036 for i in *; do
1037 if [ -f "$i" -a "$i" != "Config" ]; then
1038 make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
1039 if [ $? -ne 0 ]; then
1040 echo "md5 difference in lfs/$i"
1041 ERROR=1
1042 fi
1043 fi
1044 done
1045 if [ $ERROR -eq 0 ]; then
1046 echo "Prefetch : all files md5sum match"
1047 fi
1048 cd -
1049 ;;
1050toolchain)
1051 prepareenv
1052 buildtoolchain
1053 BUILDMACHINE=`uname -m`
1054 echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
1055 cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
1056 build/{bin,etc,usr/bin,usr/local} \
1057 build/tools/{bin,etc,*-linux-gnu,include,lib,libexec,sbin,share,var} \
1058 log >> $LOGFILE
1059 md5sum cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
1060 > cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5
1061 stdumount
1062 ;;
1063gettoolchain)
1064 BUILDMACHINE=`uname -m`
1065 # arbitrary name to be updated in case of new toolchain package upload
1066 PACKAGE=$SNAME-1.4-toolchain-$BUILDMACHINE
1067 URL_IPFIRE=`grep URL_IPFIRE lfs/Config | awk '{ print $3 }'`
1068 echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
1069 cd $BASEDIR/cache
1070 wget $URL_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5
1071 if [ $? -ne 0 ]; then
1072 echo "`date -u '+%b %e %T'`: error downloading toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE
1073 else
1074 if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
1075 echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
1076 echo "`date -u '+%b %e %T'`: Uncompressing toolchain" | tee -a $LOGFILE
1077 cd $BASEDIR && tar xfz cache/$PACKAGE.tar.gz -C .
1078 rm -vf $BASEDIR/cache/$PACKAGE.{tar.gz,md5}
1079 else
1080 exiterror "$PACKAGE.md5 did not match, check downloaded package"
1081 fi
1082 fi
1083 ;;
1084paks)
1085 prepareenv
1086 buildpackages
1087 ;;
1088update)
1089 echo "Load the latest source-files:"
1090 svn update
1091 ;;
1092commit)
1093 echo "Upload the changed files:"
1094 svn commit
1095 ;;
1096make)
1097 echo "Do a complete compile:"
1098 ./make.sh prefetch && ./make.sh gettoolchain && ./make.sh build
1099 ;;
1100diff)
1101 echo -ne "Make a local diff to last SVN revision: "
1102 svn diff > ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff
1103 echo "Finished!"
1104 echo "Diff was successfully saved to ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff"
1105 ;;
1106sync)
1107 echo -e "Syncing Cache to FTP:"
1108 echo -ne "Password for mirror.ipfire.org: "; read PASS
1109 rm -f doc/packages-to-remove-from-ftp
1110 ncftpls -u web3 -p $PASS ftp://mirror.ipfire.org/html/source-packages/source/ > ftplist
1111 for i in `ls -w1 cache/`; do
1112 grep $i ftplist
1113 if [ "$?" -ne "0" ]; then
1114 ncftpput -u web3 -p $PASS mirror.ipfire.org /html/source-packages/source cache/$i
1115 if [ "$?" -eq "0" ]; then
1116 echo -e "$i was successfully uploaded to the ftp server."
1117 else
1118 echo -e "There was an error while uploading $i to the ftp server."
1119 fi
1120 fi
1121 done
1122 for i in `cat ftplist`; do
1123 ls -w1 cache/ | grep $i
1124 if [ "$?" -eq "1" ]; then
1125 echo $i | grep -v toolchain >> doc/packages-to-remove-from-ftp
1126 fi
1127 done
1128 rm -f ftplist
1129 ;;
1130*)
1131 echo "Usage: $0 {build|changelog|check|checkclean|clean|commit|diff|dist|gettoolchain|make|newpak|prefetch|shell|sync|toolchain|update}"
1132 cat doc/make.sh-usage
1133 exit 1
1134 ;;
1135esac