commit:     cd8745032a7ededa08f9ecfddf60a77e53873de4
Author:     Paul Zander <negril.nx+gentoo <AT> gmail <DOT> com>
AuthorDate: Sat Jun 17 16:15:56 2023 +0000
Commit:     Rick Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Sat Aug 19 16:52:22 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cd874503

net-wireless/wireless-regdb: remove crda for kernel >=4.15

Kernel version >=4.15 removed the need for net-wireless/crda.
For versions >=4.15 this update:
- ensures net-wireless/crda is no longer installed
- copied kernel config_check from net-wireless/iwd to ensure loading

Bug: https://bugs.gentoo.org/898162
Closes: https://github.com/gentoo/gentoo/pull/31514

Signed-off-by: Paul Zander <negril.nx+gentoo <AT> gmail.com>
Signed-off-by: Rick Farina <zerochaos <AT> gentoo.org>

 net-wireless/wireless-regdb/metadata.xml           |  3 +
 .../wireless-regdb-20220218-r1.ebuild              | 67 ++++++++++++++++++++++
 .../wireless-regdb-20220408-r1.ebuild              | 67 ++++++++++++++++++++++
 .../wireless-regdb-20220606-r1.ebuild              | 67 ++++++++++++++++++++++
 .../wireless-regdb/wireless-regdb-20220812.ebuild  | 50 ++++++++++++----
 .../wireless-regdb/wireless-regdb-20230213.ebuild  | 50 ++++++++++++----
 .../wireless-regdb/wireless-regdb-20230503.ebuild  | 48 +++++++++++++---
 7 files changed, 323 insertions(+), 29 deletions(-)

diff --git a/net-wireless/wireless-regdb/metadata.xml 
b/net-wireless/wireless-regdb/metadata.xml
index a61f7bfb3196..101c017e6f75 100644
--- a/net-wireless/wireless-regdb/metadata.xml
+++ b/net-wireless/wireless-regdb/metadata.xml
@@ -6,4 +6,7 @@
                <name>Rick Farina</name>
        </maintainer>
        <stabilize-allarches/>
+       <use>
+               <flag name="crda">Use obsolete <pkg>net-wireless/crda</pkg> for 
regulatory domain loading instead of in-kernel (4.15+) support</flag>
+       </use>
 </pkgmetadata>

diff --git a/net-wireless/wireless-regdb/wireless-regdb-20220218-r1.ebuild 
b/net-wireless/wireless-regdb/wireless-regdb-20220218-r1.ebuild
new file mode 100644
index 000000000000..2454742db728
--- /dev/null
+++ b/net-wireless/wireless-regdb/wireless-regdb-20220218-r1.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit linux-info
+
+MY_P="wireless-regdb-${PV:0:4}.${PV:4:2}.${PV:6:2}"
+DESCRIPTION="Regulatory database for Linux"
+HOMEPAGE="https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb";
+SRC_URI="https://mirrors.edge.kernel.org/pub/software/network/${PN}/${MY_P}.tar.xz";
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="ISC"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv 
~sparc ~x86"
+IUSE="crda"
+
+RDEPEND="crda? ( net-wireless/crda )"
+
+REQUIRED_USE="kernel_linux"
+
+pkg_pretend() {
+       if kernel_is -ge 4 15; then
+       if linux_config_exists && linux_chkconfig_builtin CFG80211 &&
+               [[ $(linux_chkconfig_string EXTRA_FIRMWARE) != *regulatory.db* 
]]
+       then
+               ewarn "REGULATORY DOMAIN PROBLEM:"
+               ewarn "  With CONFIG_CFG80211=y (built-in), the driver won't be 
able to load regulatory.db from"
+               ewarn "  /lib/firmware, resulting in broken regulatory domain 
support. Please set CONFIG_CFG80211=m"
+               ewarn "  or add regulatory.db and regulatory.db.p7s to 
CONFIG_EXTRA_FIRMWARE."
+       fi
+
+       has_version net-wireless/crda && \
+               ewarn "Starting from kernel version 4.15 net-wireless/crda is 
no longer needed."
+
+       CONFIG_CHECK="EXPERT !CFG80211_CRDA_SUPPORT"
+       WARNING_CFG80211_CRDA_SUPPORT="You can safely disable 
CFG80211_CRDA_SUPPORT"
+       else
+       CONFIG_CHECK="~CFG80211_CRDA_SUPPORT"
+       WARNING_CFG80211_CRDA_SUPPORT="REGULATORY DOMAIN PROBLEM: \
+please enable CFG80211_CRDA_SUPPORT for proper regulatory domain support"
+       fi
+
+       check_extra_config
+}
+
+src_compile() {
+       true
+}
+
+src_install() {
+       if kernel_is -lt 4 15; then
+       # This file is not ABI-specific, and crda itself always hardcodes
+       # this path.  So install into a common location for all ABIs to use.
+       insinto /usr/lib/crda
+       doins regulatory.bin
+
+       insinto /etc/wireless-regdb/pubkeys
+       doins sforshee.key.pub.pem
+       else
+       insinto /lib/firmware
+       doins regulatory.db regulatory.db.p7s
+       fi
+       doman -i18n= regulatory.bin.5 regulatory.db.5
+       dodoc README db.txt
+}

