#!/bin/sh
-# Copyright (C) 2008, 2009, 2010 Alexandre Oliva <lxoliva@fsfla.org>
+# Copyright (C) 2008-2013 Alexandre Oliva <lxoliva@fsfla.org>
# Copyright (C) 2008 Jeff Moe
# Copyright (C) 2009 Rubén Rodríguez <ruben@gnu.org>
#
+# This program is part of GNU Linux-libre, a GNU project that
+# publishes scripts to clean up Linux so as to make it suitable for
+# use in the GNU Project and in Free System Distributions.
+#
# 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
# See also:
# http://wiki.debian.org/KernelFirmwareLicensing
# svn://svn.debian.org/kernel/dists/trunk/linux-2.6/debian/patches/debian/dfsg/files-1
-# http://svn.gnewsense.svnhopper.net/gnewsense/builder/trunk/firmware/firmware-removed
-# http://svn.gnewsense.svnhopper.net/gnewsense/builder/trunk/gen-kernel
+# http://wiki.gnewsense.org/Builder gen-kernel
# Thanks to Brian Brazil @ gnewsense
# For each kver release, start extra with an empty string, then count
# from 1 if changes are needed that require rebuilding the tarball.
-kver=2.6.30 extra=2
+kver=2.6.30 extra=1
case $1 in
--force)
have_check=false
else
have_check=:
+ [ -x $check ] || check="/bin/sh $check"
fi
filetest () {
name=$1
set fnord "$@" -d
shift 2
- $check "$@" -i linux-$kver $name > $name.deblob
+ if $check "$@" -i linux-$kver $name > $name.deblob; then
+ if [ ! -s $name.deblob ]; then
+ die got an empty file after removing blobs from $name
+ fi
+ else
+ die failed removing blobs from $name
+ fi
check_changed $name && echo $name: removed blobs
else
clean_file $1
}
reject_firmware () {
- #$1 = file
+ #$1 = file $2 = pre sed pattern
filetest $1 || return
- clean_sed '
+ clean_sed "$2"'
s,request\(_ihex\)\?_firmware\(_nowait\)\?,reject_firmware\2,g
' "$1" 'disabled non-Free firmware-loading machinery'
}
maybe_reject_firmware () {
- #$1 = file
+ #$1 = file $2 = pre sed pattern
filetest $1 || return
- clean_sed '
+ clean_sed "$2"'
s,request_firmware\(_nowait\)\?,maybe_reject_firmware\1,g
' "$1" 'retain Free firmware-loading machinery, disabling non-Free one'
}
drivers/net/wan/wanxlfw.S \
drivers/net/wireless/atmel.c \
drivers/net/wireless/atmel.c \
- drivers/scsi/53c700_d.h_shipped \
- drivers/scsi/53c700.scr \
drivers/scsi/aic7xxx/aic79xx_seq.h_shipped \
drivers/scsi/aic7xxx/aic79xx.seq \
drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped \
drivers/scsi/aic7xxx/aic7xxx.seq \
drivers/scsi/aic7xxx_old/aic7xxx_seq.c \
drivers/scsi/aic7xxx_old/aic7xxx.seq \
- drivers/scsi/53c7xx_d.h_shipped \
- drivers/scsi/53c7xx.scr \
+ drivers/scsi/53c700_d.h_shipped \
+ drivers/scsi/53c700.scr \
drivers/scsi/sym53c8xx_2/sym_fw1.h \
drivers/scsi/sym53c8xx_2/sym_fw1.h \
drivers/scsi/sym53c8xx_2/sym_fw2.h \
sound/pci/cs46xx/imgs/cwcdma.h \
sound/pci/cs46xx/imgs/cwcdma.asp \
; do
- if test ! $f; then
- die $f is not present, something is amiss && return
- fi
+ filetest $f
done
# Identify the tarball.
-grep -q 'EXTRAVERSION.*-libre' Makefile ||
-clean_sed "s,^EXTRAVERSION.*,&-libre$extra,
-" Makefile 'added -libre to EXTRAVERSION'
+grep -q 'EXTRAVERSION.*-gnu' Makefile ||
+clean_sed "s,^EXTRAVERSION.*,&-gnu$extra,
+" Makefile 'added -gnu to EXTRAVERSION'
+
+grep -q Linux-libre README ||
+clean_sed '
+1,3 s,Linux kernel release.*kernel\.org.*,GNU Linux-libre <http://linux-libre.fsfla.org>,
+2,5 s,Linux version [0-9.]*,GNU Linux-libre,
+1,20 s,\(operating system \)\?Unix,Unix kernel,
+/WHAT IS LINUX/i\
+WHAT IS GNU Linux-libre?\
+\
+ GNU Linux-libre is a Free version of the kernel Linux (see below),\
+ suitable for use with the GNU Operating System in 100% Free\
+ GNU/Linux-libre System Distributions.\
+ http://www.gnu.org/distros/\
+\
+ It removes non-Free components from Linux, that are disguised as\
+ source code or distributed in separate files. It also disables\
+ run-time requests for non-Free components, shipped separately or as\
+ part of Linux, and documentation pointing to them, so as to avoid\
+ (Free-)baiting users into the trap of non-Free Software.\
+ http://www.fsfla.org/anuncio/2010-11-Linux-2.6.36-libre-debait\
+\
+ Linux-libre started within the gNewSense GNU/Linux distribution.\
+ It was later adopted by Jeff Moe, who coined its name, and in 2008\
+ it became a project maintained by FSF Latin America. In 2012, it\
+ became part of the GNU Project.\
+\
+ The GNU Linux-libre project takes a minimal-changes approach to\
+ cleaning up Linux, making no effort to substitute components that\
+ need to be removed with functionally equivalent Free ones.\
+ Nevertheless, we encourage and support efforts towards doing so.\
+ http://libreplanet.org/wiki/LinuxLibre:Devices_that_require_non-free_firmware\
+\
+ Our mascot is Freedo, a light-blue penguin that has just come out\
+ of the shower. Although we like penguins, GNU is a much greater\
+ contribution to the entire system, so its mascot deserves more\
+ promotion. See our web page for their images.\
+ http://linux-libre.fsfla.org/\
+
+' README 'added blurb about GNU Linux-libre'
# Add reject_firmware and maybe_reject_firmware
grep -q _LINUX_LIBRE_FIRMWARE_H include/linux/firmware.h ||
clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB'
clean_mk CONFIG_DVB_USB drivers/media/dvb/dvb-usb/Makefile
-announce DVB_USB_AF9005 - "Afatech AF9005 DVB-T USB1.1"
-clean_file drivers/media/dvb/dvb-usb/af9005-script.h
-clean_sed '
-s,^ deb_info("load init script\\n");$, {\n err("Missing Free init script\\n");\n return scriptlen = ret = -EINVAL;\n ,;
-' drivers/media/dvb/dvb-usb/af9005-fe.c 'report missing Free init script'
-clean_blob drivers/media/dvb/dvb-usb/af9005-fe.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_AF9005'
-clean_mk CONFIG_DVB_USB_AF9005 drivers/media/dvb/dvb-usb/Makefile
-
announce DVB_B2C2_FLEXCOP - "Technisat/B2C2 FlexCopII(b) and FlexCopIII adapters"
reject_firmware drivers/media/dvb/b2c2/flexcop-fe-tuner.c
clean_mk CONFIG_DVB_USB_A800 drivers/media/dvb/dvb-usb/Makefile
announce DVB_USB_AF9005 - "Afatech AF9005 DVB-T USB1.1 support"
+clean_file drivers/media/dvb/dvb-usb/af9005-script.h
+clean_sed '
+s,^ deb_info("load init script\\n");$, {\n err("Missing Free init script\\n");\n return scriptlen = ret = -EINVAL;\n ,;
+' drivers/media/dvb/dvb-usb/af9005-fe.c 'report missing Free init script'
+clean_blob drivers/media/dvb/dvb-usb/af9005-fe.c
clean_blob drivers/media/dvb/dvb-usb/af9005.c
clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_AF9005'
clean_mk CONFIG_DVB_USB_AF9005 drivers/media/dvb/dvb-usb/Makefile
announce DVB_TTUSB_DEC - "Technotrend/Hauppauge USB DEC devices"
reject_firmware drivers/media/dvb/ttusb-dec/ttusb_dec.c
clean_blob drivers/media/dvb/ttusb-dec/ttusb_dec.c
+clean_blob Documentation/dvb/ttusb-dec.txt
clean_kconfig drivers/media/dvb/ttusb-dec/Kconfig 'DVB_TTUSB_DEC'
clean_mk CONFIG_DVB_TTUSB_DEC drivers/media/dvb/ttusb-dec/Makefile
announce VIDEO_BT848 - "BT848 Video For Linux"
reject_firmware drivers/media/video/bt8xx/bttv-cards.c
+clean_blob drivers/media/video/bt8xx/bttv-cards.c
+clean_blob Documentation/video4linux/bttv/README
clean_kconfig drivers/media/video/bt8xx/Kconfig 'VIDEO_BT848'
clean_mk CONFIG_VIDEO_BT848 drivers/media/video/bt8xx/Makefile
clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_SMC91C92'
clean_mk CONFIG_PCMCIA_SMC91C92 drivers/net/pcmcia/Makefile
-announce PCCARD - "PCCard (PCMCIA/CardBus) support"
-reject_firmware drivers/pcmcia/ds.c
-clean_kconfig drivers/pcmcia/Kconfig 'PCCARD'
-clean_mk CONFIG_PCCARD drivers/pcmcia/Makefile
+# CIS files are not software.
+# announce PCCARD - "PCCard (PCMCIA/CardBus) support"
+# reject_firmware drivers/pcmcia/ds.c
+# clean_kconfig drivers/pcmcia/Kconfig 'PCCARD'
+# clean_mk CONFIG_PCCARD drivers/pcmcia/Makefile
-announce PCMCIA_3C574 - "3Com 3c574 PCMCIA support"
-clean_blob drivers/net/pcmcia/3c574_cs.c
-clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_3C574'
-clean_mk CONFIG_PCMCIA_3C574 drivers/net/pcmcia/Makefile
+# announce PCMCIA_3C574 - "3Com 3c574 PCMCIA support"
+# clean_blob drivers/net/pcmcia/3c574_cs.c
+# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_3C574'
+# clean_mk CONFIG_PCMCIA_3C574 drivers/net/pcmcia/Makefile
-announce PCMCIA_3C589 - "3Com 3c589 PCMCIA support"
-clean_blob drivers/net/pcmcia/3c589_cs.c
-clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_3C589'
-clean_mk CONFIG_PCMCIA_3C589 drivers/net/pcmcia/Makefile
+# announce PCMCIA_3C589 - "3Com 3c589 PCMCIA support"
+# clean_blob drivers/net/pcmcia/3c589_cs.c
+# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_3C589'
+# clean_mk CONFIG_PCMCIA_3C589 drivers/net/pcmcia/Makefile
announce PCMCIA_PCNET - "NE2000 compatible PCMCIA support"
+# These are not software; they're Free, but GPLed without in-tree sources.
drop_fw_file firmware/cis/LA-PCM.cis.ihex firmware/cis/LA-PCM.cis
-clean_blob drivers/net/pcmcia/pcnet_cs.c
-clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_PCNET'
-clean_mk CONFIG_PCMCIA_PCNET drivers/net/pcmcia/Makefile
+# clean_blob drivers/net/pcmcia/pcnet_cs.c
+# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_PCNET'
+# clean_mk CONFIG_PCMCIA_PCNET drivers/net/pcmcia/Makefile
# tokenring
announce 3C359 - "3Com 3C359 Token Link Velocity XL adapter"
drop_fw_file firmware/3com/3C359.bin.ihex firmware/3com/3C359.bin
+reject_firmware drivers/net/tokenring/3c359.c
clean_blob drivers/net/tokenring/3c359.c
clean_kconfig drivers/net/tokenring/Kconfig '3C359'
clean_mk CONFIG_3C359 drivers/net/tokenring/Makefile
clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_THINFIRM_USB'
clean_mk CONFIG_LIBERTAS_THINFIRM_USB drivers/net/wireless/libertas_tf/Makefile
-announce MWL8K - 'Marvell 88W8xxx PCI/PCIe Wireless support'
+announce MWL8K - "Marvell 88W8xxx PCI/PCIe Wireless support"
reject_firmware drivers/net/wireless/mwl8k.c
clean_blob drivers/net/wireless/mwl8k.c
clean_kconfig drivers/net/wireless/Kconfig 'MWL8K'
clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_USB'
clean_mk CONFIG_P54_USB drivers/net/wireless/p54/Makefile
-announce PRISM54 - 'Intersil Prism GT/Duette/Indigo PCI/Cardbus'
+announce PRISM54 - "Intersil Prism GT/Duette/Indigo PCI/Cardbus"
reject_firmware drivers/net/wireless/prism54/islpci_dev.c
clean_blob drivers/net/wireless/prism54/islpci_dev.c
clean_sed '
clean_blob drivers/net/wimax/i2400m/sdio.c
clean_blob drivers/net/wimax/i2400m/usb.c
clean_blob Documentation/wimax/README.i2400m
-clean_kconfig drivers/net/wimax/i2400m/Kconfig CONFIG_WIMAX_I2400M
+clean_kconfig drivers/net/wimax/i2400m/Kconfig 'WIMAX_I2400M'
clean_mk CONFIG_WIMAX_I2400M drivers/net/wimax/i2400m/Makefile
########
# Serial #
##########
-announce SERIAL_8250_CS - "8250/16550 PCMCIA device support"
-clean_blob drivers/serial/serial_cs.c
-clean_kconfig drivers/serial/Kconfig 'SERIAL_8250_CS'
-clean_mk CONFIG_SERIAL_8250_CS drivers/serial/Makefile
+# CIS files are not software.
+# announce SERIAL_8250_CS - "8250/16550 PCMCIA device support"
+# clean_blob drivers/serial/serial_cs.c
+# clean_kconfig drivers/serial/Kconfig 'SERIAL_8250_CS'
+# clean_mk CONFIG_SERIAL_8250_CS drivers/serial/Makefile
announce SERIAL_ICOM - "IBM Multiport Serial Adapter"
reject_firmware drivers/serial/icom.c
announce Documentation - "non-Free firmware scripts and documentation"
clean_blob Documentation/dvb/avermedia.txt
clean_blob Documentation/dvb/opera-firmware.txt
-clean_blob Documentation/dvb/ttusb-dec.txt
clean_blob Documentation/sound/alsa/ALSA-Configuration.txt
clean_blob Documentation/sound/oss/MultiSound
clean_blob Documentation/sound/oss/PSS