wireless-regdb: update to 2019.06.03
authorZachary Riedlshah <git@zacharyrs.me>
Wed, 5 Jun 2019 10:58:19 +0000 (22:58 +1200)
committerHauke Mehrtens <hauke@hauke-m.de>
Fri, 22 Nov 2019 00:08:28 +0000 (01:08 +0100)
Fixes build issues on a python3 host (issues with the print statement
formatting in the current build).

Includes 100-regdb-write-firmware-file-format-version-code-20.patch and
other fixes.

Closes bugs.openwrt.org/index.php?do=details&task_id=1605.

Uses the tarball as requested.

Signed-off-by: Zachary Riedlshah <git@zacharyrs.me>
(cherry picked from commit ef3f868da0d78adf2490a762ff567cf5b636c213)

package/firmware/wireless-regdb/Makefile
package/firmware/wireless-regdb/patches/100-regdb-write-firmware-file-format-version-code-20.patch [deleted file]

index d06da2c..7fc895b 100644 (file)
@@ -1,22 +1,21 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=wireless-regdb
+PKG_VERSION:=2019.06.03
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git
-PKG_SOURCE_DATE:=2017-10-20
-PKG_SOURCE_VERSION:=4343d359ed5e7404de8803a74df186457b26ab79
-PKG_MIRROR_HASH:=5f5b669f32ae36cb65b1d99efbbbfd42c2983cda32f6448346e3e54ffaba3889
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=@KERNEL/software/network/wireless-regdb/
+PKG_HASH:=cd917ed86b63ce8d93947979f1f18948f03a4ac0ad89ec25227b36ac00dc54bf
 
 PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
 
 include $(INCLUDE_DIR)/package.mk
 
 define Package/wireless-regdb
-  SECTION:=firmware
-  CATEGORY:=Firmware
-  URL:=$(patsubst pub/scm,cgit,$(PKG_SOURCE_URL))
-  TITLE:=Wireless Regulatory Database
+       SECTION:=firmware
+       CATEGORY:=Firmware
+       URL:=https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git/
+       TITLE:=Wireless Regulatory Database
 endef
 
 define Build/Compile
