]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - make.sh
Applied changes to make.sh.
[people/pmueller/ipfire-2.x.git] / make.sh
diff --git a/make.sh b/make.sh
index d65dad0c71d0efe82fe512c354181de15ac7ba7b..dadf2ff6e5f3a51d21748409be569a62f22a617a 100755 (executable)
--- a/make.sh
+++ b/make.sh
 
 NAME="IPFire"                                                                          # Software name
 SNAME="ipfire"                                                                 # Short name
-VERSION="2.1"                                                                          # Version number
+VERSION="2.3"
+CORE="28"
+GIT_BRANCH=master:master                                                                               # Version number
 SLOGAN="www.ipfire.org"                                        # Software slogan
 CONFIG_ROOT=/var/ipfire                                        # Configuration rootdir
 NICE=10                                                                                                        # Nice level
 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-`
-
+GIT_TAG=$(git tag | tail -1)
+TOOLCHAINVER=1
 IPFVER="full"                          # Which versions should be compiled? (full|devel)
 
 # Debian specific settings
@@ -70,6 +72,17 @@ else
        fi
 fi
 
+if [ -z $EDITOR ]; then
+       for i in nano emacs vi; do
+               EDITOR=$(which $i 2>/dev/null)
+               if ! [ -z $EDITOR ]; then
+                       export EDITOR=$EDITOR
+                       break
+               fi
+       done
+       [ -z $EDITOR ] && exiterror "You should have installed an editor."
+fi
+
 prepareenv() {
     ############################################################################
     #                                                                          #
@@ -165,7 +178,9 @@ prepareenv() {
     # Setup environment
     set +h
     LC_ALL=POSIX
-    MAKETUNING="-j6"
+    if [ -z $MAKETUNING ]; then
+       MAKETUNING="-j6"
+    fi
     export LFS LC_ALL CFLAGS CXXFLAGS MAKETUNING
     unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
 
@@ -292,7 +307,7 @@ buildbase() {
     lfsmake2 make
     lfsmake2 man
     lfsmake2 mktemp
-    lfsmake2 modutils
+    lfsmake2 module-init-tools
     lfsmake2 mtd
     lfsmake2 net-tools
     lfsmake2 patch
@@ -320,27 +335,23 @@ buildipfire() {
   ipfiremake libpcap
   ipfiremake ppp
   ipfiremake rp-pppoe
+  ipfiremake pptp
   ipfiremake unzip
-  ipfiremake linux                     SMP=1
-  ipfiremake ipp2p                     SMP=1
-  ipfiremake zaptel                    SMP=1
-  ipfiremake r8169                     SMP=1
-  ipfiremake r8168                     SMP=1
-  ipfiremake mcs7830                   SMP=1
-  ipfiremake atl1                      SMP=1
   ipfiremake linux
-  ipfiremake ipp2p
-  ipfiremake zaptel
-  ipfiremake r8169
-  ipfiremake r8168
-  ipfiremake mcs7830
-  ipfiremake atl1
+  ipfiremake atl2
+  ipfiremake kqemu
+  ipfiremake v4l-dvb
+  ipfiremake madwifi
+  ipfiremake alsa                      KMOD=1
+  ipfiremake openswan                  KMOD=1
+  ipfiremake mISDN
+  ipfiremake linux                     XEN=1
   ipfiremake pkg-config
   ipfiremake linux-atm
   ipfiremake cpio
   ipfiremake klibc
   ipfiremake mkinitcpio
-  ipfiremake udev                              KLIBC=1
+  ipfiremake udev                      KLIBC=1
   ipfiremake expat
   ipfiremake gdbm
   ipfiremake gmp
@@ -398,14 +409,11 @@ buildipfire() {
   ipfiremake whatmask
   ipfiremake iptables
   ipfiremake libupnp
-  ipfiremake ipp2p                     IPT=1
-  ipfiremake linux-igd
-  ipfiremake ipac-ng
   ipfiremake ipaddr
   ipfiremake iptstate
   ipfiremake iputils
   ipfiremake l7-protocols
-  ipfiremake mISDN
+  ipfiremake mISDNuser
   ipfiremake capi4k-utils
   ipfiremake hwdata
   ipfiremake kudzu
@@ -437,20 +445,23 @@ buildipfire() {
   ipfiremake Text-Tabs+Wrap
   ipfiremake Locale-Country
   ipfiremake XML-Parser
+  ipfiremake python-setuptools
+  ipfiremake python-clientform
+  ipfiremake python-mechanize
+  ipfiremake python-feedparser
+  ipfiremake python-rssdler
   ipfiremake glib
   ipfiremake GeoIP
   ipfiremake fwhits
   ipfiremake noip_updater
   ipfiremake ntp
   ipfiremake openssh
-  ipfiremake openswan
   ipfiremake rrdtool
   ipfiremake setserial
   ipfiremake setup
   ipfiremake snort
   ipfiremake oinkmaster
   ipfiremake squid
-  ipfiremake squid-graph
   ipfiremake squidguard
   ipfiremake calamaris
   ipfiremake tcpdump
@@ -485,23 +496,19 @@ buildipfire() {
   ipfiremake spamassassin
   ipfiremake amavisd
   ipfiremake alsa
-  ipfiremake mpg123
   ipfiremake mpfire
   ipfiremake guardian
   ipfiremake libid3tag
   ipfiremake libmad
   ipfiremake libogg
   ipfiremake libvorbis
+  ipfiremake libdvbpsi
   ipfiremake lame
   ipfiremake sox
   ipfiremake libshout
-  ipfiremake icecast
-  ipfiremake icegenerator
-  ipfiremake mpd
-  ipfiremake mpc
   ipfiremake xvid
   ipfiremake libmpeg2
-  ipfiremake videolan
+  ipfiremake cmake
   ipfiremake libpri
   ipfiremake asterisk
   ipfiremake gnump3d
@@ -517,7 +524,6 @@ buildipfire() {
   ipfiremake portmap
   ipfiremake nfs
   ipfiremake nmap
-  ipfiremake mbmon
   ipfiremake ncftp
   ipfiremake etherwake
   ipfiremake bwm-ng
@@ -525,25 +531,91 @@ buildipfire() {
   ipfiremake sysstat
   ipfiremake vsftpd
   ipfiremake which
+  ipfiremake openswan
   ipfiremake lsof
   ipfiremake centerim
   ipfiremake br2684ctl
   ipfiremake pcmciautils
+  ipfiremake lm_sensors
   ipfiremake collectd
   ipfiremake lcd4linux
-  ipfiremake neon
-  ipfiremake subversion
   ipfiremake tcptrack
   ipfiremake teamspeak
   ipfiremake elinks
-  
+  ipfiremake igmpproxy
+  ipfiremake fbset
+  ipfiremake sdl
+  ipfiremake qemu
+  ipfiremake sane
+  ipfiremake netpbm
+  ipfiremake phpSANE
+  ipfiremake tunctl
+  ipfiremake nagios
+  ipfiremake ebtables
+  ipfiremake fontconfig
+  ipfiremake freefont
+  ipfiremake directfb
+  ipfiremake dfb++
+  ipfiremake ffmpeg
+  ipfiremake videolan
+  ipfiremake vdr
+  ipfiremake w_scan
+  ipfiremake icecast
+  ipfiremake icegenerator
+  ipfiremake mpd
+  ipfiremake mpc
+  ipfiremake git
+  ipfiremake squidclamav
+  ipfiremake bc
+  ipfiremake esniper
+  ipfiremake vnstat
+  ipfiremake vnstati
+  ipfiremake wpa_supplicant
+  ipfiremake hostapd
+  ipfiremake urlgrabber
+  ipfiremake syslinux
+  ipfiremake tftpd
+  ipfiremake cpufrequtils
+  ipfiremake dbus
+  ipfiremake bluetooth
+  ipfiremake gutenprint
+  ipfiremake apcupsd
+  ipfiremake iperf
+  ipfiremake netcat
+  ipfiremake 7zip
+  ipfiremake lynis
+  ipfiremake cryptsetup
+  ipfiremake splix
+  ipfiremake streamripper
+  ipfiremake sshfs
+  ipfiremake sqlite
+  ipfiremake taglib
+#  ipfiremake mediatomb
+  ipfiremake sslh
+  ipfiremake perl-gettext
+  ipfiremake vdradmin
+  ipfiremake x11libs
+  ipfiremake xen
+  ipfiremake miau
+  ipfiremake net-snmp
+  ipfiremake perl-DBI
+  ipfiremake perl-DBD-mysql
+  ipfiremake lcr
+  echo Build on $HOSTNAME > $BASEDIR/build/var/ipfire/firebuild
+  cat /proc/version >> $BASEDIR/build/var/ipfire/firebuild
+  echo >> $BASEDIR/build/var/ipfire/firebuild
+  git log -1 >> $BASEDIR/build/var/ipfire/firebuild
+  echo >> $BASEDIR/build/var/ipfire/firebuild
+  git status >> $BASEDIR/build/var/ipfire/firebuild
+  echo >> $BASEDIR/build/var/ipfire/firebuild
+  cat /proc/cpuinfo >> $BASEDIR/build/var/ipfire/firebuild
+  echo $CORE > $BASEDIR/build/opt/pakfire/db/core/mine
 }
 
 buildinstaller() {
   # Run installer scripts one by one
   LOGFILE="$BASEDIR/log/_build.installer.log"
   export LOGFILE
-  ipfiremake syslinux
   ipfiremake as86
   ipfiremake mbr
   ipfiremake memtest
@@ -600,15 +672,22 @@ buildpackages() {
   rm -f $BASEDIR/doc/packages-list
   # packages-list.txt is ready to be displayed for wiki page
   beautify message DONE
+  
+  # Update changelog
+  cd $BASEDIR
+  $0 git log
 
   # Create images for install
-       ipfiremake cdrom ED=full
+       ipfiremake cdrom ED=$IPFVER
        
   # Check if there is a loop device for building in virtual environments
   if [ -e /dev/loop/0 ] || [ -e /dev/loop0 ]; then
-       ipfiremake usb-stick
+       ipfiremake usb-stick ED=$IPFVER
   fi
-  mv $LFS/install/images/{*.iso,*.tgz,*.img.gz} $BASEDIR >> $LOGFILE 2>&1
+
+  # Create updater package
+  #ipfiremake updater
+  mv $LFS/install/images/{*.iso,*.tgz,*.img.gz,*.bz2} $BASEDIR >> $LOGFILE 2>&1
 
   ipfirepackages
 
@@ -652,7 +731,7 @@ 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`
+       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
                if [ ! -n "$PACKAGE" ]; then
