Browse Source

linux-firmware-rpidistro: Revamp, cleanup and restructure recipe

Besides general cleanup and formatting (for example dropping the
conflicts and replaces on the raspbian packages which was deprecated
long ago) this also cleans up the license of the package as per the
updated upstream copyright file. This recipe now provides firmware files
of two different licenses.

bcm43430 bcm43455 - binary-redist-Cypress
bcm43436 bcm43436s bcm43456 - Synaptics

The license file itself is GPLv2 as other debian files.

Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
Andrei Gherzan 3 years ago
parent
commit
1b4215d5d0
1 changed files with 55 additions and 97 deletions
  1. 55 97
      recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro_git.bb

+ 55 - 97
recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro_git.bb

@@ -5,60 +5,43 @@ to linux-firmware for general use."
 HOMEPAGE = "https://github.com/RPi-Distro/firmware-nonfree"
 SECTION = "kernel"
 
-# In maintained upstream linux-firmware:
-# * brcmfmac43430-sdio falls under LICENSE.cypress
-# * brcmfmac43455-sdio falls under LICENSE.broadcom_bcm43xx
-# * brcmfmac43456-sdio falls under LICENSE.broadcom_bcm43xx
-#
-# It is likely[^1] that both of these should be under LICENSE.cypress.
-# Further, at this time the text of LICENSE.broadcom_bcm43xx is the same
-# in linux-firmware and RPi-Distro/firmware-nonfree, but this may
-# change.
-#
-# Rather than make assumptions about what's supposed to be what, we'll
-# use the license implied by the source of these files, named to avoid
-# conflicts with linux-firmware.
-#
-# [^1]: https://github.com/RPi-Distro/bluez-firmware/issues/1
-LICENSE = "\
-    Firmware-broadcom_bcm43xx-rpidistro \
-"
+LICENSE = "GPL-2.0-only & binary-redist-Cypress-rpidistro & Synaptics-rpidistro"
 LIC_FILES_CHKSUM = "\
     file://debian/config/brcm80211/copyright;md5=b0630b02d90e3da72206c909b6aecc8c \
 "
-
-# These are not common licenses, set NO_GENERIC_LICENSE for them
-# so that the license files will be copied from fetched source
-NO_GENERIC_LICENSE[Firmware-broadcom_bcm43xx-rpidistro] = "debian/config/brcm80211/copyright"
+# Where these are no common licenses, set NO_GENERIC_LICENSE so that the
+# license files will be copied from the fetched source.
+NO_GENERIC_LICENSE[binary-redist-Cypress-rpidistro] = "debian/config/brcm80211/copyright"
+NO_GENERIC_LICENSE[Synaptics-rpidistro] = "debian/config/brcm80211/copyright"
 
 SRC_URI = "git://github.com/RPi-Distro/firmware-nonfree;branch=bullseye;protocol=https"
-
 SRCREV = "541e5a05d152e7e6f0d9be45622e4a3741e51c02"
 PV = "20210315-3+rpt7"
-
 S = "${WORKDIR}/git"
 
 inherit allarch
 
