]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - make.sh
Build dvdrtools instead of cdrtools.
[ipfire-2.x.git] / make.sh
diff --git a/make.sh b/make.sh
index 7ee503b4a411c87cb27908111353d4f2fd5752e1..d8d7559b73c7990407261f94f4213bda51985424 100755 (executable)
--- a/make.sh
+++ b/make.sh
 # along with IPFire; if not, write to the Free Software                    #
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA #
 #                                                                          #
-# Copyright (C) 2007 IPFire-Team <info@ipfire.org>.                        #
+# Copyright (C) 2007-2011 IPFire-Team <info@ipfire.org>.                   #
 #                                                                          #
 ############################################################################
 #
 
 NAME="IPFire"                                                  # Software name
 SNAME="ipfire"                                                 # Short name
-VERSION="2.7"                                                  # Version number
-CORE="40"                                                      # Core Level (Filename)
-PAKFIRE_CORE="39"                                              # Core Level (PAKFIRE)
+VERSION="2.9"                                                  # Version number
+CORE="52"                                                      # Core Level (Filename)
+PAKFIRE_CORE="51"                                              # Core Level (PAKFIRE)
 GIT_BRANCH=`git status | head -n1 | cut -d" " -f4`             # Git Branch
 SLOGAN="www.ipfire.org"                                                # Software slogan
 CONFIG_ROOT=/var/ipfire                                                # Configuration rootdir
@@ -37,9 +37,16 @@ KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'`
 MACHINE=`uname -m`
 GIT_TAG=$(git tag | tail -1)                                   # Git Tag
 GIT_LASTCOMMIT=$(git log | head -n1 | cut -d" " -f2 |head -c8) # Last commit
-TOOLCHAINVER=2
+TOOLCHAINVER=1
 IPFVER="full"                          # Which versions should be compiled? (full|devel)
 
+BUILDMACHINE=$MACHINE
+    if [ "$MACHINE" = "x86_64" ]; then
+        BUILDMACHINE="i686";
+        linux32="linux32";
+    fi
+
+
 # Debian specific settings
 if [ ! -e /etc/debian_version ]; then
        FULLPATH=`which $0`