@@ -682,18 +761,16 @@ build)
        beautify build_stage "Building IPFire"
        buildipfire
 
-       # Setzen des IPFire Builds
-       if [ "$SVN_REVISION" ]; then
-               echo "$SVN_REVISION" > $BASEDIR/build/var/ipfire/firebuild
-       else
-               echo "_(OvO)_" > $BASEDIR/build/var/ipfire/firebuild
-       fi
-
        beautify build_stage "Building installer"
        buildinstaller
 
        beautify build_stage "Building packages"
        buildpackages
+       
+       beautify build_stage "Checking Logfiles for new Files"
+       cd ..
+       tools/checknewlog.pl
+
        beautify build_end
        ;;
 shell)
@@ -702,11 +779,6 @@ shell)
        prepareenv
        entershell
        ;;
-changelog)
-       echo -n "Loading new Changelog from SVN: "
-       svn log http://svn.ipfire.org/svn/ipfire > doc/ChangeLog
-       beautify message DONE
-       ;;
 clean)
        echo -en "${BOLD}Cleaning build directory...${NORMAL}"
        for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
@@ -789,26 +861,26 @@ toolchain)
        BUILDMACHINE=`uname -m`
        echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
        test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains
-       cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
+       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} \
                log >> $LOGFILE
-       md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
-               > cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5
+       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-$BUILDMACHINE
+       PACKAGE=$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$BUILDMACHINE
        if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then
                URL_TOOLCHAIN=`grep URL_TOOLCHAIN lfs/Config | awk '{ print $3 }'`
                test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains
                echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
                cd $BASEDIR/cache/toolchains
