X-Git-Url: http://git.ipfire.org/?p=ipfire-2.x.git;a=blobdiff_plain;f=make.sh;h=595abd432cf80726fdc771e5c5ab0d9e92bbee3b;hp=b1e9b68534523a620a91f400bff9fe96323d4e8d;hb=f98766eb9eac8dee2cfcbdabb78755e08ec39418;hpb=80756cd34478312d43c44dcb76df2532136dec3b diff --git a/make.sh b/make.sh index b1e9b68534..595abd432c 100755 --- a/make.sh +++ b/make.sh @@ -17,7 +17,7 @@ # 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-2011 IPFire-Team . # +# Copyright (C) 2007-2012 IPFire Team . # # # ############################################################################ # @@ -25,8 +25,8 @@ NAME="IPFire" # Software name SNAME="ipfire" # Short name VERSION="2.11" # Version number -CORE="54" # Core Level (Filename) -PAKFIRE_CORE="53" # Core Level (PAKFIRE) +CORE="65" # Core Level (Filename) +PAKFIRE_CORE="65" # 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,8 +37,7 @@ 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=1 -IPFVER="full" # Which versions should be compiled? (full|devel) +TOOLCHAINVER=3 BUILDMACHINE=$MACHINE if [ "$MACHINE" = "x86_64" ]; then @@ -72,14 +71,6 @@ mkdir $BASEDIR/log/ 2>/dev/null if [ -f .config ]; then . .config -else - 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 if [ -z $EDITOR ]; then @@ -189,7 +180,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 @@ -234,26 +229,50 @@ prepareenv() { } buildtoolchain() { - if [ "$(uname -m)" = "x86_64" ]; then - exiterror "Cannot build toolchain on x86_64. Please use the download." - fi + local error=false + case "${MACHINE}:$(uname -m)" in + # x86 + i586:i586|i586:i686) + # These are working. + ;; + i586:*) + error=true + ;; + + # ARM + armv5tel:armv5tel|armv5tel:armv5tejl|armv5tel:armv7l) + # These are working. + ;; + armv5tel:*) + error=true + ;; + esac + + ${error} && \ + exiterror "Cannot build ${MACHINE} toolchain on $(uname -m). Please use the download if any." + 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} + ORG_PATH=$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 fake-environ lfsmake1 tcl lfsmake1 expect lfsmake1 dejagnu @@ -287,9 +306,14 @@ 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 tzdata lfsmake2 cleanup-toolchain PASS=3 lfsmake2 binutils lfsmake2 gcc @@ -349,6 +373,7 @@ buildipfire() { export LOGFILE ipfiremake configroot ipfiremake backup + ipfiremake bind ipfiremake dhcp ipfiremake dhcpcd ipfiremake libusb @@ -360,58 +385,94 @@ buildipfire() { ipfiremake xz ipfiremake linux-firmware ipfiremake zd1211-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 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 - ipfiremake linux - ipfiremake kqemu - ipfiremake kvm-kmod - ipfiremake v4l-dvb - ipfiremake madwifi - ipfiremake alsa KMOD=1 - ipfiremake mISDN - ipfiremake dahdi KMOD=1 - ipfiremake cryptodev - ipfiremake compat-wireless -# ipfiremake r8169 -# ipfiremake r8168 -# ipfiremake r8101 - ipfiremake e1000 - ipfiremake e1000e - ipfiremake igb + ipfiremake fw_ath9k_htc + ipfiremake u-boot + + # The xen and PAE kernels are only available for x86 + if [ "${MACHINE_TYPE}" != "arm" ]; then + ipfiremake linux KCFG="-xen" + ipfiremake kqemu KCFG="-xen" + ipfiremake v4l-dvb KCFG="-xen" + ipfiremake madwifi KCFG="-xen" + ipfiremake mISDN KCFG="-xen" + ipfiremake dahdi KCFG="-xen" KMOD=1 + ipfiremake cryptodev KCFG="-xen" + ipfiremake compat-wireless KCFG="-xen" + ipfiremake r8169 KCFG="-xen" + ipfiremake r8168 KCFG="-xen" + ipfiremake r8101 KCFG="-xen" + ipfiremake e1000 KCFG="-xen" + ipfiremake e1000e KCFG="-xen" + ipfiremake igb KCFG="-xen" + ipfiremake linux KCFG="-pae" + ipfiremake kqemu KCFG="-pae" + ipfiremake kvm-kmod KCFG="-pae" + ipfiremake v4l-dvb KCFG="-pae" + ipfiremake madwifi KCFG="-pae" + ipfiremake alsa KCFG="-pae" KMOD=1 + ipfiremake mISDN KCFG="-pae" + ipfiremake dahdi KCFG="-pae" KMOD=1 + ipfiremake cryptodev KCFG="-pae" + ipfiremake compat-wireless KCFG="-pae" +# ipfiremake r8169 KCFG="-pae" +# ipfiremake r8168 KCFG="-pae" +# ipfiremake r8101 KCFG="-pae" + ipfiremake e1000 KCFG="-pae" + ipfiremake e1000e KCFG="-pae" + ipfiremake igb KCFG="-pae" + ipfiremake linux KCFG="" + ipfiremake v4l-dvb KCFG="" + ipfiremake kqemu KCFG="" + ipfiremake kvm-kmod KCFG="" + ipfiremake madwifi KCFG="" + ipfiremake alsa KCFG="" KMOD=1 + ipfiremake mISDN KCFG="" + ipfiremake dahdi KCFG="" KMOD=1 + ipfiremake cryptodev KCFG="" + ipfiremake compat-wireless KCFG="" +# ipfiremake r8169 KCFG="" +# ipfiremake r8168 KCFG="" +# ipfiremake r8101 KCFG="" + ipfiremake e1000 KCFG="" + ipfiremake e1000e KCFG="" + ipfiremake igb KCFG="" + else + # arm-versatile kernel build + ipfiremake linux KCFG="-versatile" + ipfiremake v4l-dvb KCFG="-versatile" + ipfiremake kqemu KCFG="-versatile" + ipfiremake kvm-kmod KCFG="-versatile" + ipfiremake madwifi KCFG="-versatile" + ipfiremake mISDN KCFG="-versatile" + ipfiremake dahdi KCFG="-versatile" KMOD=1 + ipfiremake cryptodev KCFG="-versatile" + ipfiremake compat-wireless KCFG="-versatile" +# ipfiremake r8169 KCFG="-versatile" +# ipfiremake r8168 KCFG="-versatile" +# ipfiremake r8101 KCFG="-versatile" + ipfiremake e1000 KCFG="-versatile" + ipfiremake e1000e KCFG="-versatile" + ipfiremake igb KCFG="-versatile" + # arm-kirkwood kernel build + ipfiremake linux KCFG="-kirkwood" + ipfiremake v4l-dvb KCFG="-kirkwood" + ipfiremake kqemu KCFG="-kirkwood" + ipfiremake kvm-kmod KCFG="-kirkwood" + ipfiremake madwifi KCFG="-kirkwood" + ipfiremake mISDN KCFG="-kirkwood" + ipfiremake dahdi KCFG="-kirkwood" KMOD=1 + ipfiremake cryptodev KCFG="-kirkwood" + ipfiremake compat-wireless KCFG="-kirkwood" +# ipfiremake r8169 KCFG="-kirkwood" +# ipfiremake r8168 KCFG="-kirkwood" +# ipfiremake r8101 KCFG="-kirkwood" + ipfiremake e1000 KCFG="-kirkwood" + ipfiremake e1000e KCFG="-kirkwood" + ipfiremake igb KCFG="-kirkwood" + fi ipfiremake pkg-config ipfiremake linux-atm ipfiremake cpio - - installmake strip - ipfiremake dracut ipfiremake expat ipfiremake gdbm @@ -427,6 +488,7 @@ buildipfire() { ipfiremake libnl ipfiremake libidn ipfiremake libjpeg + ipfiremake libexif ipfiremake libpng ipfiremake libtiff ipfiremake libart @@ -452,8 +514,7 @@ buildipfire() { ipfiremake apache2 PASS=C ipfiremake arping ipfiremake beep - ipfiremake bind - ipfiremake cdrtools + ipfiremake dvdrtools ipfiremake dnsmasq ipfiremake dosfstools ipfiremake reiserfsprogs @@ -500,6 +561,7 @@ buildipfire() { ipfiremake Net-IPv4Addr ipfiremake Net_SSLeay ipfiremake IO-Stringy + ipfiremake IO-Socket-SSL ipfiremake Unix-Syslog ipfiremake Mail-Tools ipfiremake MIME-Tools @@ -511,6 +573,8 @@ buildipfire() { ipfiremake Text-Tabs+Wrap ipfiremake Locale-Country ipfiremake XML-Parser + ipfiremake Crypt-PasswdMD5 + ipfiremake Net-Telnet ipfiremake python-setuptools ipfiremake python-clientform ipfiremake python-mechanize @@ -570,6 +634,7 @@ buildipfire() { ipfiremake libogg ipfiremake libvorbis ipfiremake libdvbpsi + ipfiremake flac ipfiremake lame ipfiremake sox ipfiremake libshout @@ -603,7 +668,6 @@ buildipfire() { ipfiremake lm_sensors ipfiremake liboping ipfiremake collectd - ipfiremake lcd4linux ipfiremake teamspeak ipfiremake elinks ipfiremake igmpproxy @@ -702,6 +766,17 @@ buildipfire() { ipfiremake intltool ipfiremake pakfire3-deps ipfiremake transmission + ipfiremake dpfhack + ipfiremake lcd4linux + ipfiremake mtr + ipfiremake tcpick + ipfiremake minidlna + ipfiremake fping + ipfiremake telnet + ipfiremake stress + ipfiremake libstatgrab + ipfiremake sarg + ipfiremake sendEmail echo Build on $HOSTNAME > $BASEDIR/build/var/ipfire/firebuild cat /proc/version >> $BASEDIR/build/var/ipfire/firebuild echo >> $BASEDIR/build/var/ipfire/firebuild @@ -711,10 +786,10 @@ buildipfire() { echo >> $BASEDIR/build/var/ipfire/firebuild cat /proc/cpuinfo >> $BASEDIR/build/var/ipfire/firebuild echo $PAKFIRE_CORE > $BASEDIR/build/opt/pakfire/db/core/mine - if [ "$GIT_BRANCH" = "master" ]; then - echo "$NAME $VERSION - (Development Build: $GIT_LASTCOMMIT)" > $BASEDIR/build/etc/system-release + if [ "$GIT_BRANCH" = "master" -o "$GIT_BRANCH" = "next" ]; then + echo "$NAME $VERSION ($MACHINE) - Development Build: $GIT_LASTCOMMIT" > $BASEDIR/build/etc/system-release else - echo "$NAME $VERSION - $GIT_BRANCH" > $BASEDIR/build/etc/system-release + echo "$NAME $VERSION ($MACHINE) - $GIT_BRANCH" > $BASEDIR/build/etc/system-release fi } @@ -754,15 +829,19 @@ buildpackages() { # Update changelog cd $BASEDIR - $0 git 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 # Create images for install - ipfiremake cdrom ED=$IPFVER + ipfiremake cdrom # Check if there is a loop device for building in virtual environments - if [ $BUILD_IMAGES == 1 ] && ([ -e /dev/loop/0 ] || [ -e /dev/loop0 ]); then - ipfiremake usb-stick ED=$IPFVER - ipfiremake flash-images ED=$IPFVER + if [ $BUILD_IMAGES == 1 ] && ([ -e /dev/loop/0 ] || [ -e /dev/loop0 ]); then + if [ "${MACHINE_TYPE}" != "arm" ]; then + ipfiremake usb-stick + fi + ipfiremake flash-images fi mv $LFS/install/images/{*.iso,*.tgz,*.img.gz,*.bz2} $BASEDIR >> $LOGFILE 2>&1 @@ -770,10 +849,10 @@ buildpackages() { ipfirepackages # Check if there is a loop device for building in virtual environments - if [ $BUILD_IMAGES == 1 ] && ([ -e /dev/loop/0 ] || [ -e /dev/loop0 ]); then + if [ $BUILD_IMAGES == 1 ] && ([ -e /dev/loop/0 ] || [ -e /dev/loop0 ]) && [ "${MACHINE_TYPE}" != "arm" ]; then cp -f $BASEDIR/packages/linux-xen-*.ipfire $LFS/install/packages/ cp -f $BASEDIR/packages/meta-linux-xen $LFS/install/packages/ - ipfiremake xen-image ED=$IPFVER + ipfiremake xen-image rm -rf $LFS/install/packages/linux-xen-*.ipfire rm -rf $LFS/install/packages/meta-linux-xen fi @@ -807,7 +886,10 @@ buildpackages() { ipfirepackages() { ipfiremake core-updates - for i in $(ls -1 $BASEDIR/config/rootfiles/packages); do + + local i + for i in $(find $BASEDIR/config/rootfiles/packages{${machine},} -maxdepth 1 -type f); do + i=$(basename ${i}) if [ -e $BASEDIR/lfs/$i ]; then ipfiredist $i else @@ -915,8 +997,10 @@ downloadsrc) cd $BASEDIR/lfs 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 + lfsmakecommoncheck ${i} || continue + + 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 @@ -932,7 +1016,9 @@ 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 + lfsmakecommoncheck ${i} > /dev/null || continue + 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 @@ -958,7 +1044,7 @@ toolchain) 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-$MACHINE.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-$MACHINE.tar.gz \ > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.md5 @@ -1002,54 +1088,6 @@ othersrc) fi stdumount ;; -git) - case "$2" in - update|up) - ## REMOVES ALL UNCOMMITTED CHANGES! - [ "$3" == "--force" ] && git checkout -f - git pull - ;; - commit|ci) - 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) - git archive HEAD | gzip -9 > ${SNAME}-${VERSION}.tar.gz - ;; - diff|di) - 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} $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 @@ -1071,83 +1109,9 @@ uploadsrc) cd $PWD exit 0 ;; -batch) - if [ "$2" = "--background" ]; then - batch_script - exit $? - fi - if [ `screen -ls | grep -q ipfire` ]; then - echo "Build is already running, sorry!" - exit 1 - else - if [ "$2" = "--rebuild" ]; then - export IPFIRE_REBUILD=1 - echo "REBUILD!" - else - export IPFIRE_REBUILD=0 - fi - echo -en "${BOLD}***IPFire-Batch-Build is starting...${NORMAL}" - screen -dmS ipfire $0 batch --background - evaluate 1 - exit 0 - fi - ;; -watch) - watch_screen - ;; -pxe) - case "$2" in - start) - start_tftpd - ;; - stop) - stop_tftpd - ;; - reload|restart) - reload_tftpd - ;; - esac - exit 0 - ;; lang) update_langs ;; -"") - clear - 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") - $0 downloadsrc - ;; - "IPFIRE: Build (silent)") - $0 build-silent - ;; - "IPFIRE: Watch Build") - $0 watch - ;; - "IPFIRE: Batch") - $0 batch - ;; - "IPFIRE: Clean") - $0 clean - ;; - "Help") - echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}" - cat doc/make.sh-usage - ;; - "LOG: Tail") - tail -f log/_* - ;; - "Exit") - break - ;; - esac - done - ;; -config) - make_config - ;; *) echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}" cat doc/make.sh-usage