#! /bin/sh
-# Copyright (C) 2008-2019 Alexandre Oliva <lxoliva@fsfla.org>
+# Copyright (C) 2008-2021 Alexandre Oliva <lxoliva@fsfla.org>
# Copyright (C) 2008 Jeff Moe
# Copyright (C) 2009 Rubén Rodríguez <ruben@gnu.org>
#
# For each kver release, start extra with an empty string, then count
# from 1 if changes are needed that require rebuilding the tarball.
-kver=5.4 extra=
+kver=5.4 extra=1
case $1 in
--force)
else
die failed removing blobs from $name
fi
- check_changed $name && echo $name: removed blobs
+ check_changed $name && echo $name: removed blobs or mentions thereof
else
clean_file $1
fi
}
-dummy_blob () {
- #$1 = filename
- if test -f $1; then
- die $1 exists, something is wrong && return 0
- elif test ! -f firmware/Makefile; then
- die firmware/Makefile does not exist, something is wrong && return 0
- fi
-
- clean_sed "s,`echo $1 | sed s,^firmware/,,`,\$(DEBLOBBED),g" \
- firmware/Makefile "dropped $1"
-}
-
-clean_fw () {
- #$1 = firmware text input, $2 = firmware output
- filetest $1 || return 0
- if test -f $2; then
- die $2 exists, something is wrong && return 0
- fi
- clean_blob $1 -s 4
- dummy_blob $2
-}
-
-drop_fw_file () {
- #$1 = firmware text input, $2 = firmware output
- filetest $1 || return 0
- if test -f $2; then
- die $2 exists, something is wrong && return 0
- fi
- clean_file $1
- dummy_blob $2
-}
-
clean_kconfig () {
#$1 = filename $2 = things to remove
case $1 in
contribution to the entire system, so its mascot deserves more\
promotion. See our web page for their images.\
http://linux-libre.fsfla.org/\
+\
+ If you are the author of an awesome program and want to join us in\
+ writing Free (libre) Software, please consider making it an official\
+ GNU program and become a GNU Maintainer. You can find instructions\
+ on how to do so at https://www.gnu.org/help/evaluation. We look\
+ forward to hacking with you! :)\
' Documentation/admin-guide/README.rst 'added blurb about GNU Linux-libre'
s,git://git\..*torvalds/linux\.git,/*(DEBLOBBED)*/,
' scripts/package/mkdebian 'upstream development repo'
-clean_sed '
-s,Name: kernel,&-libre,
-' scripts/package/mkspec 'package name'
+# The tarball name and its expansion do not include -libre.
+# We could change KERNELPATH and keep this, but what else would break?
+# Enabling this would require the other commented-out mkspec bits below.
+# clean_sed '
+# s,Name: kernel,&-libre,
+# ' scripts/package/mkspec 'package name'
clean_sed '
s,The Linux,The GNU Linux-libre,
s,https\?://www\.kernel\.org,https://linux-libre.fsfla.org,
' scripts/package/mkspec 'home page'
+# clean_sed '
+# s,\(%description\) -n kernel-,\1 ,
+# ' scripts/package/mkspec '-libre subpackages'
+
+# clean_sed '
+# /Provides: kernel-/{p;s,kernel-,&libre-,;}
+# ' scripts/package/mkspec '-libre provides'
+
+# As with rpms, we leave the package name as kernel.
clean_sed '
-s,\(%description\) -n kernel-,\1 ,
-' scripts/package/mkspec '-libre subpackages'
+s,The upstream Linux kernel,The GNU Linux-libre kernel,
+' scripts/package/snapcraft.template 'description'
clean_sed '
-/Provides: kernel-/{p;s,kernel-,&libre-,;}
-' scripts/package/mkspec '-libre provides'
+s,Linux kernel,GNU Linux-libre,
+' scripts/package/snapcraft.template 'summary'
# Add reject_firmware and maybe_reject_firmware
grep -q _LINUX_LIBRE_FIRMWARE_H include/linux/firmware.h ||
static inline int\
is_nonfree_firmware(const char *name)\
{\
- return strstr(name, NONFREE_FIRMWARE) != 0;\
+ return strstr(name, NONFREE_FIRMWARE) != 0;\
}\
\
static inline int\
{\
const struct firmware *xfw = NULL;\
int retval, retval0 = -ENOENT;\
+ if (fw) *fw = xfw;\
retval = firmware_request_nowarn(&xfw, NONFREE_FIRMWARE, device);\
if (!retval) {\
release_firmware(xfw);\
{\
const struct firmware *xfw = NULL;\
int retval, retval0;\
+ if (fw) *fw = xfw;\
retval0 = report_missing_free_firmware(dev_name(device), NULL);\
retval = request_firmware_direct(&xfw, NONFREE_FIRMWARE, device);\
if (!retval) {\
{\
const struct firmware *xfw = NULL;\
int retval, retval0;\
+ if (firmware_p) *firmware_p = xfw;\
retval0 = report_missing_free_firmware(dev_name(device), NULL);\
retval = request_firmware_into_buf(&xfw, NONFREE_FIRMWARE, device, buf, size);\
if (!retval) {\
announce MICROCODE_AMD - "AMD microcode patch loading support"
reject_firmware arch/x86/kernel/cpu/microcode/amd.c
clean_blob arch/x86/kernel/cpu/microcode/amd.c
+if grep -q -i zenbleed.*microcode arch/x86/kernel/cpu/amd.c; then
+ clean_blob arch/x86/kernel/cpu/amd.c
+fi
clean_kconfig arch/x86/Kconfig MICROCODE_AMD
clean_mk CONFIG_MICROCODE_AMD arch/x86/kernel/cpu/microcode/Makefile
announce MICROCODE_INTEL - "Intel microcode patch loading support"
reject_firmware arch/x86/kernel/cpu/microcode/intel.c
clean_blob arch/x86/kernel/cpu/microcode/intel.c
-clean_blob arch/x86/events/intel/core.c
clean_kconfig arch/x86/Kconfig MICROCODE_INTEL
clean_mk CONFIG_MICROCODE_INTEL arch/x86/kernel/cpu/microcode/Makefile
announce MICROCODE - "CPU microcode loading support"
clean_blob Documentation/x86/microcode.rst
-clean_blob arch/x86/kernel/apic/apic.c
-clean_blob drivers/hwmon/coretemp.c
clean_kconfig arch/x86/Kconfig MICROCODE
clean_mk CONFIG_MICROCODE arch/x86/kernel/cpu/Makefile
+# Do no recommend non-Free microcode update.
+announce X86_LOCAL_APIC - Undocumented
+clean_blob arch/x86/kernel/apic/apic.c
+clean_kconfig arch/x86/Kconfig X86_LOCAL_APIC
+clean_mk CONFIG_X86_LOCAL_APIC arch/x86/kernel/apic/Makefile
+
+# Do no recommend non-Free microcode update.
+announce CPU_SUP_INTEL - "Support Intel processors"
+clean_blob arch/x86/events/intel/core.c
+clean_kconfig arch/x86/Kconfig.cpu CPU_SUP_INTEL
+clean_mk CONFIG_CPU_SUP_INTEL arch/x86/events/intel/Makefile
+
+# Do no recommend non-Free microcode update.
+announce SENSORS_CORETEMP - "Intel Core/Core2/Atom temperature sensor"
+clean_blob drivers/hwmon/coretemp.c
+clean_kconfig drivers/hwmon/Kconfig SENSORS_CORETEMP
+clean_mk CONFIG_SENSORS_CORETEMP drivers/hwmon/Makefile
+
# arm
announce IXP4XX_NPE - "IXP4xx Network Processor Engine support"
clean_kconfig arch/arm/mach-sunxi/Kconfig MACH_SUN8I
clean_mk CONFIG_MACH_SUN8I arch/arm/boot/dts/Makefile
+# ppc
+
+announce UCODE_PATCH - "ppc microcode"
+clean_blob arch/powerpc/platforms/8xx/micropatch.c
+clean_kconfig arch/powerpc/platforms/8xx/Kconfig UCODE_PATCH
+clean_mk CONFIG_UCODE_PATCH arch/powerpc/platforms/8xx/Makefile
+
+announce USB_SOF_UCODE_PATCH - "USB SOF patch"
+clean_kconfig arch/powerpc/platforms/8xx/Kconfig USB_SOF_UCODE_PATCH
+
+announce I2C_SPI_UCODE_PATCH - "I2C/SPI relocation patch"
+clean_kconfig arch/powerpc/platforms/8xx/Kconfig I2C_SPI_UCODE_PATCH
+
+announce I2C_SPI_SMC1_UCODE_PATCH - "I2C/SPI/SMC1 relocation patch"
+clean_kconfig arch/powerpc/platforms/8xx/Kconfig I2C_SPI_SMC1_UCODE_PATCH
+
+announce SMC_UCODE_PATCH - "SMC relocation patch"
+clean_kconfig arch/powerpc/platforms/8xx/Kconfig SMC_UCODE_PATCH
+
#######
# ATM #
#######
# gpu drm
-announce DRM - "irect Rendering Manager (XFree86 4.1.0 and higher DRI support)"
+announce DRM - "Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)"
reject_firmware drivers/gpu/drm/drm_hdcp.c
clean_blob drivers/gpu/drm/drm_hdcp.c
clean_kconfig drivers/gpu/drm/Kconfig DRM
clean_kconfig drivers/gpu/drm/amd/amdgpu/Kconfig DRM_AMDGPU_CIK
clean_mk CONFIG_DRM_AMDGPU_CIK drivers/gpu/drm/amd/amdgpu/Makefile
-announce DRM_AMDGPU_SI - "Enable amdgpu support for CIK parts"
+announce DRM_AMDGPU_SI - "Enable amdgpu support for SI parts"
reject_firmware drivers/gpu/drm/amd/amdgpu/si_dpm.c
clean_blob drivers/gpu/drm/amd/amdgpu/si_dpm.c
reject_firmware drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
clean_blob drivers/gpu/drm/radeon/r600.c
reject_firmware drivers/gpu/drm/radeon/ni.c
clean_blob drivers/gpu/drm/radeon/ni.c
-reject_firmware drivers/gpu/drm/radeon/si.c
-clean_blob drivers/gpu/drm/radeon/si.c
# Something like this might work on other radeon cards too. If you
# have such cards, please give it a try, and report back either way,
# so that we can make more cards work, or at least add comments so
clean_sed '
/r = ni_init_microcode(rdev);/,/}/ s,return r;,/*(DEBLOBBED)*/,
' drivers/gpu/drm/radeon/ni.c 'enable blobless activation'
-clean_sed '
-/r = si_init_microcode(rdev);/,/}/ s,return r;,/*(DEBLOBBED)*/,
-' drivers/gpu/drm/radeon/si.c 'enable blobless activation'
-clean_sed '
-/if (!rdev->mc_fw) {/,/}/ s,return -EINVAL;,/*(DEBLOBBED)*/,
-' drivers/gpu/drm/radeon/si.c 'enable blobless activation'
+reject_firmware drivers/gpu/drm/radeon/si.c
+clean_blob drivers/gpu/drm/radeon/si.c
reject_firmware drivers/gpu/drm/radeon/cik.c
clean_blob drivers/gpu/drm/radeon/cik.c
reject_firmware drivers/gpu/drm/radeon/radeon_uvd.c
clean_kconfig drivers/media/i2c/Kconfig VIDEO_S5K5BAF
clean_mk CONFIG_VIDEO_S5K5BAF drivers/media/i2c/Makefile
+announce VIDEO_VS6624 - "ST VS6624 sensor support"
+clean_blob drivers/media/i2c/vs6624.c
+clean_kconfig drivers/media/i2c/Kconfig VIDEO_VS6624
+clean_mk CONFIG_VIDEO_VS6624 drivers/media/i2c/Makefile
+
announce VIDEO_SAMSUNG_S5P_MFC - "Samsung S5P MFC 5.1 Video Codec"
reject_firmware drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c
clean_blob drivers/media/platform/s5p-mfc/s5p_mfc.c
# this is the hardware or the software inducing to the installation of
# non-Free firmware.
reject_firmware drivers/scsi/lpfc/lpfc_init.c
+clean_blob drivers/scsi/lpfc/lpfc_init.c
clean_kconfig drivers/scsi/Kconfig SCSI_LPFC
clean_mk CONFIG_SCSI_LPFC drivers/scsi/lpfc/Makefile
clean_kconfig drivers/remoteproc/Kconfig WKUP_M3_RPROC
clean_mk CONFIG_WKUP_M3_RPROC drivers/remoteproc/Makefile
-announce QCOM_Q6V5_ADSP - "Qualcomm Technology Inc ADSP Peripherial Image Loader"
+announce QCOM_Q6V5_ADSP - "Qualcomm Technology Inc ADSP Peripheral Image Loader"
clean_blob drivers/remoteproc/qcom_q6v5_adsp.c
clean_kconfig drivers/remoteproc/Kconfig QCOM_Q6V5_ADSP
clean_mk CONFIG_QCOM_Q6V5_ADSP drivers/remoteproc/Makefile
clean_kconfig drivers/remoteproc/Kconfig QCOM_Q6V5_MSS
clean_mk CONFIG_QCOM_Q6V5_MSS drivers/remoteproc/Makefile
-announce QCOM_Q6V5_PAS - "Qualcomm Hexagon V5 Peripherial Authentication Service support"
+announce QCOM_Q6V5_PAS - "Qualcomm Hexagon V5 Peripheral Authentication Service support"
clean_blob drivers/remoteproc/qcom_q6v5_pas.c
clean_kconfig drivers/remoteproc/Kconfig QCOM_Q6V5_PAS
clean_mk CONFIG_QCOM_Q6V5_PAS drivers/remoteproc/Makefile
clean_kconfig drivers/remoteproc/Kconfig QCOM_Q6V5_WCSS
clean_mk CONFIG_QCOM_Q6V5_WCSS drivers/remoteproc/Makefile
-announce QCOM_WCNSS_PIL - "Qualcomm WCNSS Peripherial Image Loader"
+announce QCOM_WCNSS_PIL - "Qualcomm WCNSS Peripheral Image Loader"
clean_blob drivers/remoteproc/qcom_wcnss.c
clean_kconfig drivers/remoteproc/Kconfig QCOM_WCNSS_PIL
clean_mk CONFIG_QCOM_WCNSS_PIL drivers/remoteproc/Makefile
clean_kconfig sound/pci/Kconfig SND_MONA
clean_mk CONFIG_SND_MONA sound/pci/echoaudio/Makefile
-announce SND_'<(Echoaudio)>' - "(Echoaudio) all of the above "
+announce SND_'<(Echoaudio)>' - "(Echoaudio) all of the above"
reject_firmware sound/pci/echoaudio/echoaudio.c
clean_blob sound/pci/echoaudio/echoaudio.c
if $errors; then
echo errors above were ignored because of --force >&2
+else
+ echo cleaning up has completed successfully, without verification >&2
+ # Verification is largely manual, comparing the changes with
+ # those of a previous known (presumed) good version, e.g.
+ # git merge the previous known good version onto the current base
+ # version, and then git diff with this cleaned-up version.
+ # Creating a tarball of this version, named linux-*.*.tar,
+ # and running deblob-check on it may also help catch cleaning-up
+ # errors: .../deblob-check --use-awk -B linux-*.*.tar.
fi
exit 0