-               wget $URL_TOOLCHAIN/$PACKAGE.tar.gz $URL_TOOLCHAIN/$PACKAGE.md5 >& /dev/null
+               wget -U "IPFireSourceGrabber/2.x" $URL_TOOLCHAIN/$PACKAGE.tar.gz $URL_TOOLCHAIN/$PACKAGE.md5 >& /dev/null
                if [ $? -ne 0 ]; then
-                       echo "`date -u '+%b %e %T'`: error downloading toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE
+                       echo "`date -u '+%b %e %T'`: error downloading $PACKAGE toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE
                else
                        if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
                                echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
@@ -836,106 +908,71 @@ othersrc)
        fi
        stdumount
        ;;
-svn)
+git)
        case "$2" in
          update|up)
-               # clear
-               echo -ne "Loading the latest source files...\n"
-               if [ $3 ]; then
-                       svn update -r $3 | tee -a $PWD/log/_build.svn.update.log
-               else
-                       svn update | tee -a $PWD/log/_build.svn.update.log
-               fi
-               if [ $? -eq "0" ]; then
-                       beautify message DONE
-               else
-                       beautify message FAIL
-                       exit 1
-               fi
-               echo -ne "Writing the svn-info to a file"
-               svn info > $PWD/svn_status
-               if [ $? -eq "0" ]; then
-                       beautify message DONE
-               else
-                       beautify message FAIL
-                       exit 1
-               fi
-               chmod 755 $0
-               exit 0
-         ;;
+                       ## REMOVES ALL UNCOMMITTED CHANGES!
+                       [ "$3" == "--force" ] && git checkout -f
+                       git pull
+               ;;
          commit|ci)
