From df5e82b3830c8e6ef3522e06906261475f18f7d4 Mon Sep 17 00:00:00 2001 From: ms Date: Mon, 20 Feb 2006 20:46:53 +0000 Subject: [PATCH] Windows hat sie wieder zerschossen... :( git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@63 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8 --- lfs/driver.img | 234 +++--- lfs/linux | 582 +++++++------- make.sh | 2044 ++++++++++++++++++++++++------------------------ 3 files changed, 1430 insertions(+), 1430 deletions(-) diff --git a/lfs/driver.img b/lfs/driver.img index 9c4a9dc8e7..62b9443d83 100644 --- a/lfs/driver.img +++ b/lfs/driver.img @@ -1,117 +1,117 @@ -############################################################################### -# This file is part of the IPCop Firewall. # -# # -# IPCop is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPCop is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPCop; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Makefiles are based on LFSMake, which is # -# Copyright (C) 2002 Rod Roard # -# # -# Modifications by: # -# ??-12-2003 Mark Wormgoor < mark@wormgoor.com> # -# - Modified Makefile for IPCop build # -# # -# $Id: driver.img,v 1.24.2.7 2006/01/29 20:17:30 franck78 Exp $ -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -THISAPP = driver-$(VERSION).img -TARGET = $(DIR_INFO)/$(THISAPP) - -############################################################################### -# Top-level Rules -############################################################################### - -install : $(TARGET) - -check : - -download : - -md5 : - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : - @$(PREBUILD) - -strip --strip-all /install/misc/bin/* - - # make new dependencies - depmod -a -F /boot/System.map-$(KVER) $(KVER) - if [ "$(MACHINE)" = "i386" ]; then \ - depmod -a -F /boot/System.map-$(KVER)-smp $(KVER)-smp; \ - fi - - # Create drivers floppy - cd /tmp && rm -rf drivers.tgz drivers.tar bin lib etc var - cd / && tar -cf /tmp/drivers.tar \ - --exclude='lib/modules/$(KVER)/kernel/drivers/acpi/*' \ - --exclude='lib/modules/$(KVER)/kernel/drivers/block/*' \ - --exclude='lib/modules/$(KVER)/kernel/drivers/char/*' \ - --exclude='lib/modules/$(KVER)/kernel/drivers/ide/*' \ - --exclude='lib/modules/$(KVER)/kernel/drivers/isdn/*' \ - --exclude='lib/modules/$(KVER)/kernel/drivers/net/ppp*' \ - --exclude='lib/modules/$(KVER)/kernel/drivers/net/slip*' \ - --exclude='lib/modules/$(KVER)/kernel/drivers/net/slhc*' \ - --exclude='lib/modules/$(KVER)/kernel/drivers/net/tun*' \ - --exclude='lib/modules/$(KVER)/kernel/drivers/scsi/*' \ - --exclude='lib/modules/$(KVER)/kernel/drivers/message/*' \ - --exclude='lib/modules/$(KVER)/kernel/drivers/input/*' \ - --exclude='lib/modules/$(KVER)/kernel/drivers/usb/storage/*' \ - --exclude='lib/modules/$(KVER)/kernel/drivers/usb/host/*' \ - --exclude='lib/modules/$(KVER)/kernel/arch/*' \ - --exclude='lib/modules/$(KVER)/kernel/fs/*' \ - --exclude='lib/modules/$(KVER)/kernel/net/atm/*' \ - --exclude='lib/modules/$(KVER)/kernel/net/ipsec/*' \ - --exclude='lib/modules/$(KVER)/kernel/net/ipv4/*' \ - --exclude='lib/modules/$(KVER)/kernel/net/sched/*' \ - --exclude='lib/modules/$(KVER)/*map' \ - --exclude='lib/modules/$(KVER)/misc/*' \ - --exclude='lib/modules/$(KVER)/extra/*' \ - --exclude='lib/modules/$(KVER)/pcmcia/*' \ - --exclude='lib/modules/$(KVER)/build' \ - --exclude='lib/modules/$(KVER)/kernel/drivers/atm/*' \ - --exclude=lib/modules/$(KVER)/kernel/drivers/usb/{3cp4218.o.gz,acm.o.gz,amedyn.o.gz,cxacru.o.gz,speedtch.o.gz,hid.o.gz,usbcore.o.gz} \ - --exclude='lib/modules/$(KVER)/modules.*' \ - lib/modules/$(KVER) - cd /tmp && tar xf drivers.tar - cd /tmp && mkdir -p {bin,etc/pcmcia,var/lib/pcmcia,var/run} - cd /tmp && cp -aR /install/misc/bin/* bin - cd /tmp && cp -r /etc/pcmcia/{config*,net*} etc/pcmcia - # cardmgr wants to execute these to bring up the card, we'll - # create blank ones as we'll bring them up ourselves - cd /tmp/etc/pcmcia && rm -f network - cd /tmp/etc/pcmcia && touch network - cd /tmp/etc/pcmcia && chmod +x network - cd /tmp && tar -cf - bin/ etc/pcmcia var lib/modules/$(KVER) | gzip -9 -c > drivers.tgz - - if [ "$(MACHINE)" = "alpha" ]; then \ - cp /tmp/drivers.tgz /install/images/drivers-$(VERSION).img; \ - else \ - dd if=/tmp/drivers.tgz of=/install/images/drivers-$(VERSION).img bs=1440k count=1 conv=sync; \ - fi - rm -rf /tmp/drivers.tgz /tmp/drivers.tar /tmp/bin /tmp/lib - - ### If this fails, the disk is TOO FULL !!!! - tar tzf /install/images/drivers-$(VERSION).img >/dev/null 2>&1 - - @$(POSTBUILD) +############################################################################### +# This file is part of the IPCop Firewall. # +# # +# IPCop is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 2 of the License, or # +# (at your option) any later version. # +# # +# IPCop is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPCop; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Makefiles are based on LFSMake, which is # +# Copyright (C) 2002 Rod Roard # +# # +# Modifications by: # +# ??-12-2003 Mark Wormgoor < mark@wormgoor.com> # +# - Modified Makefile for IPCop build # +# # +# $Id: driver.img,v 1.24.2.7 2006/01/29 20:17:30 franck78 Exp $ +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +THISAPP = driver-$(VERSION).img +TARGET = $(DIR_INFO)/$(THISAPP) + +############################################################################### +# Top-level Rules +############################################################################### + +install : $(TARGET) + +check : + +download : + +md5 : + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : + @$(PREBUILD) + -strip --strip-all /install/misc/bin/* + + # make new dependencies + depmod -a -F /boot/System.map-$(KVER) $(KVER) + if [ "$(MACHINE)" = "i386" ]; then \ + depmod -a -F /boot/System.map-$(KVER)-smp $(KVER)-smp; \ + fi + + # Create drivers floppy + cd /tmp && rm -rf drivers.tgz drivers.tar bin lib etc var + cd / && tar -cf /tmp/drivers.tar \ + --exclude='lib/modules/$(KVER)/kernel/drivers/acpi/*' \ + --exclude='lib/modules/$(KVER)/kernel/drivers/block/*' \ + --exclude='lib/modules/$(KVER)/kernel/drivers/char/*' \ + --exclude='lib/modules/$(KVER)/kernel/drivers/ide/*' \ + --exclude='lib/modules/$(KVER)/kernel/drivers/isdn/*' \ + --exclude='lib/modules/$(KVER)/kernel/drivers/net/ppp*' \ + --exclude='lib/modules/$(KVER)/kernel/drivers/net/slip*' \ + --exclude='lib/modules/$(KVER)/kernel/drivers/net/slhc*' \ + --exclude='lib/modules/$(KVER)/kernel/drivers/net/tun*' \ + --exclude='lib/modules/$(KVER)/kernel/drivers/scsi/*' \ + --exclude='lib/modules/$(KVER)/kernel/drivers/message/*' \ + --exclude='lib/modules/$(KVER)/kernel/drivers/input/*' \ + --exclude='lib/modules/$(KVER)/kernel/drivers/usb/storage/*' \ + --exclude='lib/modules/$(KVER)/kernel/drivers/usb/host/*' \ + --exclude='lib/modules/$(KVER)/kernel/arch/*' \ + --exclude='lib/modules/$(KVER)/kernel/fs/*' \ + --exclude='lib/modules/$(KVER)/kernel/net/atm/*' \ + --exclude='lib/modules/$(KVER)/kernel/net/ipsec/*' \ + --exclude='lib/modules/$(KVER)/kernel/net/ipv4/*' \ + --exclude='lib/modules/$(KVER)/kernel/net/sched/*' \ + --exclude='lib/modules/$(KVER)/*map' \ + --exclude='lib/modules/$(KVER)/misc/*' \ + --exclude='lib/modules/$(KVER)/extra/*' \ + --exclude='lib/modules/$(KVER)/pcmcia/*' \ + --exclude='lib/modules/$(KVER)/build' \ + --exclude='lib/modules/$(KVER)/kernel/drivers/atm/*' \ + --exclude=lib/modules/$(KVER)/kernel/drivers/usb/{3cp4218.o.gz,acm.o.gz,amedyn.o.gz,cxacru.o.gz,speedtch.o.gz,hid.o.gz,usbcore.o.gz} \ + --exclude='lib/modules/$(KVER)/modules.*' \ + lib/modules/$(KVER) + cd /tmp && tar xf drivers.tar + cd /tmp && mkdir -p {bin,etc/pcmcia,var/lib/pcmcia,var/run} + cd /tmp && cp -aR /install/misc/bin/* bin + cd /tmp && cp -r /etc/pcmcia/{config*,net*} etc/pcmcia + # cardmgr wants to execute these to bring up the card, we'll + # create blank ones as we'll bring them up ourselves + cd /tmp/etc/pcmcia && rm -f network + cd /tmp/etc/pcmcia && touch network + cd /tmp/etc/pcmcia && chmod +x network + cd /tmp && tar -cf - bin/ etc/pcmcia var lib/modules/$(KVER) | gzip -9 -c > drivers.tgz + + if [ "$(MACHINE)" = "alpha" ]; then \ + cp /tmp/drivers.tgz /install/images/drivers-$(VERSION).img; \ + else \ + dd if=/tmp/drivers.tgz of=/install/images/drivers-$(VERSION).img bs=1440k count=1 conv=sync; \ + fi + rm -rf /tmp/drivers.tgz /tmp/drivers.tar /tmp/bin /tmp/lib + + ### If this fails, the disk is TOO FULL !!!! + tar tzf /install/images/drivers-$(VERSION).img >/dev/null 2>&1 + + @$(POSTBUILD) diff --git a/lfs/linux b/lfs/linux index d1912387ac..e0f268614d 100644 --- a/lfs/linux +++ b/lfs/linux @@ -1,291 +1,291 @@ -############################################################################### -# This file is part of the IPCop Firewall. # -# # -# IPCop is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPCop is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPCop; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Makefiles are based on LFSMake, which is # -# Copyright (C) 2002 Rod Roard # -# # -# Modifications by: # -# ??-12-2003 Mark Wormgoor < mark@wormgoor.com> # -# - Modified Makefile for IPCop build # -# # -# $Id: linux,v 1.42.2.57 2005/07/28 07:01:27 gespinasse Exp $ -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 2.4.31 - -THISAPP = linux-$(VER) -DL_FILE = $(THISAPP).tar.gz -DL_FROM = $(URL_KERNEL)/linux/kernel/v2.4 -DIR_APP = $(DIR_SRC)/$(THISAPP) -CFLAGS = -CXXFLAGS = - -# Normal build or /tools build. -# -ifeq "$(ROOT)" "" -ifeq "$(LFS_PASS)" "ipcop" -ifeq "$(EMB)" "" - TARGET = $(DIR_INFO)/$(THISAPP)-ipcop -endif -ifeq "$(SMP)" "1" - TARGET = $(DIR_INFO)/$(THISAPP)-ipcop-smp -endif -ifeq "$(SMP)" "installer" - TARGET = $(DIR_INFO)/$(THISAPP)-ipcop-installer -endif -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif -else - TARGET = $(DIR_INFO)/$(THISAPP)-tools -endif - -############################################################################### -# Top-level Rules -############################################################################### -objects =$(DL_FILE) \ - openswan-1.0.10rc2.tar.gz \ - iptables-1.3.5.tar.bz2 \ - patch-o-matic-ng-20060206.tar.bz2 \ - kbc_option_2420.patch \ - net4801.kernel.patch_2.4.31 \ - netfilter-layer7-v2.1.tar.gz - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) -openswan-1.0.10rc2.tar.gz = ftp://ftp.man.szczecin.pl/disks/disk0/security/network-security/ipsec/openswan/openswan-1.0.10rc2.tar.gz -patch-o-matic-ng-20060206.tar.bz2 = ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20060206.tar.bz2 -iptables-1.3.5.tar.bz2 = http://www.netfilter.org/files/iptables-1.3.5.tar.bz2 -kbc_option_2420.patch = http://developer.osdl.org/rddunlap/patches/kbc_option_2420.patch -net4801.kernel.patch_2.4.31 = http://www.sk-tech.net/support/net4801.kernel.patch_2.4.31 -netfilter-layer7-v2.1.tar.gz = http://belnet.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.1.tar.gz - -$(DL_FILE)_MD5 = ea3f99fc82617886059d58d0644dab26 -openswan-1.0.10rc2.tar.gz_MD5 = 20d51ff963da78f826f4e0f0ebc4bcef -patch-o-matic-ng-20060206.tar.bz2_MD5 = eca9893afb753e331caddfe63142b566 -iptables-1.3.5.tar.bz2_MD5 = 00fb916fa8040ca992a5ace56d905ea5 -kbc_option_2420.patch_MD5 = 6d37870344f7fcf97ace1fbf43323c60 -net4801.kernel.patch_2.4.31_MD5 = c7d64e3caedb2f2b10e1c11db7f73a04 -netfilter-layer7-v2.1.tar.gz_MD5 = 551626a158c2a2cbfd937d27ecc7fac1 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) $(DIR_SRC)/linux && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_SRC) && ln -sf linux-$(VER) linux - cd $(DIR_APP) && sed -i -e 's/-Werror//' drivers/scsi/aic7xxx/Makefile - - # Openswan - cd $(DIR_SRC) && rm -rf openswan-* - cd $(DIR_SRC) && tar xfz $(DIR_DL)/openswan-1.0.10rc2.tar.gz - cd $(DIR_SRC)/openswan-1.0.10rc2 && patch -Np1 < $(DIR_SRC)/src/patches/openswan-1.0.1-plutoctl.patch - cd $(DIR_SRC)/openswan-1.0.10rc2 && patch -Np1 < $(DIR_SRC)/src/patches/openswan-1.0.6-numif.patch - cd $(DIR_SRC)/openswan-1.0.10rc2 && sed -i 's+^KERNELSRC.*$$+KERNELSRC=$(ROOT)/usr/src/linux-$(VER)+' Makefile.inc - cd $(DIR_SRC)/openswan-1.0.10rc2 && sed -i -e 's/local\/sbin/local\/sbin:\/tools\/bin/' utils/patcher - cd $(DIR_SRC)/openswan-1.0.10rc2 && make insert - - # Patch-o-matic - cd $(DIR_SRC) && rm -rf iptables-* - cd $(DIR_SRC) && tar xfj $(DIR_DL)/iptables-1.3.5.tar.bz2 - cd $(DIR_SRC) && ln -sf iptables-1.3.5 iptables - cd $(DIR_SRC) && rm -rf patch-o-matic* - cd $(DIR_SRC) && tar xfj $(DIR_DL)/patch-o-matic-ng-20060206.tar.bz2 - - cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ pending - cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ base - cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ h323-conntrack-nat - cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ cuseeme-nat - cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ mms-conntrack-nat - cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ pptp-conntrack-nat - cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ rtsp-conntrack - cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ quake3-conntrack-nat - cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ sip-conntrack-nat - cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ ip_queue_vwmark - cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ ipp2p - cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ ipsec-01-output-hooks - cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ ipsec-02-input-hooks - cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ ipsec-03-policy-lookup - cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ ipsec-04-policy-checks - cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ TARPIT - - #imq-patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.4.28-imq2.diff - - #layer7-patch - cd $(DIR_SRC) && tar xzf $(DIR_DL)/netfilter-layer7-v2.1.tar.gz - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/netfilter-layer7-v2.1/kernel-2.4-layer7-2.1.patch - -ifeq "$(EMB)" "1" - #Emb-patches - cd $(DIR_APP) && patch -Np1 < $(DIR_DL)/kbc_option_2420.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_DL)/net4801.kernel.patch_2.4.31 -endif - -ifeq "$(SMP)" "" - # Only do this once on the non-SMP pass - cd $(DIR_SRC) && tar czf $(DIR_DL)/iptables-fixed.tar.gz iptables-1.2.11 -endif - - # Olitec isdn gazel patch - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/linux-2.4.23-olitec-isdn.patch - - # Fix /proc/stat output - cd $(DIR_APP) && patch -Np2 < $(DIR_SRC)/src/patches/linux-2.4.26-proc-stat.patch - - # Fix libata-core.c - # cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/linux-2.4.26-scsi.patch - - # frandom patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.4.27-frandom-2.patch - - # Propolice - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.4.27-ssp-1.patch - - # Support ppp-2.4.3 multilink behavior (terminate when no channel is connected) - # need updated libpcap older than 0.8.3 - # cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/ppp_generic-ppp-2.4.3_multilink.patch - - # R8169 clone D-link GSE-528T - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.4.29_r8169clone.patch - - # Cleanup kernel source - cd $(DIR_APP) && make mrproper -ifeq "$(ROOT)" "" -ifeq "$(LFS_PASS)" "ipcop" -ifeq "$(SMP)" "" - cp $(DIR_SRC)/config/kernel/kernel.config.$(MACHINE) $(DIR_APP)/.config -endif -ifeq "$(SMP)" "1" - cp $(DIR_SRC)/config/kernel/kernel.config.$(MACHINE).smp $(DIR_APP)/.config -endif -ifeq "$(SMP)" "installer" - cp $(DIR_SRC)/config/kernel/kernel.config.$(MACHINE).installer $(DIR_APP)/.config - cd $(DIR_APP) && sed -i -e 's/-O2/-Os/g' Makefile -endif - - cd $(DIR_APP) && make CC="$(KGCC)" oldconfig - cd $(DIR_APP) && make CC="$(KGCC)" dep - cd $(DIR_APP) && make CC="$(KGCC)" clean - if [ "$(MACHINE)" = "i386" -a "$(EMB)" = "" ]; then \ - cd $(DIR_APP) && make -j 3 CC="$(KGCC)" bzImage; \ - cd $(DIR_APP) && cp arch/$(MACHINE)/boot/bzImage /boot/vmlinuz-$(VER); \ - cd $(DIR_APP) && cp System.map /boot/System.map-$(VER); \ - ln -sf vmlinuz-$(VER) /boot/vmlinuz; \ - ln -sf System.map-$(VER) /boot/System.map; \ - cd $(DIR_APP) && make CC="$(KGCC)" modules; \ - cd $(DIR_APP) && make CC="$(KGCC)" modules_install; \ - elif [ "$(MACHINE)" = "i386" -a "$(EMB)" = "1" ]; then \ - cd $(DIR_APP) && sed -i -e 's/EXTRAVERSION\ =/EXTRAVERSION\ =\ -EMB/' Makefile; \ - cd $(DIR_APP) && make -j 3 CC="$(KGCC)" bzImage; \ - cd $(DIR_APP) && cp arch/$(MACHINE)/boot/bzImage /boot/vmlinuz-$(VER)-EMB; \ - cd $(DIR_APP) && cp System.map /boot/System.map-$(VER)-EMB; \ - ln -sf vmlinuz-$(VER)-EMB /boot/vmlinuz-EMB; \ - cd $(DIR_APP) && make CC="$(KGCC)" modules; \ - cd $(DIR_APP) && make CC="$(KGCC)" modules_install; \ - elif [ "$(MACHINE)" = "i386" -a "$(EMB)" = "installer" ]; then \ - cd $(DIR_APP) && make -j 3 CC="$(KGCC)" bzImage; \ - cd $(DIR_APP) && cp arch/$(MACHINE)/boot/bzImage /boot/vmlinuz-installer; \ - elif [ "$(MACHINE)" = "alpha" ]; then \ - cd $(DIR_APP) && make -j 3 CC="$(KGCC)" vmlinux; \ - cd $(DIR_APP) && gzip -9c vmlinux > /boot/vmlinuz-$(VER); \ - cd $(DIR_APP) && cp System.map /boot/System.map-$(VER); \ - ln -sf vmlinuz-$(VER) /boot/vmlinuz; \ - ln -sf System.map-$(VER) /boot/System.map; \ - cd $(DIR_APP) && make CC="$(KGCC)" modules; \ - cd $(DIR_APP) && make CC="$(KGCC)" modules_install; \ - fi - # remove symlinked pcmcia directory -ifeq "$(SMP)" "" - rm -rf /lib/modules/$(VER)/pcmcia - find /lib/modules/$(VER)/ -name '*.o' -a -type f | xargs gzip -f9 - - # Move these SCSI drivers into same directory for probescsi.sh - mv -f /lib/modules/$(VER)/kernel/drivers/scsi/aic7xxx/* /lib/modules/$(VER)/kernel/drivers/scsi - rm -rf /lib/modules/$(VER)/kernel/drivers/scsi/aic7xxx - mv -f /lib/modules/$(VER)/kernel/drivers/scsi/aacraid/* /lib/modules/$(VER)/kernel/drivers/scsi - rm -rf /lib/modules/$(VER)/kernel/drivers/scsi/aacraid - mv -f /lib/modules/$(VER)/kernel/drivers/scsi/sym53c8xx_2/* /lib/modules/$(VER)/kernel/drivers/scsi - rm -rf /lib/modules/$(VER)/kernel/drivers/scsi/sym53c8xx_2 -endif -ifeq "$(SMP)" "1" - rm -rf /lib/modules/$(VER)-smp/pcmcia - find /lib/modules/$(VER)-smp/ -name '*.o' -a -type f | xargs gzip -f9 - - # Move these SCSI drivers into same directory for probescsi.sh - mv -f /lib/modules/$(VER)-smp/kernel/drivers/scsi/aic7xxx/* /lib/modules/$(VER)-smp/kernel/drivers/scsi - rm -rf /lib/modules/$(VER)-smp/kernel/drivers/scsi/aic7xxx - mv -f /lib/modules/$(VER)-smp/kernel/drivers/scsi/aacraid/* /lib/modules/$(VER)-smp/kernel/drivers/scsi - rm -rf /lib/modules/$(VER)-smp/kernel/drivers/scsi/aacraid - mv -f /lib/modules/$(VER)-smp/kernel/drivers/scsi/sym53c8xx_2/* /lib/modules/$(VER)-smp/kernel/drivers/scsi - rm -rf /lib/modules/$(VER)-smp/kernel/drivers/scsi/sym53c8xx_2 -endif - -ifeq "$(SMP)" "" - # Only do this once on the non-SMP pass - cd $(DIR_APP) && make mandocs - -mkdir -p /usr/share/man/man9/ - cd $(DIR_APP) && cp -af Documentation/man/* /usr/share/man/man9/ -endif -else - cd $(DIR_APP) && make include/linux/version.h - cd $(DIR_APP) && make symlinks - cd $(DIR_APP) && cp -HRf include/asm /usr/include - cd $(DIR_APP) && cp -Rf include/asm-generic /usr/include - cd $(DIR_APP) && cp -Rf include/linux /usr/include - touch /usr/include/linux/autoconf.h -endif -else - cd $(DIR_APP) && make include/linux/version.h - cd $(DIR_APP) && make symlinks - -mkdir -p /tools/include/asm - cd $(DIR_APP) && cp -f include/asm/* /tools/include/asm - cd $(DIR_APP) && cp -Rf include/asm-generic /tools/include - cd $(DIR_APP) && cp -Rf include/linux /tools/include - cd $(DIR_APP) && touch /tools/include/linux/autoconf.h -endif - @rm -rf $(DIR_SRC)/patch-o-matic* $(DIR_SRC)/iptables* - @$(POSTBUILD) +############################################################################### +# This file is part of the IPCop Firewall. # +# # +# IPCop is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 2 of the License, or # +# (at your option) any later version. # +# # +# IPCop is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPCop; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Makefiles are based on LFSMake, which is # +# Copyright (C) 2002 Rod Roard # +# # +# Modifications by: # +# ??-12-2003 Mark Wormgoor < mark@wormgoor.com> # +# - Modified Makefile for IPCop build # +# # +# $Id: linux,v 1.42.2.57 2005/07/28 07:01:27 gespinasse Exp $ +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 2.4.31 + +THISAPP = linux-$(VER) +DL_FILE = $(THISAPP).tar.gz +DL_FROM = $(URL_KERNEL)/linux/kernel/v2.4 +DIR_APP = $(DIR_SRC)/$(THISAPP) +CFLAGS = +CXXFLAGS = + +# Normal build or /tools build. +# +ifeq "$(ROOT)" "" +ifeq "$(LFS_PASS)" "ipcop" +ifeq "$(EMB)" "" + TARGET = $(DIR_INFO)/$(THISAPP)-ipcop +endif +ifeq "$(SMP)" "1" + TARGET = $(DIR_INFO)/$(THISAPP)-ipcop-smp +endif +ifeq "$(SMP)" "installer" + TARGET = $(DIR_INFO)/$(THISAPP)-ipcop-installer +endif +else + TARGET = $(DIR_INFO)/$(THISAPP) +endif +else + TARGET = $(DIR_INFO)/$(THISAPP)-tools +endif + +############################################################################### +# Top-level Rules +############################################################################### +objects =$(DL_FILE) \ + openswan-1.0.10rc2.tar.gz \ + iptables-1.3.5.tar.bz2 \ + patch-o-matic-ng-20060206.tar.bz2 \ + kbc_option_2420.patch \ + net4801.kernel.patch_2.4.31 \ + netfilter-layer7-v2.1.tar.gz + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) +openswan-1.0.10rc2.tar.gz = ftp://ftp.man.szczecin.pl/disks/disk0/security/network-security/ipsec/openswan/openswan-1.0.10rc2.tar.gz +patch-o-matic-ng-20060206.tar.bz2 = ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20060206.tar.bz2 +iptables-1.3.5.tar.bz2 = http://www.netfilter.org/files/iptables-1.3.5.tar.bz2 +kbc_option_2420.patch = http://developer.osdl.org/rddunlap/patches/kbc_option_2420.patch +net4801.kernel.patch_2.4.31 = http://www.sk-tech.net/support/net4801.kernel.patch_2.4.31 +netfilter-layer7-v2.1.tar.gz = http://belnet.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.1.tar.gz + +$(DL_FILE)_MD5 = ea3f99fc82617886059d58d0644dab26 +openswan-1.0.10rc2.tar.gz_MD5 = 20d51ff963da78f826f4e0f0ebc4bcef +patch-o-matic-ng-20060206.tar.bz2_MD5 = eca9893afb753e331caddfe63142b566 +iptables-1.3.5.tar.bz2_MD5 = 00fb916fa8040ca992a5ace56d905ea5 +kbc_option_2420.patch_MD5 = 6d37870344f7fcf97ace1fbf43323c60 +net4801.kernel.patch_2.4.31_MD5 = c7d64e3caedb2f2b10e1c11db7f73a04 +netfilter-layer7-v2.1.tar.gz_MD5 = 551626a158c2a2cbfd937d27ecc7fac1 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) $(DIR_SRC)/linux && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_SRC) && ln -sf linux-$(VER) linux + cd $(DIR_APP) && sed -i -e 's/-Werror//' drivers/scsi/aic7xxx/Makefile + + # Openswan + cd $(DIR_SRC) && rm -rf openswan-* + cd $(DIR_SRC) && tar xfz $(DIR_DL)/openswan-1.0.10rc2.tar.gz + cd $(DIR_SRC)/openswan-1.0.10rc2 && patch -Np1 < $(DIR_SRC)/src/patches/openswan-1.0.1-plutoctl.patch + cd $(DIR_SRC)/openswan-1.0.10rc2 && patch -Np1 < $(DIR_SRC)/src/patches/openswan-1.0.6-numif.patch + cd $(DIR_SRC)/openswan-1.0.10rc2 && sed -i 's+^KERNELSRC.*$$+KERNELSRC=$(ROOT)/usr/src/linux-$(VER)+' Makefile.inc + cd $(DIR_SRC)/openswan-1.0.10rc2 && sed -i -e 's/local\/sbin/local\/sbin:\/tools\/bin/' utils/patcher + cd $(DIR_SRC)/openswan-1.0.10rc2 && make insert + + # Patch-o-matic + cd $(DIR_SRC) && rm -rf iptables-* + cd $(DIR_SRC) && tar xfj $(DIR_DL)/iptables-1.3.5.tar.bz2 + cd $(DIR_SRC) && ln -sf iptables-1.3.5 iptables + cd $(DIR_SRC) && rm -rf patch-o-matic* + cd $(DIR_SRC) && tar xfj $(DIR_DL)/patch-o-matic-ng-20060206.tar.bz2 + + cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ pending + cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ base + cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ h323-conntrack-nat + cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ cuseeme-nat + cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ mms-conntrack-nat + cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ pptp-conntrack-nat + cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ rtsp-conntrack + cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ quake3-conntrack-nat + cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ sip-conntrack-nat + cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ ip_queue_vwmark + cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ ipp2p + cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ ipsec-01-output-hooks + cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ ipsec-02-input-hooks + cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ ipsec-03-policy-lookup + cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ ipsec-04-policy-checks + cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(ROOT)/usr/src/linux/ --iptables-path=$(ROOT)/usr/src/iptables/ TARPIT + + #imq-patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.4.28-imq2.diff + + #layer7-patch + cd $(DIR_SRC) && tar xzf $(DIR_DL)/netfilter-layer7-v2.1.tar.gz + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/netfilter-layer7-v2.1/kernel-2.4-layer7-2.1.patch + +ifeq "$(EMB)" "1" + #Emb-patches + cd $(DIR_APP) && patch -Np1 < $(DIR_DL)/kbc_option_2420.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_DL)/net4801.kernel.patch_2.4.31 +endif + +ifeq "$(SMP)" "" + # Only do this once on the non-SMP pass + cd $(DIR_SRC) && tar czf $(DIR_DL)/iptables-fixed.tar.gz iptables-1.2.11 +endif + + # Olitec isdn gazel patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/linux-2.4.23-olitec-isdn.patch + + # Fix /proc/stat output + cd $(DIR_APP) && patch -Np2 < $(DIR_SRC)/src/patches/linux-2.4.26-proc-stat.patch + + # Fix libata-core.c + # cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/linux-2.4.26-scsi.patch + + # frandom patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.4.27-frandom-2.patch + + # Propolice + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.4.27-ssp-1.patch + + # Support ppp-2.4.3 multilink behavior (terminate when no channel is connected) + # need updated libpcap older than 0.8.3 + # cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/ppp_generic-ppp-2.4.3_multilink.patch + + # R8169 clone D-link GSE-528T + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.4.29_r8169clone.patch + + # Cleanup kernel source + cd $(DIR_APP) && make mrproper +ifeq "$(ROOT)" "" +ifeq "$(LFS_PASS)" "ipcop" +ifeq "$(SMP)" "" + cp $(DIR_SRC)/config/kernel/kernel.config.$(MACHINE) $(DIR_APP)/.config +endif +ifeq "$(SMP)" "1" + cp $(DIR_SRC)/config/kernel/kernel.config.$(MACHINE).smp $(DIR_APP)/.config +endif +ifeq "$(SMP)" "installer" + cp $(DIR_SRC)/config/kernel/kernel.config.$(MACHINE).installer $(DIR_APP)/.config + cd $(DIR_APP) && sed -i -e 's/-O2/-Os/g' Makefile +endif + + cd $(DIR_APP) && make CC="$(KGCC)" oldconfig + cd $(DIR_APP) && make CC="$(KGCC)" dep + cd $(DIR_APP) && make CC="$(KGCC)" clean + if [ "$(MACHINE)" = "i386" -a "$(EMB)" = "" ]; then \ + cd $(DIR_APP) && make -j 3 CC="$(KGCC)" bzImage; \ + cd $(DIR_APP) && cp arch/$(MACHINE)/boot/bzImage /boot/vmlinuz-$(VER); \ + cd $(DIR_APP) && cp System.map /boot/System.map-$(VER); \ + ln -sf vmlinuz-$(VER) /boot/vmlinuz; \ + ln -sf System.map-$(VER) /boot/System.map; \ + cd $(DIR_APP) && make CC="$(KGCC)" modules; \ + cd $(DIR_APP) && make CC="$(KGCC)" modules_install; \ + elif [ "$(MACHINE)" = "i386" -a "$(EMB)" = "1" ]; then \ + cd $(DIR_APP) && sed -i -e 's/EXTRAVERSION\ =/EXTRAVERSION\ =\ -EMB/' Makefile; \ + cd $(DIR_APP) && make -j 3 CC="$(KGCC)" bzImage; \ + cd $(DIR_APP) && cp arch/$(MACHINE)/boot/bzImage /boot/vmlinuz-$(VER)-EMB; \ + cd $(DIR_APP) && cp System.map /boot/System.map-$(VER)-EMB; \ + ln -sf vmlinuz-$(VER)-EMB /boot/vmlinuz-EMB; \ + cd $(DIR_APP) && make CC="$(KGCC)" modules; \ + cd $(DIR_APP) && make CC="$(KGCC)" modules_install; \ + elif [ "$(MACHINE)" = "i386" -a "$(EMB)" = "installer" ]; then \ + cd $(DIR_APP) && make -j 3 CC="$(KGCC)" bzImage; \ + cd $(DIR_APP) && cp arch/$(MACHINE)/boot/bzImage /boot/vmlinuz-installer; \ + elif [ "$(MACHINE)" = "alpha" ]; then \ + cd $(DIR_APP) && make -j 3 CC="$(KGCC)" vmlinux; \ + cd $(DIR_APP) && gzip -9c vmlinux > /boot/vmlinuz-$(VER); \ + cd $(DIR_APP) && cp System.map /boot/System.map-$(VER); \ + ln -sf vmlinuz-$(VER) /boot/vmlinuz; \ + ln -sf System.map-$(VER) /boot/System.map; \ + cd $(DIR_APP) && make CC="$(KGCC)" modules; \ + cd $(DIR_APP) && make CC="$(KGCC)" modules_install; \ + fi + # remove symlinked pcmcia directory +ifeq "$(SMP)" "" + rm -rf /lib/modules/$(VER)/pcmcia + find /lib/modules/$(VER)/ -name '*.o' -a -type f | xargs gzip -f9 + + # Move these SCSI drivers into same directory for probescsi.sh + mv -f /lib/modules/$(VER)/kernel/drivers/scsi/aic7xxx/* /lib/modules/$(VER)/kernel/drivers/scsi + rm -rf /lib/modules/$(VER)/kernel/drivers/scsi/aic7xxx + mv -f /lib/modules/$(VER)/kernel/drivers/scsi/aacraid/* /lib/modules/$(VER)/kernel/drivers/scsi + rm -rf /lib/modules/$(VER)/kernel/drivers/scsi/aacraid + mv -f /lib/modules/$(VER)/kernel/drivers/scsi/sym53c8xx_2/* /lib/modules/$(VER)/kernel/drivers/scsi + rm -rf /lib/modules/$(VER)/kernel/drivers/scsi/sym53c8xx_2 +endif +ifeq "$(SMP)" "1" + rm -rf /lib/modules/$(VER)-smp/pcmcia + find /lib/modules/$(VER)-smp/ -name '*.o' -a -type f | xargs gzip -f9 + + # Move these SCSI drivers into same directory for probescsi.sh + mv -f /lib/modules/$(VER)-smp/kernel/drivers/scsi/aic7xxx/* /lib/modules/$(VER)-smp/kernel/drivers/scsi + rm -rf /lib/modules/$(VER)-smp/kernel/drivers/scsi/aic7xxx + mv -f /lib/modules/$(VER)-smp/kernel/drivers/scsi/aacraid/* /lib/modules/$(VER)-smp/kernel/drivers/scsi + rm -rf /lib/modules/$(VER)-smp/kernel/drivers/scsi/aacraid + mv -f /lib/modules/$(VER)-smp/kernel/drivers/scsi/sym53c8xx_2/* /lib/modules/$(VER)-smp/kernel/drivers/scsi + rm -rf /lib/modules/$(VER)-smp/kernel/drivers/scsi/sym53c8xx_2 +endif + +ifeq "$(SMP)" "" + # Only do this once on the non-SMP pass + cd $(DIR_APP) && make mandocs + -mkdir -p /usr/share/man/man9/ + cd $(DIR_APP) && cp -af Documentation/man/* /usr/share/man/man9/ +endif +else + cd $(DIR_APP) && make include/linux/version.h + cd $(DIR_APP) && make symlinks + cd $(DIR_APP) && cp -HRf include/asm /usr/include + cd $(DIR_APP) && cp -Rf include/asm-generic /usr/include + cd $(DIR_APP) && cp -Rf include/linux /usr/include + touch /usr/include/linux/autoconf.h +endif +else + cd $(DIR_APP) && make include/linux/version.h + cd $(DIR_APP) && make symlinks + -mkdir -p /tools/include/asm + cd $(DIR_APP) && cp -f include/asm/* /tools/include/asm + cd $(DIR_APP) && cp -Rf include/asm-generic /tools/include + cd $(DIR_APP) && cp -Rf include/linux /tools/include + cd $(DIR_APP) && touch /tools/include/linux/autoconf.h +endif + @rm -rf $(DIR_SRC)/patch-o-matic* $(DIR_SRC)/iptables* + @$(POSTBUILD) diff --git a/make.sh b/make.sh index 9e4a1a6f7a..3d2b689f9a 100644 --- a/make.sh +++ b/make.sh @@ -1,1022 +1,1022 @@ -#!/bin/bash -# -############################################################################ -# # -# This file is part of the IPCop Firewall. # -# # -# IPCop is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPCop is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPCop; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2001 Mark Wormgoor . # -# # -# (c) 2001 Eric S. Johansson Check for Bash # -# (c) 2002 Thorsten Fischer MD5Sum checking # -# # -############################################################################ -# -# $Id: make.sh,v 1.129.2.145 2006/02/01 07:04:09 gespinasse Exp $ -# - - NAME="IPFire" # Software name - SNAME="ipfire" # Short name - VERSION="1.4" # Version number - PREVIOUSTAG=IPCOP_v1_4_10_FINAL - SLOGAN="We save your network" # Software slogan - CONFIG_ROOT=/var/ipfire # Configuration rootdir - NICE=10 - MAX_RETRIES=3 # prefetch/check loop - KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'` - MACHINE=`uname -m` - - # Debian specific settings - if [ ! -e /etc/debian_version ]; then - FULLPATH=`which $0` - else - if [ -x /usr/bin/realpath ]; then - FULLPATH=`/usr/bin/realpath $0` - else - echo "ERROR: Need to do apt-get install realpath" - exit 1 - fi - fi - - - PWD=`pwd` - BASENAME=`basename $0` - BASEDIR=`echo $FULLPATH | sed "s/\/$BASENAME//g"` - LOGFILE=$BASEDIR/log/_build.preparation.log - export BASEDIR LOGFILE - DIR_CHK=$BASEDIR/cache/check - mkdir $BASEDIR/log/ 2>/dev/null - - if [ 'x86_64' = $MACHINE -o 'i686' = $MACHINE -o 'i586' = $MACHINE -o 'i486' = $MACHINE -o 'i386' = $MACHINE ]; then - echo "`date -u '+%b %e %T'`: Machine is ix86 (or equivalent)" | tee -a $LOGFILE - MACHINE=i386 - BUILDTARGET=i386-pc-linux-gnu - CFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer" - CXXFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer" - elif [ 'alpha' = $MACHINE ]; then - echo "`date -u '+%b %e %T'`: Machine is Alpha AXP" | tee -a $LOGFILE - BUILDTARGET=alpha-unknown-linux-gnu - CFLAGS="-O2 -mcpu=ev4 -mieee -pipe" - CXXFLAGS="-O2 -mcpu=ev4 -mieee -pipe" - else - echo "`date -u '+%b %e %T'`: Can't determine your architecture - $MACHINE" | tee -a $LOGFILE - exit 1 - fi - -# Define immediately -stdumount() { - umount $BASEDIR/build/dev/pts 2>/dev/null; - umount $BASEDIR/build/proc 2>/dev/null; - umount $BASEDIR/build/install/mnt 2>/dev/null; - umount $BASEDIR/build/usr/src/cache 2>/dev/null; - umount $BASEDIR/build/usr/src/ccache 2>/dev/null; - umount $BASEDIR/build/usr/src/config 2>/dev/null; - umount $BASEDIR/build/usr/src/doc 2>/dev/null; - umount $BASEDIR/build/usr/src/html 2>/dev/null; - umount $BASEDIR/build/usr/src/langs 2>/dev/null; - umount $BASEDIR/build/usr/src/lfs 2>/dev/null; - umount $BASEDIR/build/usr/src/log 2>/dev/null; - umount $BASEDIR/build/usr/src/src 2>/dev/null; -} - -exiterror() { - stdumount - for i in `seq 0 7`; do - if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then - losetup -d /dev/loop${i} 2>/dev/null - fi; - done - echo "ERROR: $*" - echo " Check $LOGFILE for errors if applicable" - exit 1 -} - -entershell() { - if [ ! -e $BASEDIR/build/usr/src/lfs/ ]; then - exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/" - fi - echo "Entering to a shell inside LFS chroot, go out with exit" - chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ - VERSION=$VERSION CONFIG_ROOT=$CONFIG_ROOT \ - NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \ - CCACHE_DIR=/usr/src/ccache \ - CCACHE_HASHDIR=1 \ - KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ - KGCC="ccache /usr/bin/gcc" \ - /tools/bin/bash - if [ $? -ne 0 ]; then - exiterror "chroot error" - else - stdumount - fi -} - -prepareenv() { - ############################################################################ - # # - # Are we running the right shell? # - # # - ############################################################################ - if [ ! "$BASH" ]; then - 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." - fi - - - ############################################################################ - # # - # Trap on emergency exit # - # # - ############################################################################ - trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGKILL SIGSTOP SIGQUIT - - - ############################################################################ - # # - # Resetting our nice level # - # # - ############################################################################ - echo "`date -u '+%b %e %T'`: Resetting our nice level to $NICE" | tee -a $LOGFILE - renice $NICE $$ > /dev/null - if [ `nice` != "$NICE" ]; then - exiterror "Failed to set correct nice level" - fi - - ############################################################################ - # # - # Checking if running as root user # - # # - ############################################################################ - echo "`date -u '+%b %e %T'`: Checking if we're running as root user" | tee -a $LOGFILE - if [ `id -u` != 0 ]; then - exiterror "Not building as root" - fi - - - ############################################################################ - # # - # Checking for necessary temporary space # - # # - ############################################################################ - echo "`date -u '+%b %e %T'`: 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 - exiterror "Not enough temporary space available, need at least 2.1GB on $BASE_DEV" - fi - fi - - ############################################################################ - # # - # Building Linux From Scratch system # - # # - ############################################################################ - echo "`date -u '+%b %e %T'`: Building Linux From Scratch system" | tee -a $LOGFILE - - # Set umask - umask 022 - - # Set LFS Directory - LFS=$BASEDIR/build - - # Check /tools symlink - if [ -h /tools ]; then - rm -f /tools - fi - if [ ! -a /tools ]; then - ln -s $BASEDIR/build/tools / - fi - if [ ! -h /tools ]; then - exiterror "Could not create /tools symbolic link." - fi - - # Setup environment - set +h - LC_ALL=POSIX - export LFS LC_ALL CFLAGS CXXFLAGS - unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD - - # Make some extra directories - mkdir -p $BASEDIR/build/{tools,etc,usr/src} 2>/dev/null - mkdir -p $BASEDIR/{cache,ccache} 2>/dev/null - mkdir -p $BASEDIR/build/dev/pts $BASEDIR/build/proc $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache} - - # Make all sources and proc available under lfs build - mount --bind /dev/pts $BASEDIR/build/dev/pts - mount --bind /proc $BASEDIR/build/proc - 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 - mount --bind $BASEDIR/doc $BASEDIR/build/usr/src/doc - mount --bind $BASEDIR/html $BASEDIR/build/usr/src/html - mount --bind $BASEDIR/langs $BASEDIR/build/usr/src/langs - mount --bind $BASEDIR/lfs $BASEDIR/build/usr/src/lfs - mount --bind $BASEDIR/log $BASEDIR/build/usr/src/log - mount --bind $BASEDIR/src $BASEDIR/build/usr/src/src - - # Run LFS static binary creation scripts one by one - export CCACHE_DIR=$BASEDIR/ccache - export CCACHE_HASHDIR=1 - - # Remove pre-install list of installed files in case user erase some files before rebuild - rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null -} - - -############################################################################ -# # -# Necessary shell functions # -# # -############################################################################ -lfsmake1() { - if [ -f $BASEDIR/lfs/$1 ]; then - echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE - cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1 - if [ $? -ne 0 ]; then - exiterror "Download error in $1" - fi - cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1 - if [ $? -ne 0 ]; then - exiterror "md5sum error in $1, check file in cache or signature" - fi - cd $BASEDIR/lfs && make -f $* BUILDTARGET=$BUILDTARGET \ - MACHINE=$MACHINE \ - LFS_BASEDIR=$BASEDIR \ - ROOT=$LFS \ - KVER=$KVER \ - install >> $LOGFILE 2>&1 - if [ $? -ne 0 ]; then - exiterror "Building $*"; - fi - else - exiterror "No such file or directory: $BASEDIR/$1" - fi - return 0 -} - -lfsmake2() { - if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then - echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE - cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1 - if [ $? -ne 0 ]; then - exiterror "Download error in $1" - fi - cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1 - if [ $? -ne 0 ]; then - exiterror "md5sum error in $1, check file in cache or signature" - fi - chroot $LFS /tools/bin/env -i HOME=/root \ - TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ - VERSION=$VERSION \ - CONFIG_ROOT=$CONFIG_ROOT \ - NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \ - CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \ - KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ - /tools/bin/bash -x -c "cd /usr/src/lfs && \ - make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 - if [ $? -ne 0 ]; then - exiterror "Building $*" - fi - else - exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1" - fi - return 0 -} - -ipcopmake() { - if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then - echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE - cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1 - if [ $? -ne 0 ]; then - exiterror "Download error in $1" - fi - cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1 - if [ $? -ne 0 ]; then - exiterror "md5sum error in $1, check file in cache or signature" - fi - chroot $LFS /tools/bin/env -i HOME=/root \ - TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \ - VERSION=$VERSION \ - CONFIG_ROOT=$CONFIG_ROOT \ - NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \ - CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \ - KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ - /bin/bash -x -c "cd /usr/src/lfs && \ - make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 - if [ $? -ne 0 ]; then - exiterror "Building $*" - fi - else - exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1" - fi - return 0 -} - - -installmake() { - if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then - echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE - cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1 - if [ $? -ne 0 ]; then - exiterror "Download error in $1" - fi - cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1 - if [ $? -ne 0 ]; then - exiterror "md5sum error in $1, check file in cache or signature" - fi - chroot $LFS /tools/bin/env -i HOME=/root \ - TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/usr/local/bin:/opt/$MACHINE-uClibc/usr/bin:/bin:/usr/bin:/sbin:/usr/sbin \ - VERSION=$VERSION \ - CONFIG_ROOT=$CONFIG_ROOT \ - LFS_PASS="install" \ - NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - CFLAGS="-Os" CXXFLAGS="-Os" \ - CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \ - KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ - /bin/bash -x -c "cd /usr/src/lfs && \ - make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 - if [ $? -ne 0 ]; then - exiterror "Building $*" - fi - else - exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1" - fi - return 0 -} - -buildtoolchain() { - LOGFILE="$BASEDIR/log/_build.toolchain.log" - export LOGFILE - echo -ne "`date -u '+%b %e %T'`: Stage1 toolchain build \n" | tee -a $LOGFILE - # Build sed now, as we use some extensions - 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 - lfsmake1 sed LFS_PASS=1 - lfsmake1 m4 LFS_PASS=1 - lfsmake1 bison LFS_PASS=1 - lfsmake1 flex LFS_PASS=1 - lfsmake1 binutils LFS_PASS=1 - lfsmake1 gcc LFS_PASS=1 - export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH - - lfsmake1 linux - lfsmake1 tcl - lfsmake1 expect - lfsmake1 glibc - lfsmake1 dejagnu - lfsmake1 gcc LFS_PASS=2 - lfsmake1 binutils LFS_PASS=2 - lfsmake1 gawk - lfsmake1 coreutils - lfsmake1 bzip2 - lfsmake1 gzip - lfsmake1 diffutils - lfsmake1 findutils - lfsmake1 make - lfsmake1 grep - lfsmake1 sed LFS_PASS=2 - lfsmake1 m4 LFS_PASS=2 - lfsmake1 bison LFS_PASS=2 - lfsmake1 flex LFS_PASS=2 - lfsmake1 gettext - lfsmake1 ncurses - lfsmake1 patch - lfsmake1 tar - lfsmake1 texinfo - lfsmake1 bash - lfsmake1 util-linux - lfsmake1 perl - export PATH=$ORG_PATH -} - -buildbase() { - LOGFILE="$BASEDIR/log/_build.base.log" - export LOGFILE - echo -ne "`date -u '+%b %e %T'`: Stage2 linux base build \n" | tee -a $LOGFILE - # Run LFS dynamic binary creation scripts one by one - lfsmake2 stage2 - lfsmake2 makedev - lfsmake2 linux - lfsmake2 man-pages - lfsmake2 glibc - lfsmake2 binutils - lfsmake2 gcc - lfsmake2 coreutils - lfsmake2 zlib - lfsmake2 mktemp - lfsmake2 iana-etc - lfsmake2 findutils - lfsmake2 gawk - lfsmake2 ncurses - lfsmake2 vim - lfsmake2 m4 - lfsmake2 bison - lfsmake2 less - lfsmake2 groff - lfsmake2 sed - lfsmake2 flex - lfsmake2 gettext - lfsmake2 net-tools - lfsmake2 inetutils - lfsmake2 perl - lfsmake2 texinfo - lfsmake2 autoconf - lfsmake2 automake - lfsmake2 bash - lfsmake2 file - lfsmake2 libtool - lfsmake2 bzip2 - lfsmake2 diffutils - lfsmake2 ed - lfsmake2 kbd - lfsmake2 e2fsprogs - lfsmake2 grep - if [ 'i386' = $MACHINE ]; then - lfsmake2 grub - elif [ 'alpha' = $MACHINE ]; then - lfsmake2 aboot - fi - lfsmake2 gzip - lfsmake2 man - lfsmake2 make - lfsmake2 modutils - lfsmake2 patch - lfsmake2 procinfo - lfsmake2 procps - lfsmake2 psmisc - lfsmake2 shadow - lfsmake2 sysklogd - lfsmake2 sysvinit - lfsmake2 tar - lfsmake2 util-linux -} - -buildipcop() { - # Run IPCop make scripts one by one - LOGFILE="$BASEDIR/log/_build.ipcop.log" - export LOGFILE - echo -ne "`date -u '+%b %e %T'`: Stage3 $NAME build \n" | tee -a $LOGFILE - - # Build these first as some of the kernel packages below rely on - # these for some of their client program functionality - ipcopmake configroot - ipcopmake dhcp - ipcopmake dhcpcd - ipcopmake libusb - ipcopmake libpcap - ipcopmake linux-atm - ipcopmake ppp - ipcopmake rp-pppoe - ipcopmake unzip - # Do SMP now - if [ 'i386' = $MACHINE ]; then - # abuse the SMP flag, and make an minimal installer kernel first - # so that the boot floppy always works..... - ipcopmake linux LFS_PASS=ipcop SMP=installer - ipcopmake linux LFS_PASS=ipcop SMP=1 - ipcopmake 3cp4218 SMP=1 - ipcopmake amedyn SMP=1 - ipcopmake cxacru SMP=1 - ipcopmake eagle SMP=1 - - # These are here because they have i386 only binary libraries - # included in the package. - ipcopmake cnx_pci SMP=1 - ipcopmake fcdsl SMP=1 - ipcopmake fcdsl2 SMP=1 - ipcopmake fcdslsl SMP=1 - ipcopmake fcdslusb SMP=1 - ipcopmake fcdslslusb SMP=1 - ipcopmake pulsar SMP=1 - ipcopmake unicorn SMP=1 - fi - - ipcopmake linux LFS_PASS=ipcop - ipcopmake 3cp4218 - ipcopmake amedyn - ipcopmake cxacru - ipcopmake eciadsl - ipcopmake eagle - ipcopmake speedtouch - if [ 'i386' = $MACHINE ]; then - # These are here because they have i386 only binary libraries - # included in the package. - ipcopmake cnx_pci - ipcopmake fcdsl - ipcopmake fcdsl2 - ipcopmake fcdslsl - ipcopmake fcdslusb - ipcopmake fcdslslusb - ipcopmake pulsar - ipcopmake unicorn - fi - - ipcopmake pcmcia-cs - ipcopmake expat - ipcopmake gdbm - ipcopmake gmp - ipcopmake openssl - ipcopmake python - ipcopmake libnet - ipcopmake libpng - ipcopmake gd - ipcopmake popt - ipcopmake slang - ipcopmake newt - ipcopmake libcap - ipcopmake pciutils - ipcopmake pcre - ipcopmake apache - ipcopmake arping - ipcopmake beep - ipcopmake bind - ipcopmake capi4k-utils - ipcopmake cdrtools - ipcopmake dnsmasq - ipcopmake dosfstools - ipcopmake ethtool - ipcopmake ez-ipupdate - ipcopmake fcron - ipcopmake perl-GD - ipcopmake gnupg - ipcopmake hdparm - ipcopmake ibod - ipcopmake initscripts - ipcopmake iptables - ipcopmake ipac-ng - ipcopmake ipaddr - ipcopmake iproute2 - ipcopmake iptstate - ipcopmake iputils - ipcopmake isapnptools - ipcopmake isdn4k-utils - ipcopmake kudzu - ipcopmake logrotate - ipcopmake logwatch - ipcopmake mingetty - ipcopmake misc-progs - ipcopmake mtools - ipcopmake nano - ipcopmake nash - ipcopmake nasm - ipcopmake URI - ipcopmake HTML-Tagset - ipcopmake HTML-Parser - ipcopmake Compress-Zlib - ipcopmake Digest - ipcopmake Digest-SHA1 - ipcopmake Digest-HMAC - ipcopmake libwww-perl - ipcopmake Net-DNS - ipcopmake Net-IPv4Addr - ipcopmake Net_SSLeay - ipcopmake noip_updater - ipcopmake ntp - ipcopmake oinkmaster - ipcopmake openssh - ipcopmake openswan - ipcopmake pptpclient - ipcopmake rrdtool - ipcopmake setserial - ipcopmake setup - ipcopmake snort - #ipcopmake speedycgi - ipcopmake squid - ipcopmake squid-graph - ipcopmake tcpdump - ipcopmake traceroute - ipcopmake vlan - ipcopmake wireless - ipcopmake libsafe - ipcopmake 3c5x9setup - ipcopmake stund - ipcopmake lpd - ipcopmake xampp - ipcopmake pam -} - -buildinstaller() { - # Run installer scripts one by one - LOGFILE="$BASEDIR/log/_build.installer.log" - export LOGFILE - echo -ne "`date -u '+%b %e %T'`: Stage4 installer build \n" | tee -a $LOGFILE - if [ 'i386' = $MACHINE ]; then - ipcopmake syslinux - ipcopmake as86 - ipcopmake mbr - ipcopmake uClibc - fi - installmake busybox - installmake sysvinit - installmake e2fsprogs - installmake misc-progs - installmake slang - installmake util-linux - installmake newt - installmake pciutils - installmake pcmcia-cs - installmake kbd - 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 - - # Create update for this version -# echo "`date -u '+%b %e %T'`: Building update $VERSION tgz" | tee -a $LOGFILE -# tar -cz -C $BASEDIR/build --files-from=$BASEDIR/updates/$VERSION/ROOTFILES.$MACHINE-$VERSION -f $BASEDIR/updates/$VERSION/patch.tar.gz --exclude='#*'; -# chmod 755 $BASEDIR/updates/$VERSION/setup -# tar -cz -C $BASEDIR/updates/$VERSION -f $LFS/install/images/$SNAME-update-$VERSION.$MACHINE.tgz patch.tar.gz setup information -# rm -f $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} - - # Generating list of packages used - echo "`date -u '+%b %e %T'`: 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 - echo "* `basename $i`" >>$BASEDIR/doc/packages-list - 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$\|ipcop$\|setup$\|stage2$\|smp$\|tools$\|tools1$\|tools2$' \ - $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 IPCopSoftwares - - # Create ISO for CDRom and USB-superfloppy - ipcopmake cdrom - cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1 - - # Cleanup - stdumount - rm -rf $BASEDIR/build/tmp/* - - # Generating total list of files - echo "`date -u '+%b %e %T'`: 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 - echo "##" >>$BASEDIR/log/FILES - echo "## `basename $i`" >>$BASEDIR/log/FILES - echo "##" >>$BASEDIR/log/FILES - cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES - fi - done - - cd $PWD - -} - -# See what we're supposed to do -case "$1" in -build) - BUILDMACHINE=`uname -m` - PACKAGE=`ls -v -r $BASEDIR/cache/$SNAME-1.4.*-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1` - #only restore on a clean disk - if [ ! -f log/perl-*-tools ]; then - if [ ! -n "$PACKAGE" ]; then - echo "`date -u '+%b %e %T'`: Full toolchain compilation" | tee -a $LOGFILE - prepareenv - buildtoolchain - else - PACKAGENAME=${PACKAGE%.tar.gz} - echo "`date -u '+%b %e %T'`: Restore from $PACKAGE" | tee -a $LOGFILE - if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then - tar zxf $PACKAGE - prepareenv - else - exiterror "$PACKAGENAME md5 did not match, check downloaded package" - fi - fi - else - echo "`date -u '+%b %e %T'`: Using installed toolchain" | tee -a $LOGFILE - prepareenv - fi - buildbase - buildipcop - buildinstaller - buildpackages - ;; -shell) - # enter a shell inside LFS chroot - # may be used to changed kernel settings - prepareenv - entershell - ;; -changelog) - echo "Building doc/Changelog from CVS" - # cv2cl script come from http://www.red-bean.com/cvs2cl/ - if [ ! -s $BASEDIR/doc/CVS/Tag ]; then - BRANCHOPTS="" - else - BRANCH=`cat $BASEDIR/doc/CVS/Tag` - BRANCH=${BRANCH:1} - BRANCHOPTS="--follow-only $BRANCH" - fi - - $BASEDIR/tools/cvs2cl.pl --gmt --show-dead $BRANCHOPTS -f $BASEDIR/doc/ChangeLog - rm -f $BASEDIR/doc/ChangeLog.bak - echo - echo "Commit the change now to update CVS" - ;; -check) - echo "Checking sources files availability on the web" - if [ ! -d $DIR_CHK ]; then - mkdir -p $DIR_CHK - fi - FINISHED=0 - cd $BASEDIR/lfs - for c in `seq $MAX_RETRIES`; do - if (( FINISHED==1 )); then - break - fi - FINISHED=1 - cd $BASEDIR/lfs - for i in *; do - if [ -f "$i" -a "$i" != "Config" ]; then - make -s -f $i MACHINE=$MACHINE LFS_BASEDIR=$BASEDIR ROOT=$BASEDIR/build \ - MESSAGE="$i\t ($c/$MAX_RETRIES)" check - if [ $? -ne 0 ]; then - echo "Check : wget error in lfs/$i" - FINISHED=0 - fi - fi - done - done - cd - - ;; -checkclean) - echo "Erasing sources files availability tags" - rm -rf $DIR_CHK/* - ;; -clean) - for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do - $LOSETUP -d $i 2>/dev/null - done - for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do - umount $i - done - stdumount - for i in `seq 0 7`; do - if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then - umount /dev/loop${i} 2>/dev/null; - losetup -d /dev/loop${i} 2>/dev/null; - fi; - done - rm -rf $BASEDIR/build - rm -rf $BASEDIR/cdrom - rm -rf $BASEDIR/log - rm -f $BASEDIR/updates/$VERSION/patch.tar.gz; - if [ -h /tools ]; then - rm -f /tools - fi - ;; -dist) - echo "Building source package from CVS, list of changed files, MD5 of release files" - if [ ! -s $BASEDIR/doc/CVS/Tag ]; then - BRANCH="" - BRANCHOPTS="-D `date +'%Y-%m-%d'`" - else - BRANCH=`cat $BASEDIR/doc/CVS/Tag` - BRANCH=${BRANCH:1} - BRANCHOPTS="-r $BRANCH" - fi - - rm -rf $BASEDIR/build/tmp/$SNAME-$VERSION $BASEDIR/doc/release.txt - cd $BASEDIR/build/tmp - # build sources tgz - echo "Export tree $BRANCH $SNAME-$VERSION" - cvs -z3 -d `cat $BASEDIR/CVS/Root` export $BRANCHOPTS ipcop - if [ $? -eq 0 ]; then - mv ipcop $SNAME-$VERSION - tar cfz $BASEDIR/$SNAME-sources-$VERSION.tgz $SNAME-$VERSION - cd $BASEDIR - - if [ ! -d $BASEDIR/build/tmp/$PREVIOUSTAG ]; then - # export previous version to be compared with actual, this help to check wich files need to go in update - cd $BASEDIR/build/tmp - echo "Export tree $PREVIOUSTAG" - cvs -z3 -d `cat $BASEDIR/CVS/Root` export -r $PREVIOUSTAG ipcop - mv ipcop $PREVIOUSTAG - fi - if [ -d $BASEDIR/build/tmp/$PREVIOUSTAG -o -d $BASEDIR/build/tmp/$SNAME-$VERSION ]; then - cd $BASEDIR/build/tmp - echo "diff $PREVIOUSTAG <> $BRANCH $SNAME-$VERSION >doc/updated-sources.txt" - diff -rq $PREVIOUSTAG $SNAME-$VERSION > $BASEDIR/doc/updated-sources.txt - mv $BASEDIR/doc/updated-sources.txt $BASEDIR/doc/updated-sources.bak - sed -e "s+Files $PREVIOUSTAG\/++" \ - -e "s+ and .*$++" \ - -e "s+src/rc.d+etc/rc.d+" \ - -e "s+^langs/+var/ipcop/langs/+" \ - -e "s+html/cgi-bin+home/httpd/cgi-bin+" $BASEDIR/doc/updated-sources.bak \ - > $BASEDIR/doc/updated-sources.txt - rm -f $BASEDIR/doc/updated-sources.bak - fi - fi - ;; -newupdate) - # create structure for $VERSION update - if [ ! -f "updates/$VERSION" ]; then - mkdir -p updates/$VERSION - cd updates/$VERSION - touch information - echo 'etc/issue' > ROOTFILES.alpha-$VERSION - echo 'etc/issue' > ROOTFILES.i386-$VERSION - echo 'patch.tar.gz' > .cvsignore - sed -e "s+^UPGRADEVERSION.*$+UPGRADEVERSION=$VERSION+" $BASEDIR/src/scripts/updatesetup > setup - chmod 755 setup - cd .. - echo "Adding directory $VERSION to cvs" - cvs add $VERSION - echo "Adding files to cvs" - cvs add $VERSION/ROOTFILES.alpha-$VERSION \ - $VERSION/ROOTFILES.i386-$VERSION \ - $VERSION/information \ - $VERSION/setup \ - $VERSION/.cvsignore - else - echo "update/$VERSION already exist" - fi - cd - - exit 0 - ;; -prefetch) - 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 - FINISHED=0 - cd $BASEDIR/lfs - for c in `seq $MAX_RETRIES`; do - if (( FINISHED==1 )); then - break - fi - FINISHED=1 - cd $BASEDIR/lfs - for i in *; do - if [ -f "$i" -a "$i" != "Config" ]; then - make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1 - if [ $? -ne 0 ]; then - echo "Prefetch : wget error in lfs/$i" - FINISHED=0 - else - if [ $c -eq 1 ]; then - echo "Prefetch : lfs/$i files loaded" - fi - fi - fi - done - done - echo "Prefetch : verifying md5sum" - 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 - if [ $? -ne 0 ]; then - echo "md5 difference in lfs/$i" - ERROR=1 - fi - fi - done - if [ $ERROR -eq 0 ]; then - echo "Prefetch : all files md5sum match" - fi - cd - - ;; -rootfiles) - PREVIOUSVERSION=`echo $PREVIOUSTAG | sed -e 's/IPCOP_v//' -e 's/_FINAL//' -e 's/_/\./g'` - # make md5 list of actual build - # some packages include a timestamp (kernel/perl/python/vim and more), so md5 vary at each build - # anyway, it is sometime usable after a patch or a minor upgrade to know wich files include in update - if [ ! -f "$BASEDIR/build/install/cdrom/$SNAME-$VERSION.tgz" ]; then - echo "need cdrom be build to read include files list, use ./make.sh build before." - else - tar tzf $BASEDIR/build/install/cdrom/$SNAME-$VERSION.tgz > $BASEDIR/updates/$VERSION/FILES.tmp - cd $BASEDIR/build - rm -f $BASEDIR/updates/$VERSION/FILES-$MACHINE-$VERSION.md5 - for line in `cat $BASEDIR/updates/$VERSION/FILES.tmp`; do - if [ -f "$line" -a ! -L "$line" ]; then - md5sum "$line" >> $BASEDIR/updates/$VERSION/FILES-$MACHINE-$VERSION.md5 - fi - done - diff $BASEDIR/updates/$PREVIOUSVERSION/FILES-$MACHINE-$PREVIOUSVERSION.md5 \ - $BASEDIR/updates/$VERSION/FILES-$MACHINE-$VERSION.md5 \ - > $BASEDIR/updates/$VERSION/FILES-$MACHINE.diff - awk '$1==">" {print $3}' $BASEDIR/updates/$VERSION/FILES-$MACHINE.diff \ - > $BASEDIR/updates/$VERSION/ROOTFILES.add.$MACHINE - awk '$1=="<" {print $3}' $BASEDIR/updates/$VERSION/FILES-$MACHINE.diff \ - > $BASEDIR/updates/$VERSION/ROOTFILES.remove.$MACHINE.tmp - rm -f $BASEDIR/updates/$VERSION/ROOTFILES.remove.$MACHINE - for line in `cat $BASEDIR/updates/$VERSION/ROOTFILES.remove.$MACHINE.tmp`; do - # a file is only removed when not in add file - if ( ! grep -q "^$line$" $BASEDIR/updates/$VERSION/ROOTFILES.add.$MACHINE ); then - echo $line >> $BASEDIR/updates/$VERSION/ROOTFILES.remove.$MACHINE - fi - done - rm -f $BASEDIR/updates/$VERSION/{FILES.tmp,FILES-*.diff,ROOTFILES.remove.*.tmp} - fi - exit 0 - ;; -toolchain) - prepareenv - buildtoolchain - BUILDMACHINE=`uname -m` - echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE - cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/$SNAME-$VERSION-toolchain-$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/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \ - > cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5 - stdumount - ;; -gettoolchain) - BUILDMACHINE=`uname -m` - # arbitrary name to be updated in case of new toolchain package upload - PACKAGE=$SNAME-1.4.11-toolchain-$BUILDMACHINE - URL_SFNET=`grep URL_SFNET lfs/Config | awk '{ print $3 }'` - echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE - cd $BASEDIR/cache - wget -c $URL_SFNET/ipcop/$PACKAGE.tar.gz $URL_SFNET/ipcop/$PACKAGE.md5 - if [ $? -ne 0 ]; then - echo "`date -u '+%b %e %T'`: error downloading 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 - else - exiterror "$PACKAGE.md5 did not match, check downloaded package" - fi - fi - ;; -*) - echo "Usage: $0 {build|changelog|check|checkclean|clean|dist|gettoolchain|newupdate|prefetch|rootfiles|shell|toolchain}" - cat doc/make.sh-usage - exit 1 - ;; -esac +#!/bin/bash +# +############################################################################ +# # +# This file is part of the IPCop Firewall. # +# # +# IPCop is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 2 of the License, or # +# (at your option) any later version. # +# # +# IPCop is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPCop; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2001 Mark Wormgoor . # +# # +# (c) 2001 Eric S. Johansson Check for Bash # +# (c) 2002 Thorsten Fischer MD5Sum checking # +# # +############################################################################ +# +# $Id: make.sh,v 1.129.2.145 2006/02/01 07:04:09 gespinasse Exp $ +# + + NAME="IPFire" # Software name + SNAME="ipfire" # Short name + VERSION="1.4" # Version number + PREVIOUSTAG=IPCOP_v1_4_10_FINAL + SLOGAN="We save your network" # Software slogan + CONFIG_ROOT=/var/ipfire # Configuration rootdir + NICE=10 + MAX_RETRIES=3 # prefetch/check loop + KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'` + MACHINE=`uname -m` + + # Debian specific settings + if [ ! -e /etc/debian_version ]; then + FULLPATH=`which $0` + else + if [ -x /usr/bin/realpath ]; then + FULLPATH=`/usr/bin/realpath $0` + else + echo "ERROR: Need to do apt-get install realpath" + exit 1 + fi + fi + + + PWD=`pwd` + BASENAME=`basename $0` + BASEDIR=`echo $FULLPATH | sed "s/\/$BASENAME//g"` + LOGFILE=$BASEDIR/log/_build.preparation.log + export BASEDIR LOGFILE + DIR_CHK=$BASEDIR/cache/check + mkdir $BASEDIR/log/ 2>/dev/null + + if [ 'x86_64' = $MACHINE -o 'i686' = $MACHINE -o 'i586' = $MACHINE -o 'i486' = $MACHINE -o 'i386' = $MACHINE ]; then + echo "`date -u '+%b %e %T'`: Machine is ix86 (or equivalent)" | tee -a $LOGFILE + MACHINE=i386 + BUILDTARGET=i386-pc-linux-gnu + CFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer" + CXXFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer" + elif [ 'alpha' = $MACHINE ]; then + echo "`date -u '+%b %e %T'`: Machine is Alpha AXP" | tee -a $LOGFILE + BUILDTARGET=alpha-unknown-linux-gnu + CFLAGS="-O2 -mcpu=ev4 -mieee -pipe" + CXXFLAGS="-O2 -mcpu=ev4 -mieee -pipe" + else + echo "`date -u '+%b %e %T'`: Can't determine your architecture - $MACHINE" | tee -a $LOGFILE + exit 1 + fi + +# Define immediately +stdumount() { + umount $BASEDIR/build/dev/pts 2>/dev/null; + umount $BASEDIR/build/proc 2>/dev/null; + umount $BASEDIR/build/install/mnt 2>/dev/null; + umount $BASEDIR/build/usr/src/cache 2>/dev/null; + umount $BASEDIR/build/usr/src/ccache 2>/dev/null; + umount $BASEDIR/build/usr/src/config 2>/dev/null; + umount $BASEDIR/build/usr/src/doc 2>/dev/null; + umount $BASEDIR/build/usr/src/html 2>/dev/null; + umount $BASEDIR/build/usr/src/langs 2>/dev/null; + umount $BASEDIR/build/usr/src/lfs 2>/dev/null; + umount $BASEDIR/build/usr/src/log 2>/dev/null; + umount $BASEDIR/build/usr/src/src 2>/dev/null; +} + +exiterror() { + stdumount + for i in `seq 0 7`; do + if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then + losetup -d /dev/loop${i} 2>/dev/null + fi; + done + echo "ERROR: $*" + echo " Check $LOGFILE for errors if applicable" + exit 1 +} + +entershell() { + if [ ! -e $BASEDIR/build/usr/src/lfs/ ]; then + exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/" + fi + echo "Entering to a shell inside LFS chroot, go out with exit" + chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \ + PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ + VERSION=$VERSION CONFIG_ROOT=$CONFIG_ROOT \ + NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ + CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \ + CCACHE_DIR=/usr/src/ccache \ + CCACHE_HASHDIR=1 \ + KVER=$KVER \ + BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + KGCC="ccache /usr/bin/gcc" \ + /tools/bin/bash + if [ $? -ne 0 ]; then + exiterror "chroot error" + else + stdumount + fi +} + +prepareenv() { + ############################################################################ + # # + # Are we running the right shell? # + # # + ############################################################################ + if [ ! "$BASH" ]; then + 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." + fi + + + ############################################################################ + # # + # Trap on emergency exit # + # # + ############################################################################ + trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGKILL SIGSTOP SIGQUIT + + + ############################################################################ + # # + # Resetting our nice level # + # # + ############################################################################ + echo "`date -u '+%b %e %T'`: Resetting our nice level to $NICE" | tee -a $LOGFILE + renice $NICE $$ > /dev/null + if [ `nice` != "$NICE" ]; then + exiterror "Failed to set correct nice level" + fi + + ############################################################################ + # # + # Checking if running as root user # + # # + ############################################################################ + echo "`date -u '+%b %e %T'`: Checking if we're running as root user" | tee -a $LOGFILE + if [ `id -u` != 0 ]; then + exiterror "Not building as root" + fi + + + ############################################################################ + # # + # Checking for necessary temporary space # + # # + ############################################################################ + echo "`date -u '+%b %e %T'`: 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 + exiterror "Not enough temporary space available, need at least 2.1GB on $BASE_DEV" + fi + fi + + ############################################################################ + # # + # Building Linux From Scratch system # + # # + ############################################################################ + echo "`date -u '+%b %e %T'`: Building Linux From Scratch system" | tee -a $LOGFILE + + # Set umask + umask 022 + + # Set LFS Directory + LFS=$BASEDIR/build + + # Check /tools symlink + if [ -h /tools ]; then + rm -f /tools + fi + if [ ! -a /tools ]; then + ln -s $BASEDIR/build/tools / + fi + if [ ! -h /tools ]; then + exiterror "Could not create /tools symbolic link." + fi + + # Setup environment + set +h + LC_ALL=POSIX + export LFS LC_ALL CFLAGS CXXFLAGS + unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD + + # Make some extra directories + mkdir -p $BASEDIR/build/{tools,etc,usr/src} 2>/dev/null + mkdir -p $BASEDIR/{cache,ccache} 2>/dev/null + mkdir -p $BASEDIR/build/dev/pts $BASEDIR/build/proc $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache} + + # Make all sources and proc available under lfs build + mount --bind /dev/pts $BASEDIR/build/dev/pts + mount --bind /proc $BASEDIR/build/proc + 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 + mount --bind $BASEDIR/doc $BASEDIR/build/usr/src/doc + mount --bind $BASEDIR/html $BASEDIR/build/usr/src/html + mount --bind $BASEDIR/langs $BASEDIR/build/usr/src/langs + mount --bind $BASEDIR/lfs $BASEDIR/build/usr/src/lfs + mount --bind $BASEDIR/log $BASEDIR/build/usr/src/log + mount --bind $BASEDIR/src $BASEDIR/build/usr/src/src + + # Run LFS static binary creation scripts one by one + export CCACHE_DIR=$BASEDIR/ccache + export CCACHE_HASHDIR=1 + + # Remove pre-install list of installed files in case user erase some files before rebuild + rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null +} + + +############################################################################ +# # +# Necessary shell functions # +# # +############################################################################ +lfsmake1() { + if [ -f $BASEDIR/lfs/$1 ]; then + echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE + cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1 + if [ $? -ne 0 ]; then + exiterror "Download error in $1" + fi + cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1 + if [ $? -ne 0 ]; then + exiterror "md5sum error in $1, check file in cache or signature" + fi + cd $BASEDIR/lfs && make -f $* BUILDTARGET=$BUILDTARGET \ + MACHINE=$MACHINE \ + LFS_BASEDIR=$BASEDIR \ + ROOT=$LFS \ + KVER=$KVER \ + install >> $LOGFILE 2>&1 + if [ $? -ne 0 ]; then + exiterror "Building $*"; + fi + else + exiterror "No such file or directory: $BASEDIR/$1" + fi + return 0 +} + +lfsmake2() { + if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then + echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE + cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1 + if [ $? -ne 0 ]; then + exiterror "Download error in $1" + fi + cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1 + if [ $? -ne 0 ]; then + exiterror "md5sum error in $1, check file in cache or signature" + fi + chroot $LFS /tools/bin/env -i HOME=/root \ + TERM=$TERM PS1='\u:\w\$ ' \ + PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ + VERSION=$VERSION \ + CONFIG_ROOT=$CONFIG_ROOT \ + NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ + CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \ + CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \ + KVER=$KVER \ + BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + /tools/bin/bash -x -c "cd /usr/src/lfs && \ + make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 + if [ $? -ne 0 ]; then + exiterror "Building $*" + fi + else + exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1" + fi + return 0 +} + +ipcopmake() { + if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then + echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE + cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1 + if [ $? -ne 0 ]; then + exiterror "Download error in $1" + fi + cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1 + if [ $? -ne 0 ]; then + exiterror "md5sum error in $1, check file in cache or signature" + fi + chroot $LFS /tools/bin/env -i HOME=/root \ + TERM=$TERM PS1='\u:\w\$ ' \ + PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \ + VERSION=$VERSION \ + CONFIG_ROOT=$CONFIG_ROOT \ + NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ + CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \ + CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \ + KVER=$KVER \ + BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + /bin/bash -x -c "cd /usr/src/lfs && \ + make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 + if [ $? -ne 0 ]; then + exiterror "Building $*" + fi + else + exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1" + fi + return 0 +} + + +installmake() { + if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then + echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE + cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1 + if [ $? -ne 0 ]; then + exiterror "Download error in $1" + fi + cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1 + if [ $? -ne 0 ]; then + exiterror "md5sum error in $1, check file in cache or signature" + fi + chroot $LFS /tools/bin/env -i HOME=/root \ + TERM=$TERM PS1='\u:\w\$ ' \ + PATH=/usr/local/bin:/opt/$MACHINE-uClibc/usr/bin:/bin:/usr/bin:/sbin:/usr/sbin \ + VERSION=$VERSION \ + CONFIG_ROOT=$CONFIG_ROOT \ + LFS_PASS="install" \ + NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ + CFLAGS="-Os" CXXFLAGS="-Os" \ + CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \ + KVER=$KVER \ + BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + /bin/bash -x -c "cd /usr/src/lfs && \ + make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 + if [ $? -ne 0 ]; then + exiterror "Building $*" + fi + else + exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1" + fi + return 0 +} + +buildtoolchain() { + LOGFILE="$BASEDIR/log/_build.toolchain.log" + export LOGFILE + echo -ne "`date -u '+%b %e %T'`: Stage1 toolchain build \n" | tee -a $LOGFILE + # Build sed now, as we use some extensions + 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 + lfsmake1 sed LFS_PASS=1 + lfsmake1 m4 LFS_PASS=1 + lfsmake1 bison LFS_PASS=1 + lfsmake1 flex LFS_PASS=1 + lfsmake1 binutils LFS_PASS=1 + lfsmake1 gcc LFS_PASS=1 + export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH + + lfsmake1 linux + lfsmake1 tcl + lfsmake1 expect + lfsmake1 glibc + lfsmake1 dejagnu + lfsmake1 gcc LFS_PASS=2 + lfsmake1 binutils LFS_PASS=2 + lfsmake1 gawk + lfsmake1 coreutils + lfsmake1 bzip2 + lfsmake1 gzip + lfsmake1 diffutils + lfsmake1 findutils + lfsmake1 make + lfsmake1 grep + lfsmake1 sed LFS_PASS=2 + lfsmake1 m4 LFS_PASS=2 + lfsmake1 bison LFS_PASS=2 + lfsmake1 flex LFS_PASS=2 + lfsmake1 gettext + lfsmake1 ncurses + lfsmake1 patch + lfsmake1 tar + lfsmake1 texinfo + lfsmake1 bash + lfsmake1 util-linux + lfsmake1 perl + export PATH=$ORG_PATH +} + +buildbase() { + LOGFILE="$BASEDIR/log/_build.base.log" + export LOGFILE + echo -ne "`date -u '+%b %e %T'`: Stage2 linux base build \n" | tee -a $LOGFILE + # Run LFS dynamic binary creation scripts one by one + lfsmake2 stage2 + lfsmake2 makedev + lfsmake2 linux + lfsmake2 man-pages + lfsmake2 glibc + lfsmake2 binutils + lfsmake2 gcc + lfsmake2 coreutils + lfsmake2 zlib + lfsmake2 mktemp + lfsmake2 iana-etc + lfsmake2 findutils + lfsmake2 gawk + lfsmake2 ncurses + lfsmake2 vim + lfsmake2 m4 + lfsmake2 bison + lfsmake2 less + lfsmake2 groff + lfsmake2 sed + lfsmake2 flex + lfsmake2 gettext + lfsmake2 net-tools + lfsmake2 inetutils + lfsmake2 perl + lfsmake2 texinfo + lfsmake2 autoconf + lfsmake2 automake + lfsmake2 bash + lfsmake2 file + lfsmake2 libtool + lfsmake2 bzip2 + lfsmake2 diffutils + lfsmake2 ed + lfsmake2 kbd + lfsmake2 e2fsprogs + lfsmake2 grep + if [ 'i386' = $MACHINE ]; then + lfsmake2 grub + elif [ 'alpha' = $MACHINE ]; then + lfsmake2 aboot + fi + lfsmake2 gzip + lfsmake2 man + lfsmake2 make + lfsmake2 modutils + lfsmake2 patch + lfsmake2 procinfo + lfsmake2 procps + lfsmake2 psmisc + lfsmake2 shadow + lfsmake2 sysklogd + lfsmake2 sysvinit + lfsmake2 tar + lfsmake2 util-linux +} + +buildipcop() { + # Run IPCop make scripts one by one + LOGFILE="$BASEDIR/log/_build.ipcop.log" + export LOGFILE + echo -ne "`date -u '+%b %e %T'`: Stage3 $NAME build \n" | tee -a $LOGFILE + + # Build these first as some of the kernel packages below rely on + # these for some of their client program functionality + ipcopmake configroot + ipcopmake dhcp + ipcopmake dhcpcd + ipcopmake libusb + ipcopmake libpcap + ipcopmake linux-atm + ipcopmake ppp + ipcopmake rp-pppoe + ipcopmake unzip + # Do SMP now + if [ 'i386' = $MACHINE ]; then + # abuse the SMP flag, and make an minimal installer kernel first + # so that the boot floppy always works..... + ipcopmake linux LFS_PASS=ipcop SMP=installer + ipcopmake linux LFS_PASS=ipcop SMP=1 + ipcopmake 3cp4218 SMP=1 + ipcopmake amedyn SMP=1 + ipcopmake cxacru SMP=1 + ipcopmake eagle SMP=1 + + # These are here because they have i386 only binary libraries + # included in the package. + ipcopmake cnx_pci SMP=1 + ipcopmake fcdsl SMP=1 + ipcopmake fcdsl2 SMP=1 + ipcopmake fcdslsl SMP=1 + ipcopmake fcdslusb SMP=1 + ipcopmake fcdslslusb SMP=1 + ipcopmake pulsar SMP=1 + ipcopmake unicorn SMP=1 + fi + + ipcopmake linux LFS_PASS=ipcop + ipcopmake 3cp4218 + ipcopmake amedyn + ipcopmake cxacru + ipcopmake eciadsl + ipcopmake eagle + ipcopmake speedtouch + if [ 'i386' = $MACHINE ]; then + # These are here because they have i386 only binary libraries + # included in the package. + ipcopmake cnx_pci + ipcopmake fcdsl + ipcopmake fcdsl2 + ipcopmake fcdslsl + ipcopmake fcdslusb + ipcopmake fcdslslusb + ipcopmake pulsar + ipcopmake unicorn + fi + + ipcopmake pcmcia-cs + ipcopmake expat + ipcopmake gdbm + ipcopmake gmp + ipcopmake openssl + ipcopmake python + ipcopmake libnet + ipcopmake libpng + ipcopmake gd + ipcopmake popt + ipcopmake slang + ipcopmake newt + ipcopmake libcap + ipcopmake pciutils + ipcopmake pcre + ipcopmake apache + ipcopmake arping + ipcopmake beep + ipcopmake bind + ipcopmake capi4k-utils + ipcopmake cdrtools + ipcopmake dnsmasq + ipcopmake dosfstools + ipcopmake ethtool + ipcopmake ez-ipupdate + ipcopmake fcron + ipcopmake perl-GD + ipcopmake gnupg + ipcopmake hdparm + ipcopmake ibod + ipcopmake initscripts + ipcopmake iptables + ipcopmake ipac-ng + ipcopmake ipaddr + ipcopmake iproute2 + ipcopmake iptstate + ipcopmake iputils + ipcopmake isapnptools + ipcopmake isdn4k-utils + ipcopmake kudzu + ipcopmake logrotate + ipcopmake logwatch + ipcopmake mingetty + ipcopmake misc-progs + ipcopmake mtools + ipcopmake nano + ipcopmake nash + ipcopmake nasm + ipcopmake URI + ipcopmake HTML-Tagset + ipcopmake HTML-Parser + ipcopmake Compress-Zlib + ipcopmake Digest + ipcopmake Digest-SHA1 + ipcopmake Digest-HMAC + ipcopmake libwww-perl + ipcopmake Net-DNS + ipcopmake Net-IPv4Addr + ipcopmake Net_SSLeay + ipcopmake noip_updater + ipcopmake ntp + ipcopmake oinkmaster + ipcopmake openssh + ipcopmake openswan + ipcopmake pptpclient + ipcopmake rrdtool + ipcopmake setserial + ipcopmake setup + ipcopmake snort + #ipcopmake speedycgi + ipcopmake squid + ipcopmake squid-graph + ipcopmake tcpdump + ipcopmake traceroute + ipcopmake vlan + ipcopmake wireless + ipcopmake libsafe + ipcopmake 3c5x9setup + ipcopmake stund + ipcopmake lpd + ipcopmake xampp + ipcopmake pam +} + +buildinstaller() { + # Run installer scripts one by one + LOGFILE="$BASEDIR/log/_build.installer.log" + export LOGFILE + echo -ne "`date -u '+%b %e %T'`: Stage4 installer build \n" | tee -a $LOGFILE + if [ 'i386' = $MACHINE ]; then + ipcopmake syslinux + ipcopmake as86 + ipcopmake mbr + ipcopmake uClibc + fi + installmake busybox + installmake sysvinit + installmake e2fsprogs + installmake misc-progs + installmake slang + installmake util-linux + installmake newt + installmake pciutils + installmake pcmcia-cs + installmake kbd + 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 + + # Create update for this version +# echo "`date -u '+%b %e %T'`: Building update $VERSION tgz" | tee -a $LOGFILE +# tar -cz -C $BASEDIR/build --files-from=$BASEDIR/updates/$VERSION/ROOTFILES.$MACHINE-$VERSION -f $BASEDIR/updates/$VERSION/patch.tar.gz --exclude='#*'; +# chmod 755 $BASEDIR/updates/$VERSION/setup +# tar -cz -C $BASEDIR/updates/$VERSION -f $LFS/install/images/$SNAME-update-$VERSION.$MACHINE.tgz patch.tar.gz setup information +# rm -f $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} + + # Generating list of packages used + echo "`date -u '+%b %e %T'`: 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 + echo "* `basename $i`" >>$BASEDIR/doc/packages-list + 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$\|ipcop$\|setup$\|stage2$\|smp$\|tools$\|tools1$\|tools2$' \ + $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 IPCopSoftwares + + # Create ISO for CDRom and USB-superfloppy + ipcopmake cdrom + cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1 + + # Cleanup + stdumount + rm -rf $BASEDIR/build/tmp/* + + # Generating total list of files + echo "`date -u '+%b %e %T'`: 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 + echo "##" >>$BASEDIR/log/FILES + echo "## `basename $i`" >>$BASEDIR/log/FILES + echo "##" >>$BASEDIR/log/FILES + cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES + fi + done + + cd $PWD + +} + +# See what we're supposed to do +case "$1" in +build) + BUILDMACHINE=`uname -m` + PACKAGE=`ls -v -r $BASEDIR/cache/$SNAME-1.4.*-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1` + #only restore on a clean disk + if [ ! -f log/perl-*-tools ]; then + if [ ! -n "$PACKAGE" ]; then + echo "`date -u '+%b %e %T'`: Full toolchain compilation" | tee -a $LOGFILE + prepareenv + buildtoolchain + else + PACKAGENAME=${PACKAGE%.tar.gz} + echo "`date -u '+%b %e %T'`: Restore from $PACKAGE" | tee -a $LOGFILE + if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then + tar zxf $PACKAGE + prepareenv + else + exiterror "$PACKAGENAME md5 did not match, check downloaded package" + fi + fi + else + echo "`date -u '+%b %e %T'`: Using installed toolchain" | tee -a $LOGFILE + prepareenv + fi + buildbase + buildipcop + buildinstaller + buildpackages + ;; +shell) + # enter a shell inside LFS chroot + # may be used to changed kernel settings + prepareenv + entershell + ;; +changelog) + echo "Building doc/Changelog from CVS" + # cv2cl script come from http://www.red-bean.com/cvs2cl/ + if [ ! -s $BASEDIR/doc/CVS/Tag ]; then + BRANCHOPTS="" + else + BRANCH=`cat $BASEDIR/doc/CVS/Tag` + BRANCH=${BRANCH:1} + BRANCHOPTS="--follow-only $BRANCH" + fi + + $BASEDIR/tools/cvs2cl.pl --gmt --show-dead $BRANCHOPTS -f $BASEDIR/doc/ChangeLog + rm -f $BASEDIR/doc/ChangeLog.bak + echo + echo "Commit the change now to update CVS" + ;; +check) + echo "Checking sources files availability on the web" + if [ ! -d $DIR_CHK ]; then + mkdir -p $DIR_CHK + fi + FINISHED=0 + cd $BASEDIR/lfs + for c in `seq $MAX_RETRIES`; do + if (( FINISHED==1 )); then + break + fi + FINISHED=1 + cd $BASEDIR/lfs + for i in *; do + if [ -f "$i" -a "$i" != "Config" ]; then + make -s -f $i MACHINE=$MACHINE LFS_BASEDIR=$BASEDIR ROOT=$BASEDIR/build \ + MESSAGE="$i\t ($c/$MAX_RETRIES)" check + if [ $? -ne 0 ]; then + echo "Check : wget error in lfs/$i" + FINISHED=0 + fi + fi + done + done + cd - + ;; +checkclean) + echo "Erasing sources files availability tags" + rm -rf $DIR_CHK/* + ;; +clean) + for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do + $LOSETUP -d $i 2>/dev/null + done + for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do + umount $i + done + stdumount + for i in `seq 0 7`; do + if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then + umount /dev/loop${i} 2>/dev/null; + losetup -d /dev/loop${i} 2>/dev/null; + fi; + done + rm -rf $BASEDIR/build + rm -rf $BASEDIR/cdrom + rm -rf $BASEDIR/log + rm -f $BASEDIR/updates/$VERSION/patch.tar.gz; + if [ -h /tools ]; then + rm -f /tools + fi + ;; +dist) + echo "Building source package from CVS, list of changed files, MD5 of release files" + if [ ! -s $BASEDIR/doc/CVS/Tag ]; then + BRANCH="" + BRANCHOPTS="-D `date +'%Y-%m-%d'`" + else + BRANCH=`cat $BASEDIR/doc/CVS/Tag` + BRANCH=${BRANCH:1} + BRANCHOPTS="-r $BRANCH" + fi + + rm -rf $BASEDIR/build/tmp/$SNAME-$VERSION $BASEDIR/doc/release.txt + cd $BASEDIR/build/tmp + # build sources tgz + echo "Export tree $BRANCH $SNAME-$VERSION" + cvs -z3 -d `cat $BASEDIR/CVS/Root` export $BRANCHOPTS ipcop + if [ $? -eq 0 ]; then + mv ipcop $SNAME-$VERSION + tar cfz $BASEDIR/$SNAME-sources-$VERSION.tgz $SNAME-$VERSION + cd $BASEDIR + + if [ ! -d $BASEDIR/build/tmp/$PREVIOUSTAG ]; then + # export previous version to be compared with actual, this help to check wich files need to go in update + cd $BASEDIR/build/tmp + echo "Export tree $PREVIOUSTAG" + cvs -z3 -d `cat $BASEDIR/CVS/Root` export -r $PREVIOUSTAG ipcop + mv ipcop $PREVIOUSTAG + fi + if [ -d $BASEDIR/build/tmp/$PREVIOUSTAG -o -d $BASEDIR/build/tmp/$SNAME-$VERSION ]; then + cd $BASEDIR/build/tmp + echo "diff $PREVIOUSTAG <> $BRANCH $SNAME-$VERSION >doc/updated-sources.txt" + diff -rq $PREVIOUSTAG $SNAME-$VERSION > $BASEDIR/doc/updated-sources.txt + mv $BASEDIR/doc/updated-sources.txt $BASEDIR/doc/updated-sources.bak + sed -e "s+Files $PREVIOUSTAG\/++" \ + -e "s+ and .*$++" \ + -e "s+src/rc.d+etc/rc.d+" \ + -e "s+^langs/+var/ipcop/langs/+" \ + -e "s+html/cgi-bin+home/httpd/cgi-bin+" $BASEDIR/doc/updated-sources.bak \ + > $BASEDIR/doc/updated-sources.txt + rm -f $BASEDIR/doc/updated-sources.bak + fi + fi + ;; +newupdate) + # create structure for $VERSION update + if [ ! -f "updates/$VERSION" ]; then + mkdir -p updates/$VERSION + cd updates/$VERSION + touch information + echo 'etc/issue' > ROOTFILES.alpha-$VERSION + echo 'etc/issue' > ROOTFILES.i386-$VERSION + echo 'patch.tar.gz' > .cvsignore + sed -e "s+^UPGRADEVERSION.*$+UPGRADEVERSION=$VERSION+" $BASEDIR/src/scripts/updatesetup > setup + chmod 755 setup + cd .. + echo "Adding directory $VERSION to cvs" + cvs add $VERSION + echo "Adding files to cvs" + cvs add $VERSION/ROOTFILES.alpha-$VERSION \ + $VERSION/ROOTFILES.i386-$VERSION \ + $VERSION/information \ + $VERSION/setup \ + $VERSION/.cvsignore + else + echo "update/$VERSION already exist" + fi + cd - + exit 0 + ;; +prefetch) + 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 + FINISHED=0 + cd $BASEDIR/lfs + for c in `seq $MAX_RETRIES`; do + if (( FINISHED==1 )); then + break + fi + FINISHED=1 + cd $BASEDIR/lfs + for i in *; do + if [ -f "$i" -a "$i" != "Config" ]; then + make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1 + if [ $? -ne 0 ]; then + echo "Prefetch : wget error in lfs/$i" + FINISHED=0 + else + if [ $c -eq 1 ]; then + echo "Prefetch : lfs/$i files loaded" + fi + fi + fi + done + done + echo "Prefetch : verifying md5sum" + 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 + if [ $? -ne 0 ]; then + echo "md5 difference in lfs/$i" + ERROR=1 + fi + fi + done + if [ $ERROR -eq 0 ]; then + echo "Prefetch : all files md5sum match" + fi + cd - + ;; +rootfiles) + PREVIOUSVERSION=`echo $PREVIOUSTAG | sed -e 's/IPCOP_v//' -e 's/_FINAL//' -e 's/_/\./g'` + # make md5 list of actual build + # some packages include a timestamp (kernel/perl/python/vim and more), so md5 vary at each build + # anyway, it is sometime usable after a patch or a minor upgrade to know wich files include in update + if [ ! -f "$BASEDIR/build/install/cdrom/$SNAME-$VERSION.tgz" ]; then + echo "need cdrom be build to read include files list, use ./make.sh build before." + else + tar tzf $BASEDIR/build/install/cdrom/$SNAME-$VERSION.tgz > $BASEDIR/updates/$VERSION/FILES.tmp + cd $BASEDIR/build + rm -f $BASEDIR/updates/$VERSION/FILES-$MACHINE-$VERSION.md5 + for line in `cat $BASEDIR/updates/$VERSION/FILES.tmp`; do + if [ -f "$line" -a ! -L "$line" ]; then + md5sum "$line" >> $BASEDIR/updates/$VERSION/FILES-$MACHINE-$VERSION.md5 + fi + done + diff $BASEDIR/updates/$PREVIOUSVERSION/FILES-$MACHINE-$PREVIOUSVERSION.md5 \ + $BASEDIR/updates/$VERSION/FILES-$MACHINE-$VERSION.md5 \ + > $BASEDIR/updates/$VERSION/FILES-$MACHINE.diff + awk '$1==">" {print $3}' $BASEDIR/updates/$VERSION/FILES-$MACHINE.diff \ + > $BASEDIR/updates/$VERSION/ROOTFILES.add.$MACHINE + awk '$1=="<" {print $3}' $BASEDIR/updates/$VERSION/FILES-$MACHINE.diff \ + > $BASEDIR/updates/$VERSION/ROOTFILES.remove.$MACHINE.tmp + rm -f $BASEDIR/updates/$VERSION/ROOTFILES.remove.$MACHINE + for line in `cat $BASEDIR/updates/$VERSION/ROOTFILES.remove.$MACHINE.tmp`; do + # a file is only removed when not in add file + if ( ! grep -q "^$line$" $BASEDIR/updates/$VERSION/ROOTFILES.add.$MACHINE ); then + echo $line >> $BASEDIR/updates/$VERSION/ROOTFILES.remove.$MACHINE + fi + done + rm -f $BASEDIR/updates/$VERSION/{FILES.tmp,FILES-*.diff,ROOTFILES.remove.*.tmp} + fi + exit 0 + ;; +toolchain) + prepareenv + buildtoolchain + BUILDMACHINE=`uname -m` + echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE + cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/$SNAME-$VERSION-toolchain-$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/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \ + > cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5 + stdumount + ;; +gettoolchain) + BUILDMACHINE=`uname -m` + # arbitrary name to be updated in case of new toolchain package upload + PACKAGE=$SNAME-1.4.11-toolchain-$BUILDMACHINE + URL_SFNET=`grep URL_SFNET lfs/Config | awk '{ print $3 }'` + echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE + cd $BASEDIR/cache + wget -c $URL_SFNET/ipcop/$PACKAGE.tar.gz $URL_SFNET/ipcop/$PACKAGE.md5 + if [ $? -ne 0 ]; then + echo "`date -u '+%b %e %T'`: error downloading 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 + else + exiterror "$PACKAGE.md5 did not match, check downloaded package" + fi + fi + ;; +*) + echo "Usage: $0 {build|changelog|check|checkclean|clean|dist|gettoolchain|newupdate|prefetch|rootfiles|shell|toolchain}" + cat doc/make.sh-usage + exit 1 + ;; +esac -- 2.39.2