]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - make.sh
Zwischencommit Rootfiles...
[ipfire-2.x.git] / make.sh
diff --git a/make.sh b/make.sh
index c20f82c301b6f395066c95e701ffbe237588524d..727989613c1f4ea729bfd1fc9c630b38a29041d8 100644 (file)
--- a/make.sh
+++ b/make.sh
@@ -28,12 +28,14 @@ VERSION="2.0"                               # Version number
 SLOGAN="www.ipfire.eu"         # Software slogan
 CONFIG_ROOT=/var/ipfire                # Configuration rootdir
 NICE=10                                # Nice level
-MAX_RETRIES=3                          # prefetch/check loop
+MAX_RETRIES=1                          # prefetch/check loop
 KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'`
 MACHINE=`uname -m`
 SVN_REVISION=`svn info | grep Revision | cut -c 11-`
 
-# Setzen des IPFire Builds
+IPFVER="full"                          # Which version should be compiled? (full|light|voice)
+
+# Set an information about the build number
 if [ -e ./.svn ]; then
        FIREBUILD=`cat .svn/entries |sed -n 's/^[ \t]*revision=\"// p' | sed -n 's/\".*$// p'`
 fi
@@ -64,7 +66,13 @@ mkdir $BASEDIR/log/ 2>/dev/null
 if [ -f .config ]; then
        . .config
 else
-       make_config
+       echo -e  "${BOLD}No configuration found!${NORMAL}"
+       echo -ne "Do you want to create one (y/N)?"
+       read CREATE_CONFIG
+       echo ""
+       if [ "$CREATE_CONFIG" == "y" ]; then
+               make_config
+       fi
 fi
 
 prepareenv() {
@@ -127,11 +135,11 @@ prepareenv() {
     echo -ne "Checking for necessary space on disk $BASE_DEV" | tee -a $LOGFILE
     BASE_DEV=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $1 }'`
     BASE_ASPACE=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $4 }'`
-    if (( 2202000 > $BASE_ASPACE )); then
+    if (( 2048000 > $BASE_ASPACE )); then
        BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'`
-       if (( 2202000 - $BASE_USPACE > $BASE_ASPACE )); then
+       if (( 2048000 - $BASE_USPACE > $BASE_ASPACE )); then
                beautify message FAIL
-               exiterror "Not enough temporary space available, need at least 2.1GB on $BASE_DEV"
+               exiterror "Not enough temporary space available, need at least 2GB on $BASE_DEV"
        fi
     else
        beautify message DONE
