X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=deblob-2.6.28;h=3ee5135bf0ab849366848a82e60bb9b2e5b0af80;hb=536972110257d65fd73347cee40597b832be1c81;hp=40c6c40ce4dcdf9675e1ea86bd105b4150d93dfe;hpb=254f4043f72592def51de7f8e15f1c0251eb5bfd;p=releases.git diff --git a/deblob-2.6.28 b/deblob-2.6.28 index 40c6c40ce4dc..3ee5135bf0ab 100755 --- a/deblob-2.6.28 +++ b/deblob-2.6.28 @@ -1,7 +1,8 @@ #!/bin/sh -# Copyright (C) 2008, 2009 Alexandre Oliva +# Copyright (C) 2008, 2009, 2010 Alexandre Oliva # Copyright (C) 2008 Jeff Moe +# Copyright (C) 2009 Rubén Rodríguez # # 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 @@ -36,27 +37,36 @@ # 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.28 extra=++ - -fatal () { - echo "$@" - exit 1 -} +kver=2.6.28 extra=5++ case $1 in ---force) die () { echo ERROR: "$@": ignored >&2; }; forced=:; shift;; -*) die () { fatal "$@"; }; forced=false;; +--force) + echo "WARNING: Using the force, ignored errors will be" >&2 + die () { + echo ERROR: "$@" >&2 + errors=: + } + forced=: errors=false + shift + ;; +*) + die () { + echo ERROR: "$@" >&2 + echo Use --force to ignore + exit 1 + } + forced=false errors=false + ;; esac -check=`echo $0 | sed 's,/[^/]*$,,'`/deblob-check +check=`echo "$0" | sed 's,[^/]*$,,;s,^$,.,;s,/*$,,'`/deblob-check if [ ! -f $check ] ; then if $forced; then die deblob-check script missing, will remove entire files @@ -68,136 +78,156 @@ else have_check=: fi +filetest () { + if [ ! -f $1 ]; then + die $1 does not exist, something is wrong && return 1 + fi +} + announce () { - echo - echo "$@" + echo + echo "$@" } clean_file () { - #$1 = filename - if test ! -f $1; then - die $1 does not exist, something is wrong - fi - rm $1 - echo $1: removed + #$1 = filename + filetest $1 || return + rm $1 + echo $1: removed } check_changed () { - if test ! -f $1; then - die $1 does not exist, something is wrong - elif cmp $1.deblob $1 > /dev/null; then - die $1 did not change, something is wrong - fi - mv $1.deblob $1 + #$1 = filename + if cmp $1.deblob $1 > /dev/null; then + rm $1.deblob + die $1 did not change, something is wrong && return 1 + fi + mv $1.deblob $1 } clean_blob () { - #$1 = filename - if $have_check; then - if test ! -f $1; then - die $1 does not exist, something is wrong - fi - name=$1 - set fnord "$@" -d - shift 2 - $check "$@" -i linux-$kver $name > $name.deblob - echo $name: removed blobs - check_changed $name - else - clean_file $1 - fi + #$1 = filename + filetest $1 || return + if $have_check; then + name=$1 + set fnord "$@" -d + shift 2 + $check "$@" -i linux-$kver $name > $name.deblob + check_changed $name && echo $name: removed blobs + else + clean_file $1 + fi } dummy_blob () { - #$1 = filename - if test -f $1; then - fatal $1 exists, something is wrong - elif test ! -f firmware/Makefile; then - fatal firmware/Makefile does not exist, something is wrong - fi - - clean_sed "s,`echo $1 | sed s,^firmware/,,`,\$(DEBLOBBED),g" \ - firmware/Makefile "dropped $1" + #$1 = filename + if test -f $1; then + die $1 exists, something is wrong && return + elif test ! -f firmware/Makefile; then + die firmware/Makefile does not exist, something is wrong && return + fi + + clean_sed "s,`echo $1 | sed s,^firmware/,,`,\$(DEBLOBBED),g" \ + firmware/Makefile "dropped $1" } clean_fw () { - #$1 = firmware text input, $2 = firmware output - if test ! -f $1; then - fatal $1 does not exist, something is wrong - elif test -f $2; then - fatal $2 exists, something is wrong - fi - clean_blob $1 -s 4 - dummy_blob $2 + #$1 = firmware text input, $2 = firmware output + filetest $1 || return + if test -f $2; then + die $2 exists, something is wrong && return + fi + clean_blob $1 -s 4 + dummy_blob $2 } drop_fw_file () { - #$1 = firmware text input, $2 = firmware output - if test ! -f $1; then - fatal $1 does not exist, something is wrong - elif test -f $2; then - fatal $2 exists, something is wrong - fi - clean_file $1 - dummy_blob $2 + #$1 = firmware text input, $2 = firmware output + filetest $1 || return + if test -f $2; then + die $2 exists, something is wrong && return + fi + clean_file $1 + dummy_blob $2 } clean_kconfig () { - #$1 = filename $2 = things to remove - case $1 in - -f) - shift - ;; - *) - if $have_check; then - return - fi - ;; - esac - sed "/^config \\($2\\)\$/{p;i\ + #$1 = filename $2 = things to remove + case $1 in + -f) + shift + ;; + *) + if $have_check; then + return + fi + ;; + esac + filetest $1 || return + sed "/^config \\($2\\)\$/{p;i\ depends on NONFREE d;}" $1 > $1.deblob - echo $1: marked config $2 as depending on NONFREE - check_changed $1 + check_changed $1 && echo $1: marked config $2 as depending on NONFREE } clean_mk () { - #$1 = config $2 = Makefile name - # We don't clean up Makefiles any more --lxoliva - # sed -i "/\\($1\\)/d" $2 - # echo $2: removed $1 support - # check_changed $2 - if sed -n "/\\($1\\)/p" $2 | grep . > /dev/null; then - : - else - die $2 does not contain matches for $1 - fi + #$1 = config $2 = Makefile name + # We don't clean up Makefiles any more --lxoliva + # sed -i "/\\($1\\)/d" $2 + # echo $2: removed $1 support + # check_changed $2 + filetest $2 || return + if sed -n "/\\($1\\)/p" $2 | grep . > /dev/null; then + : + else + die $2 does not contain matches for $1 + fi } clean_sed () { - #$1 = sed-script $2 = file $3 = comment - sed -e "$1" "$2" > "$2".deblob - echo $2: ${3-applied sed script $1} - check_changed "$2" + #$1 = sed-script $2 = file $3 = comment + filetest $2 || return + sed -e "$1" "$2" > "$2".deblob || { + die $2: failed: ${3-applied sed script $1} && return 1; } + check_changed $2 && echo $2: ${3-applied sed script $1} } reject_firmware () { - #$1 = file - clean_sed ' -s,request\(_ihex\|\)_firmware,reject_firmware, + #$1 = file $2 = pre sed pattern + filetest $1 || return + clean_sed "$2"' +s,request\(_ihex\)\?_firmware\(_nowait\)\?,reject_firmware\2,g ' "$1" 'disabled non-Free firmware-loading machinery' } +maybe_reject_firmware () { + #$1 = file $2 = pre sed pattern + filetest $1 || return + clean_sed "$2"' +s,request_firmware\(_nowait\)\?,maybe_reject_firmware\1,g +' "$1" 'retain Free firmware-loading machinery, disabling non-Free one' +} + +undefine_macro () { + #$1 - macro name + #$2 - substitution + #$3 - message + #rest - file names + macro=$1 repl=$2 msg=$3; shift 3 + for f in "$@"; do + clean_sed " +s,^#define $macro .*\$,/*(DEBLOBBED)*/,; +s,$macro,$repl,g; +" "$f" "$msg" + done +} + undefault_firmware () { #$1 - pattern such that $1_DEFAULT_FIRMWARE is #defined to non-Free firmware #$@ other than $1 - file names macro="$1"_DEFAULT_FIRMWARE; shift - for f in "$@"; do - clean_sed " - s,^#define $macro \"[^\"]*\",/*(DEBLOBBED)*/,; - s,$macro,\"/*(DEBLOBBED)*/\",g" \ - "$f" "disabled non-Free firmware" - done + undefine_macro "$macro" "\"/*(DEBLOBBED)*/\"" \ + "disabled non-Free firmware" "$@" } # First, check that files that contain firmwares and their @@ -238,21 +268,61 @@ for f in \ sound/pci/cs46xx/imgs/cwcdma.asp \ ; do if test ! $f; then - die $f is not present, something is amiss + die $f is not present, something is amiss && return fi done # Identify the tarball. -clean_sed " -s,^EXTRAVERSION.*,&-libre$extra, +grep -q 'EXTRAVERSION.*-libre' Makefile || +clean_sed "s,^EXTRAVERSION.*,&-libre$extra, " Makefile 'added -libre to EXTRAVERSION' -# Add reject_firmware and maybe_reject_firmware +grep -q Linux-libre README || clean_sed ' -$i\ +1,3 s,Linux kernel release.*kernel\.org.*,Linux-libre , +2,5 s,Linux version 2.6,Linux-libre, +1,20 s,\(operating system \)\?Unix,Unix kernel, +/WHAT IS LINUX/i\ +WHAT IS Linux-libre?\ +\ + 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.\ +\ + The 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 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 Linux-libre' + +# Add reject_firmware and maybe_reject_firmware +grep -q _LINUX_LIBRE_FIRMWARE_H include/linux/firmware.h || +clean_sed '$i\ #ifndef _LINUX_LIBRE_FIRMWARE_H\ #define _LINUX_LIBRE_FIRMWARE_H\ \ +#include \ +\ #define NONFREE_FIRMWARE "/*(DEBLOBBED)*/"\ \ static inline int\ @@ -263,12 +333,12 @@ report_missing_free_firmware(const char *name, const char *what)\ return -EINVAL;\ }\ static inline int\ -reject_firmware(const struct firmware **fw, +reject_firmware(const struct firmware **fw,\ const char *name, struct device *device)\ {\ - struct firmware *xfw = NULL;\ + const struct firmware *xfw = NULL;\ int retval;\ - report_missing_free_firmware(device->name, NULL);\ + report_missing_free_firmware(dev_name(device), NULL);\ retval = request_firmware(&xfw, NONFREE_FIRMWARE, device);\ if (!retval)\ release_firmware(xfw);\ @@ -296,7 +366,7 @@ reject_firmware_nowait(struct module *module, int uevent,\ void *context))\ {\ int retval;\ - report_missing_free_firmware(device->name, NULL);\ + report_missing_free_firmware(dev_name(device), NULL);\ retval = request_firmware_nowait(module, uevent, NONFREE_FIRMWARE,\ device, NULL,\ discard_rejected_firmware);\ @@ -350,6 +420,9 @@ announce ARCH_NETX - "Hilscher NetX based" clean_sed ' s,\([" ]\)request_firmware(,\1reject_firmware(, ' arch/arm/mach-netx/xc.c 'disabled non-Free firmware-loading machinery' +clean_blob arch/arm/mach-netx/xc.c +clean_kconfig arch/arm/Kconfig 'ARCH_NETX' +clean_mk CONFIG_ARCH_NETX arch/arm/Makefile ####### @@ -367,6 +440,8 @@ announce ATM_FORE200E - "FORE Systems 200E-series" reject_firmware drivers/atm/fore200e.c clean_blob drivers/atm/fore200e.c clean_blob Documentation/networking/fore200e.txt +clean_blob drivers/atm/.gitignore +clean_blob Documentation/dontdiff clean_kconfig drivers/atm/Kconfig 'ATM_FORE200E' clean_mk CONFIG_ATM_FORE200E drivers/atm/Makefile @@ -388,7 +463,7 @@ clean_blob drivers/char/cyclades.c clean_kconfig drivers/char/Kconfig 'CYCLADES' clean_mk CONFIG_CYCLADES drivers/char/Makefile -announce ISI - "Multi-Tech multiport card support (EXPERIMENTAL)" +announce ISI - "Multi-Tech multiport card support" reject_firmware drivers/char/isicom.c clean_blob drivers/char/isicom.c clean_kconfig drivers/char/Kconfig 'ISI' @@ -405,43 +480,37 @@ clean_mk CONFIG_MOXA_INTELLIO drivers/char/Makefile announce DRM_MGA - "Matrox g200/g400" clean_blob drivers/gpu/drm/mga/mga_ucode.h clean_blob drivers/gpu/drm/mga/mga_warp.c -clean_kconfig drivers/gpu/drm/Kconfig 'DRM_MGA' +clean_kconfig -f drivers/gpu/drm/Kconfig 'DRM_MGA' clean_mk CONFIG_DRM_MGA drivers/gpu/drm/Makefile announce DRM_R128 - "ATI Rage 128" clean_sed ' -/^static int r128_do_init_cce([^;]*$/,/^}$/{ - /^ r128_cce_load_microcode(dev_priv);$/{ - i\ - DRM_ERROR("Missing Free microcode!\\n");\ - dev->dev_private = (void *)dev_priv;\ - r128_do_cleanup_cce(dev);\ - return -EINVAL; - } -}' drivers/gpu/drm/r128/r128_cce.c 'report missing Free microcode' +/^static void r128_cce_load_microcode(drm_r128_private_t \* dev_priv)/i\ +#define r128_cce_load_microcode(dev_priv) \\\ + do { \\\ + DRM_ERROR("Missing Free microcode!\\n"); \\\ + dev->dev_private = (void *)dev_priv; \\\ + r128_do_cleanup_cce(dev); \\\ + return -EINVAL; \\\ + } while (0) +' drivers/gpu/drm/r128/r128_cce.c 'report missing Free microcode' clean_blob drivers/gpu/drm/r128/r128_cce.c -clean_kconfig drivers/gpu/drm/Kconfig 'DRM_R128' +clean_kconfig -f drivers/gpu/drm/Kconfig 'DRM_R128' clean_mk CONFIG_DRM_R128 drivers/gpu/drm/Makefile announce DRM_RADEON - "ATI Radeon" clean_sed ' -/^static int radeon_do_init_cce([^;]*$/,/^}$/{ - /^ radeon_cp_load_microcode(dev_priv);$/{ - i\ - DRM_ERROR("Missing Free microcode!\\n");\ - radeon_do_cleanup_cp(dev);\ - return -EINVAL; - } -} -/^static int radeon_do_resume_cp([^;]*$/,/^}$/{ - /^ radeon_cp_load_microcode(dev_priv);$/{ - i\ - DRM_ERROR("Missing Free microcode!\\n");\ - return -EINVAL; - } -}' drivers/gpu/drm/radeon/radeon_cp.c 'report missing Free microcode' +/^static void radeon_cp_load_microcode(drm_radeon_private_t \* dev_priv)/i\ +#define radeon_cp_load_microcode(dev_priv) \\\ + do { \\\ + DRM_ERROR("Missing Free microcode!\\n"); \\\ + radeon_do_cleanup_cp(dev); \\\ + return -EINVAL; \\\ + } while (0) +' drivers/gpu/drm/radeon/radeon_cp.c 'report missing Free microcode' +clean_blob drivers/gpu/drm/radeon/radeon_cp.c clean_blob drivers/gpu/drm/radeon/radeon_microcode.h -clean_kconfig drivers/gpu/drm/Kconfig 'DRM_RADEON' +clean_kconfig -f drivers/gpu/drm/Kconfig 'DRM_RADEON' clean_mk CONFIG_DRM_RADEON drivers/gpu/drm/Makefile @@ -449,12 +518,6 @@ clean_mk CONFIG_DRM_RADEON drivers/gpu/drm/Makefile # Media # ######### -announce DVB - "non-Free firmware scripts and documentation" -clean_blob Documentation/dvb/get_dvb_firmware -clean_blob Documentation/dvb/avermedia.txt -clean_blob Documentation/dvb/opera-firmware.txt -clean_blob Documentation/dvb/ttusb-dec.txt - # media/tuner announce MEDIA_TUNER_XC2028 - "XCeive xc2028/xc3028 tuners" @@ -469,21 +532,20 @@ undefault_firmware 'XC\(2028\|3028L\)' \ drivers/media/video/em28xx/em28xx-cards.c \ drivers/media/dvb/dvb-usb/dib0700_devices.c \ drivers/media/dvb/dvb-usb/cxusb.c -clean_blob drivers/media/common/tuners/tuner-xc2028.h reject_firmware drivers/media/common/tuners/tuner-xc2028.c clean_kconfig drivers/media/common/tuners/Kconfig 'MEDIA_TUNER_XC2028' clean_mk CONFIG_MEDIA_TUNER_XC2028 drivers/media/common/tuners/Makefile announce MEDIA_TUNER_XC5000 - "Xceive XC5000 silicon tuner" +undefine_macro 'XC5000_DEFAULT_FIRMWARE_SIZE' 0 \ + 'removed non-Free firmware size' drivers/media/common/tuners/xc5000.c undefault_firmware 'XC5000' drivers/media/common/tuners/xc5000.c reject_firmware drivers/media/common/tuners/xc5000.c -clean_blob drivers/media/common/tuners/xc5000.c clean_kconfig drivers/media/common/tuners/Kconfig 'MEDIA_TUNER_XC5000' clean_mk CONFIG_MEDIA_TUNER_XC5000 drivers/media/common/tuners/Makefile announce DVB_USB - "Support for various USB DVB devices" reject_firmware drivers/media/dvb/dvb-usb/dvb-usb-firmware.c -clean_blob drivers/media/dvb/dvb-usb/dvb-usb-firmware.c clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB' clean_mk CONFIG_DVB_USB drivers/media/dvb/dvb-usb/Makefile @@ -522,17 +584,17 @@ clean_blob drivers/media/dvb/dvb-usb/cxusb.c clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_CXUSB' clean_mk CONFIG_DVB_USB_CXUSB drivers/media/dvb/dvb-usb/Makefile -announce DVB_USB_DIB0700 - "DiBcom DiB0700 USB DVB devices (see help for supported devices)" +announce DVB_USB_DIB0700 - "DiBcom DiB0700 USB DVB devices" clean_blob drivers/media/dvb/dvb-usb/dib0700_devices.c clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_DIB0700' clean_mk CONFIG_DVB_USB_DIB0700 drivers/media/dvb/dvb-usb/Makefile -announce DVB_USB_DIBUSB_MB - "DiBcom USB DVB-T devices (based on the DiB3000M-B) (see help for device list)" +announce DVB_USB_DIBUSB_MB - "DiBcom USB DVB-T devices (based on the DiB3000M-B)" clean_blob drivers/media/dvb/dvb-usb/dibusb-mb.c clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_DIBUSB_MB' clean_mk CONFIG_DVB_USB_DIBUSB_MB drivers/media/dvb/dvb-usb/Makefile -announce DVB_USB_DIBUSB_MC - "DiBcom USB DVB-T devices (based on the DiB3000M-C/P) (see help for device list)" +announce DVB_USB_DIBUSB_MC - "DiBcom USB DVB-T devices (based on the DiB3000M-C/P)" clean_blob drivers/media/dvb/dvb-usb/dibusb-mc.c clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_DIBUSB_MC' clean_mk CONFIG_DVB_USB_DIBUSB_MC drivers/media/dvb/dvb-usb/Makefile @@ -560,6 +622,7 @@ clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_GP8PSK' clean_mk CONFIG_DVB_USB_GP8PSK drivers/media/dvb/dvb-usb/Makefile announce DVB_USB_M920X - "Uli m920x DVB-T USB2.0 support" +reject_firmware drivers/media/dvb/dvb-usb/m920x.c clean_blob drivers/media/dvb/dvb-usb/m920x.c clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_M920X' clean_mk CONFIG_DVB_USB_M920X drivers/media/dvb/dvb-usb/Makefile @@ -598,16 +661,21 @@ clean_mk CONFIG_DVB_USB_VP7045 drivers/media/dvb/dvb-usb/Makefile # dvb/frontends announce DVB_AF9013 - "Afatech AF9013 demodulator" -undefault_firmware 'AF9013' drivers/media/dvb/frontends/af9013.c +undefault_firmware 'AF9013' \ + drivers/media/dvb/frontends/af9013.c \ + drivers/media/dvb/frontends/af9013_priv.h reject_firmware drivers/media/dvb/frontends/af9013.c -clean_blob drivers/media/dvb/frontends/af9013_priv.h clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_AF9013' clean_mk CONFIG_DVB_AF9013 drivers/media/dvb/frontends/Makefile announce DVB_BCM3510 - "Broadcom BCM3510" -undefault_firmware 'BCM3510' drivers/media/dvb/frontends/bcm3510.[ch] +undefault_firmware 'BCM3510' drivers/media/dvb/frontends/bcm3510.c reject_firmware drivers/media/dvb/frontends/bcm3510.c reject_firmware drivers/media/dvb/frontends/bcm3510.h +clean_sed ' +/You.ll need a firmware/,/dvb-fe-bcm/d; +' drivers/media/dvb/frontends/bcm3510.c \ + "removed non-Free firmware notes" clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_BCM3510' clean_mk CONFIG_DVB_BCM3510 drivers/media/dvb/frontends/Makefile @@ -619,13 +687,13 @@ clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_NXT200X' clean_mk CONFIG_DVB_NXT200X drivers/media/dvb/frontends/Makefile announce DVB_OR51132 - "Oren OR51132 based" -undefault_firmware 'OR51211' drivers/media/dvb/frontends/or51132.c reject_firmware drivers/media/dvb/frontends/or51132.c clean_blob drivers/media/dvb/frontends/or51132.c clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_OR51132' clean_mk CONFIG_DVB_OR51132 drivers/media/dvb/frontends/Makefile announce DVB_OR51211 - "Oren OR51211 based" +undefault_firmware 'OR51211' drivers/media/dvb/frontends/or51211.c reject_firmware drivers/media/dvb/frontends/or51211.c reject_firmware drivers/media/dvb/frontends/or51211.h clean_blob drivers/media/dvb/frontends/or51211.c @@ -640,6 +708,12 @@ clean_blob drivers/media/dvb/frontends/sp8870.c clean_kconfig drivers/media/dvb/frontends 'DVB_SP8870' clean_mk CONFIG_DVB_SP8870 drivers/media/dvb/frontends/Makefile +announce DVB_CX24116 - "Conexant CX24116 based" +undefault_firmware CX24116 drivers/media/dvb/frontends/cx24116.c +reject_firmware drivers/media/dvb/frontends/cx24116.c +clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_CX24116' +clean_mk CONFIG_DVB_CX24116 drivers/media/dvb/frontends/Makefile + announce DVB_SP887X - "Spase sp887x based" undefault_firmware 'SP887X' drivers/media/dvb/frontends/sp887x.c reject_firmware drivers/media/dvb/frontends/sp887x.c @@ -649,6 +723,8 @@ clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_SP887X' clean_mk CONFIG_DVB_SP887X drivers/media/dvb/frontends/Makefile announce DVB_TDA10048 - "Philips TDA10048HN based" +undefine_macro 'TDA10048_DEFAULT_FIRMWARE_SIZE' 0 \ + 'removed non-Free firmware size' drivers/media/dvb/frontends/tda10048.c undefault_firmware 'TDA10048' drivers/media/dvb/frontends/tda10048.c reject_firmware drivers/media/dvb/frontends/tda10048.c clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_TDA10048' @@ -675,13 +751,18 @@ s,mwdebi(.*bootcode.*$,/* & */, ' drivers/media/dvb/ttpci/av7110_hw.c 'adjust bootcode loader' clean_blob drivers/media/dvb/ttpci/av7110_hw.c reject_firmware drivers/media/dvb/ttpci/av7110.c -reject_firmware drivers/media/dvb/ttpci/av7110.c clean_blob drivers/media/dvb/ttpci/av7110.c +clean_sed ' +/^config DVB_AV7110_FIRMWARE_FILE$/, /^config / { + /^ default.*dvb-ttpci-01/ s,".*","/*(DEBLOBBED)*/",; +}' drivers/media/dvb/ttpci/Kconfig 'removed default firmware' +clean_kconfig -f drivers/media/dvb/ttpci/Kconfig 'DVB_AV7110_FIRMWARE' clean_kconfig drivers/media/dvb/ttpci/Kconfig 'DVB_AV7110' clean_mk CONFIG_DVB_AV7110 drivers/media/dvb/ttpci/Makefile announce DVB_BUDGET - "Budget cards" reject_firmware drivers/media/dvb/ttpci/budget.c +reject_firmware drivers/media/dvb/frontends/tdhd1.h announce DVB_BUDGET_AV - "Budget cards with analog video inputs" reject_firmware drivers/media/dvb/ttpci/budget-av.c @@ -703,13 +784,13 @@ reject_firmware drivers/media/dvb/siano/smscoreapi.c reject_firmware drivers/media/dvb/siano/smsusb.c clean_blob drivers/media/dvb/siano/smscoreapi.c clean_blob drivers/media/dvb/siano/smsusb.c +clean_blob drivers/media/dvb/siano/sms-cards.c clean_kconfig drivers/media/dvb/siano/Kconfig 'DVB_SIANO_SMS1XXX' clean_mk CONFIG_DVB_SIANO_SMS1XXX drivers/media/dvb/siano/Makefile announce DVB_TTUSB_BUDGET - "Technotrend/Hauppauge Nova-USB devices" drop_fw_file firmware/ttusb-budget/dspbootcode.bin.ihex firmware/ttusb-budget/dspbootcode.bin reject_firmware drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c -reject_firmware drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c clean_blob drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c clean_kconfig drivers/media/dvb/ttusb-budget/Kconfig 'DVB_TTUSB_BUDGET' clean_mk CONFIG_DVB_TTUSB_BUDGET drivers/media/dvb/ttusb-budget/Makefile @@ -724,7 +805,6 @@ 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_kconfig drivers/media/video/bt8xx/Kconfig 'VIDEO_BT848' clean_mk CONFIG_VIDEO_BT848 drivers/media/video/bt8xx/Makefile @@ -786,7 +866,6 @@ clean_mk CONFIG_VIDEO_GO7007 drivers/staging/go7007/Makefile announce VIDEO_SAA7134_DVB - "DVB/ATSC Support for saa7134 based TV cards" reject_firmware drivers/media/video/saa7134/saa7134-dvb.c -clean_blob drivers/media/video/saa7134/saa7134-dvb.c clean_kconfig drivers/media/video/saa7134/Kconfig 'VIDEO_SAA7134_DVB' clean_mk CONFIG_VIDEO_SAA7134_DVB drivers/media/video/saa7134/Makefile @@ -869,9 +948,10 @@ clean_sed ' /^#include "bnx2x_init\.h"/,/^$/{ /^$/i\ #define bnx2x_init_block(bp, start, end) \\\ - return printk(KERN_ERR PFX "%s: Missing Free firmware\\n", bp->dev->name),\ - -EINVAL; + return (printk(KERN_ERR PFX "%s: Missing Free firmware\\n", bp->dev->name),\\\ + -EINVAL) }' drivers/net/bnx2x_main.c 'report missing Free firmware' +clean_blob drivers/net/bnx2x_hsi.h clean_kconfig drivers/net/Kconfig 'BNX2X' clean_mk CONFIG_BNX2X drivers/net/Makefile @@ -883,13 +963,14 @@ clean_kconfig drivers/net/Kconfig 'CASSINI' clean_mk CONFIG_CASSINI drivers/net/Makefile announce CHELSIO_T3 - "Chelsio AEL 2005 support" +reject_firmware drivers/net/cxgb3/cxgb3_main.c clean_sed ' /^static int ael2005_setup_\(sr\|twinax\)_edc([^;]*$/,/^}$/{ /for.*ARRAY_SIZE(\(sr\|twinax\)_edc)/i\ -}\ CH_ERR(phy->adapter, "Missing Free firwmare\\n");\ err = -EINVAL; }' drivers/net/cxgb3/ael1002.c 'report missing Free firmware' +clean_blob drivers/net/cxgb3/cxgb3_main.c clean_blob drivers/net/cxgb3/ael1002.c clean_kconfig drivers/net/Kconfig 'CHELSIO_T3' clean_mk CONFIG_CHELSIO_T3 drivers/net/cxgb3/Makefile @@ -904,8 +985,7 @@ clean_sed ' /^ for ([^;]*ucode_opts[^{]*) {$/,/^ }$/ { /^ }$/ i\ }\ - DPRINTK(DRV, ERR, "Missing Free firmware\\n");\ - /* ??? We should error out somehow. */\ + DPRINTK(DRV, ERR, "Missing Free firmware, proceeding without\\n");\ goto noloaducode; } } @@ -938,18 +1018,46 @@ clean_blob drivers/staging/slicoss/oasisdownload.h clean_blob drivers/staging/slicoss/oasisdbgdownload.h clean_blob drivers/staging/slicoss/gbrcvucode.h clean_blob drivers/staging/slicoss/oasisrcvucode.h +clean_sed ' +s,^\([ ]*\)\(instruction[ ]=[ ][^;]*\(Oasis\|GB\|Mojave\)\(Rcv\)\?UCode[^:}]*;\),\1printk(KERN_ERR "slicoss: missing Free firmware\\n");\n\1return STATUS_NOT_SUPPORTED;\n\1\2,' drivers/staging/slicoss/slicoss.c 'report missing Free firmware' +clean_blob drivers/staging/slicoss/slicoss.c clean_kconfig drivers/staging/slicoss/Kconfig 'SLICOSS' clean_mk CONFIG_SLICOSS drivers/staging/slicoss/Makefile announce SPIDER_NET - "Spider Gigabit Ethernet driver" reject_firmware drivers/net/spider_net.c +clean_sed 's,spider_fw\.bin,DEBLOBBED.bin,g' \ + drivers/net/spider_net.c 'removed non-Free firmware notes' clean_blob drivers/net/spider_net.h clean_kconfig drivers/net/Kconfig 'SPIDER_NET' clean_mk CONFIG_SPIDER_NET drivers/net/Makefile announce SXG - "Alacritech SLIC Technology Non-Accelerated 10Gbe cards" -clean_blob drivers/staging/sxg/saharadbgdownload.h -clean_blob drivers/staging/sxg/sxgphycode.h +clean_file drivers/staging/sxg/saharadbgdownload.h +clean_file drivers/staging/sxg/sxgphycode.h +clean_sed ' +/^static bool sxg_download_microcode(/,/^}$/{ + /^{$/{ + p + i\ +#if 1\ + printk(KERN_ERR KBUILD_MODNAME ": missing Free firmware\\n");\ + return (FALSE);\ +#else + d + } + /^}/{ + i\ +#endif + } +} +/^static int sxg_phy_init(/,/^}$/{ + /for (p = PhyUcode/i\ + printk(KERN_ERR KBUILD_MODNAME ": missing Free firmware\\n");\ + return (STATUS_FAILURE);\ +#define PhyUcode NULL +}' drivers/staging/sxg/sxg.c 'report missing Free firmware' +clean_blob drivers/staging/sxg/sxg.c clean_kconfig drivers/staging/sxg/Kconfig 'SXG' clean_mk CONFIG_SXG drivers/staging/sxg/Makefile @@ -1037,7 +1145,6 @@ clean_mk CONFIG_USB_IRDA drivers/net/irda/Makefile # pcmcia announce PCMCIA_SMC91C92 - "SMC 91Cxx PCMCIA" -clean_blob drivers/net/pcmcia/ositech.h clean_sed ' /^\(static int \)\?osi_setup([^;]*$/,/^}$/{ s/^\(.*\)[/][*] Download.*firmware [*][/]/\1printk(KERN_ERR "%s: Missing Free firmware\\n", dev->name);\n\1rc = -EINVAL;\n\1goto free_cfg_mem;\n&/ @@ -1046,29 +1153,31 @@ clean_sed ' /^\(static int \)\?smc91c92_resume([^;]*$/,/^}$/{ s/^\(.*\)[/][*] Download.*firmware [*][/]/\1printk(KERN_ERR "%s: Missing Free firmware\\n", dev->name);\n\1return -EINVAL;\n&/ }' drivers/net/pcmcia/smc91c92_cs.c 'report another missing Free firmware' +clean_blob drivers/net/pcmcia/ositech.h +clean_blob drivers/net/pcmcia/smc91c92_cs.c 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_blob 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" -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 +# announce PCMCIA_PCNET - "NE2000 compatible PCMCIA support" +# 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 @@ -1076,7 +1185,7 @@ announce 3C359 - "3Com 3C359 Token Link Velocity XL adapter" clean_file drivers/net/tokenring/3c359_microcode.h clean_sed ' /^\(static int \)\?xl_hw_reset([^;]*$/,/^}/{ - /printk.*Uploading Microcode/i\ + /start = .*mc_size/i\ printk(KERN_ERR "%s: Missing Free firmware\\n", dev->name);\ return -EINVAL; }' drivers/net/tokenring/3c359.c 'report missing Free firmware' @@ -1158,12 +1267,12 @@ clean_mk CONFIG_IPW2200 drivers/net/wireless/Makefile announce IWL3945 - "Intel PRO/Wireless 3945ABG/BG Network Connection" reject_firmware drivers/net/wireless/iwlwifi/iwl3945-base.c clean_blob drivers/net/wireless/iwlwifi/iwl3945-base.c +clean_blob drivers/net/wireless/iwlwifi/iwl-3945.c clean_kconfig drivers/net/wireless/iwlwifi/Kconfig 'IWL3945' clean_mk CONFIG_IWL3945 drivers/net/wireless/iwlwifi/Makefile announce IWLAGN - "Intel Wireless WiFi Next Gen AGN" reject_firmware drivers/net/wireless/iwlwifi/iwl-agn.c -clean_blob drivers/net/wireless/iwlwifi/iwl-agn.c clean_kconfig drivers/net/wireless/iwlwifi/Kconfig 'IWLAGN' clean_mk CONFIG_IWLAGN drivers/net/wireless/iwlwifi/Makefile @@ -1192,6 +1301,7 @@ clean_mk CONFIG_LIBERTAS_SDIO drivers/net/wireless/libertas/Makefile announce LIBERTAS_USB - "Marvell Libertas 8388 USB 802.11b/g cards" reject_firmware drivers/net/wireless/libertas/if_usb.c clean_blob drivers/net/wireless/libertas/if_usb.c +clean_blob drivers/net/wireless/libertas/README clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_USB' clean_mk CONFIG_LIBERTAS_USB drivers/net/wireless/libertas/Makefile @@ -1210,18 +1320,22 @@ clean_mk CONFIG_P54_PCI drivers/net/wireless/p54/Makefile announce P54_USB - "Prism54 USB support" reject_firmware drivers/net/wireless/p54/p54usb.c clean_blob drivers/net/wireless/p54/p54usb.c +clean_blob drivers/net/wireless/p54/p54usb.h 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 ' +/^config PRISM54$/,/^config /{ + /If you enable this/,/^$/d; +}' drivers/net/wireless/Kconfig 'removed firmware notes' clean_kconfig drivers/net/wireless/Kconfig 'PRISM54' clean_mk CONFIG_PRISM54 drivers/net/wireless/prism54/Makefile announce RT2X00_LIB_FIRMWARE - "Ralink driver firmware support" reject_firmware drivers/net/wireless/rt2x00/rt2x00firmware.c -clean_blob drivers/net/wireless/rt2x00/rt2x00firmware.c clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT2X00_LIB_FIRMWARE' clean_mk CONFIG_RT2X00_LIB_FIRMWARE drivers/net/wireless/rt2x00/Makefile @@ -1270,14 +1384,25 @@ clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBT3C' clean_mk CONFIG_BT_HCIBT3C drivers/bluetooth/Makefile +######## +# ISDN # +######## + +announce ISDN_DIVAS - "Support Eicon DIVA Server cards" +clean_blob drivers/isdn/hardware/eicon/cardtype.h +clean_blob drivers/isdn/hardware/eicon/dsp_defs.h +clean_kconfig drivers/isdn/hardware/eicon/Kconfig 'ISDN_DIVAS' +clean_mk CONFIG_ISDN_DIVAS drivers/isdn/hardware/eicon/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 @@ -1294,6 +1419,14 @@ clean_mk CONFIG_SERIAL_QE drivers/serial/Makefile announce ME4000 - "Meilhaus ME-4000 I/O board" clean_file drivers/staging/me4000/me4000_firmware.h clean_file drivers/staging/me4000/me4610_firmware.h +clean_sed ' +/^static int me4000_xilinx_download([^;]*$/,/^}$/{ + /firm = .*xilinx_firm.*/i\ + printk(KERN_ERR "me4000: Missing Free firmware\\n");\ + return -EIO; +} +' drivers/staging/me4000/me4000.c 'report missing Free firmware' +clean_blob drivers/staging/me4000/me4000.c clean_kconfig drivers/staging/me4000/Kconfig 'ME4000' clean_mk CONFIG_ME4000 drivers/staging/me4000/Makefile @@ -1385,6 +1518,12 @@ announce SCSI_QLA_FC - "QLogic QLA2XXX Fibre Channel Support" reject_firmware drivers/scsi/qla2xxx/qla_gbl.h reject_firmware drivers/scsi/qla2xxx/qla_init.c reject_firmware drivers/scsi/qla2xxx/qla_os.c +clean_sed ' +/^config SCSI_QLA_FC$/,/^config /{ + /^ By default, firmware/i\ + /*(DEBLOBBED)*/ + /^ By default, firmware/,/ftp:[/][/].*firmware[/]/d +}' drivers/scsi/qla2xxx/Kconfig 'removed firmware notes' clean_blob drivers/scsi/qla2xxx/qla_os.c clean_kconfig drivers/scsi/qla2xxx/Kconfig 'SCSI_QLA_FC' clean_mk CONFIG_SCSI_QLA_FC drivers/scsi/qla2xxx/Makefile @@ -1714,29 +1853,44 @@ clean_mk CONFIG_SND_AICA sound/sh/Makefile announce SOUND_MSNDCLAS - "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey" clean_blob sound/oss/msnd_classic.h clean_kconfig sound/oss/Kconfig 'SOUND_MSNDCLAS' +clean_sed ' +/^config MSNDCLAS_INIT_FILE$/, /^config / { + /^ default.*msndinit\.bin/ s,".*","/*(DEBLOBBED)*/",; +} +/^config MSNDCLAS_PERM_FILE$/, /^config / { + /^ default.*msndperm\.bin/ s,".*","/*(DEBLOBBED)*/",; +}' sound/oss/Kconfig 'removed default firmware' clean_mk CONFIG_SOUND_MSNDCLAS sound/oss/Makefile announce SOUND_MSNDPIN - "Support for Turtle Beach MultiSound Pinnacle" clean_blob sound/oss/msnd_pinnacle.h clean_kconfig sound/oss/Kconfig 'SOUND_MSNDPIN' +clean_sed ' +/^config MSNDPIN_INIT_FILE$/, /^config / { + /^ default.*pndspini\.bin/ s,".*","/*(DEBLOBBED)*/",; +} +/^config MSNDPIN_PERM_FILE$/, /^config / { + /^ default.*pndsperm\.bin/ s,".*","/*(DEBLOBBED)*/",; +}' sound/oss/Kconfig 'removed default firmware' clean_mk CONFIG_SOUND_MSNDPIN sound/oss/Makefile announce SOUND_SSCAPE - "Ensoniq SoundScape support" -reject_firmware sound/oss/sscape.c clean_blob sound/oss/sscape.c clean_kconfig sound/oss/Kconfig 'SOUND_SSCAPE' clean_mk CONFIG_SOUND_SSCAPE sound/oss/Makefile announce SOUND_TRIX - "MediaTrix AudioTrix Pro support" -reject_firmware sound/oss/trix.c clean_blob sound/oss/trix.c clean_kconfig sound/oss/Kconfig 'SOUND_TRIX' +clean_sed ' +/^config TRIX_BOOT_FILE$/, /^config / { + /^ default.*trxpro\.hex/ s,".*","/*(DEBLOBBED)*/",; +}' sound/oss/Kconfig 'removed default firmware' clean_mk CONFIG_SOUND_TRIX sound/oss/Makefile -announce SOUND_TRIX - "MediaTrix AudioTrix Pro support" -announce SOUND_PAS - "ProAudioSpectrum 16 support" +announce SOUND_TRIX - "See above," +announce SOUND_PAS - "ProAudioSpectrum 16 support," announce SOUND_SB - "100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support" -reject_firmware sound/oss/sb_common.c clean_blob sound/oss/sb_common.c clean_kconfig sound/oss/Kconfig 'SOUND_PAS' clean_kconfig sound/oss/Kconfig 'SOUND_SB' @@ -1744,9 +1898,35 @@ clean_mk CONFIG_SOUND_PAS sound/oss/Makefile clean_mk CONFIG_SOUND_SB sound/oss/Makefile announce SOUND_PSS - "PSS (AD1848, ADSP-2115, ESC614) support" -reject_firmware sound/oss/pss.c +clean_sed 's,^\( [*] .*synth"\)\.$,\1/*.,' sound/oss/pss.c 'avoid nested comments' clean_blob sound/oss/pss.c clean_kconfig sound/oss/Kconfig 'SOUND_PSS' +clean_sed ' +/^config PSS_BOOT_FILE$/, /^config / { + /^ default.*dsp001\.ld/ s,".*","/*(DEBLOBBED)*/",; +}' sound/oss/Kconfig 'removed default firmware' clean_mk CONFIG_SOUND_PSS sound/oss/Makefile +################# +# Documentation # +################# + +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 +clean_blob Documentation/sound/oss/PSS-updates +clean_blob Documentation/sound/oss/README.OSS +clean_file Documentation/dvb/get_dvb_firmware +clean_file Documentation/video4linux/extract_xc3028.pl +clean_sed s,usb8388,whatever,g drivers/base/Kconfig 'removed blob name' +clean_blob firmware/WHENCE + +if $errors; then + echo errors above were ignored because of --force >&2 +fi + exit 0