diff --git a/net-wireless/wireless-regdb/wireless-regdb-20220408-r1.ebuild 
b/net-wireless/wireless-regdb/wireless-regdb-20220408-r1.ebuild
new file mode 100644
index 000000000000..2454742db728
--- /dev/null
+++ b/net-wireless/wireless-regdb/wireless-regdb-20220408-r1.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit linux-info
+
+MY_P="wireless-regdb-${PV:0:4}.${PV:4:2}.${PV:6:2}"
+DESCRIPTION="Regulatory database for Linux"
+HOMEPAGE="https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb";
+SRC_URI="https://mirrors.edge.kernel.org/pub/software/network/${PN}/${MY_P}.tar.xz";
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="ISC"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv 
~sparc ~x86"
+IUSE="crda"
+
+RDEPEND="crda? ( net-wireless/crda )"
+
+REQUIRED_USE="kernel_linux"
+
+pkg_pretend() {
+       if kernel_is -ge 4 15; then
+       if linux_config_exists && linux_chkconfig_builtin CFG80211 &&
+               [[ $(linux_chkconfig_string EXTRA_FIRMWARE) != *regulatory.db* 
]]
+       then
+               ewarn "REGULATORY DOMAIN PROBLEM:"
+               ewarn "  With CONFIG_CFG80211=y (built-in), the driver won't be 
able to load regulatory.db from"
+               ewarn "  /lib/firmware, resulting in broken regulatory domain 
support. Please set CONFIG_CFG80211=m"
+               ewarn "  or add regulatory.db and regulatory.db.p7s to 
CONFIG_EXTRA_FIRMWARE."
+       fi
+
+       has_version net-wireless/crda && \
+               ewarn "Starting from kernel version 4.15 net-wireless/crda is 
no longer needed."
+
+       CONFIG_CHECK="EXPERT !CFG80211_CRDA_SUPPORT"
+       WARNING_CFG80211_CRDA_SUPPORT="You can safely disable 
CFG80211_CRDA_SUPPORT"
+       else
+       CONFIG_CHECK="~CFG80211_CRDA_SUPPORT"
+       WARNING_CFG80211_CRDA_SUPPORT="REGULATORY DOMAIN PROBLEM: \
+please enable CFG80211_CRDA_SUPPORT for proper regulatory domain support"
+       fi
+
+       check_extra_config
+}
+
+src_compile() {
+       true
+}
+
+src_install() {
+       if kernel_is -lt 4 15; then
+       # This file is not ABI-specific, and crda itself always hardcodes
+       # this path.  So install into a common location for all ABIs to use.
+       insinto /usr/lib/crda
+       doins regulatory.bin
+
+       insinto /etc/wireless-regdb/pubkeys
+       doins sforshee.key.pub.pem
+       else
+       insinto /lib/firmware
+       doins regulatory.db regulatory.db.p7s
+       fi
+       doman -i18n= regulatory.bin.5 regulatory.db.5
+       dodoc README db.txt
+}

