#!/bin/bash # # Copyright (C) 2006 Brian Brazil # # This program 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. # # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # set -ex . config REMOVED_LIST=$PWD/firmware/firmware-removed rm -rf $WORKINGDIR mkdir -p $WORKINGDIR cd $WORKINGDIR #apt-get source linux-image-2.6.15-$KERNEL_VERSIONPART-386$VERSION apt-get source linux-image-2.6.15-$KERNEL_VERSIONPART-386 apt-get --yes build-dep linux-image-2.6.15-$KERNEL_VERSIONPART-386 function clean_kconfig { #$1 = filename $2 = things to remove perl -i -ne 'BEGIN{$p=1} if(/^config ('$2')$/){$p=0}elsif(/^(config|endmenu|source)/){$p=1}; print if $p' $1 } #Need to remove any file in the diff that won't exist zcat linux-source-*.diff.gz | awk 'BEGIN{RS="\n---"; first=1} !/^ [^\n]+('$(sed 's#\/#\\/#g; s#\.#\\.#g' < $REMOVED_LIST | tr $'\n' '|' | sed 's/|$//' )')\n/{if(first)print; else print "---"$0; first=0}' | gzip -c > tmp mv tmp linux-source-*.diff.gz #Remove firmware from orig.tar.gz rm -rf `find -maxdepth 1 -mindepth 1 -type d` tar -xzf linux-source-*.orig.tar.gz cd linux-source-* rm -rf debian/firmware/* #Start general firmware removal #AMBASSADOR uses atmsar11.data rm ./drivers/atm/atmsar11.data #FORE uses pca200e.data, pca200e_ecd.data and sba200e_ecd.data rm ./drivers/atm/pca200e.data rm ./drivers/atm/pca200e_ecd.data rm ./drivers/atm/sba200e_ecd.data clean_kconfig ./drivers/atm/Kconfig 'ATM_(AMBASSADOR|FORE).*' sed -i '/CONFIG_ATM_AMBASSADOR/d' ./drivers/atm/Makefile sed -i '/CONFIG_ATM_FORE200E)/d' ./drivers/atm/Makefile rm ./drivers/char/drm/mga_ucode.h rm ./drivers/char/drm/r128_cce.c rm ./drivers/char/drm/radeon_cp.c clean_kconfig ./drivers/char/drm/Kconfig 'DRM_(MGA|R128|RADEON)' sed -i '/\(mga\|r128\|radeon\)(\.o\|-objs)/d' ./drivers/char/drm/Makefile #No kconfig for dsp56 rm ./drivers/char/dsp56k.c rm ./drivers/char/ip2/fip_firm.h clean_kconfig ./drivers/char/Kconfig 'COMPUTONE' sed -i '/ATARI_DSP56K\|COMPUTONE/d' ./drivers/char/drm/Makefile rm ./drivers/media/dvb/frontends/tda10021.c rm ./drivers/media/dvb/frontends/tda8083.c rm ./drivers/media/dvb/frontends/tda80xx.c rm ./drivers/media/dvb/frontends/ves1820.c rm ./drivers/media/dvb/frontends/ves1x93.c clean_kconfig ./drivers/media/dvb/frontends/Kconfig 'DVB_(TDA10021|TDA8083|TDA80XX|VES1820|VES1X93)' sed -i '/CONFIG_DVB_\(TDA10021\|TDA8083\|TDA80XX\|VES1820\|VES1X93\)/d' ./drivers/media/dvb/frontends/Makefile rm ./drivers/media/dvb/ttpci/av7110.c rm ./drivers/media/dvb/ttpci/av7110_hw.c rm ./drivers/media/dvb/ttpci/budget-av.c rm ./drivers/media/dvb/ttpci/budget-ci.c clean_kconfig ./drivers/media/dvb/ttpci/Kconfig 'DVB_(AV7110.*|BUDGET_CI|BUDGET_AV)' sed -i '/CONFIG_\(AV7110\|BUDGET_CI\|BUDGET_AV\)/d' ./drivers/media/dvb/ttpci/Makefile rm ./drivers/media/dvb/ttusb-budget/dvb-ttusb-dspbootcode.h echo > ./drivers/media/dvb/ttusb-budget/Kconfig echo > ./drivers/media/dvb/ttusb-budget/Makefile sed -i 's#ttusb-budget/##' ./drivers/media/dvb/Makefile #STRADIS uses cs8420.h rm ./drivers/media/video/cs8420.h clean_kconfig ./drivers/media/video/Kconfig 'VIDEO_STRADIS' sed -i '/CONFIG_VIDEO_STRADIS/d' ./drivers/media/video/Makefile rm ./drivers/net/acenic_firmware.h rm ./drivers/net/bnx2_fw.h rm ./drivers/net/cassini.h rm ./drivers/net/dgrs_firmware.c rm ./drivers/net/e100.c rm ./drivers/net/starfire_firmware.h rm ./drivers/net/typhoon-firmware.h rm ./drivers/net/tg3.c clean_kconfig ./drivers/net/Kconfig 'ACENIC|ACENIC_OMIT_TIGON_I|BNX2|CASSINI|DGRS|E100|ADAPTEC_STARFIRE|ADAPTEC_STARFIRE_NAPI|TYPHOON|TIHON3' sed -i '/\(acenic\|bnx2\|cassini\|dgrs\|e100\|starfire\|typhoon\|tg3\)\.o/d' ./drivers/net/Makefile rm ./drivers/net/appletalk/cops_ffdrv.h rm ./drivers/net/appletalk/cops_ltdrv.h clean_kconfig ./drivers/net/appletalk/Kconfig 'COPS.*' sed -i '/CONFIG_COPS/d' ./drivers/net/appletalk/Makefile #YAM uses yam1200.h and yam9600.h rm ./drivers/net/hamradio/yam1200.h rm ./drivers/net/hamradio/yam9600.h clean_kconfig ./drivers/net/hamradio/Kconfig 'YAM' sed -i '/CONFIG_YAM/d' ./drivers/net/hamradio/Makefile rm ./drivers/net/pcmcia/ositech.h clean_kconfig ./drivers/net/pcmcia/Kconfig 'PCMCIA_SMC91C92' sed -i '/CONFIG_PCMCIA_SMC91C92/d' ./drivers/net/pcmcia/Makefile rm ./drivers/net/tokenring/3c359_microcode.h rm ./drivers/net/tokenring/smctr_firmware.h clean_kconfig ./drivers/net/tokenring/Kconfig 'SMCTR|3C359' sed -i '/CONFIG_\(SMCTR\|3C359\)/d' ./drivers/net/tokenring/Makefile #CYCLADES_SYNC uses sdladrv.c #WANXL uses wanxlfw.inc_shipped rm ./drivers/net/wan/sdladrv.c rm ./drivers/net/wan/wanxlfw.inc_shipped clean_kconfig ./drivers/net/wan/Kconfig 'CYCLADES_SYNC|WANXL.*' sed -i '/CONFIG_\(CYCLADES_SYNC\|WANXL)\)/d' ./drivers/net/wan/Makefile #PRISM54_SOFTMAC uses sent_data_ok.h rm ./drivers/net/wireless/prism54_softmac/sent_data_ok.h echo > ./drivers/net/wireless/prism54_softmac/Kconfig sed -i '/CONFIG_PRISM54_SOFTMAC/d' ./drivers/net/wireless/prism54_softmac/Makefile #NET_RTL818X uses r8180_rtl8255.c rm ./drivers/net/wireless/rtl818x/r8180_rtl8255.c echo > ./drivers/net/wireless/rtl818x/Kconfig sed -i '/CONFIG_NET_RTL818X/d' ./drivers/net/wireless/rtl818x/Makefile #QETH uses qeth_mpc.c rm ./drivers/s390/net/qeth_mpc.c clean_kconfig ./drivers/s390/net/Kconfig 'QETH.*' sed -i '/^qeth-/d' ./drivers/s390/net/Makefile #AIC79XX uses aic79xx_seq.h_shipped rm ./drivers/scsi/aic7xxx/aic79xx_seq.h_shipped echo > ./drivers/scsi/aic7xxx/Kconfig.aic79xx sed -i '/aic79xx/d' ./drivers/scsi/aic7xxx/Makefile #AIC94XX uses aic94xx_seq_microcode.c rm ./drivers/scsi/aic94xx/aic94xx_seq_microcode.c echo > ./drivers/scsi/aic94xx/Kconfig sed -i '/CONFIG_SCSI_AIC94XX/d' ./drivers/scsi/Makefile #QLOGIC_1280 uses ql1040_fw.h, ql12160_fw.h and ql1280_fw.h rm ./drivers/scsi/ql1040_fw.h rm ./drivers/scsi/ql12160_fw.h rm ./drivers/scsi/ql1280_fw.h rm ./drivers/scsi/qlogicfc_asm.c rm ./drivers/scsi/qlogicpti_asm.c clean_kconfig ./drivers/scsi/Kconfig 'SCSI_QLOGIC(_1280|_FC.*|PTI)' sed -i '/qla1280\.o/d; /CONFIG_SCSI_QLOGIC\(_1280\|_FC\|PTI\)/d' ./drivers/scsi/Makefile rm ./drivers/scsi/qla2xxx/ql2100_fw.c rm ./drivers/scsi/qla2xxx/ql2200_fw.c rm ./drivers/scsi/qla2xxx/ql2300_fw.c rm ./drivers/scsi/qla2xxx/ql2322_fw.c rm ./drivers/scsi/qla2xxx/ql6312_fw.c echo > ./drivers/scsi/qla2xxx/Kconfig echo > ./drivers/scsi/qla2xxx/Makefile sed -i '/CONFIG_SCSI_QLA2XXX/d' ./drivers/scsi/Makefile rm ./drivers/serial/jsm/jsm_neo.c clean_kconfig ./drivers/serial/Kconfig 'SERIAL_JSM' echo > ./drivers/serial/jsm/Makefile sed -i '/CONFIG_SERIAL_JSM/d' ./drivers/pci/Makefile #DABUSB uses dabfirmware.h #PWC uses pwc-kiara.c and pwc-timon.c rm ./drivers/usb/media/dabfirmware.h rm ./drivers/usb/media/ibmcam.c rm ./drivers/usb/media/vicam.c rm ./drivers/usb/media/pwc/pwc-kiara.c rm ./drivers/usb/media/pwc/pwc-timon.c rm ./drivers/usb/media/spca5xx/cs2102.h rm ./drivers/usb/media/spca5xx/cxlib.h rm ./drivers/usb/media/spca5xx/hdcs2020.h rm ./drivers/usb/media/spca5xx/hv7131b.h rm ./drivers/usb/media/spca5xx/hv7131c.h rm ./drivers/usb/media/spca5xx/icm105a.h rm ./drivers/usb/media/spca5xx/pb0330.h rm ./drivers/usb/media/spca5xx/sn9cxxx.h rm ./drivers/usb/media/spca5xx/sonix.h rm ./drivers/usb/media/spca5xx/sp5xxfw2.dat rm ./drivers/usb/media/spca5xx/spca500_init.h rm ./drivers/usb/media/spca5xx/spca501_init.h rm ./drivers/usb/media/spca5xx/spca505_init.h rm ./drivers/usb/media/spca5xx/spca508_init.h rm ./drivers/usb/media/spca5xx/spca561.h rm ./drivers/usb/media/spca5xx/tas5130c.h clean_kconfig ./drivers/usb/media/Kconfig 'USB_(DABUSB|IBMCAM|VICAM|PWC|SPCA5XX)' sed -i '/CONFIG_USB_\(DABUSB\|IBMCAM\|VICAM\|PWC\|\SPCA5XX\)/d' ./drivers/usb/media/Makefile #EMI26 uses emi26_fw.h #EMI62 uses emi62_fw_m.h and emi62_fw_s.h rm ./drivers/usb/misc/emi26_fw.h rm ./drivers/usb/misc/emi62_fw_m.h rm ./drivers/usb/misc/emi62_fw_s.h clean_kconfig ./drivers/usb/misc/Kconfig 'USB_EMI(26|62)' sed -i '/CONFIG_USB_EMI\(26\|62\)/d' ./drivers/usb/misc/Makefile rm ./drivers/usb/misc/sisusbvga/sisusb_init.h echo > ./drivers/usb/misc/sisusbvga/Kconfig echo > ./drivers/usb/misc/sisusbvga/Makefile sed -i '/CONFIG_USB_SISUSBVGA/d' ./drivers/usb/misc/Makefile #KAWETH uses kawethfw.h rm ./drivers/usb/net/atmel/fw-505rfmd2958-1.101.0-86.h rm ./drivers/usb/net/atmel/fw-i3861.h rm ./drivers/usb/net/atmel/fw-i3863.h rm ./drivers/usb/net/atmel/fw-pkg-505-rfmd2958-1.101.0-86.h rm ./drivers/usb/net/atmel/fw-pkg-505a-rfmd2958-1.102.0-113.h rm ./drivers/usb/net/atmel/fw-pkg-i3861.h rm ./drivers/usb/net/atmel/fw-pkg-i3863.h rm ./drivers/usb/net/atmel/fw-pkg-r505.h rm ./drivers/usb/net/atmel/fw-pkg-rfmd-0.90.2-140.h rm ./drivers/usb/net/atmel/fw-pkg-rfmd-1.101.0-84.h rm ./drivers/usb/net/atmel/fw-pkg-rfmd-acc-1.101.0-84.h rm ./drivers/usb/net/atmel/fw-r505.h rm ./drivers/usb/net/atmel/fw-rfmd-0.100.4-16.h rm ./drivers/usb/net/atmel/fw-rfmd-0.90.2-140.h rm ./drivers/usb/net/atmel/fw-rfmd-1.101.0-84.h rm ./drivers/usb/net/atmel/fw-rfmd-acc-1.101.0-84.h rm ./drivers/usb/net/eagle/eu_firmware.h rm ./drivers/usb/net/kawethfw.h rm ./drivers/usb/net/zd1211/WS11UPh.h rm ./drivers/usb/net/zd1211/WS11UPhR.h rm ./drivers/usb/net/zd1211/WS11UPhm.h rm ./drivers/usb/net/zd1211/WS11Ub.h rm ./drivers/usb/net/zd1211/WS11Ur.h clean_kconfig ./drivers/usb/net/Kconfig 'USB_(ATMEL|EAGLE|KAWETH|ZD1211)' sed -i '/CONFIG_USB_\(ATMEL\|EAGLE\|KAWETH\|ZD1211\)/d' ./drivers/usb/net/Makefile #EDGEPORT uses io_fw_boot.h, io_fw_boot2.h, io_fw_down.h and io_fw_down2.h #EDGEPORT_TI uses io_fw_down3.h #TI uses ti_fw_3410.h, ti_fw_5052.h #WHITEHEAT uses whiteheat_fw.h #XIRCOM uses xircom_pgs_fw.h #KEYSPAN/KEYSPAN_PDA uses the rest *and* xircom_pgs_fw.h rm ./drivers/usb/serial/io_fw_boot.h rm ./drivers/usb/serial/io_fw_boot2.h rm ./drivers/usb/serial/io_fw_down.h rm ./drivers/usb/serial/io_fw_down2.h rm ./drivers/usb/serial/io_fw_down3.h rm ./drivers/usb/serial/keyspan_mpr_fw.h rm ./drivers/usb/serial/keyspan_pda_fw.h rm ./drivers/usb/serial/keyspan_usa18x_fw.h rm ./drivers/usb/serial/keyspan_usa19_fw.h rm ./drivers/usb/serial/keyspan_usa19qi_fw.h rm ./drivers/usb/serial/keyspan_usa19qw_fw.h rm ./drivers/usb/serial/keyspan_usa19w_fw.h rm ./drivers/usb/serial/keyspan_usa28_fw.h rm ./drivers/usb/serial/keyspan_usa28x_fw.h rm ./drivers/usb/serial/keyspan_usa28xa_fw.h rm ./drivers/usb/serial/keyspan_usa28xb_fw.h rm ./drivers/usb/serial/keyspan_usa49w_fw.h rm ./drivers/usb/serial/keyspan_usa49wlc_fw.h rm ./drivers/usb/serial/ti_fw_3410.h rm ./drivers/usb/serial/ti_fw_5052.h rm ./drivers/usb/serial/whiteheat_fw.h rm ./drivers/usb/serial/xircom_pgs_fw.h clean_kconfig ./drivers/usb/serial/Kconfig 'USB_SERIAL_(EDGEPORT(_TI)?|KEYSPAN.*|TI||WHITEHEAT|XIRCOM)' sed -i '/CONFIG_USB_SERIAL_\(EDGEPORT\(_TI\)\?\|KEYSPAN\|TI\|WHITEHEAT\|XIRCOM\)/d' ./drivers/usb/serial/Makefile #chipsfb.c is unused rm ./drivers/video/asiliantfb.c rm ./drivers/video/chipsfb.c clean_kconfig ./drivers/video/Kconfig 'FB_ASILIANT' sed -i '/CONFIG_FB_ASILIANT/d' ./drivers/video/Makefile rm ./sound/pci/cs46xx/cs46xx_image.h rm ./sound/pci/korg1212/korg1212-firmware.h rm ./sound/pci/maestro3.c rm ./sound/pci/ymfpci/ymfpci_image.h clean_kconfig ./sound/pci/Kconfig 'SND_(KORG1212|MAESTRO3|YMFPCI|CS46XX.*)' echo > ./sound/pci/cs46xx/Makefile echo > ./sound/pci/korg1212/Makefile echo > ./sound/pci/ymfpci/Makefile sed -i '/cs46xx\//d' ./sound/pci/Makefile sed -i '/korg1212\//d' ./sound/pci/Makefile sed -i '/ymfpci\//d' ./sound/pci/Makefile sed -i '/SND_MAESTRO3/d' ./sound/pci/Makefile #FUSION uses cs461x_image.h rm ./sound/oss/cs461x_image.h rm ./sound/oss/maestro3.h rm ./sound/oss/ymfpci_image.h clean_kconfig ./sound/oss/Kconfig 'SOUND_(FUSION|MAESTRO3|YMFPCI)' sed -i '/SOUND_FUSION/d' ./sound/pci/Makefile sed -i '/SOUND_MAESTRO3/d' ./sound/pci/Makefile sed -i '/ymfpci.o/d' ./sound/pci/Makefile #End general firmware removal cd .. tar -czf linux-source-*.orig.tar.gz `find -maxdepth 1 -mindepth 1 -type d` zcat linux-source-*.diff.gz | patch -p0 rename 's/(linux-source-)/$1nofirmware-/' * cd linux-source-* chmod 755 debian/rules debian/post-install #Changes so it'll compile without some modules for i in debian/d-i/shared/modules/*; do sed -i 's/^\([-a-zA-Z0-9_]*\)$/\1 ?/' $i done #Changes so it'll compile without firmware sed -i '/prev_revision :=/s/\$(prev_revisions)/$(lastword $(prev_revisions))/; #Need to go to previous revision for ABI stuff /ln -s.*firmware/d; /cp -rp debian\/d-i\/shared\/firmware\//d; #kernel-wedge check-dups requires this to exist s#^\(.*for i in \$\$imagelist; do.*\)$#\1\n\t mkdir -p debian/nic-firmware-$$i-di/lib/; \\#; #Dont do the the check - we want nic-firware to be empty s#kernel-wedge install-files && \\#kernel-wedge install-files# /kernel-wedge check/d ' debian/rules sed -i '/for i in "\$DEBIAN_SRCTOP"\/debian\/firmware\/\*\/\[\[:lower:\]\]\*; do/,/done/d; ' debian/post-install dch -D $RELEASE -v $(sed -n '1s#^.*(\(.*\)).*#\1'${DISTRONAME_L}${KERNEL_VERSION}'#p' debian/changelog) 'Removed firmware' dpkg-buildpackage -rfakeroot -us -uc