diff --git a/package/firmware/wireless-regdb/patches/100-regdb-write-firmware-file-format-version-code-20.patch b/package/firmware/wireless-regdb/patches/100-regdb-write-firmware-file-format-version-code-20.patch
deleted file mode 100644 (file)
index 0c5c63f..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-From: Johannes Berg <johannes.berg@intel.com>
-Date: Mon, 9 Oct 2017 11:50:57 +0200
-Subject: [PATCH] regdb: write firmware file format (version code 20)
-
-TODO: clean up the Makefile stuff ...
-
-Signed-off-by: Johannes Berg <johannes.berg@intel.com>
----
- create mode 100755 db2fw.py
-
---- a/Makefile
-+++ b/Makefile
-@@ -1,7 +1,5 @@
- # Install prefix
- PREFIX ?= /usr
--CRDA_PATH ?= $(PREFIX)/lib/crda
--CRDA_KEY_PATH ?= $(CRDA_PATH)/pubkeys
- MANDIR ?= $(PREFIX)/share/man/
-@@ -30,39 +28,47 @@ REGDB_AUTHOR ?= $(shell if [ -f $(DISTRO
-               fi)
- REGDB_PRIVKEY ?= ~/.wireless-regdb-$(REGDB_AUTHOR).key.priv.pem
--REGDB_PUBKEY ?= $(REGDB_AUTHOR).key.pub.pem
--
--REGDB_UPSTREAM_PUBKEY ?= sforshee.key.pub.pem
-+REGDB_PUBCERT ?= $(REGDB_AUTHOR).x509.pem
- REGDB_CHANGED = $(shell $(SHA1SUM) -c --status sha1sum.txt >/dev/null 2>&1; \
-         if [ $$? -ne 0 ]; then \
--                echo maintainer-clean $(REGDB_PUBKEY); \
-+                echo maintainer-clean $(REGDB_PUBCERT); \
-         fi)
- .PHONY: all clean mrproper install maintainer-clean install-distro-key
--all: $(REGDB_CHANGED) regulatory.bin sha1sum.txt
-+all: $(REGDB_CHANGED) regulatory.db.p7s sha1sum.txt
- clean:
-       @rm -f *.pyc *.gz
- maintainer-clean: clean
--      @rm -f regulatory.bin
-+      @rm -f regulatory.db regulatory.db.p7s
- mrproper: clean maintainer-clean
--      @echo Removed public key, regulatory.bin and compresed man pages
--      @rm -f $(REGDB_PUBKEY) .custom
-+      @echo Removed public key, regulatory.db* and compressed man pages
-+      @rm -f $(REGDB_PUBCERT) .custom
--regulatory.bin: db.txt $(REGDB_PRIVKEY) $(REGDB_PUBKEY)
--      @echo Generating $@ digitally signed by $(REGDB_AUTHOR)...
--      ./db2bin.py regulatory.bin db.txt $(REGDB_PRIVKEY)
-+regulatory.db: db.txt db2fw.py
-+      @echo "Generating $@"
-+      ./db2fw.py regulatory.db db.txt
-+
-+regulatory.db.p7s: regulatory.db $(REGDB_PRIVKEY) $(REGDB_PUBCERT)
-+      @echo "Signing regulatory.db (by $(REGDB_AUTHOR))..."
-+      @openssl smime -sign \
-+              -signer $(REGDB_PUBCERT) \
-+              -inkey $(REGDB_PRIVKEY) \
-+              -in $< -nosmimecap -binary \
-+              -outform DER -out $@
- sha1sum.txt: db.txt
-       sha1sum $< > $@
--$(REGDB_PUBKEY): $(REGDB_PRIVKEY)
--      @echo "Generating public key for $(REGDB_AUTHOR)..."
--      openssl rsa -in $(REGDB_PRIVKEY) -out $(REGDB_PUBKEY) -pubout -outform PEM
-+$(REGDB_PUBCERT): $(REGDB_PRIVKEY)
-+      @echo "Generating certificate for $(REGDB_AUTHOR)..."
-+      @openssl req -config regulatory.openssl.conf \
-+              -key $(REGDB_PRIVKEY) -days 36500 -utf8 -nodes -batch \
-+              -x509 -outform PEM -out $(REGDB_PUBCERT)
-       @echo $(REGDB_PUBKEY) > .custom
-@@ -97,16 +103,7 @@ install-distro-key: maintainer-clean $(D
- #     make maintainer-clean
- #     make
- #     sudo make install
--install: regulatory.bin.5.gz
--      install -m 755 -d $(DESTDIR)/$(CRDA_PATH)
--      install -m 755 -d $(DESTDIR)/$(CRDA_KEY_PATH)
--      if [ -f .custom ]; then \
--              install -m 644 -t $(DESTDIR)/$(CRDA_KEY_PATH)/ $(shell cat .custom); \
--      fi
--      install -m 644 -t $(DESTDIR)/$(CRDA_KEY_PATH)/ $(REGDB_UPSTREAM_PUBKEY)
--      install -m 644 -t $(DESTDIR)/$(CRDA_PATH)/ regulatory.bin
-+install: regulatory.db.5.gz
-+      install -m 644 -t $(DESTDIR)/$(CRDA_PATH)/ regulatory.db
-       install -m 755 -d $(DESTDIR)/$(MANDIR)/man5/
--      install -m 644 -t $(DESTDIR)/$(MANDIR)/man5/ regulatory.bin.5.gz
--
--uninstall:
--      rm -rf $(DESTDIR)/$(CRDA_PATH)/
-+      install -m 644 -t $(DESTDIR)/$(MANDIR)/man5/ regulatory.db.5.gz
---- a/README
-+++ b/README
-@@ -18,8 +18,8 @@ python module is used by the web viewer
- implemented as a MoinMoin macro (and used on http://wireless.kernel.org)
- to allow viewing the database for verification.
--The dbparse module is also used by db2bin.py, the `compiler', which
--compiles and signs the binary database.
-+The dbparse module is also used by db2bin.py and db2fw.py, the `compilers'
-+that compile the database to its binary formats.
- For more information, please see the CRDA git repository:
---- /dev/null
-+++ b/db2fw.py
-@@ -0,0 +1,133 @@
-+#!/usr/bin/env python
-+
-+from cStringIO import StringIO
-+import struct
-+import hashlib
-+from dbparse import DBParser
-+import sys
-+
-+MAGIC = 0x52474442
-+VERSION = 20
-+
-+if len(sys.argv) < 3:
-+    print 'Usage: %s output-file input-file' % sys.argv[0]
-+    sys.exit(2)
-+
-+def create_rules(countries):
-+    result = {}
-+    for c in countries.itervalues():
-+        for rule in c.permissions:
-+            result[rule] = 1
-+    return result.keys()
-+
-+def create_collections(countries):
-+    result = {}
-+    for c in countries.itervalues():
-+        result[(c.permissions, c.dfs_region)] = 1
-+    return result.keys()
-+
-+
-+def be32(output, val):
-+    output.write(struct.pack('>I', val))
-+def be16(output, val):
-+    output.write(struct.pack('>H', val))
-+
-+class PTR(object):
-+    def __init__(self, output):
-+        self._output = output
-+        self._pos = output.tell()
-+        be16(output, 0)
-+        self._written = False
-+
-+    def set(self, val=None):
-+        if val is None:
-+            val = self._output.tell()
-+        assert val & 3 == 0
-+        self._offset = val
-+        pos = self._output.tell()
-+        self._output.seek(self._pos)
-+        be16(self._output, val >> 2)
-+        self._output.seek(pos)
-+        self._written = True
-+
-+    def get(self):
-+        return self._offset
-+
-+    @property
-+    def written(self):
-+        return self._written
-+
-+p = DBParser()
-+countries = p.parse(file(sys.argv[2]))
-+rules = create_rules(countries)
-+rules.sort(cmp=lambda x, y: cmp(x.freqband, y.freqband))
-+collections = create_collections(countries)
-+collections.sort(cmp=lambda x, y: cmp(x[0][0].freqband, y[0][0].freqband))
-+
-+output = StringIO()
-+
-+# struct regdb_file_header
-+be32(output, MAGIC)
-+be32(output, VERSION)
-+
-+country_ptrs = {}
-+countrynames = countries.keys()
-+countrynames.sort()
-+for alpha2 in countrynames:
-+    coll = countries[alpha2]
-+    output.write(struct.pack('>cc', str(alpha2[0]), str(alpha2[1])))
-+    country_ptrs[alpha2] = PTR(output)
-+output.write('\x00' * 4)
-+
-+reg_rules = {}
-+flags = 0
-+for reg_rule in rules:
-+    freq_range, power_rule = reg_rule.freqband, reg_rule.power
-+    reg_rules[reg_rule] = output.tell()
-+    assert power_rule.max_ant_gain == 0
-+    flags = 0
-+    # convert to new rule flags
-+    assert reg_rule.flags & ~0x899 == 0
-+    if reg_rule.flags & 1<<0:
-+        flags |= 1<<0
-+    if reg_rule.flags & 1<<3:
-+        flags |= 1<<1
-+    if reg_rule.flags & 1<<4:
-+        flags |= 1<<2
-+    if reg_rule.flags & 1<<7:
-+        flags |= 1<<3
-+    if reg_rule.flags & 1<<11:
-+        flags |= 1<<4
-+    rule_len = 16
-+    cac_timeout = 0 # TODO
-+    if not (flags & 1<<2):
-+        cac_timeout = 0
-+    if cac_timeout:
-+        rule_len += 2
-+    output.write(struct.pack('>BBHIII', rule_len, flags, power_rule.max_eirp * 100,
-+                             freq_range.start * 1000, freq_range.end * 1000, freq_range.maxbw * 1000,
-+                             ))
-+    if cac_timeout:
-+        output.write(struct.pack('>H', cac_timeout))
-+    while rule_len % 4:
-+        output.write('\0')
-+        rule_len += 1
-+
-+for coll in collections:
-+    for alpha2 in countrynames:
-+        if (countries[alpha2].permissions, countries[alpha2].dfs_region) == coll:
-+            assert not country_ptrs[alpha2].written
-+            country_ptrs[alpha2].set()
-+    slen = 3
-+    output.write(struct.pack('>BBBx', slen, len(list(coll[0])), coll[1]))
-+    coll = list(coll[0])
-+    for regrule in coll:
-+        be16(output, reg_rules[regrule] >> 2)
-+    if len(coll) % 2:
-+        be16(output, 0)
-+
-+for alpha2 in countrynames:
-+    assert country_ptrs[alpha2].written
-+
-+outfile = open(sys.argv[1], 'w')
-+outfile.write(output.getvalue())