diff --git a/net-wireless/wireless-regdb/wireless-regdb-20220606-r1.ebuild 
b/net-wireless/wireless-regdb/wireless-regdb-20220606-r1.ebuild
new file mode 100644
index 000000000000..2454742db728
--- /dev/null
+++ b/net-wireless/wireless-regdb/wireless-regdb-20220606-r1.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit linux-info
+
+MY_P="wireless-regdb-${PV:0:4}.${PV:4:2}.${PV:6:2}"
+DESCRIPTION="Regulatory database for Linux"
+HOMEPAGE="https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb";
+SRC_URI="https://mirrors.edge.kernel.org/pub/software/network/${PN}/${MY_P}.tar.xz";
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="ISC"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv 
~sparc ~x86"
+IUSE="crda"
+
+RDEPEND="crda? ( net-wireless/crda )"
+
+REQUIRED_USE="kernel_linux"
+
+pkg_pretend() {
+       if kernel_is -ge 4 15; then
+       if linux_config_exists && linux_chkconfig_builtin CFG80211 &&
+               [[ $(linux_chkconfig_string EXTRA_FIRMWARE) != *regulatory.db* 
]]
+       then
+               ewarn "REGULATORY DOMAIN PROBLEM:"
+               ewarn "  With CONFIG_CFG80211=y (built-in), the driver won't be 
able to load regulatory.db from"
+               ewarn "  /lib/firmware, resulting in broken regulatory domain 
support. Please set CONFIG_CFG80211=m"
+               ewarn "  or add regulatory.db and regulatory.db.p7s to 
CONFIG_EXTRA_FIRMWARE."
+       fi
+
+       has_version net-wireless/crda && \
+               ewarn "Starting from kernel version 4.15 net-wireless/crda is 
no longer needed."
+
+       CONFIG_CHECK="EXPERT !CFG80211_CRDA_SUPPORT"
+       WARNING_CFG80211_CRDA_SUPPORT="You can safely disable 
CFG80211_CRDA_SUPPORT"
+       else
+       CONFIG_CHECK="~CFG80211_CRDA_SUPPORT"
+       WARNING_CFG80211_CRDA_SUPPORT="REGULATORY DOMAIN PROBLEM: \
+please enable CFG80211_CRDA_SUPPORT for proper regulatory domain support"
+       fi
+
+       check_extra_config
+}
+
+src_compile() {
+       true
+}
+
+src_install() {
+       if kernel_is -lt 4 15; then
+       # This file is not ABI-specific, and crda itself always hardcodes
+       # this path.  So install into a common location for all ABIs to use.
+       insinto /usr/lib/crda
+       doins regulatory.bin
+
+       insinto /etc/wireless-regdb/pubkeys
+       doins sforshee.key.pub.pem
+       else
+       insinto /lib/firmware
+       doins regulatory.db regulatory.db.p7s
+       fi
+       doman -i18n= regulatory.bin.5 regulatory.db.5
+       dodoc README db.txt
+}

diff --git a/net-wireless/wireless-regdb/wireless-regdb-20220812.ebuild 
b/net-wireless/wireless-regdb/wireless-regdb-20220812.ebuild
index b684d0aeffa7..2454742db728 100644
--- a/net-wireless/wireless-regdb/wireless-regdb-20220812.ebuild
+++ b/net-wireless/wireless-regdb/wireless-regdb-20220812.ebuild
@@ -3,21 +3,54 @@
 
 EAPI=8
 
+inherit linux-info
+
 MY_P="wireless-regdb-${PV:0:4}.${PV:4:2}.${PV:6:2}"
-DESCRIPTION="Binary regulatory database for CRDA"
+DESCRIPTION="Regulatory database for Linux"
 
HOMEPAGE="https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb";
-SRC_URI="https://www.kernel.org/pub/software/network/${PN}/${MY_P}.tar.xz";
+SRC_URI="https://mirrors.edge.kernel.org/pub/software/network/${PN}/${MY_P}.tar.xz";
 S="${WORKDIR}/${MY_P}"
 
 LICENSE="ISC"
 SLOT="0"
 KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv 