@@ -177,10 +185,10 @@ prepareenv() {
 
     # Make all sources and proc available under lfs build
     mount --bind /dev            $BASEDIR/build/dev
-    mount  -t   devpts devpts    $BASEDIR/build/dev/pts
-    mount  -t   tmpfs  shm       $BASEDIR/build/dev/shm
-    mount  -t   proc   proc      $BASEDIR/build/proc
-    mount  -t   sysfs  sysfs     $BASEDIR/build/sys
+    mount --bind /dev/pts        $BASEDIR/build/dev/pts
+    mount --bind /dev/shm        $BASEDIR/build/dev/shm
+    mount --bind /proc           $BASEDIR/build/proc
+    mount --bind /sys            $BASEDIR/build/sys
     mount --bind $BASEDIR/cache  $BASEDIR/build/usr/src/cache
     mount --bind $BASEDIR/ccache $BASEDIR/build/usr/src/ccache
     mount --bind $BASEDIR/config $BASEDIR/build/usr/src/config
@@ -191,6 +199,11 @@ prepareenv() {
     mount --bind $BASEDIR/log    $BASEDIR/build/usr/src/log
     mount --bind $BASEDIR/src    $BASEDIR/build/usr/src/src
 
+    # This is a temporary hack!!!
+    if [ ! -f /tools/bin/hostname ]; then
+      cp -f /bin/hostname /tools/bin/hostname 2>/dev/null
+    fi
+
     # Run LFS static binary creation scripts one by one
     export CCACHE_DIR=$BASEDIR/ccache
     export CCACHE_HASHDIR=1
@@ -243,7 +256,6 @@ buildbase() {
     LOGFILE="$BASEDIR/log/_build.base.log"
     export LOGFILE
     lfsmake2 stage2
-#    lfsmake2 makedev
     lfsmake2 linux-libc-header
     lfsmake2 man-pages
     lfsmake2 glibc
@@ -295,91 +307,93 @@ buildbase() {
     lfsmake2 udev
     lfsmake2 util-linux
     lfsmake2 vim
-####
-#    lfsmake2 net-tools
-#    lfsmake2 inetutils
-#    lfsmake2 ed
-#    lfsmake2 procinfo
 }
 
 buildipfire() {
   LOGFILE="$BASEDIR/log/_build.ipfire.log"
   export LOGFILE
+  ipfiremake inetutils
+  ipfiremake net-tools
+  ipfiremake ed
   ipfiremake configroot
   ipfiremake dhcp
   ipfiremake dhcpcd
   ipfiremake libusb
   ipfiremake libpcap
-  ipfiremake linux-atm
+# Temporary disabled.
+#  ipfiremake linux-atm
   ipfiremake ppp
   ipfiremake rp-pppoe
   ipfiremake unzip
-  ipfiremake linux                     PASS=ipfire SMP=installer
-  ipfiremake linux                     PASS=ipfire SMP=1
-  ipfiremake 3cp4218                   SMP=1
-  ipfiremake amedyn                    SMP=1
-  ipfiremake cxacru                    SMP=1
-  ipfiremake eagle                     SMP=1
-  ipfiremake cnx_pci                   SMP=1
-  ipfiremake fcdsl                     SMP=1
-  ipfiremake fcdsl2                    SMP=1
-  ipfiremake fcdslsl                   SMP=1
-  ipfiremake fcdslusb          SMP=1
-  ipfiremake fcdslslusb                SMP=1
-  ipfiremake fcpci                     SMP=1
-  ipfiremake fcclassic         SMP=1
-  ipfiremake pulsar                    SMP=1
-  ipfiremake unicorn                   SMP=1
-  ipfiremake promise-sata-300-tx       SMP=1
-  ipfiremake linux                     PASS=ipfire
-  ipfiremake 3cp4218   
-  ipfiremake amedyn    
-  ipfiremake cxacru    
-  ipfiremake eciadsl   
-  ipfiremake eagle     
-  ipfiremake speedtouch        
-  ipfiremake cnx_pci   
-  ipfiremake fcdsl     
-  ipfiremake fcdsl2    
-  ipfiremake fcdslsl   
-  ipfiremake fcdslusb  
-  ipfiremake fcdslslusb 
-  ipfiremake fcpci
-  ipfiremake fcclassic
-  ipfiremake pulsar    
-  ipfiremake unicorn
-  ipfiremake promise-sata-300-tx
-  ipfiremake pcmcia-cs
+#  ipfiremake linux                    PASS=I # Can we remove the installer kernel?
+  ipfiremake linux                     PASS=S
+#  ipfiremake 3cp4218          PASS=SMP
+#  ipfiremake amedyn                   PASS=SMP
+#  ipfiremake cxacru                   PASS=SMP
+#  ipfiremake eagle                    PASS=SMP
+#  ipfiremake cnx_pci          PASS=SMP
+#  ipfiremake fcdsl                    PASS=SMP
+#  ipfiremake fcdsl2                   PASS=SMP
+#  ipfiremake fcdslsl          PASS=SMP
+#  ipfiremake fcdslusb         PASS=SMP
+#  ipfiremake fcdslslusb               PASS=SMP
+#  ipfiremake fcpci                    PASS=SMP
+#  ipfiremake fcclassic                PASS=SMP
+#  ipfiremake pulsar                   PASS=SMP
+#  ipfiremake unicorn          PASS=SMP
+#  ipfiremake promise-sata-300-tx      PASS=SMP
+  ipfiremake zaptel                    PASS=S
+  ipfiremake linux
+#  ipfiremake 3cp4218
+#  ipfiremake amedyn
+#  ipfiremake cxacru
+#  ipfiremake eciadsl
+#  ipfiremake eagle
+#  ipfiremake speedtouch
+#  ipfiremake cnx_pci
+#  ipfiremake fcdsl
+#  ipfiremake fcdsl2
+#  ipfiremake fcdslsl
+#  ipfiremake fcdslusb
+#  ipfiremake fcdslslusb
+#  ipfiremake fcpci
+#  ipfiremake fcclassic
+#  ipfiremake pulsar
+#  ipfiremake unicorn
+#  ipfiremake promise-sata-300-tx
+  ipfiremake zaptel
+#  ipfiremake pcmciautils
   ipfiremake expat
   ipfiremake gdbm
   ipfiremake gmp
+  ipfiremake pam
   ipfiremake openssl
   ipfiremake python
   ipfiremake libnet
+  ipfiremake libjpeg
   ipfiremake libpng
   ipfiremake libtiff
-  ipfiremake libjpeg
   ipfiremake lcms
   ipfiremake libmng
   ipfiremake freetype
+  ipfiremake libart
   ipfiremake gd
   ipfiremake popt
+  ipfiremake pcre
   ipfiremake slang
   ipfiremake newt
   ipfiremake libcap
   ipfiremake pciutils
-  ipfiremake pcre
-  ipfiremake readline
   ipfiremake libxml2
-  ipfiremake berkeley
-  ipfiremake BerkeleyDB ## The Perl module
+  ipfiremake BerkeleyDB
   ipfiremake mysql
-  ipfiremake saslauthd PASS=1
+  ipfiremake cyrus-sasl
   ipfiremake openldap
+#  ipfiremake cyrus-sasl PASS=L # Doesn't work yet. Thereby there's the question: Do we really need this?
   ipfiremake apache2
   ipfiremake php
   ipfiremake subversion
-  ipfiremake apache2 PASS=CONFIG
+  ipfiremake apache2 PASS=C
   ipfiremake arping
   ipfiremake beep
   ipfiremake bind
@@ -390,7 +404,7 @@ buildipfire() {
   ipfiremake ethtool
   ipfiremake ez-ipupdate
   ipfiremake fcron
-  ipfiremake perl-GD
+  ipfiremake GD
   ipfiremake gnupg
   ipfiremake hdparm
   ipfiremake ibod
@@ -398,13 +412,12 @@ buildipfire() {
   ipfiremake iptables
   ipfiremake ipac-ng
   ipfiremake ipaddr
-  ipfiremake iproute2
   ipfiremake iptstate
   ipfiremake iputils
   ipfiremake l7-protocols
-  ipfiremake isapnptools
-  ipfiremake isdn4k-utils
-  ipfiremake kudzu
+#  ipfiremake isapnptools # ERROR :(
+#  ipfiremake isdn4k-utils # What about mISDN???
+#  ipfiremake kudzu # ERROR :(
   ipfiremake logrotate
   ipfiremake logwatch
   ipfiremake mingetty
@@ -413,6 +426,7 @@ buildipfire() {
   ipfiremake nano
   ipfiremake nash
   ipfiremake nasm
+### The Perl Modules have to be updated! I will skip this now!
   ipfiremake URI
   ipfiremake HTML-Tagset
   ipfiremake HTML-Parser
@@ -436,6 +450,7 @@ buildipfire() {
   ipfiremake Text-Tabs+Wrap
   ipfiremake Locale-Country
   ipfiremake GeoIP
+###
   ipfiremake fwhits
   ipfiremake noip_updater
   ipfiremake ntp
@@ -450,7 +465,7 @@ buildipfire() {
   ipfiremake squid
   ipfiremake squid-graph
   ipfiremake squidguard
-  ipfiremake tcpdump
+#  ipfiremake tcpdump
   ipfiremake traceroute
   ipfiremake vlan
   ipfiremake wireless
@@ -465,9 +480,7 @@ buildipfire() {
   ipfiremake openvpn
   ipfiremake pkg-config
   ipfiremake glib
-  ipfiremake pam
   ipfiremake pammysql
-  ipfiremake saslauthd PASS=2
   ipfiremake xinetd
   ipfiremake ghostscript
   ipfiremake cups
@@ -491,11 +504,10 @@ buildipfire() {
   ipfiremake clamav
   ipfiremake razor
   ipfiremake spamassassin
-#  ipfiremake amavisd
+  ipfiremake amavisd
   ipfiremake stund
-  ipfiremake zaptel
   ipfiremake libpri
-  ipfiremake bristuff
+# ipfiremake bristuff
   ipfiremake asterisk
   ipfiremake mpg123
   ipfiremake libmad
@@ -533,34 +545,37 @@ buildinstaller() {
   # Run installer scripts one by one
   LOGFILE="$BASEDIR/log/_build.installer.log"
   export LOGFILE
-  ipfiremake syslinux
-  ipfiremake as86
-  ipfiremake mbr
   ipfiremake uClibc
   installmake busybox
+  installmake udev
   installmake sysvinit
   installmake e2fsprogs
   installmake misc-progs
+  installmake sysfsutils
+#  installmake hwinfo
   installmake slang
   installmake util-linux
   installmake newt
   installmake pciutils
-  installmake pcmcia-cs
-  installmake kbd
+  installmake pcmciautils
   installmake installer
   installmake scsi.img
   installmake driver.img
   installmake initrd
   installmake boot.img
+  installmake kbd
+# exiterror STOP HERE!
+#  ipfiremake syslinux
+#  ipfiremake as86
+#  ipfiremake mbr
 }
 
 buildpackages() {
   LOGFILE="$BASEDIR/log/_build.packages.log"
   export LOGFILE
   echo "... see detailed log in _build.*.log files" >> $LOGFILE
-  echo -ne "`date -u '+%b %e %T'`: Stage5 packages build \n" | tee -a $LOGFILE
   # Strip files
-  echo "`date -u '+%b %e %T'`: Stripping files" | tee -a $LOGFILE
+  echo -n "Stripping files" | tee -a $LOGFILE
   find $LFS/lib $LFS/usr/lib $LFS/usr/share/rrdtool-* $LFS/install ! -type l \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
        ! -name 'libc.so' ! -name 'libpthread.so' ! -name 'libcrypto.so.0.9.7.sha1' \
         -exec $LFS/tools/bin/strip --strip-all {} \; >> $LOGFILE 2>&1
@@ -569,26 +584,25 @@ buildpackages() {
   find $LFS/{,s}bin $LFS/usr/{,s}bin $LFS/usr/local/{,s}bin ! -type l \
        -exec file {} \; | grep " ELF " | cut -f1 -d ':' | xargs $LFS/tools/bin/strip --strip-all >> $LOGFILE 2>&1
   # there add -v to strip to verify
+  beautify message DONE
 
-  if [ 'i386' = $MACHINE ]; then
-       # Create fcdsl packages
-       echo "`date -u '+%b %e %T'`: Building fcdsl tgz" | tee -a $LOGFILE
-       cp $LFS/install/images/fcdsl/license.txt $LFS  >> $LOGFILE 2>&1
-       touch $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}
-       cd $LFS && tar cvfz $LFS/install/images/$SNAME-fcdsl-$VERSION.$MACHINE.tgz \
-               lib/modules/$KVER/misc/fcdsl*.o.gz \
-               lib/modules/$KVER-smp/misc/fcdsl*.o.gz \
-               usr/lib/isdn/{fds?base.bin,fd?ubase.frm} \
-               etc/fcdsl/fcdsl*.conf \
-               etc/drdsl/{drdsl,drdsl.ini} \
-               license.txt \
-               var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} >> $LOGFILE 2>&1
-       rm -f $LFS/license.txt >> $LOGFILE 2>&1
-       cd $BASEDIR
-  fi
+#   Create fcdsl packages
+#  echo "`date -u '+%b %e %T'`: Building fcdsl tgz" | tee -a $LOGFILE
+#  cp $LFS/install/images/fcdsl/license.txt $LFS  >> $LOGFILE 2>&1
+#  touch $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}
+#  cd $LFS && tar cvfz $LFS/install/images/$SNAME-fcdsl-$VERSION.$MACHINE.tgz \
+#      lib/modules/$KVER/misc/fcdsl*.o.gz \
+#      lib/modules/$KVER-smp/misc/fcdsl*.o.gz \
+#      usr/lib/isdn/{fds?base.bin,fd?ubase.frm} \
+#      etc/fcdsl/fcdsl*.conf \
+#      etc/drdsl/{drdsl,drdsl.ini} \
+#      license.txt \
+#      var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} >> $LOGFILE 2>&1
+#  rm -f $LFS/license.txt >> $LOGFILE 2>&1
+#  cd $BASEDIR
   
   # Generating list of packages used
-  echo "`date -u '+%b %e %T'`: Generating packages list from logs" | tee -a $LOGFILE
+  echo -n "Generating packages list from logs" | tee -a $LOGFILE
   rm -f $BASEDIR/doc/packages-list
   for i in `ls -1tr $BASEDIR/log/[^_]*`; do
        if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
@@ -596,10 +610,11 @@ buildpackages() {
        fi
   done
   echo "== List of softwares used to build $NAME Version: $VERSION ==" > $BASEDIR/doc/packages-list.txt
-  grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipfire$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$\|.tgz$\|-config$' \
+  grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$\|.tgz$\|-config$\|_missing_rootfile$' \
        $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt
   rm -f $BASEDIR/doc/packages-list
   # packages-list.txt is ready to be displayed for wiki page
+  beautify message DONE
 
   # Create ISO for CDROM
   ipfiremake cdrom
@@ -650,7 +665,6 @@ ipfirepackages() {
   ipfiredist lame
   ipfiredist libmad
   ipfiredist libogg
-  ipfiredist libtiff
   ipfiredist libvorbis
   ipfiredist mailx
   ipfiredist mldonkey
@@ -678,6 +692,7 @@ ipfirepackages() {
 # See what we're supposed to do
 case "$1" in 
 build)
+       clear
        BUILDMACHINE=`uname -m`
        PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
        #only restore on a clean disk
@@ -697,7 +712,8 @@ build)
                        fi
                fi
        else
-               echo "`date -u '+%b %e %T'`: Using installed toolchain" | tee -a $LOGFILE
+               echo -n "Using installed toolchain" | tee -a $LOGFILE
+               beautify message SKIP
                prepareenv
        fi
 
@@ -804,12 +820,12 @@ newpak)
        fi
        exit 0
        ;;
-prefetch)
+downloadsrc)
        if [ ! -d $BASEDIR/cache ]; then
                mkdir $BASEDIR/cache
        fi
        mkdir -p $BASEDIR/log
-       echo "`date -u '+%b %e %T'`:Preload all source files" | tee -a $LOGFILE
+       echo -e "${BOLD}Preload all source files${NORMAL}" | tee -a $LOGFILE
        FINISHED=0
        cd $BASEDIR/lfs
        for c in `seq $MAX_RETRIES`; do
@@ -855,6 +871,7 @@ prefetch)
        cd - >/dev/null 2>&1
        ;;
 toolchain)
+       clear
        prepareenv
        beautify build_stage "Toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`"
        buildtoolchain
@@ -937,15 +954,23 @@ svn)
          ;;
          commit|ci)
                clear
+               if [ -f /usr/bin/mcedit ]; then
+                       export EDITOR=/usr/bin/mcedit
+               else
+                       if [ -f /usr/bin/nano ]; then
+                               export EDITOR=/usr/bin/nano
+                       fi
+               fi
+               echo -ne "Selecting editor $EDITOR..."
+               beautify message DONE
                if [ -e /sbin/yast ]; then
                        if [ "`echo $SVN_REVISION | cut -c 3`" -eq "0" ]; then
                                $0 changelog
                        fi
                fi
-               echo "Upload the changed files..."
-               sleep 1
                svn commit
                $0 svn up
+               $0 uploadsrc
          ;;
          dist)
                if [ $3 ]; then
@@ -956,9 +981,9 @@ svn)
                        exit 0
                fi
                echo -en "REV $SVN_REVISION: Downloading..."
-               svn export http://svn.ipfire.eu/svn/ipfire ipfire-source/ --force > /dev/null
-               svn log http://svn.ipfire.eu/svn/ipfire -r 1:$SVN_REVISION > ipfire-source/Changelog
-               #svn info http://svn.ipfire.eu/svn/ipfire -r $SVN_REVISION > ipfire-source/svn_status
+               svn export http://svn.ipfire.eu/svn/ipfire/trunk ipfire-source/ --force > /dev/null
+               svn log http://svn.ipfire.eu/svn/ipfire/trunk -r 1:$SVN_REVISION > ipfire-source/Changelog
+               #svn info http://svn.ipfire.eu/svn/ipfire/trunk -r $SVN_REVISION > ipfire-source/svn_status
                evaluate 1
 
                echo -en "REV $SVN_REVISION: Compressing files..."
@@ -985,6 +1010,7 @@ uploadsrc)
        echo -e "Uploading cache to ftp server:"
        ncftpls -u $IPFIRE_FTP_USER_INT -p $IPFIRE_FTP_PASS_INT ftp://$IPFIRE_FTP_URL_INT$IPFIRE_FTP_PATH_INT/ > /var/tmp/ftplist
        for i in *; do
+               if [ "$i" == "toolchains" ]; then continue; fi
                grep -q $i /var/tmp/ftplist
                if [ "$?" -ne "0" ]; then
                        echo -ne "$i"
@@ -1077,14 +1103,14 @@ batch)
 watch)
        watch_screen
        ;;