-               clear
-               if [ -f /usr/bin/mcedit ]; then
-                       export EDITOR=/usr/bin/mcedit
-               fi
-               if [ -f /usr/bin/nano ]; then
-                       export EDITOR=/usr/bin/nano
-               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
-               update_langs
-               svn commit
-               $0 svn up
-               if [ -n "$FTP_CACHE_URL" ]; then
-                       $0 uploadsrc
-               fi
-         ;;
+               shift 2
+                       git commit $*
+                       
+                       [ "$?" -eq "0" ] || exiterror "git commit $* failed."
+                       
+                       echo -e "${BOLD}Do you want to push, too? [y/N]${NORMAL}"
+                       read
+                       [ -z $REPLY ] && exit 0
+                       for i in y Y j J; do
+                               if [ "$i" == "$REPLY" ]; then
+                                       $0 git push
+                                       exit $?
+                               fi
+                       done
+                       exiterror "\"$REPLY\" is not a valid answer."
+               ;;
          dist)
-               if [ $3 ]; then
-                       SVN_REVISION=$3
-               fi
-               if [ -f ipfire-source-r$SVN_REVISION.tar.gz ]; then
-                       echo -ne "REV $SVN_REVISION: SKIPPED!\n"
-                       exit 0
-               fi
-               echo -en "REV $SVN_REVISION: Downloading..."
-               svn export http://svn.ipfire.org/svn/ipfire/trunk ipfire-source/ --force > /dev/null
-               svn log http://svn.ipfire.org/svn/ipfire/trunk -r 1:$SVN_REVISION > ipfire-source/Changelog
-               #svn info http://svn.ipfire.org/svn/ipfire/trunk -r $SVN_REVISION > ipfire-source/svn_status
-               evaluate 1
-
-               echo -en "REV $SVN_REVISION: Compressing files..."
-               if [ -e ipfire-source/trunk/make.sh ]; then
-                       chmod 755 ipfire-source/trunk/make.sh
-               fi
-               tar cfz ipfire-source-r$SVN_REVISION.tar.gz ipfire-source
-               evaluate 1
-               echo -en "REV $SVN_REVISION: Cleaning up..."
-               rm ipfire-source/ -r
-               evaluate 1
-         ;;
+                       git archive HEAD | gzip -9 > ${SNAME}-${VERSION}.tar.gz
+                 ;;
          diff|di)