-CLEANBROKEN = "1"
-
-do_compile() {
-    :
-}
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
 
 do_install() {
     install -d ${D}${nonarch_base_libdir}/firmware/brcm ${D}${nonarch_base_libdir}/firmware/cypress
 
-    cp debian/config/brcm80211/copyright ${D}${nonarch_base_libdir}/firmware/copyright.broadcom_bcm43xx-rpidistro
+    cp debian/config/brcm80211/copyright ${D}${nonarch_base_libdir}/firmware/copyright.firmware-nonfree-rpidistro
 
-    # Replace outdated linux-firmware files with updated ones from
-    # raspbian firmware-nonfree. Raspbian adds blobs and nvram
-    # definitions that are also necessary so copy those too.
-    for fw in brcmfmac43430-sdio brcmfmac43436-sdio brcmfmac43436s-sdio brcmfmac43455-sdio brcmfmac43456-sdio ; do
+    for fw in \
+            brcmfmac43430-sdio \
+            brcmfmac43436-sdio \
+            brcmfmac43436s-sdio \
+            brcmfmac43455-sdio \
+            brcmfmac43456-sdio; do
         cp -R --no-dereference --preserve=mode,links -v debian/config/brcm80211/brcm/${fw}.* ${D}${nonarch_base_libdir}/firmware/brcm/
     done
+
     cp -R --no-dereference --preserve=mode,links -v debian/config/brcm80211/cypress/* ${D}${nonarch_base_libdir}/firmware/cypress/
+
     rm ${D}${nonarch_base_libdir}/firmware/cypress/README.txt
+
     # add compat links. Fixes errors like
     # brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.raspberrypi,4-model-compute-module.txt failed with error -2
     ln -s brcmfmac43455-sdio.txt ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.txt
@@ -67,77 +50,52 @@ do_install() {
 }
 
 PACKAGES = "\
-    ${PN}-broadcom-license \
     ${PN}-bcm43430 \
-    ${PN}-bcm43455 \
-    ${PN}-bcm43456 \
     ${PN}-bcm43436 \
     ${PN}-bcm43436s \
+    ${PN}-bcm43455 \
+    ${PN}-bcm43456 \
+    ${PN}-license \
 "
 
-LICENSE:${PN}-bcm43430 = "Firmware-broadcom_bcm43xx-rpidistro"
-LICENSE:${PN}-bcm43436 = "Firmware-broadcom_bcm43xx-rpidistro"
-LICENSE:${PN}-bcm43436s = "Firmware-broadcom_bcm43xx-rpidistro"
-LICENSE:${PN}-bcm43455 = "Firmware-broadcom_bcm43xx-rpidistro"
-LICENSE:${PN}-bcm43456 = "Firmware-broadcom_bcm43xx-rpidistro"
-LICENSE:${PN}-broadcom-license = "Firmware-broadcom_bcm43xx-rpidistro"
-FILES:${PN}-broadcom-license = "${nonarch_base_libdir}/firmware/copyright.broadcom_bcm43xx-rpidistro"
-FILES:${PN}-bcm43430 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430* ${nonarch_base_libdir}/firmware/cypress/cyfmac43430-sdio.bin ${nonarch_base_libdir}/firmware/cypress/cyfmac43430-sdio.clm_blob"
+LICENSE:${PN}-bcm43430 = "binary-redist-Cypress-rpidistro"
+LICENSE:${PN}-bcm43436 = "Synaptics-rpidistro"
+LICENSE:${PN}-bcm43436s = "Synaptics-rpidistro"
+LICENSE:${PN}-bcm43455 = "binary-redist-Cypress-rpidistro"
+LICENSE:${PN}-bcm43456 = "Synaptics-rpidistro"
+LICENSE:${PN}-license = "GPL-2.0-only"
+
+FILES:${PN}-bcm43430 = " \
+    ${nonarch_base_libdir}/firmware/brcm/brcmfmac43430* \
+    ${nonarch_base_libdir}/firmware/cypress/cyfmac43430-sdio.bin \
+    ${nonarch_base_libdir}/firmware/cypress/cyfmac43430-sdio.clm_blob \
+"
 FILES:${PN}-bcm43436 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43436-*"
 FILES:${PN}-bcm43436s = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43436s*"
-FILES:${PN}-bcm43455 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43455* ${nonarch_base_libdir}/firmware/cypress/cyfmac43455-sdio*"
-FILES:${PN}-bcm43456 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43456*"
-RDEPENDS:${PN}-bcm43430 += "${PN}-broadcom-license"
-RDEPENDS:${PN}-bcm43436 += "${PN}-broadcom-license"
-RDEPENDS:${PN}-bcm43436s += "${PN}-broadcom-license"
-RDEPENDS:${PN}-bcm43455 += "${PN}-broadcom-license"
-RDEPENDS:${PN}-bcm43456 += "${PN}-broadcom-license"
-RCONFLICTS:${PN}-bcm43430 = "\
-    linux-firmware-bcm43430 \
-    linux-firmware-raspbian-bcm43430 \
-"
-
-RREPLACES:${PN}-bcm43430 = "\
-    linux-firmware-bcm43430 \
-    linux-firmware-raspbian-bcm43430 \
-"
-
-RCONFLICTS:${PN}-bcm43436 = "\
-    linux-firmware-bcm43436 \
-    linux-firmware-raspbian-bcm43436 \
-"
-
-RREPLACES:${PN}-bcm43436 = "\
-    linux-firmware-bcm43436 \
-    linux-firmware-raspbian-bcm43436 \
-"
-
-RCONFLICTS:${PN}-bcm43436s = "\
-    linux-firmware-bcm43436s \
-    linux-firmware-raspbian-bcm43436s \
-"
-
-RREPLACES:${PN}-bcm43436s = "\
-    linux-firmware-bcm43436s \
-    linux-firmware-raspbian-bcm43436s \
-"
-
-RCONFLICTS:${PN}-bcm43455 = "\
-    linux-firmware-bcm43455 \
-    linux-firmware-raspbian-bcm43455 \
-"
-RREPLACES:${PN}-bcm43455 = "\
-    linux-firmware-bcm43455 \
-    linux-firmware-raspbian-bcm43455 \
-"
-RCONFLICTS:${PN}-bcm43456 = "\
-    linux-firmware-bcm43456 \
-    linux-firmware-raspbian-bcm43456 \
-"
-RREPLACES:${PN}-bcm43456 = "\
-    linux-firmware-bcm43456 \
-    linux-firmware-raspbian-bcm43456 \
+FILES:${PN}-bcm43455 = " \
+    ${nonarch_base_libdir}/firmware/brcm/brcmfmac43455* \
+    ${nonarch_base_libdir}/firmware/cypress/cyfmac43455-sdio* \
 "
+FILES:${PN}-bcm43456 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43456*"
+FILES:${PN}-license = "${nonarch_base_libdir}/firmware/copyright.firmware-nonfree-rpidistro"
+
+RDEPENDS:${PN}-bcm43430 += "${PN}-license"
+RDEPENDS:${PN}-bcm43436 += "${PN}-license"
+RDEPENDS:${PN}-bcm43436s += "${PN}-license"
+RDEPENDS:${PN}-bcm43455 += "${PN}-license"
+RDEPENDS:${PN}-bcm43456 += "${PN}-license"
+
+RCONFLICTS:${PN}-bcm43430 = "linux-firmware-raspbian-bcm43430"
+RCONFLICTS:${PN}-bcm43436 = "linux-firmware-bcm43436"
+RCONFLICTS:${PN}-bcm43436s = "linux-firmware-bcm43436s"
+RCONFLICTS:${PN}-bcm43455 = "linux-firmware-bcm43455"
+RCONFLICTS:${PN}-bcm43456 = "linux-firmware-bcm43456"
+
+RREPLACES:${PN}-bcm43430 = "linux-firmware-bcm43430"
+RREPLACES:${PN}-bcm43436 = "linux-firmware-bcm43436"
+RREPLACES:${PN}-bcm43436s = "linux-firmware-bcm43436s"
+RREPLACES:${PN}-bcm43455 = "linux-firmware-bcm43455"
+RREPLACES:${PN}-bcm43456 = "linux-firmware-bcm43456"
 
 # Firmware files are generally not run on the CPU, so they can be
 # allarch despite being architecture specific