@@ -182,7 +189,11 @@ prepareenv() {
     set +h
     LC_ALL=POSIX
     if [ -z $MAKETUNING ]; then
-       MAKETUNING="-j6"
+        if [ "${MACHINE:0:3}" = "arm" ]; then
+            MAKETUNING="-j2"
+        else
+            MAKETUNING="-j6"
+        fi
     fi
     export LFS LC_ALL CFLAGS CXXFLAGS MAKETUNING
     unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
@@ -219,6 +230,7 @@ prepareenv() {
 
     # Run LFS static binary creation scripts one by one
     export CCACHE_DIR=$BASEDIR/ccache
+    export CCACHE_COMPRESS=1
     export CCACHE_HASHDIR=1
 
     # Remove pre-install list of installed files in case user erase some files before rebuild
@@ -226,16 +238,28 @@ prepareenv() {
 }
 
 buildtoolchain() {
+    if [ "$(uname -m)" = "x86_64" ]; then
+        exiterror "Cannot build toolchain on x86_64. Please use the download."
+    fi
+    if [ "$(uname -r | grep ipfire)" ]; then
+        exiterror "Cannot build toolchain on ipfire. Please use the download."
+    fi
+
     LOGFILE="$BASEDIR/log/_build.toolchain.log"
     export LOGFILE
-    ORG_PATH=$PATH
     NATIVEGCC=`gcc --version | grep GCC | awk {'print $3'}`
     export NATIVEGCC GCCmajor=${NATIVEGCC:0:1} GCCminor=${NATIVEGCC:2:1} GCCrelease=${NATIVEGCC:4:1}
-    lfsmake1 ccache
+    ORG_PATH=$PATH
+    export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH
+    lfsmake1 ccache    PASS=1
+    lfsmake1 make      PASS=1
     lfsmake1 binutils  PASS=1
     lfsmake1 gcc               PASS=1
-    export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH
-    lfsmake1 linux-libc-header
+    if [ "${MACHINE_TYPE}" = "arm" ]; then
+        lfsmake1 linux TOOLS=1 HEADERS=1
+    else
+        lfsmake1 linux-libc-header
+    fi
     lfsmake1 glibc
     lfsmake1 cleanup-toolchain PASS=1
     lfsmake1 tcl
@@ -243,6 +267,7 @@ buildtoolchain() {
     lfsmake1 dejagnu
     lfsmake1 gcc               PASS=2
     lfsmake1 binutils  PASS=2
+    lfsmake1 ccache    PASS=2
     lfsmake1 ncurses
     lfsmake1 bash
     lfsmake1 bzip2
@@ -254,7 +279,7 @@ buildtoolchain() {
     lfsmake1 grep
     lfsmake1 gzip
     lfsmake1 m4
-    lfsmake1 make
+    lfsmake1 make      PASS=2
     lfsmake1 patch
     lfsmake1 perl
     lfsmake1 sed
@@ -269,7 +294,11 @@ buildbase() {
     LOGFILE="$BASEDIR/log/_build.base.log"
     export LOGFILE
     lfsmake2 stage2
-    lfsmake2 linux-libc-header
+    if [ "${MACHINE_TYPE}" = "arm" ]; then
+        lfsmake2 linux HEADERS=1
+    else
+        lfsmake2 linux-libc-header
+    fi
     lfsmake2 man-pages
     lfsmake2 glibc
     lfsmake2 cleanup-toolchain PASS=3
@@ -311,7 +340,6 @@ buildbase() {
     lfsmake2 man
     lfsmake2 mktemp
     lfsmake2 module-init-tools
-    lfsmake2 mtd
     lfsmake2 net-tools
     lfsmake2 patch
     lfsmake2 psmisc
@@ -324,7 +352,11 @@ buildbase() {
     lfsmake2 udev
     lfsmake2 util-linux
     lfsmake2 vim
-    lfsmake2 grub
+
+    # ARM cannot use grub.
+    if [ "${MACHINE_TYPE}" != "arm" ]; then
+      lfsmake2 grub
+    fi
 }
 
 buildipfire() {
@@ -342,40 +374,69 @@ buildipfire() {
   ipfiremake which
   ipfiremake xz
   ipfiremake linux-firmware
-  ipfiremake linux                     XEN=1
-  ipfiremake kqemu                     XEN=1
-  ipfiremake v4l-dvb                   XEN=1
-  ipfiremake madwifi                   XEN=1
-  ipfiremake mISDN                     XEN=1
-  ipfiremake dahdi                     XEN=1 KMOD=1
-  ipfiremake cryptodev                 XEN=1
-  ipfiremake compat-wireless           XEN=1
-  ipfiremake r8169                     XEN=1
-  ipfiremake r8168                     XEN=1
-  ipfiremake r8101                     XEN=1
-  ipfiremake e1000                     XEN=1
-  ipfiremake e1000e                    XEN=1
+  ipfiremake zd1211-firmware
+
+  # The xen and PAE kernels are only available for x86
+  if [ "${MACHINE_TYPE}" != "arm" ]; then
+    ipfiremake linux                   XEN=1
+    ipfiremake kqemu                   XEN=1
+    ipfiremake v4l-dvb                 XEN=1
+    ipfiremake madwifi                 XEN=1
+    ipfiremake mISDN                   XEN=1
+    ipfiremake dahdi                   XEN=1 KMOD=1
+    ipfiremake cryptodev                       XEN=1
+    ipfiremake compat-wireless         XEN=1
+    ipfiremake r8169                   XEN=1
+    ipfiremake r8168                   XEN=1
+    ipfiremake r8101                   XEN=1
+    ipfiremake e1000                   XEN=1
+    ipfiremake e1000e                  XEN=1
+    ipfiremake igb                     XEN=1
+    ipfiremake linux                   PAE=1
+    ipfiremake kqemu                   PAE=1
+    ipfiremake kvm-kmod                        PAE=1
+    ipfiremake v4l-dvb                 PAE=1
+    ipfiremake madwifi                 PAE=1
+    ipfiremake alsa                    PAE=1 KMOD=1
+    ipfiremake mISDN                   PAE=1
+    ipfiremake dahdi                   PAE=1 KMOD=1
+    ipfiremake cryptodev                       PAE=1
+    ipfiremake compat-wireless         PAE=1
+#    ipfiremake r8169                  PAE=1
+#    ipfiremake r8168                  PAE=1
+#    ipfiremake r8101                  PAE=1
+    ipfiremake e1000                   PAE=1
+    ipfiremake e1000e                  PAE=1
+    ipfiremake igb                     PAE=1
+  fi
+
+  # Default kernel build
   ipfiremake linux
-  ipfiremake kqemu
-#  ipfiremake kvm-kmod
   ipfiremake v4l-dvb
-  ipfiremake madwifi
-  ipfiremake alsa                      KMOD=1
-  ipfiremake mISDN
+
+  if [ "${MACHINE_TYPE}" != "arm" ]; then
+    # Virtualization helpers are only available for x86.
+    ipfiremake kqemu
+    ipfiremake kvm-kmod
+    #unsupported arch (armv5)
+    ipfiremake madwifi
+    #todo enable alsa driver in kernel config
+    ipfiremake alsa                    KMOD=1
+    #undefined declaration in echo canceler try to fix later
+    ipfiremake mISDN
+  fi
   ipfiremake dahdi                     KMOD=1
   ipfiremake cryptodev
   ipfiremake compat-wireless
-  ipfiremake r8169
-  ipfiremake r8168
-  ipfiremake r8101
-  ipfiremake e1000
-  ipfiremake e1000e
+#  ipfiremake r8169
+#  ipfiremake r8168
+#  ipfiremake r8101
+  #ipfiremake e1000
+  #ipfiremake e1000e
+  #ipfiremake igb
   ipfiremake pkg-config
   ipfiremake linux-atm
   ipfiremake cpio
-
-  installmake strip
-
   ipfiremake dracut
   ipfiremake expat
   ipfiremake gdbm
@@ -383,7 +444,10 @@ buildipfire() {
   ipfiremake pam
   ipfiremake openssl
   ipfiremake curl
+  ipfiremake tcl
+  ipfiremake sqlite
   ipfiremake python
+  ipfiremake fireinfo
   ipfiremake libnet
   ipfiremake libnl
   ipfiremake libidn
@@ -397,6 +461,8 @@ buildipfire() {
   ipfiremake pcre
   ipfiremake slang
   ipfiremake newt
+  ipfiremake attr
+  ipfiremake acl
   ipfiremake libcap
   ipfiremake pciutils
   ipfiremake usbutils
@@ -412,10 +478,9 @@ buildipfire() {
   ipfiremake arping
   ipfiremake beep
   ipfiremake bind
-  ipfiremake cdrtools
+  ipfiremake dvdrtools
   ipfiremake dnsmasq
   ipfiremake dosfstools
-  ipfiremake squashfstools
   ipfiremake reiserfsprogs
   ipfiremake xfsprogs
   ipfiremake sysfsutils
@@ -485,6 +550,8 @@ buildipfire() {
   ipfiremake rrdtool
   ipfiremake setserial
   ipfiremake setup
+  ipfiremake libdnet
+  ipfiremake daq
   ipfiremake snort
   ipfiremake oinkmaster
   ipfiremake squid
@@ -538,8 +605,6 @@ buildipfire() {
   ipfiremake gnump3d
   ipfiremake libsigc++
   ipfiremake applejuice
-  ipfiremake ocaml
-  ipfiremake mldonkey
   ipfiremake libtorrent
   ipfiremake rtorrent
   ipfiremake ipfireseeder
@@ -569,13 +634,14 @@ buildipfire() {
   ipfiremake igmpproxy
   ipfiremake fbset
   ipfiremake sdl
-  ipfiremake qemu
-  ipfiremake qemu-kqemu
+  #ipfiremake qemu
+  #ipfiremake qemu-kqemu
   ipfiremake sane
   ipfiremake netpbm
   ipfiremake phpSANE
   ipfiremake tunctl
   ipfiremake nagios
+  ipfiremake nagios_nrpe
   ipfiremake ebtables
   ipfiremake fontconfig
   ipfiremake freefont
@@ -584,7 +650,7 @@ buildipfire() {
   ipfiremake faad2
   ipfiremake ffmpeg
   ipfiremake videolan
-  ipfiremake vdr
+  #ipfiremake vdr
   ipfiremake w_scan
   ipfiremake icecast
   ipfiremake icegenerator
@@ -600,9 +666,11 @@ buildipfire() {
   ipfiremake wpa_supplicant
   ipfiremake hostapd
   ipfiremake urlgrabber
-  ipfiremake syslinux
+  if [ "${MACHINE_TYPE}" != "arm" ]; then
+    ipfiremake syslinux
+  fi
   ipfiremake tftpd
-  ipfiremake cpufrequtils
+  #ipfiremake cpufrequtils
   ipfiremake dbus
   ipfiremake bluetooth
   ipfiremake gutenprint
@@ -614,7 +682,6 @@ buildipfire() {
   ipfiremake splix
   ipfiremake streamripper
   ipfiremake sshfs
-  ipfiremake sqlite
   ipfiremake taglib
   ipfiremake mediatomb
   ipfiremake sslh
@@ -626,7 +693,9 @@ buildipfire() {
   ipfiremake perl-DBD-mysql
   ipfiremake cacti
   ipfiremake icecc
-  ipfiremake openvmtools
+  if [ "${MACHINE_TYPE}" != "arm" ]; then
+    ipfiremake openvmtools
+  fi
   ipfiremake nagiosql
   ipfiremake iftop
   ipfiremake motion
@@ -635,15 +704,33 @@ buildipfire() {
   ipfiremake watchdog
   ipfiremake libpri
   ipfiremake dahdi
-  ipfiremake asterisk
-  ipfiremake lcr
+  #ipfiremake asterisk
+  #ipfiremake lcr
   ipfiremake usb_modeswitch
+  ipfiremake usb_modeswitch_data
   ipfiremake zerofree
   ipfiremake mdadm
   ipfiremake eject
   ipfiremake pound
   ipfiremake minicom
   ipfiremake ddrescue
+  ipfiremake imspector
+  ipfiremake miniupnpd
+  ipfiremake client175
+  ipfiremake powertop
+  ipfiremake parted
+  ipfiremake swig
+  ipfiremake python-m2crypto
+  ipfiremake wireless-regdb
+  ipfiremake crda
+  ipfiremake libsatsolver
+  ipfiremake python-satsolver
+  ipfiremake python-distutils-extra
+  ipfiremake python-lzma
+  ipfiremake python-progressbar
+  ipfiremake python-xattr
+  ipfiremake intltool
+  ipfiremake pakfire3-deps
   echo Build on $HOSTNAME > $BASEDIR/build/var/ipfire/firebuild
   cat /proc/version >> $BASEDIR/build/var/ipfire/firebuild
   echo >> $BASEDIR/build/var/ipfire/firebuild
@@ -664,10 +751,13 @@ buildinstaller() {
   # Run installer scripts one by one
   LOGFILE="$BASEDIR/log/_build.installer.log"
   export LOGFILE
-  ipfiremake as86
-  ipfiremake mbr
-  ipfiremake memtest
+  if [ "${MACHINE_TYPE}" != "arm" ]; then
+    ipfiremake as86
+    ipfiremake mbr
+    ipfiremake memtest
+  fi
   ipfiremake installer
+  cp -f $BASEDIR/doc/COPYING $BASEDIR/build/install/initrd/
   installmake strip
   ipfiremake initrd
 }
@@ -720,6 +810,12 @@ buildpackages() {
   fi
   mv $LFS/install/images/*.bz2 $BASEDIR >> $LOGFILE 2>&1
 
+  cd $BASEDIR
+  for i in `ls *.bz2 *.img.gz *.iso`; do
+       md5sum $i > $i.md5
+  done
+  cd $PWD
+
   # Cleanup
   stdumount
   rm -rf $BASEDIR/build/tmp/*
@@ -759,7 +855,6 @@ ipfirepackages() {
 case "$1" in 
 build)
        clear
-       BUILDMACHINE=`uname -m`
        PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
        #only restore on a clean disk
        if [ ! -f log/cleanup-toolchain-2-tools ]; then
@@ -797,8 +892,10 @@ build)
        buildpackages
        
        beautify build_stage "Checking Logfiles for new Files"
-       cd ..
+
+       cd $BASEDIR
        tools/checknewlog.pl
+       cd $PWD
 
        beautify build_end
        ;;
@@ -830,6 +927,7 @@ clean)
        if [ -h /tools ]; then
                rm -f /tools
        fi
+       rm -f $BASEDIR/ipfire-*
        beautify message DONE
        ;;
 downloadsrc)
@@ -849,7 +947,8 @@ downloadsrc)
                for i in *; do
                        if [ -f "$i" -a "$i" != "Config" ]; then
                                echo -ne "Loading $i"
-                               make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
+                               make -s -f $i LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \
+                                       MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
                                if [ $? -ne 0 ]; then
                                        beautify message FAIL
                                        FINISHED=0
@@ -865,7 +964,8 @@ downloadsrc)
        ERROR=0
        for i in *; do
                if [ -f "$i" -a "$i" != "Config" ]; then
-                       make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
+                       make -s -f $i LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \
+                               MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
                        if [ $? -ne 0 ]; then
                                echo -ne "MD5 difference in lfs/$i"
                                beautify message FAIL
@@ -887,19 +987,17 @@ toolchain)
        prepareenv
        beautify build_stage "Toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`"
        buildtoolchain
-       BUILDMACHINE=`uname -m`
        echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
        test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains
        cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$BUILDMACHINE.tar.gz \
                build/{bin,etc,usr/bin,usr/local} \
-               build/tools/{bin,etc,*-linux-gnu,include,lib,libexec,sbin,share,var} \
+               build/tools/{bin,etc,*-linux-gnu*,include,lib,libexec,sbin,share,var} \
                log >> $LOGFILE
        md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$BUILDMACHINE.tar.gz \
                > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$BUILDMACHINE.md5
        stdumount
        ;;
 gettoolchain)
-       BUILDMACHINE=`uname -m`
        # arbitrary name to be updated in case of new toolchain package upload
        PACKAGE=$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$BUILDMACHINE
        if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then
@@ -992,11 +1090,12 @@ uploadsrc)
                beautify message FAIL
                exit 1
        fi
+
        URL_SOURCE=$(grep URL_SOURCE lfs/Config | awk '{ print $3 }')
-       REMOTE_FILES=$(echo "ls -1" | sftp -C ${IPFIRE_USER}@${URL_SOURCE})
+       REMOTE_FILES=$(echo "ls -1 --ignore=toolchains" | sftp -C ${IPFIRE_USER}@${URL_SOURCE})
 
        cd $BASEDIR/cache/
-       for file in $(ls -1); do
+       for file in $(ls -1 --ignore=toolchains); do
                grep -q "$file" <<<$REMOTE_FILES && continue
                NEW_FILES="$NEW_FILES $file"
        done