-         update_langs
-               echo -ne "Make a local diff to last svn revision"
-               svn diff > ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff
-               evaluate 1
-               echo "Diff was successfully saved to ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff"
-               svn status
-         ;;
+                       echo -ne "Make a local diff to last revision"
+                       git diff HEAD > ipfire-diff-$(date +'%Y-%m-%d-%H:%M').diff
+                       evaluate 1
+                       echo "Diff was successfully saved to ipfire-diff-$(date +'%Y-%m-%d-%H:%M').diff"
+                       git diff --stat
+               ;;
+         push)
+               [ -z $GIT_USER ] && exiterror "You have to setup GIT_USER first."
+                       GIT_URL="ssh://${GIT_USER}@git.ipfire.org/pub/git/ipfire-2.x"
+                       
+               git push ${GIT_URL} ${GIT_BRANCH} $3
+               ;;
+         log)
+               [ -z $GIT_TAG ]  || LAST_TAG=$GIT_TAG
+               [ -z $LAST_TAG ] || EXT="$LAST_TAG..HEAD"
+
+               git log -n 500 --no-merges --pretty=medium --shortstat $EXT > $BASEDIR/doc/ChangeLog
+       ;;
        esac
        ;;
 uploadsrc)
        PWD=`pwd`
+       if [ -z $IPFIRE_USER ]; then
+               echo -n "You have to setup IPFIRE_USER first. See .config for details."
+               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})
+
        cd $BASEDIR/cache/
-       echo -e "Uploading cache to ftp server:"
-       ncftpls -u $FTP_CACHE_USER -p $FTP_CACHE_PASS ftp://$FTP_CACHE_URL/$FTP_CACHE_PATH/ > /tmp/ftplist
-       for i in *; do
-               if [ "$(basename $i)" == "toolchains" ]; then continue; fi
-               grep -q $(basename $i) /tmp/ftplist
-               if [ "$?" -ne "0" ]; then
-                       echo -ne "$(basename $i)"
-                       ncftpput -u $FTP_CACHE_USER -p $FTP_CACHE_PASS $FTP_CACHE_URL $FTP_CACHE_PATH/ $(basename $i)
-                       if [ "$?" -ne "0" ]; then
-                               beautify message FAIL
-                       fi
-               fi
+       for file in $(ls -1); do
+               grep -q "$file" <<<$REMOTE_FILES && continue
+               NEW_FILES="$NEW_FILES $file"
        done
-       rm -f /tmp/ftplist
+       [ -n "$NEW_FILES" ] && scp -2 $NEW_FILES ${IPFIRE_USER}@${URL_SOURCE}
+       cd $BASEDIR
        cd $PWD
        exit 0
        ;;
@@ -1028,8 +1065,7 @@ lang)
        ;;
 "")
        clear
-       svn info
-       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"
+       select name in "Exit" "IPFIRE: Downloadsrc" "IPFIRE: Build (silent)" "IPFIRE: Watch Build" "IPFIRE: Batch" "IPFIRE: Clean" "LOG: Tail" "Help"
        do
        case $name in
        "IPFIRE: Downloadsrc")
@@ -1047,9 +1083,6 @@ lang)
        "IPFIRE: Clean")
                $0 clean
                ;;
-       "SVN: Update")
-               $0 svn update
-               ;;
        "Help")
                echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}"
                cat doc/make.sh-usage