X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=make.sh;h=5eb8ba538c520cf63e9e3d266352ab9e87febfe4;hb=dd36ba849c18eb4fac4b3451005330b1a1ae078f;hp=cf15c5b59dd378f2ce77cc91fec11bc3e2028728;hpb=03ad5f93eb86832e32f8dc1b8bbbb16fa7212c27;p=people%2Fpmueller%2Fipfire-2.x.git diff --git a/make.sh b/make.sh old mode 100644 new mode 100755 index cf15c5b59d..98fc8b6658 --- a/make.sh +++ b/make.sh @@ -17,28 +17,22 @@ # along with IPFire; if not, write to the Free Software # # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # -# Copyright (C) 2006 IPFire-Team . # +# Copyright (C) 2007 IPFire-Team . # # # ############################################################################ # -NAME="IPFire" # Software name -SNAME="ipfire" # Short name -VERSION="2.0" # Version number -SLOGAN="www.ipfire.eu" # Software slogan -CONFIG_ROOT=/var/ipfire # Configuration rootdir -NICE=10 # Nice level -MAX_RETRIES=1 # prefetch/check loop +NAME="IPFire" # Software name +SNAME="ipfire" # Short name +VERSION="2.1" # 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-` -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 +IPFVER="full" # Which versions should be compiled? (full|devel) # Debian specific settings if [ ! -e /etc/debian_version ]; then @@ -66,7 +60,24 @@ 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 + +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() { @@ -76,11 +87,11 @@ prepareenv() { # # ############################################################################ if [ ! "$BASH" ]; then - exiterror "BASH environment variable is not set. You're probably running the wrong shell." + exiterror "BASH environment variable is not set. You're probably running the wrong shell." fi if [ -z "${BASH_VERSION}" ]; then - exiterror "Not running BASH shell." + exiterror "Not running BASH shell." fi @@ -100,10 +111,10 @@ prepareenv() { echo -ne "Resetting our nice level to $NICE" | tee -a $LOGFILE renice $NICE $$ > /dev/null if [ `nice` != "$NICE" ]; then - beautify message FAIL - exiterror "Failed to set correct nice level" + beautify message FAIL + exiterror "Failed to set correct nice level" else - beautify message DONE + beautify message DONE fi @@ -114,10 +125,10 @@ prepareenv() { ############################################################################ echo -ne "Checking if we're running as root user" | tee -a $LOGFILE if [ `id -u` != 0 ]; then - beautify message FAIL - exiterror "Not building as root" + beautify message FAIL + exiterror "Not building as root" else - beautify message DONE + beautify message DONE fi @@ -129,14 +140,14 @@ 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 - BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'` - if (( 2202000 - $BASE_USPACE > $BASE_ASPACE )); then - beautify message FAIL - exiterror "Not enough temporary space available, need at least 2.1GB on $BASE_DEV" - fi + if (( 2048000 > $BASE_ASPACE )); then + BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'` + if (( 2048000 - $BASE_USPACE > $BASE_ASPACE )); then + beautify message FAIL + exiterror "Not enough temporary space available, need at least 2GB on $BASE_DEV" + fi else - beautify message DONE + beautify message DONE fi ############################################################################ @@ -155,16 +166,16 @@ prepareenv() { rm -f /tools fi if [ ! -a /tools ]; then - ln -s $BASEDIR/build/tools / + ln -s $BASEDIR/build/tools / fi if [ ! -h /tools ]; then - exiterror "Could not create /tools symbolic link." + exiterror "Could not create /tools symbolic link." fi # Setup environment set +h LC_ALL=POSIX - MAKETUNING="-j8" + MAKETUNING="-j6" export LFS LC_ALL CFLAGS CXXFLAGS MAKETUNING unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD @@ -194,7 +205,9 @@ prepareenv() { mount --bind $BASEDIR/src $BASEDIR/build/usr/src/src # This is a temporary hack!!! - cp -f /bin/hostname /tools/bin/hostname 2>/dev/null + 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 @@ -248,7 +261,6 @@ buildbase() { LOGFILE="$BASEDIR/log/_build.base.log" export LOGFILE lfsmake2 stage2 -# lfsmake2 makedev lfsmake2 linux-libc-header lfsmake2 man-pages lfsmake2 glibc @@ -273,10 +285,10 @@ buildbase() { lfsmake2 bzip2 lfsmake2 diffutils lfsmake2 e2fsprogs + lfsmake2 ed lfsmake2 file lfsmake2 findutils lfsmake2 flex - lfsmake2 grub lfsmake2 gawk lfsmake2 gettext lfsmake2 grep @@ -286,12 +298,16 @@ buildbase() { lfsmake2 iproute2 lfsmake2 kbd lfsmake2 less + lfsmake2 libaal lfsmake2 make lfsmake2 man lfsmake2 mktemp lfsmake2 modutils + lfsmake2 mtd + lfsmake2 net-tools lfsmake2 patch lfsmake2 psmisc + lfsmake2 reiser4progs lfsmake2 shadow lfsmake2 sysklogd lfsmake2 sysvinit @@ -300,124 +316,119 @@ buildbase() { lfsmake2 udev lfsmake2 util-linux lfsmake2 vim -#### -# lfsmake2 net-tools -# lfsmake2 inetutils -# lfsmake2 ed -# lfsmake2 procinfo + lfsmake2 grub } buildipfire() { LOGFILE="$BASEDIR/log/_build.ipfire.log" export LOGFILE ipfiremake configroot + ipfiremake backup ipfiremake dhcp ipfiremake dhcpcd ipfiremake libusb ipfiremake libpcap -# 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 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 dm9601 SMP=1 + ipfiremake kqemu SMP=1 + ipfiremake sane KMOD=1 SMP=1 + ipfiremake linux + ipfiremake ipp2p + ipfiremake zaptel + ipfiremake r8169 + ipfiremake r8168 + ipfiremake mcs7830 + ipfiremake atl1 + ipfiremake dm9601 + ipfiremake kqemu + ipfiremake sane KMOD=1 + ipfiremake pkg-config + ipfiremake linux-atm + ipfiremake cpio + ipfiremake klibc + ipfiremake mkinitcpio + ipfiremake udev KLIBC=1 ipfiremake expat ipfiremake gdbm ipfiremake gmp + ipfiremake pam ipfiremake openssl + ipfiremake curl ipfiremake python ipfiremake libnet + ipfiremake libidn + ipfiremake libjpeg ipfiremake libpng ipfiremake libtiff - ipfiremake libjpeg - ipfiremake lcms - ipfiremake libmng + ipfiremake libart ipfiremake freetype ipfiremake gd ipfiremake popt + ipfiremake pcre ipfiremake slang ipfiremake newt ipfiremake libcap ipfiremake pciutils - ipfiremake pcre - ipfiremake readline + ipfiremake usbutils ipfiremake libxml2 - ipfiremake berkeley - ipfiremake BerkeleyDB ## The Perl module + ipfiremake libxslt + ipfiremake BerkeleyDB ipfiremake mysql - ipfiremake saslauthd PASS=1 + ipfiremake cyrus-sasl ipfiremake openldap ipfiremake apache2 ipfiremake php - ipfiremake subversion - ipfiremake apache2 PASS=CONFIG + ipfiremake apache2 PASS=C ipfiremake arping ipfiremake beep ipfiremake bind - ipfiremake capi4k-utils ipfiremake cdrtools ipfiremake dnsmasq ipfiremake dosfstools + ipfiremake squashfstools + ipfiremake reiserfsprogs + ipfiremake xfsprogs + ipfiremake sysfsutils + ipfiremake fuse + ipfiremake ntfs-3g ipfiremake ethtool ipfiremake ez-ipupdate ipfiremake fcron ipfiremake perl-GD + ipfiremake GD-Graph + ipfiremake GD-TextUtil ipfiremake gnupg ipfiremake hdparm - ipfiremake ibod + ipfiremake sdparm + ipfiremake mtools ipfiremake initscripts + ipfiremake whatmask ipfiremake iptables + ipfiremake libupnp + ipfiremake ipp2p IPT=1 + ipfiremake linux-igd ipfiremake ipac-ng ipfiremake ipaddr - ipfiremake iproute2 ipfiremake iptstate ipfiremake iputils ipfiremake l7-protocols - ipfiremake isapnptools - ipfiremake isdn4k-utils + ipfiremake mISDN + ipfiremake capi4k-utils + ipfiremake hwdata ipfiremake kudzu ipfiremake logrotate ipfiremake logwatch - ipfiremake mingetty ipfiremake misc-progs - ipfiremake mtools ipfiremake nano - ipfiremake nash ipfiremake nasm ipfiremake URI ipfiremake HTML-Tagset @@ -441,98 +452,125 @@ buildipfire() { ipfiremake Archive-Zip ipfiremake Text-Tabs+Wrap ipfiremake Locale-Country + ipfiremake XML-Parser + ipfiremake glib ipfiremake GeoIP ipfiremake fwhits ipfiremake noip_updater ipfiremake ntp - ipfiremake oinkmaster ipfiremake openssh ipfiremake openswan - ipfiremake pptpclient ipfiremake rrdtool ipfiremake setserial ipfiremake setup ipfiremake snort + ipfiremake oinkmaster ipfiremake squid ipfiremake squid-graph ipfiremake squidguard + ipfiremake calamaris ipfiremake tcpdump ipfiremake traceroute ipfiremake vlan ipfiremake wireless ipfiremake libsafe - ipfiremake 3c5x9setup ipfiremake pakfire - ipfiremake startscripts ipfiremake java - ipfiremake bootsplash ipfiremake spandsp ipfiremake lzo ipfiremake openvpn - ipfiremake pkg-config - ipfiremake glib - ipfiremake pam ipfiremake pammysql - ipfiremake saslauthd PASS=2 - ipfiremake xinetd - ipfiremake ghostscript ipfiremake cups + ipfiremake ghostscript + ipfiremake foomatic + ipfiremake hplip ipfiremake samba ipfiremake sudo ipfiremake mc ipfiremake wget - ipfiremake wput ipfiremake bridge-utils ipfiremake screen ipfiremake hddtemp ipfiremake smartmontools ipfiremake htop - ipfiremake lynx ipfiremake postfix - ipfiremake procmail ipfiremake fetchmail - ipfiremake cyrusimap - ipfiremake webcyradm - ipfiremake mailx + ipfiremake cyrus-imapd + ipfiremake openmailadmin ipfiremake clamav - ipfiremake razor ipfiremake spamassassin -# ipfiremake amavisd - ipfiremake stund - ipfiremake zaptel - ipfiremake libpri - ipfiremake bristuff - ipfiremake asterisk + ipfiremake amavisd + ipfiremake alsa ipfiremake mpg123 + ipfiremake mpfire + ipfiremake guardian + ipfiremake libid3tag ipfiremake libmad ipfiremake libogg ipfiremake libvorbis ipfiremake lame - ipfiremake xvid - ipfiremake mpeg2dec - ipfiremake ffmpeg ipfiremake sox + ipfiremake libshout + ipfiremake icecast + ipfiremake icegenerator + ipfiremake mpd + ipfiremake mpc + ipfiremake xvid + ipfiremake libmpeg2 + ipfiremake cmake + ipfiremake libpri + ipfiremake asterisk ipfiremake gnump3d - ipfiremake videolan + ipfiremake libsigc++ ipfiremake applejuice ipfiremake ocaml ipfiremake mldonkey - ipfiremake ntop + ipfiremake libtorrent + ipfiremake rtorrent + ipfiremake ipfireseeder ipfiremake rsync ipfiremake tcpwrapper ipfiremake portmap ipfiremake nfs ipfiremake nmap ipfiremake mbmon - ipfiremake iftop ipfiremake ncftp - ipfiremake cftp ipfiremake etherwake - ipfiremake ethereal - ipfiremake tftp-hpa - ipfiremake iptraf + ipfiremake bwm-ng + ipfiremake tripwire + ipfiremake sysstat + ipfiremake vsftpd + ipfiremake which + ipfiremake lsof + ipfiremake centerim + ipfiremake br2684ctl + ipfiremake pcmciautils + ipfiremake collectd + ipfiremake lcd4linux + ipfiremake neon + ipfiremake subversion + ipfiremake tcptrack + ipfiremake teamspeak + ipfiremake elinks + ipfiremake igmpproxy + ipfiremake sdl + ipfiremake qemu + ipfiremake sane + ipfiremake netpbm + ipfiremake phpSANE + ipfiremake tunctl ipfiremake nagios - ipfiremake yasuc + ipfiremake ebtables + ipfiremake arptables + ipfiremake fontconfig + ipfiremake freefont + ipfiremake ffmpeg + ipfiremake videolan + ipfiremake vdr + ipfiremake w_scan + ipfiremake git + ipfiremake squidclamav + ipfiremake bc } buildinstaller() { @@ -542,59 +580,48 @@ buildinstaller() { ipfiremake syslinux ipfiremake as86 ipfiremake mbr - ipfiremake uClibc + ipfiremake memtest + installmake linux-libc-header + installmake binutils + ipfiremake uClibc PASS=1 + ipfiremake gcc INST=1 + installmake uClibc PASS=2 + installmake gcc INST=2 + installmake uClibc PASS=3 installmake busybox + installmake udev + installmake slang + installmake newt + installmake gettext + installmake kbd + installmake popt installmake sysvinit - installmake e2fsprogs installmake misc-progs - installmake slang + installmake libaal + installmake reiser4progs + installmake reiserfsprogs + installmake sysfsutils installmake util-linux - installmake newt installmake pciutils - installmake pcmcia-cs - installmake kbd + installmake zlib + installmake mtd + installmake wget + installmake hwdata + installmake kudzu + installmake pcmciautils installmake installer - installmake scsi.img - installmake driver.img installmake initrd - installmake boot.img } 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 - 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 - # add -ls before -exec if you want to verify what files are stripped - - 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 - 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 + installmake strip # 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 @@ -602,15 +629,20 @@ 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$\|install1$\|install2$\|pass1$\|pass2$\|pass3$' \ $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 - rm -f $LFS/install/images/*usb* - cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1 + # Create images for install + ipfiremake cdrom ED=full + + # Check if there is a loop device for building in virtual environments + if [ -e /dev/loop/0 ] || [ -e /dev/loop0 ]; then + ipfiremake usb-stick + fi + mv $LFS/install/images/{*.iso,*.tgz,*.img.gz} $BASEDIR >> $LOGFILE 2>&1 ipfirepackages @@ -619,7 +651,7 @@ buildpackages() { rm -rf $BASEDIR/build/tmp/* # Generating total list of files - echo "`date -u '+%b %e %T'`: Generating files list from logs" | tee -a $LOGFILE + echo -n "Generating files list from logs" | tee -a $LOGFILE rm -f $BASEDIR/log/FILES for i in `ls -1tr $BASEDIR/log/[^_]*`; do if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then @@ -629,55 +661,23 @@ buildpackages() { cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES fi done - cd $BASEDIR/packages; ls -w1 *.ipfire | awk -F ".ipfire" '{ print $1 }' > $BASEDIR/packages/packages_list.txt - echo -n "###EOF###" >> $BASEDIR/packages/packages_list.txt + beautify message DONE cd $PWD - } ipfirepackages() { - if [ -d "$BASEDIR/packages" ]; then - for i in `ls $BASEDIR/packages`; do - touch $BASEDIR/build/install/packages/$i.empty - done - fi -# ipfiredist amavisd - ipfiredist applejuice - ipfiredist asterisk - ipfiredist clamav - ipfiredist cups - ipfiredist cyrusimap - ipfiredist fetchmail - ipfiredist ffmpeg - ipfiredist gnump3d - ipfiredist iptraf - ipfiredist java - ipfiredist lame - ipfiredist libmad - ipfiredist libogg - ipfiredist libtiff - ipfiredist libvorbis - ipfiredist mailx - ipfiredist mldonkey - ipfiredist mpeg2dec - ipfiredist nagios - ipfiredist nfs - ipfiredist nmap - ipfiredist ntop - ipfiredist portmap - ipfiredist postfix - ipfiredist procmail - ipfiredist samba - ipfiredist sox - ipfiredist spamassassin - ipfiredist subversion - ipfiredist videolan - ipfiredist webcyradm - ipfiredist xvid - ipfiredist yasuc + ipfiremake core-updates + for i in $(ls -1 $BASEDIR/config/rootfiles/packages); do + if [ -e $BASEDIR/lfs/$i ]; then + ipfiredist $i + else + echo -n $i + beautify message SKIP + fi + done test -d $BASEDIR/packages || mkdir $BASEDIR/packages - mv -f $LFS/install/packages/*.{ipfire,md5} $BASEDIR/packages >> $LOGFILE 2>&1 + mv -f $LFS/install/packages/* $BASEDIR/packages >> $LOGFILE 2>&1 rm -rf $BASEDIR/build/install/packages/* } @@ -709,24 +709,19 @@ build) prepareenv fi - beautify build_stage "Building base" + beautify build_start + beautify build_stage "Building LFS" buildbase beautify build_stage "Building IPFire" buildipfire - # Setzen des IPFire Builds - if [ "$FIREBUILD" ]; then - echo "$FIREBUILD" > $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_end ;; shell) # enter a shell inside LFS chroot @@ -734,12 +729,8 @@ shell) prepareenv entershell ;; -changelog) - echo -n "Loading new Changelog from SVN: " - svn log http://svn.ipfire.eu/svn/ipfire > doc/ChangeLog - echo "Finished!" - ;; clean) + echo -en "${BOLD}Cleaning build directory...${NORMAL}" for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do $LOSETUP -d $i 2>/dev/null done @@ -760,59 +751,9 @@ clean) if [ -h /tools ]; then rm -f /tools fi + beautify message DONE ;; -newpak) - # create structure for a new package - echo -e "Name of the new package: $2" - if [ ! -f "lfs/$2" ]; then - echo "`date -u '+%b %e %T'`: Creating directory src/paks/$2" - mkdir -p src/paks/$2 - cd src/paks/$2 - echo "`date -u '+%b %e %T'`: Creating files" - cp $BASEDIR/lfs/postfix $BASEDIR/lfs/$2 - - touch ROOTFILES - touch {,un}install.sh - ## install.sh - echo '#!/bin/bash' > install.sh - echo '#' >> install.sh - echo '#################################################################' >> install.sh - echo '# #' >> install.sh - echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> install.sh - echo '# #' >> install.sh - echo '#################################################################' >> install.sh - echo '#' >> install.sh - echo '# Extract the files' >> install.sh - echo 'tar xfz files.tgz -C /' >> install.sh - echo 'cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2' >> install.sh - ## uninstall.sh - echo '#!/bin/bash' > uninstall.sh - echo '#################################################################' >> uninstall.sh - echo '# #' >> uninstall.sh - echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> uninstall.sh - echo '# #' >> uninstall.sh - echo '#################################################################' >> uninstall.sh - echo '#' >> uninstall.sh - echo '# Delete the files' >> uninstall.sh - echo '## Befehl fehlt noch' >> uninstall.sh - echo 'rm -f /opt/pakfire/installed/ROOTFILES.$2' >> uninstall.sh - echo "`date -u '+%b %e %T'`: Adding files to SVN" - cd - && svn add lfs/$2 && svn add src/paks/$2 - - echo -n "Do you want to remove the folders? [y/n]" - read REM - if [ "$REM" == "y" ]; then - echo "Removing the folders..." - svn del src/paks/$2 --force - else - echo "Folders are kept." - fi - else - echo "$2 already exists" - fi - exit 0 - ;; -prefetch) +downloadsrc) if [ ! -d $BASEDIR/cache ]; then mkdir $BASEDIR/cache fi @@ -883,11 +824,11 @@ gettoolchain) # arbitrary name to be updated in case of new toolchain package upload PACKAGE=$SNAME-$VERSION-toolchain-$BUILDMACHINE if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then - URL_IPFIRE=`grep URL_IPFIRE lfs/Config | awk '{ print $3 }'` + 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_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5 >& /dev/null + wget $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 else @@ -917,145 +858,105 @@ 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 - ;; + git pull + ;; commit|ci) - clear - 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 - ;; + 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.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..." - 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) - 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" - ;; + 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} master + ;; esac ;; uploadsrc) PWD=`pwd` cd $BASEDIR/cache/ 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 + ncftpls -u $FTP_CACHE_USER -p $FTP_CACHE_PASS ftp://$FTP_CACHE_URL/$FTP_CACHE_PATH/ > /tmp/ftplist for i in *; do - if [ "$i" == "toolchains" ]; then continue; fi - grep -q $i /var/tmp/ftplist + if [ "$(basename $i)" == "toolchains" ]; then continue; fi + grep -q $(basename $i) /tmp/ftplist if [ "$?" -ne "0" ]; then - echo -ne "$i" - ncftpput -bb -u $IPFIRE_FTP_USER_INT -p $IPFIRE_FTP_PASS_INT $IPFIRE_FTP_URL_INT $IPFIRE_FTP_PATH_INT/ $i > /dev/null 2>&1 - if [ "$?" -eq "0" ]; then - beautify message DONE - else + 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 done - rm -f /var/tmp/ftplist - UL_TIME_START=`date +'%s'` - ncftpbatch -d > /dev/null 2>&1 - while ps acx | grep -q ncftpbatch - do - UL_TIME=$(expr `date +'%s'` - $UL_TIME_START) - echo -ne "\r ${UL_TIME}s : Upload is running..." - sleep 1 - done - beautify message DONE + rm -f /tmp/ftplist cd $PWD exit 0 ;; upload) - case "$2" in - iso) - echo -e "Uploading the iso to $IPFIRE_FTP_URL_EXT." - cat < .ftp-commands -mkdir $IPFIRE_FTP_PATH_EXT -ls -lah + FTP_ISO_PORT=`echo "$FTP_ISO_URL" | awk -F: '{ print $2 }'` + FTP_ISO_URL=`echo "$FTP_ISO_URL" | awk -F: '{ print $1 }'` + if [ -z $FTP_ISO_PORT ]; then + FTP_ISO_PORT=21 + fi + cat < .ftp-commands +mkdir -p $FTP_ISO_PATH$SVN_REVISION +mkdir -p $FTP_ISO_PATH$SVN_REVISION/paks quit EOF - ncftp -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT < .ftp-commands - rm -f .ftp-commands - md5sum ipfire-install-$VERSION.i386.iso > ipfire-install-$VERSION.i386.iso.md5 - ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-install-$VERSION.i386.iso - ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-install-$VERSION.i386.iso.md5 - ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-source-r$SVN_REVISION.tar.gz - ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ svn_status - if [ "$?" -eq "0" ]; then - echo -e "The iso of Revision $SVN_REVISION was successfully uploaded to $IPFIRE_FTP_URL_EXT$IPFIRE_FTP_PATH_EXT/." - else - echo -e "There was an error while uploading the iso to the ftp server." - exit 1 - fi + ncftp -u $FTP_ISO_USER -p $FTP_ISO_PASS -P $FTP_ISO_PORT $FTP_ISO_URL < .ftp-commands + rm -f .ftp-commands + + case "$2" in + iso) + echo -e "Uploading the iso to $FTP_ISO_PATH/$SVN_REVISION." + + md5sum ipfire-$VERSION.$MACHINE-full.iso > ipfire-$VERSION.$MACHINE-full.iso.md5 + for i in svn_status ipfire-source-r$SVN_REVISION.tar.gz ipfire-$VERSION.$MACHINE-full.iso ipfire-$VERSION.$MACHINE-full.iso.md5 ipfire-$VERSION.$MACHINE-devel.iso ipfire-$VERSION.$MACHINE-devel.iso.md5; do + if [ -e "$i" ]; then + ncftpput -u $FTP_ISO_USER -p $FTP_ISO_PASS -P $FTP_ISO_PORT $FTP_ISO_URL $FTP_ISO_PATH$SVN_REVISION/ $i + if [ "$?" -eq "0" ]; then + echo "The file with name $i was successfully uploaded to $FTP_ISO_URL$FTP_ISO_PATH$SVN_REVISION/." + else + echo "There was an error while uploading the file $i to the ftp server." + exit 1 + fi + fi + done + rm -f ipfire-$VERSION.$MACHINE-full.iso.md5 if [ "$3" = "--with-sources-cd" ]; then - ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-sources-cd-$VERSION.$MACHINE.iso + ncftpput -u $FTP_ISO_USER -p $FTP_ISO_PASS -P $FTP_ISO_PORT $FTP_ISO_URL $FTP_ISO_PATH/$SVN_REVISION/ ipfire-sources-cd-$VERSION.$MACHINE.iso fi ;; paks) - cat < .ftp-commands -mkdir $IPFIRE_FTP_PATH_PAK -ls -lah -quit -EOF - ncftp -u $IPFIRE_FTP_USER_PAK -p $IPFIRE_FTP_PASS_PAK $IPFIRE_FTP_URL_PAK < .ftp-commands - rm -f .ftp-commands - ncftpput -z -u $IPFIRE_FTP_USER_PAK -p $IPFIRE_FTP_PASS_PAK $IPFIRE_FTP_URL_PAK $IPFIRE_FTP_PATH_PAK/ packages/* + ncftpput -u $FTP_ISO_USER -p $FTP_ISO_PASS -P $FTP_ISO_PORT $FTP_ISO_URL $FTP_ISO_PATH$SVN_REVISION/paks packages/* if [ "$?" -eq "0" ]; then - echo -e "The packages were successfully uploaded to $IPFIRE_FTP_URL_PAK$IPFIRE_FTP_PATH_PAK/." + echo -e "The packages were successfully uploaded to $FTP_ISO_URL$FTP_ISO_PATH$SVN_REVISION/." else echo -e "There was an error while uploading the packages to the ftp server." exit 1 @@ -1064,7 +965,7 @@ EOF esac ;; batch) - if [ "$2" -eq "--background" ]; then + if [ "$2" = "--background" ]; then batch_script exit $? fi @@ -1087,14 +988,30 @@ batch) watch) watch_screen ;; -*) +pxe) + case "$2" in + start) + start_tftpd + ;; + stop) + stop_tftpd + ;; + reload|restart) + reload_tftpd + ;; + esac + exit 0 + ;; +lang) + update_langs + ;; +"") 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" "LOG: Tail" "Help" do case $name in - "IPFIRE: Prefetch") - $0 prefetch + "IPFIRE: Downloadsrc") + $0 downloadsrc ;; "IPFIRE: Build (silent)") $0 build-silent @@ -1108,27 +1025,8 @@ 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|downloadsrc|shell|sync|toolchain}" cat doc/make.sh-usage ;; "LOG: Tail") @@ -1140,4 +1038,11 @@ watch) esac done ;; +config) + make_config + ;; +*) + echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}" + cat doc/make.sh-usage + ;; esac