~sparc ~x86"
+IUSE="crda"
+
+RDEPEND="crda? ( net-wireless/crda )"
+
+REQUIRED_USE="kernel_linux"
+
+pkg_pretend() {
+       if kernel_is -ge 4 15; then
+       if linux_config_exists && linux_chkconfig_builtin CFG80211 &&
+               [[ $(linux_chkconfig_string EXTRA_FIRMWARE) != *regulatory.db* 
]]
+       then
+               ewarn "REGULATORY DOMAIN PROBLEM:"
+               ewarn "  With CONFIG_CFG80211=y (built-in), the driver won't be 
able to load regulatory.db from"
+               ewarn "  /lib/firmware, resulting in broken regulatory domain 
support. Please set CONFIG_CFG80211=m"
+               ewarn "  or add regulatory.db and regulatory.db.p7s to 
CONFIG_EXTRA_FIRMWARE."
+       fi
+
+       has_version net-wireless/crda && \
+               ewarn "Starting from kernel version 4.15 net-wireless/crda is 
no longer needed."
+
+       CONFIG_CHECK="EXPERT !CFG80211_CRDA_SUPPORT"
+       WARNING_CFG80211_CRDA_SUPPORT="You can safely disable 
CFG80211_CRDA_SUPPORT"
+       else
+       CONFIG_CHECK="~CFG80211_CRDA_SUPPORT"
+       WARNING_CFG80211_CRDA_SUPPORT="REGULATORY DOMAIN PROBLEM: \
+please enable CFG80211_CRDA_SUPPORT for proper regulatory domain support"
+       fi
+
+       check_extra_config
+}
 
 src_compile() {
-       einfo "Recompiling regulatory.bin from db.txt would break CRDA verify. 
Installing unmodified binary version."
+       true
 }
 
 src_install() {
+       if kernel_is -lt 4 15; then
        # This file is not ABI-specific, and crda itself always hardcodes
        # this path.  So install into a common location for all ABIs to use.
        insinto /usr/lib/crda
@@ -25,13 +58,10 @@ src_install() {
 
        insinto /etc/wireless-regdb/pubkeys
        doins sforshee.key.pub.pem
-
-       # Linux 4.15 now complains if the firmware loader
-       # can't find these files #643520
+       else
        insinto /lib/firmware
-       doins regulatory.db
-       doins regulatory.db.p7s
-
-       doman regulatory.bin.5
+       doins regulatory.db regulatory.db.p7s
+       fi
+       doman -i18n= regulatory.bin.5 regulatory.db.5
        dodoc README db.txt
 }

diff --git a/net-wireless/wireless-regdb/wireless-regdb-20230213.ebuild 
b/net-wireless/wireless-regdb/wireless-regdb-20230213.ebuild
index b684d0aeffa7..2454742db728 100644
--- a/net-wireless/wireless-regdb/wireless-regdb-20230213.ebuild
+++ b/net-wireless/wireless-regdb/wireless-regdb-20230213.ebuild
@@ -3,21 +3,54 @@
 
 EAPI=8
 
+inherit linux-info
+
 MY_P="wireless-regdb-${PV:0:4}.${PV:4:2}.${PV:6:2}"
-DESCRIPTION="Binary regulatory database for CRDA"
+DESCRIPTION="Regulatory database for Linux"
 
HOMEPAGE="https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb";
-SRC_URI="https://www.kernel.org/pub/software/network/${PN}/${MY_P}.tar.xz";
+SRC_URI="https://mirrors.edge.kernel.org/pub/software/network/${PN}/${MY_P}.tar.xz";
 S="${WORKDIR}/${MY_P}"
 
 LICENSE="ISC"
 SLOT="0"
 KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv 
~sparc ~x86"
+IUSE="crda"
+
+RDEPEND="crda? ( net-wireless/crda )"
+
+REQUIRED_USE="kernel_linux"
+
+pkg_pretend() {
+       if kernel_is -ge 4 15; then
+       if linux_config_exists && linux_chkconfig_builtin CFG80211 &&
+               [[ $(linux_chkconfig_string EXTRA_FIRMWARE) != *regulatory.db* 
]]
+       then
+               ewarn "REGULATORY DOMAIN PROBLEM:"
+               ewarn "  With CONFIG_CFG80211=y (built-in), the driver won't be 
able to load regulatory.db from"
+               ewarn "  /lib/firmware, resulting in broken regulatory domain 
support. Please set CONFIG_CFG80211=m"
+               ewarn "  or add regulatory.db and regulatory.db.p7s to 
CONFIG_EXTRA_FIRMWARE."
+       fi
+
+       has_version net-wireless/crda && \
+               ewarn "Starting from kernel version 4.15 net-wireless/crda is 
no longer needed."
+
+       CONFIG_CHECK="EXPERT !CFG80211_CRDA_SUPPORT"
+       WARNING_CFG80211_CRDA_SUPPORT="You can safely disable 
CFG80211_CRDA_SUPPORT"
+       else
+       CONFIG_CHECK="~CFG80211_CRDA_SUPPORT"
+       WARNING_CFG80211_CRDA_SUPPORT="REGULATORY DOMAIN PROBLEM: \
+please enable CFG80211_CRDA_SUPPORT for proper regulatory domain support"
+       fi
+
+       check_extra_config
+}
 
 src_compile() {
-       einfo "Recompiling regulatory.bin from db.txt would break CRDA verify. 
Installing unmodified binary version."
+       true
 }
 
 src_install() {
+       if kernel_is -lt 4 15; then
        # This file is not ABI-specific, and crda itself always hardcodes
        # this path.  So install into a common location for all ABIs to use.
        insinto /usr/lib/crda
@@ -25,13 +58,10 @@ src_install() {
 
        insinto /etc/wireless-regdb/pubkeys
        doins sforshee.key.pub.pem
-
-       # Linux 4.15 now complains if the firmware loader
-       # can't find these files #643520
+       else
        insinto /lib/firmware
-       doins regulatory.db
-       doins regulatory.db.p7s
-
-       doman regulatory.bin.5
+       doins regulatory.db regulatory.db.p7s
+       fi
+       doman -i18n= regulatory.bin.5 regulatory.db.5
        dodoc README db.txt
 }

diff --git a/net-wireless/wireless-regdb/wireless-regdb-20230503.ebuild 
b/net-wireless/wireless-regdb/wireless-regdb-20230503.ebuild
index 5a750ea025a0..2454742db728 100644
--- a/net-wireless/wireless-regdb/wireless-regdb-20230503.ebuild
+++ b/net-wireless/wireless-regdb/wireless-regdb-20230503.ebuild
@@ -3,8 +3,10 @@
 
 EAPI=8
 
+inherit linux-info
+
 MY_P="wireless-regdb-${PV:0:4}.${PV:4:2}.${PV:6:2}"
-DESCRIPTION="Binary regulatory database for CRDA"
+DESCRIPTION="Regulatory database for Linux"
 
HOMEPAGE="https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb";
 
SRC_URI="https://mirrors.edge.kernel.org/pub/software/network/${PN}/${MY_P}.tar.xz";
 S="${WORKDIR}/${MY_P}"
@@ -12,12 +14,43 @@ S="${WORKDIR}/${MY_P}"
 LICENSE="ISC"
 SLOT="0"
 KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv 
~sparc ~x86"
+IUSE="crda"
+
+RDEPEND="crda? ( net-wireless/crda )"
+
+REQUIRED_USE="kernel_linux"
+
+pkg_pretend() {
+       if kernel_is -ge 4 15; then
+       if linux_config_exists && linux_chkconfig_builtin CFG80211 &&
+               [[ $(linux_chkconfig_string EXTRA_FIRMWARE) != *regulatory.db* 
]]
+       then
+               ewarn "REGULATORY DOMAIN PROBLEM:"
+               ewarn "  With CONFIG_CFG80211=y (built-in), the driver won't be 
able to load regulatory.db from"
+               ewarn "  /lib/firmware, resulting in broken regulatory domain 
support. Please set CONFIG_CFG80211=m"
+               ewarn "  or add regulatory.db and regulatory.db.p7s to 
CONFIG_EXTRA_FIRMWARE."
+       fi
+
+       has_version net-wireless/crda && \
+               ewarn "Starting from kernel version 4.15 net-wireless/crda is 
no longer needed."
+
+       CONFIG_CHECK="EXPERT !CFG80211_CRDA_SUPPORT"
+       WARNING_CFG80211_CRDA_SUPPORT="You can safely disable 
CFG80211_CRDA_SUPPORT"
+       else
+       CONFIG_CHECK="~CFG80211_CRDA_SUPPORT"
+       WARNING_CFG80211_CRDA_SUPPORT="REGULATORY DOMAIN PROBLEM: \
+please enable CFG80211_CRDA_SUPPORT for proper regulatory domain support"
+       fi
+
+       check_extra_config
+}
 
 src_compile() {
-       einfo "Recompiling regulatory.bin from db.txt would break CRDA verify. 
Installing unmodified binary version."
+       true
 }
 
 src_install() {
+       if kernel_is -lt 4 15; then
        # This file is not ABI-specific, and crda itself always hardcodes
        # this path.  So install into a common location for all ABIs to use.
        insinto /usr/lib/crda
@@ -25,13 +58,10 @@ src_install() {
 
        insinto /etc/wireless-regdb/pubkeys
        doins sforshee.key.pub.pem
-
-       # Linux 4.15 now complains if the firmware loader
-       # can't find these files #643520
+       else
        insinto /lib/firmware
-       doins regulatory.db
-       doins regulatory.db.p7s
-
-       doman regulatory.bin.5
+       doins regulatory.db regulatory.db.p7s
+       fi
+       doman -i18n= regulatory.bin.5 regulatory.db.5
        dodoc README db.txt
 }

Reply via email to