-*)
+"")
        clear
        svn info
-       select name in "Exit" "IPFIRE: Prefetch" "IPFIRE: Build (silent)" "IPFIRE: Watch Build" "IPFIRE: Batch" "IPFIRE: Clean" "SVN: Commit" "SVN: Update" "SVN: Status" "SVN: Diff" "LOG: Tail" "Help"
+       select name in "Exit" "IPFIRE: Downloadsrc" "IPFIRE: Build (silent)" "IPFIRE: Watch Build" "IPFIRE: Batch" "IPFIRE: Clean" "SVN: Commit" "SVN: Update" "SVN: Status" "SVN: Diff" "LOG: Tail" "Help"
        do
        case $name in
-       "IPFIRE: Prefetch")
-               $0 prefetch
+       "IPFIRE: Downloadsrc")
+               $0 downloadsrc
                ;;
        "IPFIRE: Build (silent)")
                $0 build-silent
@@ -1098,27 +1124,11 @@ watch)
        "IPFIRE: Clean")
                $0 clean
                ;;
-       "SVN: Commit")
-               if [ -f /usr/bin/mcedit ]; then
-                       export EDITOR=/usr/bin/mcedit
-               fi
-               if [ -f /usr/bin/nano ]; then
-                       export EDITOR=/usr/bin/nano
-               fi
-               $0 svn commit
-               $0 uploadsrc
-               ;;
        "SVN: Update")
                $0 svn update
                ;;
-       "SVN: Status")
-               svn status # | grep -v ^?
-               ;;
-       "SVN: Diff")
-               $0 svn diff
-               ;;
        "Help")
-               echo "Usage: $0 {build|changelog|clean|gettoolchain|newpak|prefetch|shell|sync|toolchain}"
+               echo "Usage: $0 {build|changelog|clean|gettoolchain|newpak|downloadsrc|shell|sync|toolchain}"
                cat doc/make.sh-usage
                ;;
        "LOG: Tail")
@@ -1130,4 +1140,8 @@ watch)
        esac
        done
        ;;
+*)
+       echo "Usage: $0 {build|changelog|clean|gettoolchain|newpak|downloadsrc|shell|sync|toolchain}"
+       cat doc/make.sh-usage
+       ;;
 esac