Sync from SUSE:ALP:Source:Standard:1.0 kernel-firmware revision 6628eedc51f8944b5c139a654f2cba05
This commit is contained in:
commit
b4758400d8
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
117
README.build
Normal file
117
README.build
Normal file
@ -0,0 +1,117 @@
|
||||
FILES
|
||||
=====
|
||||
|
||||
topicdefs:
|
||||
Definitions of each flavor (topic) and description;
|
||||
the description is filled into spec file
|
||||
|
||||
topicprovs:
|
||||
Additional Provides and Obsoletes of each topic
|
||||
|
||||
topics.list:
|
||||
Mapping between WHENCE entries and topics.
|
||||
Each line consists of two or more items. The first column is
|
||||
the first word of the WHENCE "Driver:" entry line to match.
|
||||
The second column is the topic/flavor, and the rest columns
|
||||
are the module names. If no module name is provided, the same
|
||||
word as the first column is used as the module name.
|
||||
|
||||
The validity with the latest kernel binary packages can be
|
||||
checked with check-topic.py script below.
|
||||
|
||||
licenses.list:
|
||||
List of license files for each WHENCE entry.
|
||||
|
||||
aliases.list:
|
||||
List of module aliases for each module.
|
||||
This is updated by update-alises.py script below.
|
||||
|
||||
extrawhence:
|
||||
Additional WHENCE entries for the own firmware files.
|
||||
|
||||
kernel-firmware.spec.in:
|
||||
The spec file template. Edit this and generate
|
||||
kernel-firmware.spec dynamically via makespec.sh script.
|
||||
|
||||
makespec.sh:
|
||||
A script to combine the spec template and other info into the
|
||||
final kernel-firmware.spec.
|
||||
|
||||
check-topic.py:
|
||||
A program to check the validity of topics.list. Pass the
|
||||
latest WHENCE file and the kernel RPM files to verify.
|
||||
|
||||
update-aliases.py:
|
||||
A program to update aliases.list from the latest kernel RPM
|
||||
files. Pass kernel RPM files as arguments.
|
||||
|
||||
install-split.sh:
|
||||
A helper script to copy the files based on WHENCE like the
|
||||
above, but also to create a file list for each topic in
|
||||
files-$TOPIC file. The installed files are compressed with
|
||||
xz, as well as symlinks.
|
||||
|
||||
list-license.sh:
|
||||
A helper script to add file list entries for the corresponding
|
||||
license files for each topic. It parses licenses.list.
|
||||
|
||||
get_supplements.sh:
|
||||
A helper script to create Supplements entries for each topic
|
||||
from aliases.list above.
|
||||
|
||||
|
||||
MAINTENANCE WORKS
|
||||
=================
|
||||
|
||||
Upon the update of linux-firmware.git
|
||||
-------------------------------------
|
||||
|
||||
update the kernel-firmware tarball as usual:
|
||||
|
||||
% cd linux-firmware
|
||||
% git archive --format=tar --prefix=kernel-firmware-$version/ -v master ./ \
|
||||
| xz -9 -M 4G --check=crc32 -T 4 > /tmp/kernel-firmware-$version.tar.xz
|
||||
|
||||
Run check-topic.py to verify whether new entries are added:
|
||||
|
||||
% python3 ./check-topic.py /somewhere/WHENCE /rpms/kernel-default-*.rpm
|
||||
|
||||
Update topics.list accordingly if new entry was added or updated in
|
||||
WHENCE:
|
||||
|
||||
If new modules are added, update aliases.list as well:
|
||||
|
||||
% python3 ./update-aliases.py /rpms/kernel-default-*.rpm
|
||||
|
||||
After the update of these files, recreate kernel-firmware.spec by
|
||||
makespec.sh script:
|
||||
|
||||
% sh ./makespec.sh 20190712 < kernel-firmware.spec.in > kernel-firmware.spec
|
||||
|
||||
where the argument is the version of the kernel firmware package.
|
||||
|
||||
And, don't forget to update kernel-firmware.changes accordingly.
|
||||
|
||||
|
||||
Upon the update of kernel binary rpms
|
||||
-------------------------------------
|
||||
|
||||
Again, run check-topic.py and update-aliases.py for the new kernel RPM
|
||||
files, and rebuild kernel-firmware.spec.
|
||||
|
||||
|
||||
Adding own firmware binaries
|
||||
----------------------------
|
||||
|
||||
The new packaging relies purely on WHENCE file for counting the
|
||||
installed files. You have to either patch WHENCE file or put your own
|
||||
stuff into extrawhence file, at least with "Driver:" and "File"
|
||||
entries. The extrawhence file is concatenated to WHENCE file at
|
||||
building a package.
|
||||
|
||||
|
||||
Creating a new kernel-firmware subpackage flavor
|
||||
------------------------------------------------
|
||||
|
||||
Edit topicdefs file and add the new entry, and update topics.list and
|
||||
licenses.list accordingly (these have to be updated manually).
|
8
_constraints
Normal file
8
_constraints
Normal file
@ -0,0 +1,8 @@
|
||||
<constraints>
|
||||
<hardware>
|
||||
<disk>
|
||||
<size unit="G">8</size>
|
||||
</disk>
|
||||
</hardware>
|
||||
</constraints>
|
||||
|
3
_multibuild
Normal file
3
_multibuild
Normal file
@ -0,0 +1,3 @@
|
||||
<multibuild>
|
||||
<package>uncompressed</package>
|
||||
</multibuild>
|
15
_service
Normal file
15
_service
Normal file
@ -0,0 +1,15 @@
|
||||
<services>
|
||||
<service mode="disabled" name="tar_scm">
|
||||
<param name="url">https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git</param>
|
||||
<param name="scm">git</param>
|
||||
<param name="changesgenerate">enable</param>
|
||||
<param name="filename">kernel-firmware</param>
|
||||
<param name="versionformat">%cd</param>
|
||||
<param name="revision">main</param>
|
||||
</service>
|
||||
<service mode="disabled" name="recompress">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">xz</param>
|
||||
</service>
|
||||
<service mode="disabled" name="set_version"/>
|
||||
</services>
|
4
_servicedata
Normal file
4
_servicedata
Normal file
@ -0,0 +1,4 @@
|
||||
<servicedata>
|
||||
<service name="tar_scm">
|
||||
<param name="url">https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git</param>
|
||||
<param name="changesrevision">3677750467cb8286c59462e490df23d8462a84f9</param></service></servicedata>
|
5634
aliases.list
Normal file
5634
aliases.list
Normal file
File diff suppressed because it is too large
Load Diff
BIN
ast_dp501_fw.bin
Normal file
BIN
ast_dp501_fw.bin
Normal file
Binary file not shown.
16
check-topic.py
Normal file
16
check-topic.py
Normal file
@ -0,0 +1,16 @@
|
||||
#!/usr/bin/python3
|
||||
#
|
||||
# A program to check the validity of topics.list
|
||||
#
|
||||
# usage: check-topic.py WHENCE KERNEL-RPMs...
|
||||
#
|
||||
|
||||
from sys import argv
|
||||
from fwtopics import FWTopics
|
||||
|
||||
if __name__ == '__main__':
|
||||
fw = FWTopics()
|
||||
argv.pop(0)
|
||||
fw.parse_whence(argv.pop(0))
|
||||
for arg in argv:
|
||||
fw.scan_firmware(arg, fw.check_module())
|
14
copy-file-ignore-README.patch
Normal file
14
copy-file-ignore-README.patch
Normal file
@ -0,0 +1,14 @@
|
||||
diff --git a/copy-firmware.sh b/copy-firmware.sh
|
||||
index 1ae1e37c37e5..68fbf83ea650 100755
|
||||
--- a/copy-firmware.sh
|
||||
+++ b/copy-firmware.sh
|
||||
@@ -66,6 +66,9 @@ done
|
||||
|
||||
# shellcheck disable=SC2162 # file/folder name can include escaped symbols
|
||||
grep -E '^(RawFile|File):' WHENCE | sed -E -e 's/^(RawFile|File): */\1 /;s/"//g' | while read k f; do
|
||||
+ case "$f" in
|
||||
+ */README) continue;;
|
||||
+ esac
|
||||
test -f "$f" || continue
|
||||
install -d "$destdir/$(dirname "$f")"
|
||||
$verbose "copying/compressing file $f$compext"
|
16
extrawhence
Normal file
16
extrawhence
Normal file
@ -0,0 +1,16 @@
|
||||
--------------------------------------------------------------------------
|
||||
|
||||
Driver: ast - A-Speed graphics driver
|
||||
|
||||
File: ast_dp501_fw.bin
|
||||
|
||||
Generated from header file of xf86-video-ast: MIT/X11 License
|
||||
|
||||
--------------------------------------------------------------------------
|
||||
|
||||
Driver: qla2xxx - QLogic firmware
|
||||
|
||||
File: ql2600_fw.bin
|
||||
File: ql2700_fw.bin
|
||||
File: ql8300_fw.bin
|
||||
|
162
fwtopics.py
Normal file
162
fwtopics.py
Normal file
@ -0,0 +1,162 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import sys, string, os, re, subprocess, tempfile, fnmatch
|
||||
|
||||
class FWTopics(object):
|
||||
def __init__(self):
|
||||
self.topics = {}
|
||||
self.firmwares = {}
|
||||
self.aliases = {}
|
||||
self.modules = {}
|
||||
self.modmap = {}
|
||||
self.dirty = False
|
||||
self.read_topics()
|
||||
|
||||
def kernel_binary_rpm(self, file):
|
||||
file = os.path.basename(file)
|
||||
if not fnmatch.fnmatch(file, 'kernel*.rpm'):
|
||||
return False
|
||||
blacklist = ( '*.noarch.rpm', '*.src.rpm', '*.nosrc.rpm',
|
||||
'*-debuginfo*', '*-debugsource*',
|
||||
'*-devel-*', '*-hmac-*',
|
||||
'kernel-docs*', 'kernel-syms-*' )
|
||||
for p in blacklist:
|
||||
if fnmatch.fnmatch(file, p):
|
||||
return False
|
||||
return True
|
||||
|
||||
def modinfo(self, ko, attr):
|
||||
return subprocess.check_output(['/usr/sbin/modinfo', '-F', attr, ko]).decode('utf-8').split('\n')
|
||||
|
||||
def canon_module(self, name):
|
||||
return re.sub('-', '_', name)
|
||||
|
||||
def read_topics(self):
|
||||
with open('topics.list', 'r') as f:
|
||||
for t in f.read().split('\n'):
|
||||
t.rstrip()
|
||||
if t == '':
|
||||
continue
|
||||
if re.match('#', t):
|
||||
continue
|
||||
l = t.split()
|
||||
first = re.sub(r':$', '', l.pop(0))
|
||||
topic = l.pop(0)
|
||||
self.topics[first] = topic
|
||||
if l == []:
|
||||
m = self.canon_module(first)
|
||||
self.modules[first] = [ m ]
|
||||
self.modmap[m] = topic
|
||||
else:
|
||||
self.modules[first] = []
|
||||
for m in l:
|
||||
m = self.canon_module(m)
|
||||
self.modules[first].append(m)
|
||||
self.modmap[m] = topic
|
||||
# print(first, topic, self.modules[first])
|
||||
|
||||
def read_aliases(self):
|
||||
with open('aliases.list', 'r') as f:
|
||||
for t in f.read().split('\n'):
|
||||
t.rstrip()
|
||||
if t == '':
|
||||
continue
|
||||
l = t.split()
|
||||
module = re.sub(r':$', '', l.pop(0))
|
||||
if self.aliases.get(module) == None:
|
||||
self.aliases[module] = []
|
||||
self.aliases[module].append(l.pop(0))
|
||||
|
||||
def write_aliases(self):
|
||||
if self.dirty:
|
||||
print('updating aliases...')
|
||||
with open('aliases.list', 'w') as f:
|
||||
for t in sorted(self.aliases.keys()):
|
||||
for m in sorted(self.aliases[t]):
|
||||
f.write(t + ': ' + m + '\n')
|
||||
self.dirty = False
|
||||
|
||||
def parse_whence(self, file):
|
||||
with open(file, 'r') as f:
|
||||
for t in f.read().split('\n'):
|
||||
t.rstrip()
|
||||
if t == '':
|
||||
continue
|
||||
if re.match('----', t):
|
||||
first = None
|
||||
elif re.match('Driver:', t):
|
||||
t = re.sub(r'^Driver: *', '', t)
|
||||
first = t.split()[0]
|
||||
first = re.sub(r':.*$', '', first)
|
||||
if self.topics.get(first) == None:
|
||||
print('No matching topic entry for:', t)
|
||||
first = None
|
||||
elif re.match(r'File:', t):
|
||||
if first == None:
|
||||
continue
|
||||
t = re.sub(r'^File: *', '', t)
|
||||
t = re.sub('"', '', t)
|
||||
self.firmwares[t] = first
|
||||
elif re.match(r'Link:', t):
|
||||
if first == None:
|
||||
continue
|
||||
t = re.sub(r'^Link: *', '', t)
|
||||
t = re.sub(r' ->.*$', '', t)
|
||||
t = re.sub('"', '', t)
|
||||
self.firmwares[t] = first
|
||||
|
||||
def check_module(self):
|
||||
def __check_module(ko, name):
|
||||
for f in self.modinfo(ko, 'firmware'):
|
||||
if f == '':
|
||||
continue
|
||||
first = self.firmwares.get(f)
|
||||
if first != None:
|
||||
if self.topics[first] == 'SKIP':
|
||||
continue
|
||||
if not name in self.modules[first]:
|
||||
print('Module', name, 'is missing for', first)
|
||||
print(' firmware:', f)
|
||||
return __check_module
|
||||
|
||||
def update_alias(self):
|
||||
def __update_alias(ko, name):
|
||||
if self.modmap.get(name) != None and self.modmap[name] != 'SKIP':
|
||||
for f in self.modinfo(ko, 'alias'):
|
||||
if f == '':
|
||||
continue
|
||||
if re.match(r'^acpi', f):
|
||||
f = re.sub(r'([^:]*):([^:]*)$', r'\1%3A\2', f)
|
||||
if self.aliases.get(name) == None:
|
||||
self.aliases[name] = []
|
||||
if not f in self.aliases[name]:
|
||||
self.aliases[name].append(f)
|
||||
self.dirty = True
|
||||
print('adding alias', name, f)
|
||||
return __update_alias
|
||||
|
||||
def scan_firmware_dir(self, dir, proc):
|
||||
for root, dirs, files in os.walk(dir):
|
||||
for p in files:
|
||||
ko = os.path.join(root, p)
|
||||
name = re.sub(r'\.xz$', '', p)
|
||||
name = re.sub(r'\.zst$', '', p)
|
||||
if not fnmatch.fnmatch(name, '*.ko'):
|
||||
continue
|
||||
name = re.sub(r'\.ko$', '', name)
|
||||
name = self.canon_module(name)
|
||||
proc(ko, name)
|
||||
|
||||
def scan_firmware_rpm(self, rpm, proc):
|
||||
if not self.kernel_binary_rpm(rpm):
|
||||
return
|
||||
with tempfile.TemporaryDirectory() as dir:
|
||||
subprocess.call('rpm2cpio ' + rpm + ' | cpio -i --make-directories -D ' + dir,
|
||||
shell=True)
|
||||
self.scan_firmware_dir(dir, proc)
|
||||
|
||||
def scan_firmware(self, arg, proc):
|
||||
if os.path.isdir(arg):
|
||||
self.scan_firmware_dir(arg, proc)
|
||||
else:
|
||||
self.scan_firmware_rpm(arg, proc)
|
33
get_supplements.sh
Normal file
33
get_supplements.sh
Normal file
@ -0,0 +1,33 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Generate modalias Supplements lines for the given kernel-firmware topic
|
||||
#
|
||||
|
||||
target=$1
|
||||
modules=""
|
||||
|
||||
sorted_modules () {
|
||||
for m in $*; do
|
||||
m=$(echo $m | sed -e's/-/_/g')
|
||||
echo $m
|
||||
done | sort | uniq
|
||||
}
|
||||
|
||||
while read first topic mods; do
|
||||
if [ "$topic" = "$target" ]; then
|
||||
first=${first%:}
|
||||
if [ -z "$mods" ]; then
|
||||
modules="$modules $first"
|
||||
else
|
||||
modules="$modules $mods"
|
||||
fi
|
||||
fi
|
||||
done < topics.list
|
||||
|
||||
smodules=$(sorted_modules $modules)
|
||||
|
||||
for m in $smodules; do
|
||||
grep '^'$m':' aliases.list | sed -e's/^.*: \(.*\)$/Supplements: modalias(\1)/g'
|
||||
done | sort | uniq
|
||||
|
||||
exit 0
|
BIN
iwlwifi-Qu-b0-hr-b0-71.ucode
Normal file
BIN
iwlwifi-Qu-b0-hr-b0-71.ucode
Normal file
Binary file not shown.
BIN
iwlwifi-Qu-b0-jf-b0-71.ucode
Normal file
BIN
iwlwifi-Qu-b0-jf-b0-71.ucode
Normal file
Binary file not shown.
BIN
iwlwifi-Qu-c0-hr-b0-71.ucode
Normal file
BIN
iwlwifi-Qu-c0-hr-b0-71.ucode
Normal file
Binary file not shown.
BIN
iwlwifi-Qu-c0-jf-b0-71.ucode
Normal file
BIN
iwlwifi-Qu-c0-jf-b0-71.ucode
Normal file
Binary file not shown.
BIN
iwlwifi-QuZ-a0-hr-b0-71.ucode
Normal file
BIN
iwlwifi-QuZ-a0-hr-b0-71.ucode
Normal file
Binary file not shown.
BIN
iwlwifi-QuZ-a0-jf-b0-71.ucode
Normal file
BIN
iwlwifi-QuZ-a0-jf-b0-71.ucode
Normal file
Binary file not shown.
47
iwlwifi-WHENCE-fix.patch
Normal file
47
iwlwifi-WHENCE-fix.patch
Normal file
@ -0,0 +1,47 @@
|
||||
diff --git a/WHENCE b/WHENCE
|
||||
index cf805e28f5a7..16a9f1d78d57 100644
|
||||
--- a/WHENCE
|
||||
+++ b/WHENCE
|
||||
@@ -908,6 +908,42 @@ Version: 66.f1c864e0.0
|
||||
File: iwlwifi-ty-a0-gf-a0-66.ucode
|
||||
Version: 66.f1c864e0.0
|
||||
|
||||
+File: iwlwifi-cc-a0-71.ucode
|
||||
+Version: 71.058653f6.0
|
||||
+
|
||||
+File: iwlwifi-Qu-b0-hr-b0-71.ucode
|
||||
+Version: 71.058653f6.0
|
||||
+
|
||||
+File: iwlwifi-Qu-b0-jf-b0-71.ucode
|
||||
+Version: 71.058653f6.0
|
||||
+
|
||||
+File: iwlwifi-Qu-c0-hr-b0-71.ucode
|
||||
+Version: 71.058653f6.0
|
||||
+
|
||||
+File: iwlwifi-Qu-c0-jf-b0-71.ucode
|
||||
+Version: 71.058653f6.0
|
||||
+
|
||||
+File: iwlwifi-QuZ-a0-hr-b0-71.ucode
|
||||
+Version: 71.058653f6.0
|
||||
+
|
||||
+File: iwlwifi-QuZ-a0-jf-b0-71.ucode
|
||||
+Version: 71.058653f6.0
|
||||
+
|
||||
+File: iwlwifi-ty-a0-gf-a0-71.ucode
|
||||
+Version: 71.058653f6.0
|
||||
+
|
||||
+File: iwlwifi-so-a0-gf4-a0-71.ucode
|
||||
+Version: 71.058653f6.0
|
||||
+
|
||||
+File: iwlwifi-so-a0-gf-a0-71.ucode
|
||||
+Version: 71.058653f6.0
|
||||
+
|
||||
+File: iwlwifi-so-a0-hr-b0-71.ucode
|
||||
+Version: 71.058653f6.0
|
||||
+
|
||||
+File: iwlwifi-so-a0-jf-b0-71.ucode
|
||||
+Version: 71.058653f6.0
|
||||
+
|
||||
File: iwlwifi-cc-a0-72.ucode
|
||||
Version: 72.daa05125.0
|
||||
|
BIN
iwlwifi-cc-a0-71.ucode
Normal file
BIN
iwlwifi-cc-a0-71.ucode
Normal file
Binary file not shown.
BIN
iwlwifi-so-a0-gf-a0-71.ucode
Normal file
BIN
iwlwifi-so-a0-gf-a0-71.ucode
Normal file
Binary file not shown.
BIN
iwlwifi-so-a0-gf4-a0-71.ucode
Normal file
BIN
iwlwifi-so-a0-gf4-a0-71.ucode
Normal file
Binary file not shown.
BIN
iwlwifi-so-a0-hr-b0-71.ucode
Normal file
BIN
iwlwifi-so-a0-hr-b0-71.ucode
Normal file
Binary file not shown.
BIN
iwlwifi-so-a0-jf-b0-71.ucode
Normal file
BIN
iwlwifi-so-a0-jf-b0-71.ucode
Normal file
Binary file not shown.
BIN
iwlwifi-ty-a0-gf-a0-71.ucode
Normal file
BIN
iwlwifi-ty-a0-gf-a0-71.ucode
Normal file
Binary file not shown.
BIN
kernel-firmware-20240201.tar.xz
(Stored with Git LFS)
Normal file
BIN
kernel-firmware-20240201.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
1
kernel-firmware-rpmlintrc
Normal file
1
kernel-firmware-rpmlintrc
Normal file
@ -0,0 +1 @@
|
||||
addFilter("arch-independent-package-contains-binary-or-object")
|
4258
kernel-firmware.changes
Normal file
4258
kernel-firmware.changes
Normal file
File diff suppressed because it is too large
Load Diff
7031
kernel-firmware.spec
Normal file
7031
kernel-firmware.spec
Normal file
File diff suppressed because it is too large
Load Diff
206
kernel-firmware.spec.in
Normal file
206
kernel-firmware.spec.in
Normal file
@ -0,0 +1,206 @@
|
||||
#
|
||||
# spec file for package kernel-firmware
|
||||
#
|
||||
# Copyright (c) 2024 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%global flavor @BUILD_FLAVOR@%{nil}
|
||||
%if 0%{?suse_version} < 1550
|
||||
%define _firmwaredir /lib/firmware
|
||||
%endif
|
||||
%define __ksyms_path ^%{_firmwaredir}
|
||||
%define version_unconverted @@VERSION@@
|
||||
# Force bzip2 instead of lzma compression (bsc#1176981)
|
||||
%define _binary_payload w9.bzdio
|
||||
Name: kernel-firmware
|
||||
Version: @@VERSION@@
|
||||
Release: 0
|
||||
Summary: Linux kernel firmware files
|
||||
License: GPL-2.0-only AND SUSE-Firmware AND GPL-2.0-or-later AND MIT
|
||||
Group: System/Kernel
|
||||
URL: https://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/
|
||||
# Created via OSC service
|
||||
Source0: kernel-firmware-%{version}.tar.xz
|
||||
Source1: extrawhence
|
||||
Source2: ast_dp501_fw.bin
|
||||
Source8: ql2600_fw.bin
|
||||
Source9: ql2700_fw.bin
|
||||
Source10: ql8300_fw.bin
|
||||
Source99: kernel-firmware-rpmlintrc
|
||||
# for compatibility with SLE15-SP4 kernel (bsc#1209681)
|
||||
Source200: iwlwifi-cc-a0-71.ucode
|
||||
Source201: iwlwifi-Qu-b0-hr-b0-71.ucode
|
||||
Source202: iwlwifi-Qu-b0-jf-b0-71.ucode
|
||||
Source203: iwlwifi-Qu-c0-hr-b0-71.ucode
|
||||
Source204: iwlwifi-Qu-c0-jf-b0-71.ucode
|
||||
Source205: iwlwifi-QuZ-a0-hr-b0-71.ucode
|
||||
Source206: iwlwifi-QuZ-a0-jf-b0-71.ucode
|
||||
Source207: iwlwifi-so-a0-gf4-a0-71.ucode
|
||||
Source208: iwlwifi-so-a0-gf-a0-71.ucode
|
||||
Source209: iwlwifi-so-a0-hr-b0-71.ucode
|
||||
Source210: iwlwifi-so-a0-jf-b0-71.ucode
|
||||
Source211: iwlwifi-ty-a0-gf-a0-71.ucode
|
||||
# install / build infrastructure
|
||||
Source1001: make-files.sh
|
||||
Source1002: list-license.sh
|
||||
Source1003: get_supplements.sh
|
||||
Source1004: topics.list
|
||||
Source1005: licenses.list
|
||||
Source1006: aliases.list
|
||||
Source1007: topicdefs
|
||||
Source1008: topicprovs
|
||||
Source1009: kernel-firmware.spec.in
|
||||
Source1010: makespec.sh
|
||||
Source1011: fwtopics.py
|
||||
Source1012: check-topic.py
|
||||
Source1013: update-aliases.py
|
||||
Source1014: README.build
|
||||
# workarounds
|
||||
Source1100: qcom-post
|
||||
Source1101: uncompressed-post
|
||||
# workarounds
|
||||
Patch1: copy-file-ignore-README.patch
|
||||
# for compatibility with SLE15-SP4 kernel (bsc#1209681)
|
||||
Patch200: iwlwifi-WHENCE-fix.patch
|
||||
BuildRequires: suse-module-tools
|
||||
Requires(post): %{_bindir}/mkdir
|
||||
Requires(post): %{_bindir}/touch
|
||||
Requires(postun):%{_bindir}/mkdir
|
||||
Requires(postun):%{_bindir}/touch
|
||||
Provides: compat-wireless-firmware = 4.4
|
||||
Obsoletes: compat-wireless-firmware < 4.4
|
||||
BuildArch: noarch
|
||||
@@ALLPROVS@@
|
||||
%if 0%{?suse_version} >= 1550
|
||||
# make sure we have post-usrmerge filesystem package on TW
|
||||
Conflicts: filesystem < 84
|
||||
%endif
|
||||
%if "%{flavor}" == "uncompressed"
|
||||
Provides: kernel-firmware-uncompressed = %{version}
|
||||
%endif
|
||||
|
||||
%description
|
||||
This package contains the raw uncompressed firmware files for Linux kernel
|
||||
drivers. This package is provided only for compatibility with older kernels
|
||||
that do not support the compressed format.
|
||||
|
||||
%package -n ucode-amd
|
||||
Summary: Microcode updates for AMD CPUs
|
||||
Group: System/Kernel
|
||||
Requires(post): %{_bindir}/mkdir
|
||||
Requires(post): %{_bindir}/touch
|
||||
Requires(postun):%{_bindir}/mkdir
|
||||
Requires(postun):%{_bindir}/touch
|
||||
# new style (after 3.12 kernel somewhen)
|
||||
Supplements: modalias(cpu:type%%3Ax86*ven0002*)
|
||||
# old style (before 3.16 kernel)
|
||||
Supplements: modalias(x86cpu:vendor%%3A0002%%3Afamily%%3A*%%3Amodel%%3A*%%3Afeature%%3A*)
|
||||
|
||||
%description -n ucode-amd
|
||||
This package contains the microcode files used by AMD CPUs.
|
||||
|
||||
%package all
|
||||
Summary: Compatibility metapackage for kernel firmware files
|
||||
Group: System/Kernel
|
||||
Requires(post): %{_bindir}/mkdir
|
||||
Requires(post): %{_bindir}/touch
|
||||
Requires(post): dracut >= 049
|
||||
Requires(postun):%{_bindir}/mkdir
|
||||
Requires(postun):%{_bindir}/touch
|
||||
Conflicts: kernel < 5.3
|
||||
Provides: kernel-firmware = %{version}
|
||||
Obsoletes: kernel-firmware <= %{version}
|
||||
Provides: compat-wireless-firmware = 4.4
|
||||
Obsoletes: compat-wireless-firmware < 4.4
|
||||
@@SUBPKGLIST@@
|
||||
%if 0%{?suse_version} >= 1550
|
||||
# make sure we have post-usrmerge filesystem package on TW
|
||||
Conflicts: filesystem < 84
|
||||
%endif
|
||||
|
||||
%description all
|
||||
This package is a catch-all compatibility metapackage for providing
|
||||
all files that have been provided by kernel-firmware package.
|
||||
|
||||
@@SUBPACKAGES@@
|
||||
|
||||
%prep
|
||||
%setup -q -n kernel-firmware-%{version}
|
||||
%patch1 -p1
|
||||
# additional firmwares
|
||||
cat %{SOURCE1} >> WHENCE
|
||||
cp %{SOURCE2} %{SOURCE8} %{SOURCE9} %{SOURCE10} .
|
||||
|
||||
%if 0%{?suse_version} < 1599
|
||||
# revive old iwlwifi firmware for compatibility (bsc#1209681)
|
||||
%patch200 -p1
|
||||
cp %{SOURCE200} .
|
||||
cp %{SOURCE201} .
|
||||
cp %{SOURCE202} .
|
||||
cp %{SOURCE203} .
|
||||
cp %{SOURCE204} .
|
||||
cp %{SOURCE205} .
|
||||
cp %{SOURCE206} .
|
||||
cp %{SOURCE207} .
|
||||
cp %{SOURCE208} .
|
||||
cp %{SOURCE209} .
|
||||
cp %{SOURCE210} .
|
||||
cp %{SOURCE211} .
|
||||
%endif
|
||||
|
||||
%build
|
||||
# nothing to do
|
||||
|
||||
%install
|
||||
mkdir -p %{buildroot}%{_firmwaredir}
|
||||
%if "%{flavor}" == "uncompressed"
|
||||
sh ./copy-firmware.sh --ignore-duplicates %{buildroot}%{_firmwaredir}
|
||||
%else
|
||||
sh ./copy-firmware.sh -v --ignore-duplicates --xz %{buildroot}%{_firmwaredir}
|
||||
sh %{_sourcedir}/make-files.sh -v %{_sourcedir}/topics.list %{buildroot} %{_firmwaredir} < WHENCE
|
||||
sh %{_sourcedir}/list-license.sh < %{_sourcedir}/licenses.list
|
||||
%endif
|
||||
|
||||
%if "%{flavor}" == "uncompressed"
|
||||
@@POST@@
|
||||
%else
|
||||
|
||||
@@POST@@ all
|
||||
@@POST@@ -n ucode-amd
|
||||
@@SUBPKGPOSTS@@
|
||||
%endif
|
||||
|
||||
%if "%{flavor}" == "uncompressed"
|
||||
%files
|
||||
%doc WHENCE README.md
|
||||
%license GPL-2 GPL-3 LICEN[CS]E.*
|
||||
%{_firmwaredir}
|
||||
%exclude %{_firmwaredir}/amd-ucode
|
||||
%exclude %{_firmwaredir}/amd-ucode/*
|
||||
|
||||
%else
|
||||
%files all
|
||||
%doc WHENCE README.md
|
||||
|
||||
%files -n ucode-amd
|
||||
%doc amd-ucode/README
|
||||
%license LICENSE.amd-ucode
|
||||
%dir %{_firmwaredir}
|
||||
%{_firmwaredir}/amd-ucode
|
||||
|
||||
@@SUBPKGFILES@@
|
||||
%endif
|
||||
|
||||
%changelog
|
201
licenses.list
Normal file
201
licenses.list
Normal file
@ -0,0 +1,201 @@
|
||||
# FIRSTWORD: TOPIC LICENSES
|
||||
BCM-0bb4-0306: brcm LICENCE.cypress
|
||||
snd-korg1212: sound
|
||||
snd-maestro3: sound
|
||||
snd-ymfpci: sound
|
||||
advansys: platform
|
||||
qla1280: qlogic LICENCE.qla1280
|
||||
kaweth: network LICENCE.kaweth
|
||||
dvb-ttusb-budget: media
|
||||
keyspan: serial GPL-2 GPL-3
|
||||
keyspan_pda: serial GPL-2 GPL-3
|
||||
emi26: sound
|
||||
emi62: sound
|
||||
ti_usb_3410_5052: serial
|
||||
whiteheat: serial
|
||||
cpia2: media
|
||||
dabusb: media
|
||||
vicam: media
|
||||
io_edgeport: serial
|
||||
io_ti: serial
|
||||
dsp56k: platform GPL-2 GPL-3
|
||||
snd-sb16-csp: sound
|
||||
qla2xxx: qlogic LICENCE.qla2xxx
|
||||
orinoco: network LICENCE.agere
|
||||
ar9170: atheros LICENCE.atheros_firmware
|
||||
ath9k_htc: atheros LICENCE.atheros_firmware LICENCE.open-ath9k-htc-firmware
|
||||
cassini: platform
|
||||
slicoss: network
|
||||
sxg: network
|
||||
cxgb3: chelsio
|
||||
cxgb4: chelsio LICENCE.chelsio_firmware
|
||||
e100: network LICENCE.e100
|
||||
acenic: network
|
||||
tg3: network
|
||||
starfire: network
|
||||
libertas: marvell LICENCE.Marvell LICENCE.OLPC
|
||||
mwl8k: marvell LICENCE.Marvell
|
||||
mwifiex: marvell LICENCE.Marvell
|
||||
iwlwifi: iwlwifi LICENCE.iwlwifi_firmware
|
||||
ipu3-imgu: intel LICENSE.ipu3_firmware
|
||||
intel-ipu6-isys: intel LICENSE.ivsc
|
||||
mei-vsc-hw: intel LICENSE.ivsc
|
||||
cx231xx: media
|
||||
ixp4xx-npe: platform LICENSE.ixp4xx
|
||||
tehuti: network
|
||||
typhoon: network
|
||||
yam: platform
|
||||
pcnet_cs: platform
|
||||
3c589_cs: platform
|
||||
3c574_cs: platform
|
||||
serial_cs: platform GPL-3
|
||||
smc91c92_cs: platform
|
||||
cx23418: media
|
||||
cx23885: media
|
||||
cx23840: media
|
||||
qlogicpti: qlogic
|
||||
myri_sbus: network
|
||||
bnx2x: bnx2
|
||||
bnx2: bnx2
|
||||
netxen_nic: network LICENCE.phanfw
|
||||
dvb-ttpci: media GPL-2 GPL-3
|
||||
snd-wavefront: sound
|
||||
rt61pci: network LICENCE.ralink-firmware.txt
|
||||
rt73usb: network LICENCE.ralink-firmware.txt
|
||||
mt7601u: mediatek LICENCE.ralink_a_mediatek_company_firmware
|
||||
rt2800pci: realtek LICENCE.ralink-firmware.txt
|
||||
rt2860sta: realtek LICENCE.ralink-firmware.txt
|
||||
rt2800usb: realtek LICENCE.ralink-firmware.txt
|
||||
rt2870sta: realtek LICENCE.ralink-firmware.txt
|
||||
usbdux/usbduxfast/usbduxsigma: platform GPL-2
|
||||
xc4000: media LICENCE.xc4000
|
||||
xc5000: media LICENCE.xc5000 LICENCE.xc5000c
|
||||
dib0700: media LICENSE.dib0700
|
||||
ath3k: atheros LICENCE.atheros_firmware
|
||||
mga: platform
|
||||
r128: platform
|
||||
radeon: radeon LICENSE.radeon
|
||||
en8811h: network LICENSE.airoha
|
||||
amdgpu: amdgpu LICENSE.amdgpu
|
||||
s2255drv: platform
|
||||
rtl8192e: realtek
|
||||
lgs8gxx: media
|
||||
ib_qib: qlogic
|
||||
qed: qlogic
|
||||
ueagle-atm: ueagle LICENCE.ueagle-atm4-firmware
|
||||
vxge: network
|
||||
brcmsmac: brcm LICENCE.broadcom_bcm43xx
|
||||
brcmfmac: brcm LICENCE.broadcom_bcm43xx LICENCE.cypress GPL-2
|
||||
wl1251: ti LICENCE.wl1251
|
||||
wl12xx: ti LICENCE.ti-connectivity
|
||||
wl18xx: ti LICENCE.ti-connectivity
|
||||
TI_ST: ti LICENCE.ti-connectivity
|
||||
tlg2300: media
|
||||
r8712u: realtek LICENCE.rtlwifi_firmware.txt
|
||||
rtl8192ce: realtek LICENCE.rtlwifi_firmware.txt
|
||||
rtl8192cu: realtek LICENCE.rtlwifi_firmware.txt
|
||||
rtl8192se: realtek LICENCE.rtlwifi_firmware.txt
|
||||
rtl8192de: realtek LICENCE.rtlwifi_firmware.txt
|
||||
rtl8723e: realtek LICENCE.rtlwifi_firmware.txt
|
||||
rtl8723be: realtek LICENCE.rtlwifi_firmware.txt
|
||||
rtl8723de: realtek LICENCE.rtlwifi_firmware.txt
|
||||
r8723au: realtek LICENCE.rtlwifi_firmware.txt
|
||||
rtl8188ee: realtek LICENCE.rtlwifi_firmware.txt
|
||||
rtl8188eu: realtek LICENCE.rtlwifi_firmware.txt
|
||||
rtl8821ae: realtek LICENCE.rtlwifi_firmware.txt
|
||||
rtl8822be: realtek LICENCE.rtlwifi_firmware.txt
|
||||
rtw88: realtek LICENCE.rtlwifi_firmware.txt rtw88/README
|
||||
rtl8192ee: realtek LICENCE.rtlwifi_firmware.txt
|
||||
rtl8723bs: realtek LICENCE.rtlwifi_firmware.txt
|
||||
rtl8xxxu: realtek LICENCE.rtlwifi_firmware.txt
|
||||
r8169: realtek
|
||||
vt6656: network LICENCE.via_vt6656
|
||||
DFU: atheros LICENCE.atheros_firmware LICENSE.QualcommAtheros_ar3k
|
||||
Atheros: atheros LICENCE.atheros_firmware
|
||||
ath6kl: atheros LICENCE.atheros_firmware
|
||||
ath10k: ath10k ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt ath10k/QCA988X/hw2.0/notice_ath10k_firmware-5.txt ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt ath10k/QCA6174/hw3.0/notice_ath10k_firmware-sdio-6.txt ath10k/QCA9377/hw1.0/notice_ath10k_firmware-sdio-5.txt LICENSE.QualcommAtheros_ath10k
|
||||
ath11k: ath11k ath11k/IPQ6018/hw1.0/Notice.txt LICENSE.QualcommAtheros_ath10k
|
||||
ath12k: ath12k ath12k/WCN7850/hw2.0/Notice.txt LICENSE.QualcommAtheros_ath10k
|
||||
myri10ge: network LICENCE.myri10ge_firmware
|
||||
drxk: media
|
||||
ene-ub6250: platform LICENCE.ene_firmware
|
||||
isci: intel GPL-2
|
||||
ar5523: atheros LICENCE.atheros_firmware
|
||||
s5p-mfc: media
|
||||
carl9170: atheros GPL-2
|
||||
snd-hda-codec-ca0132: sound LICENCE.ca0132
|
||||
btusb: bluetooth LICENCE.ibt_firmware LICENCE.rtlwifi_firmware.txt
|
||||
btmtk_usb: mediatek LICENCE.ralink_a_mediatek_company_firmware
|
||||
rp2: serial
|
||||
go7007: platform LICENCE.go7007
|
||||
ccp: platform LICENSE.amd-sev
|
||||
microcode_amd: SKIP LICENSE.amd-ucode
|
||||
mxu11x0: serial LICENCE.moxa
|
||||
mxuport: serial LICENCE.moxa
|
||||
cw1200: network LICENCE.cw1200
|
||||
BFA/BNA: qlogic
|
||||
qat: intel LICENCE.qat_firmware
|
||||
rsi: platform
|
||||
xhci-rcar: platform LICENCE.r8a779x_usb3
|
||||
snd_soc_sst_acpi: sound LICENCE.IntcSST2
|
||||
as102: media LICENCE.Abilis
|
||||
it9135: media LICENCE.it913x
|
||||
snd_soc_catpt: sound LICENCE.IntcSST2
|
||||
snd_soc_avs: sound LICENCE.adsp_sst
|
||||
snd_intel_sst_core: sound LICENCE.fw_sst_0f28
|
||||
snd-soc-skl: sound LICENCE.adsp_sst
|
||||
smsmdtv: media LICENCE.siano
|
||||
xhci-tegra: nvidia LICENCE.nvidia
|
||||
tegra-vic: nvidia LICENCE.nvidia
|
||||
atusb: network GPL-2 GPL-3
|
||||
qca: bluetooth LICENSE.QualcommAtheros_ath10k qca/NOTICE.txt
|
||||
liquidio: liquidio LICENCE.cavium_liquidio
|
||||
nitrox: platform LICENCE.cavium
|
||||
i915: i915 LICENSE.i915
|
||||
nouveau: nvidia LICENCE.nvidia
|
||||
wilc1000: network LICENSE.atmel
|
||||
hfi1: intel LICENSE.hfi1_firmware
|
||||
knav_qmss_queue: ti LICENCE.ti-keystone
|
||||
mwlwifi: marvell LICENCE.Marvell
|
||||
mtk-vpu: media LICENCE.mediatek
|
||||
mtk_scp: mediatek LICENCE.mediatek
|
||||
btmtk: mediatek LICENCE.mediatek
|
||||
rk3399-dptx: platform LICENCE.rockchip
|
||||
mt76x0: mediatek LICENCE.mediatek
|
||||
mt76x2e: mediatek LICENCE.ralink_a_mediatek_company_firmware
|
||||
mt76x2u: mediatek LICENCE.mediatek
|
||||
mt7615e: mediatek LICENCE.mediatek
|
||||
mt7921: mediatek LICENCE.mediatek
|
||||
mt7922: mediatek LICENCE.mediatek
|
||||
mt7925: mediatek LICENCE.mediatek
|
||||
mt7988: mediatek LICENCE.mediatek
|
||||
nfp: nfp LICENCE.Netronome
|
||||
wil6210: atheros LICENSE.QualcommAtheros_ath10k
|
||||
venus: media LICENSE.qcom qcom/NOTICE.txt
|
||||
imx-sdma: platform LICENSE.sdma_firmware
|
||||
adreno: qcom LICENSE.qcom qcom/NOTICE.txt
|
||||
qcom_q6v5_pas: qcom LICENSE.qcom qcom/NOTICE.txt
|
||||
qcom_q6v5_mss: qcom LICENSE.qcom qcom/NOTICE.txt
|
||||
mlxsw_spectrum: mellanox
|
||||
cdns-mhdp: platform LICENCE.cadence
|
||||
fsl-mc: dpaa2 LICENSE.nxp_mc_firmware
|
||||
mscc-phy: platform LICENCE.microchip
|
||||
meson-vdec: media LICENSE.amlogic_vdec
|
||||
prestera: prestera LICENCE.Marvell
|
||||
lt9611uxc: platform LICENSE.Lontium
|
||||
wfx: platform wfx/LICENCE.wf200
|
||||
wave5: platform LICENCE.cnm
|
||||
rvu_cptpf: platform LICENCE.Marvell
|
||||
amphion: platform LICENSE.amphion_vpu
|
||||
cs35l41_hda: sound LICENSE.cirrus
|
||||
cs42l43: sound LICENSE.cirrus
|
||||
mtk-sof: sound LICENCE.mediatek
|
||||
nxp-sr1xx: platform LICENSE.nxp
|
||||
btnxpuart: platform LICENSE.nxp
|
||||
qcom-sc8280xp: sound LICENCE.linaro
|
||||
amlogic: bluetooth LICENSE.amlogic
|
||||
powervr: platform LICENSE.powervr
|
||||
qcom-sm8550: sound LICENCE.linaro
|
||||
qcom-sm8650: sound LICENCE.linaro
|
||||
ti-tas2781: sound GPL-2 GPL-3
|
||||
ti-tas2563: sound GPL-2 GPL-3
|
26
list-license.sh
Normal file
26
list-license.sh
Normal file
@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Generate license file lists for each kernel-firmware topic
|
||||
#
|
||||
# usage: list-license.sh < licenses.list
|
||||
#
|
||||
|
||||
for f in files-*; do
|
||||
echo '%license WHENCE' >> $f
|
||||
done
|
||||
|
||||
while read first topic licenses; do
|
||||
case "$first" in
|
||||
\#*) continue;;
|
||||
esac
|
||||
test -z "$licenses" && continue
|
||||
for l in $licenses; do
|
||||
echo $l >> files-$topic.license
|
||||
done
|
||||
done
|
||||
|
||||
for l in files-*.license; do
|
||||
f=${l%.license}
|
||||
sort $l | uniq | sed -e's/^\(.*\)$/%license \1/g' >> $f
|
||||
rm -f $l
|
||||
done
|
104
make-files.sh
Normal file
104
make-files.sh
Normal file
@ -0,0 +1,104 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Read WHENCE from stdin create files-xxx for each topic
|
||||
#
|
||||
# usage: make-files.sh [-v] topics.list DESTDIR < WHENCE
|
||||
#
|
||||
|
||||
verbose=:
|
||||
|
||||
if [ x"$1" = x"-v" ]; then
|
||||
verbose=echo
|
||||
shift
|
||||
fi
|
||||
|
||||
topics="$1"
|
||||
DESTDIR="$2"
|
||||
fwdir=${3:-/lib/firmware}
|
||||
dest=$DESTDIR/$fwdir
|
||||
|
||||
do_compress=1
|
||||
|
||||
if [ -n "$do_compress" ]; then
|
||||
cext=".xz"
|
||||
else
|
||||
cext=""
|
||||
fi
|
||||
|
||||
make_dirs () {
|
||||
local f="$1"
|
||||
local d=$(dirname "$f")
|
||||
if [ "$d" != "." ]; then
|
||||
while true; do
|
||||
if ! grep -q '%dir '"$fwdir/$d"'$' files-$topic; then
|
||||
echo "%dir $fwdir/$d" >> files-$topic
|
||||
fi
|
||||
case "$d" in
|
||||
*/*) d=${d%/*};;
|
||||
*) break;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
add_file () {
|
||||
local f="$1"
|
||||
make_dirs "$f"
|
||||
if [ -e "$dest/$f" ]; then
|
||||
echo "\"$fwdir/$f\"" >> files-$topic
|
||||
else
|
||||
echo "\"$fwdir/$f$cext\"" >> files-$topic
|
||||
fi
|
||||
}
|
||||
|
||||
sub="xxx"
|
||||
while read l; do
|
||||
test -z "$l" && continue
|
||||
case "$l" in
|
||||
----*)
|
||||
sub=""
|
||||
topic=""
|
||||
;;
|
||||
Driver:*)
|
||||
test -n "$sub" && continue
|
||||
sub=$(echo "$l" | sed -e's/Driver: *//' -e's/[ :].*$//')
|
||||
m=$(grep -m1 "^$sub": "$topics" | sed -e's/^.*:[[:space:]]*//')
|
||||
test -z "$m" && continue
|
||||
set -- $m
|
||||
topic="$1"
|
||||
if [ "$topic" = "SKIP" ]; then
|
||||
continue
|
||||
fi
|
||||
$verbose "Switching to topic $topic"
|
||||
if [ -n "$topic" ]; then
|
||||
if [ ! -s files-$topic ]; then
|
||||
echo "%dir $fwdir" > files-$topic
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
File:*|RawFile:*)
|
||||
test "$topic" = "SKIP" && continue
|
||||
if [ -z "$topic" ]; then
|
||||
echo "ERROR: no topic found for $l"
|
||||
exit 1
|
||||
fi
|
||||
f=$(echo "$l" | sed -e's/^File: *//' -e's/^RawFile: *//' -e's/"//g' -e's/\\//g')
|
||||
case "$f" in
|
||||
*/README*)
|
||||
continue;;
|
||||
esac
|
||||
add_file "$f"
|
||||
;;
|
||||
Link:*)
|
||||
test "$topic" = "SKIP" && continue
|
||||
if [ -z "$topic" ]; then
|
||||
echo "ERROR: no topic found for $l"
|
||||
exit 1
|
||||
fi
|
||||
f=$(echo "$l" | sed -e's/^Link: *//' -e's/ *->.*$//' -es'/\\//g')
|
||||
add_file "$f"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
exit 0
|
102
makespec.sh
Normal file
102
makespec.sh
Normal file
@ -0,0 +1,102 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# makespec.sh VERSION < kernel-firmware.spec.in > kernel-firmware.spec
|
||||
#
|
||||
|
||||
export LANG=C
|
||||
version="$1"
|
||||
|
||||
topics=$(awk '{print $1}' topicdefs | sort)
|
||||
|
||||
define_subpackage () {
|
||||
local topic="$1"
|
||||
local desc=$(grep '^'"$topic"'[[:space:]]' topicdefs | sed -e's/^[a-zA-Z0-9-]*[[:space:]]*//')
|
||||
echo "%package $topic"
|
||||
echo "Summary: Kernel firmware files for $desc"
|
||||
echo "Group: System/Kernel"
|
||||
echo "Requires(post): /usr/bin/mkdir /usr/bin/touch"
|
||||
echo "Requires(postun):/usr/bin/mkdir /usr/bin/touch"
|
||||
echo "Requires(post): dracut >= 049"
|
||||
echo "Conflicts: kernel < 5.3"
|
||||
echo "Conflicts: kernel-firmware < %{version}"
|
||||
echo "Conflicts: kernel-firmware-uncompressed"
|
||||
echo "%if 0%{?suse_version} >= 1550"
|
||||
echo "# make sure we have post-usrmerge filesystem package on TW"
|
||||
echo "Conflicts: filesystem < 84"
|
||||
echo "%endif"
|
||||
grep "^${topic}:" topicprovs | sed -e's/^[^ \t]*:[[:space:]]*//g'
|
||||
sh ./get_supplements.sh $topic
|
||||
echo
|
||||
echo "%description $topic"
|
||||
echo "This package contains compressed kernel firmware files for"
|
||||
echo "$desc."
|
||||
echo
|
||||
}
|
||||
|
||||
define_post () {
|
||||
local l="$*"
|
||||
if [ -z "$l" -a -f uncompressed-post ]; then
|
||||
cat uncompressed-post
|
||||
return 0
|
||||
fi
|
||||
if [ -n "$l" -a -f "$l"-post ]; then
|
||||
cat "$l"-post
|
||||
return 0
|
||||
fi
|
||||
test -n "$l" && l=" $l"
|
||||
echo "%post$l"
|
||||
echo "%{?regenerate_initrd_post}"
|
||||
echo
|
||||
echo "%postun$l"
|
||||
echo "%{?regenerate_initrd_post}"
|
||||
echo
|
||||
echo "%posttrans$l"
|
||||
echo "%{?regenerate_initrd_posttrans}"
|
||||
}
|
||||
|
||||
sed -e"s/@@VERSION@@/$version/g" | while read line; do
|
||||
if [ "$line" = "@@ALLPROVS@@" ]; then
|
||||
sed -e's/^[^ \t]*:[[:space:]]*//g' topicprovs
|
||||
continue
|
||||
fi
|
||||
if [ "$line" = "@@SUBPKGLIST@@" ]; then
|
||||
for t in $topics; do
|
||||
echo "Requires: %{name}-$t = %{version}"
|
||||
done
|
||||
continue
|
||||
fi
|
||||
if [ "$line" = "@@SUBPKGPROVS@@" ]; then
|
||||
for t in $topics; do
|
||||
echo "Provides: %{name}-$t = %{version}"
|
||||
done
|
||||
continue
|
||||
fi
|
||||
if [ "$line" = "@@SUBPACKAGES@@" ]; then
|
||||
for t in $topics; do
|
||||
define_subpackage $t
|
||||
done
|
||||
continue
|
||||
fi
|
||||
case "$line" in
|
||||
@@POST@@*)
|
||||
define_post $(echo "$line" | sed -e's/^@@POST@@ *//')
|
||||
continue;;
|
||||
esac
|
||||
if [ "$line" = "@@SUBPKGPOSTS@@" ]; then
|
||||
for t in $topics; do
|
||||
echo
|
||||
define_post $t
|
||||
done
|
||||
continue
|
||||
fi
|
||||
if [ "$line" = "@@SUBPKGFILES@@" ]; then
|
||||
for t in $topics; do
|
||||
echo "%files -f files-$t $t"
|
||||
echo
|
||||
done
|
||||
continue
|
||||
fi
|
||||
echo "$line"
|
||||
done
|
||||
|
||||
exit 0
|
27
qcom-post
Normal file
27
qcom-post
Normal file
@ -0,0 +1,27 @@
|
||||
%pre qcom
|
||||
# ugly workaround for changing qcom/LENOVO/21BX to a symlink (bsc#1204103)
|
||||
if [ ! -L %{_firmwaredir}/qcom/LENOVO/21BX ]; then
|
||||
if [ -d %{_firmwaredir}/qcom/LENOVO/21BX ]; then
|
||||
mv %{_firmwaredir}/qcom/LENOVO/21BX %{_firmwaredir}/qcom/LENOVO/21BX.xxxold
|
||||
fi
|
||||
fi
|
||||
|
||||
%post qcom
|
||||
# ugly workaround (bsc#1204103)
|
||||
if [ -d %{_firmwaredir}/qcom/LENOVO/21BX.xxxold ]; then
|
||||
mv %{_firmwaredir}/qcom/LENOVO/21BX %{_firmwaredir}/qcom/LENOVO/21BX.xxxnew
|
||||
mv %{_firmwaredir}/qcom/LENOVO/21BX.xxxold %{_firmwaredir}/qcom/LENOVO/21BX
|
||||
else
|
||||
%{?regenerate_initrd_post}
|
||||
fi
|
||||
|
||||
%postun qcom
|
||||
%{?regenerate_initrd_post}
|
||||
|
||||
%posttrans qcom
|
||||
# ugly workaround (bsc#1204103)
|
||||
if [ -L %{_firmwaredir}/qcom/LENOVO/21BX.xxxnew ]; then
|
||||
rm -rf %{_firmwaredir}/qcom/LENOVO/21BX
|
||||
mv %{_firmwaredir}/qcom/LENOVO/21BX.xxxnew %{_firmwaredir}/qcom/LENOVO/21BX
|
||||
fi
|
||||
%{?regenerate_initrd_posttrans}
|
BIN
ql2600_fw.bin
Normal file
BIN
ql2600_fw.bin
Normal file
Binary file not shown.
BIN
ql2700_fw.bin
Normal file
BIN
ql2700_fw.bin
Normal file
Binary file not shown.
BIN
ql8300_fw.bin
Normal file
BIN
ql8300_fw.bin
Normal file
Binary file not shown.
33
topicdefs
Normal file
33
topicdefs
Normal file
@ -0,0 +1,33 @@
|
||||
amdgpu AMDGPU graphics driver
|
||||
atheros Atheros wireless drivers
|
||||
ath10k Atheros QCA988x WiFi drivers
|
||||
ath11k Atheros Qualcomm WiFi drivers
|
||||
ath12k Atheros Qualcomm WiFi 7 chipset drivers
|
||||
bluetooth various Bluetooth drivers
|
||||
bnx2 Broadcom network drivers
|
||||
brcm Broadcom wireless drivers
|
||||
chelsio Chelsio network drivers
|
||||
dpaa2 NXP Management Complex bus driver
|
||||
i915 Intel i915 graphics driver
|
||||
intel Intel-platform device drivers
|
||||
iwlwifi Intel wireless drivers
|
||||
liquidio Cavium LiquidIO driver
|
||||
marvell Marvell network drivers
|
||||
media various Video4Linux drivers
|
||||
mediatek Mediatek network drivers
|
||||
mellanox Mellanox Spectrum switch driver
|
||||
mwifiex Marvell WiFi fullmac drivers
|
||||
network various network drivers
|
||||
nfp Netronome Flow Processor driver
|
||||
nvidia Nvidia Tegra and graphics drivers
|
||||
platform various platform drivers
|
||||
prestera Marvell Prestera ASIC driver
|
||||
qcom Qualcomm device drivers
|
||||
qlogic QLogic network drivers
|
||||
radeon Radeon graphics driver
|
||||
realtek Realtek wireless drivers
|
||||
serial various serial drivers
|
||||
sound various sound drivers
|
||||
ti Texas Instruments wireless drivers
|
||||
ueagle Eagle IV USB ADSL modem driver
|
||||
usb-network various USB WiFi / Ethernet drivers
|
27
topicprovs
Normal file
27
topicprovs
Normal file
@ -0,0 +1,27 @@
|
||||
atheros: Provides: ath3k-firmware = %{version}
|
||||
atheros: Obsoletes: ath3k-firmware < %{version}
|
||||
brcm: Provides: bcm43xx-firmware:/lib/firmware/brcm/brcmfmac43430-sdio.bin
|
||||
chelsio: Provides: cxgb3-firmware = %{version}
|
||||
chelsio: Obsoletes: cxgb3-firmware < %{version}
|
||||
iwlwifi: Provides: iwl1000-ucode = %{version}
|
||||
iwlwifi: Obsoletes: iwl1000-ucode < %{version}
|
||||
iwlwifi: Provides: iwl3945-ucode = %{version}
|
||||
iwlwifi: Obsoletes: iwl3945-ucode < %{version}
|
||||
iwlwifi: Provides: iwl4965-ucode = %{version}
|
||||
iwlwifi: Obsoletes: iwl4965-ucode < %{version}
|
||||
iwlwifi: Provides: iwl5000-ucode = %{version}
|
||||
iwlwifi: Obsoletes: iwl5000-ucode < %{version}
|
||||
iwlwifi: Provides: iwl5150-ucode = %{version}
|
||||
iwlwifi: Obsoletes: iwl5150-ucode < %{version}
|
||||
iwlwifi: Provides: iwl100-ucode = %{version}
|
||||
iwlwifi: Obsoletes: iwl100-ucode < %{version}
|
||||
iwlwifi: Provides: iwl6000-ucode = %{version}
|
||||
iwlwifi: Obsoletes: iwl6000-ucode < %{version}
|
||||
iwlwifi: Provides: iwl6050-ucode = %{version}
|
||||
iwlwifi: Obsoletes: iwl6050-ucode < %{version}
|
||||
iwlwifi: Provides: iwl6000g2-ucode = %{version}
|
||||
iwlwifi: Obsoletes: iwl6000g2-ucode < %{version}
|
||||
mediatek: Provides: ralink-firmware = %{version}
|
||||
mediatek: Obsoletes: ralink-firmware < %{version}
|
||||
qlogic: Provides: qlogic-firmware = %{version}
|
||||
qlogic: Obsoletes: qlogic-firmware < %{version}
|
212
topics.list
Normal file
212
topics.list
Normal file
@ -0,0 +1,212 @@
|
||||
# FIRSTWORD: TOPIC MODULES...
|
||||
BCM-0bb4-0306: brcm btbcm
|
||||
snd-korg1212: sound
|
||||
snd-maestro3: sound
|
||||
snd-ymfpci: sound
|
||||
advansys: platform
|
||||
qla1280: qlogic
|
||||
kaweth: usb-network
|
||||
dvb-ttusb-budget: media
|
||||
keyspan: serial
|
||||
keyspan_pda: serial
|
||||
emi26: sound
|
||||
emi62: sound
|
||||
ti_usb_3410_5052: serial
|
||||
whiteheat: serial
|
||||
cpia2: media
|
||||
dabusb: media
|
||||
vicam: media gspca_vicam vicam
|
||||
io_edgeport: serial
|
||||
io_ti: serial
|
||||
dsp56k: platform
|
||||
snd-sb16-csp: sound
|
||||
qla2xxx: qlogic
|
||||
orinoco: network
|
||||
ar9170: atheros
|
||||
ath9k_htc: atheros
|
||||
cassini: platform
|
||||
slicoss: network
|
||||
sxg: network
|
||||
cxgb3: chelsio
|
||||
cxgb4: chelsio cxgb4 csiostor
|
||||
e100: network
|
||||
acenic: network
|
||||
tg3: network
|
||||
starfire: network
|
||||
libertas: marvell libertas_tf_usb libertas_sdio libertas_cs usb8xxx btmrvl_sdio
|
||||
mwl8k: marvell
|
||||
mwifiex: mwifiex mwifiex mwifiex_pcie mwifiex_usb mwifiex_sdio btmrvl_sdio
|
||||
iwlwifi: iwlwifi iwlwifi iwl4965 iwl3945
|
||||
ipu3-imgu: intel
|
||||
intel-ipu6-isys: intel
|
||||
mei-vsc-hw: intel
|
||||
cx231xx: media cx25840
|
||||
ixp4xx-npe: platform
|
||||
tehuti: network
|
||||
typhoon: network
|
||||
yam: platform
|
||||
pcnet_cs: platform pcnet_cs serial_cs
|
||||
3c589_cs: platform serial_cs
|
||||
3c574_cs: platform serial_cs
|
||||
serial_cs: platform
|
||||
smc91c92_cs: platform
|
||||
cx23418: media cx18
|
||||
cx23885: media cx25840
|
||||
cx23840: media cx25840
|
||||
qlogicpti: qlogic
|
||||
myri_sbus: network
|
||||
bnx2x: bnx2
|
||||
bnx2: bnx2
|
||||
netxen_nic: network netxen_nic qlcnic
|
||||
dvb-ttpci: media
|
||||
snd-wavefront: sound
|
||||
rt61pci: network
|
||||
rt73usb: usb-network
|
||||
mt7601u: mediatek
|
||||
rt2800pci: realtek
|
||||
rt2860sta: realtek
|
||||
rt2800usb: realtek
|
||||
rt2870sta: realtek
|
||||
usbdux/usbduxfast/usbduxsigma: platform usbdux usbduxfast usbduxsigma
|
||||
xc4000: media
|
||||
xc5000: media
|
||||
dib0700: media dvb_usb_dib0700
|
||||
ath3k: atheros
|
||||
mga: platform
|
||||
r128: platform
|
||||
radeon: radeon radeon amdgpu
|
||||
en8811h: network
|
||||
amdgpu: amdgpu
|
||||
amd_pmf: platform
|
||||
s2255drv: platform
|
||||
rtl8192e: realtek r8192e_pci
|
||||
lgs8gxx: media
|
||||
ib_qib: qlogic
|
||||
qed: qlogic qede qedf qedi
|
||||
ueagle-atm: ueagle
|
||||
vxge: network
|
||||
brcmsmac: brcm
|
||||
brcmfmac: brcm
|
||||
ti-vpe: media
|
||||
wl1251: ti
|
||||
wl12xx: ti wl12xx wl12xx_sdio wl12xx_spi
|
||||
wl18xx: ti wl18xx wlcore
|
||||
TI_ST: ti
|
||||
tlg2300: media poseidon
|
||||
r8712u: realtek
|
||||
rtl8192ce: realtek
|
||||
rtl8192cu: realtek rtl8192cu rtl8xxxu
|
||||
rtl8192se: realtek
|
||||
rtl8192de: realtek
|
||||
rtl8723e: realtek
|
||||
rtl8723be: realtek
|
||||
rtl8723de: realtek
|
||||
r8723au: realtek
|
||||
rtl8188ee: realtek
|
||||
rtl8188eu: realtek rtl8188eu r8188eu
|
||||
rtl8821ae: realtek
|
||||
rtl8822be: realtek rtl8822be r8822be
|
||||
rtw88: realtek rtw88_pci
|
||||
rtw89: realtek rtw89_pci
|
||||
rtl8192ee: realtek
|
||||
rtl8723bs: realtek
|
||||
rtl8xxxu: realtek
|
||||
r8169: realtek
|
||||
r8152: realtek
|
||||
vt6656: usb-network vt6656_stage
|
||||
DFU: atheros ar3k
|
||||
Atheros: atheros ar3k
|
||||
ath6kl: atheros ath6kl_sdio ath6kl_usb
|
||||
ath10k: ath10k ath10k_pci ath10k_sdio ath10k_usb
|
||||
ath11k: ath11k ath11k_pci
|
||||
ath12k: ath12k ath12k_pci
|
||||
myri10ge: network
|
||||
drxk: media
|
||||
ene-ub6250: platform ums_eneub6250
|
||||
isci: intel
|
||||
ar5523: atheros
|
||||
s5p-mfc: media
|
||||
carl9170: atheros
|
||||
snd-hda-codec-ca0132: sound
|
||||
btusb: bluetooth btusb btintel btrtl
|
||||
btmtk_usb: mediatek
|
||||
rp2: serial
|
||||
go7007: platform go7007 saa7134-go7007 go7007-loader
|
||||
ccp: platform
|
||||
microcode_amd: ucode-amd
|
||||
mxu11x0: serial ti_usb_3410_5052
|
||||
mxuport: serial
|
||||
cw1200: network
|
||||
BFA/BNA: qlogic bfa bna
|
||||
qat: intel qat_dh895xcc qat_c3xxx qat_c62x
|
||||
rsi: usb-network rsi rsi_usb rsi_sdio
|
||||
xhci-rcar: platform
|
||||
snd_soc_sst_acpi: sound snd-soc-sst-acpi snd-intel-sst-acpi
|
||||
as102: media
|
||||
it9135: media dvb_usb_af9035
|
||||
snd_soc_catpt: sound
|
||||
snd_soc_avs: sound
|
||||
snd_intel_sst_core: sound
|
||||
snd-soc-skl: sound
|
||||
smsmdtv: media
|
||||
xhci-tegra: nvidia
|
||||
tegra-vic: nvidia tegra_drm
|
||||
atusb: usb-network
|
||||
qca: bluetooth btqca
|
||||
btqca: bluetooth
|
||||
liquidio: liquidio
|
||||
nitrox: platform n5pf
|
||||
i915: i915
|
||||
nouveau: nvidia nouveau
|
||||
wilc1000: network
|
||||
hfi1: intel
|
||||
knav_qmss_queue: ti
|
||||
mwlwifi: marvell
|
||||
mtk-vpu: media
|
||||
mtk_scp: mediatek
|
||||
btmtk: mediatek btmtk btmtkuart btmtksdio
|
||||
rk3399-dptx: platform
|
||||
mt76x0: mediatek mt76x0u mt76x0e
|
||||
mt76x2e: mediatek mt76x2e mt76x2u
|
||||
mt76x2u: mediatek
|
||||
mt7615e: mediatek
|
||||
mt7622: mediatek mt7615e
|
||||
mt7663: mediatek mt7615e
|
||||
mt7915e: mediatek mt7915
|
||||
mt7921: mediatek mt7921e mt7921s mt7921u
|
||||
mt7922: mediatek mt7921e mt7921s mt7921u
|
||||
mt7925: mediatek mt7925e mt7925u
|
||||
mt7988: mediatek
|
||||
nfp: nfp
|
||||
wil6210: atheros
|
||||
venus: media
|
||||
imx-sdma: platform
|
||||
adreno: qcom msm
|
||||
mlxsw_spectrum: mellanox
|
||||
cdns-mhdp: platform
|
||||
fsl-mc: dpaa2
|
||||
mscc-phy: platform
|
||||
meson-vdec: media
|
||||
ice: network
|
||||
inside-secure: platform crypto_safexcel
|
||||
qcom_q6v5_pas: qcom
|
||||
qcom_q6v5_mss: qcom
|
||||
prestera: prestera
|
||||
lt9611uxc: platform lontium-lt9611uxc
|
||||
wfx: platform
|
||||
wave5: platform
|
||||
rvu_cptpf: platform
|
||||
amphion: platform
|
||||
cs35l41_hda: sound snd-hda-scodec-cs35l41-i2c snd-hda-scodec-cs35l41-spi
|
||||
cs42l43: sound
|
||||
mtk-sof: sound snd-sof-mt8186 snd-sof-mt8195
|
||||
nxp-sr1xx: platform
|
||||
btnxpuart: platform
|
||||
qcom-sc8280xp: sound snd-soc-sc8280xp
|
||||
amlogic: bluetooth
|
||||
powervr: platform
|
||||
qcom-sm8550: sound snd-soc-sc8280xp
|
||||
qcom-sm8650: sound snd-soc-sc8280xp
|
||||
ti-tas2781: sound snd-hda-scodec-tas2781-i2c
|
||||
ti-tas2563: sound snd-hda-scodec-tas2781-i2c
|
||||
ast: platform
|
27
uncompressed-post
Normal file
27
uncompressed-post
Normal file
@ -0,0 +1,27 @@
|
||||
%pre
|
||||
# ugly workaround for changing qcom/LENOVO/21BX to a symlink (bsc#1204103)
|
||||
if [ ! -L %{_firmwaredir}/qcom/LENOVO/21BX ]; then
|
||||
if [ -d %{_firmwaredir}/qcom/LENOVO/21BX ]; then
|
||||
mv %{_firmwaredir}/qcom/LENOVO/21BX %{_firmwaredir}/qcom/LENOVO/21BX.xxxold
|
||||
fi
|
||||
fi
|
||||
|
||||
%post
|
||||
# ugly workaround (bsc#1204103)
|
||||
if [ -d %{_firmwaredir}/qcom/LENOVO/21BX.xxxold ]; then
|
||||
mv %{_firmwaredir}/qcom/LENOVO/21BX %{_firmwaredir}/qcom/LENOVO/21BX.xxxnew
|
||||
mv %{_firmwaredir}/qcom/LENOVO/21BX.xxxold %{_firmwaredir}/qcom/LENOVO/21BX
|
||||
else
|
||||
%{?regenerate_initrd_post}
|
||||
fi
|
||||
|
||||
%postun
|
||||
%{?regenerate_initrd_post}
|
||||
|
||||
%posttrans
|
||||
# ugly workaround (bsc#1204103)
|
||||
if [ -L %{_firmwaredir}/qcom/LENOVO/21BX.xxxnew ]; then
|
||||
rm -rf %{_firmwaredir}/qcom/LENOVO/21BX
|
||||
mv %{_firmwaredir}/qcom/LENOVO/21BX.xxxnew %{_firmwaredir}/qcom/LENOVO/21BX
|
||||
fi
|
||||
%{?regenerate_initrd_posttrans}
|
17
update-aliases.py
Normal file
17
update-aliases.py
Normal file
@ -0,0 +1,17 @@
|
||||
#!/usr/bin/python3
|
||||
#
|
||||
# A program to update aliases.list from the given kernel binary rpms
|
||||
#
|
||||
# usage: update-aliases.py KERNEL-RPMs...
|
||||
#
|
||||
|
||||
from sys import argv
|
||||
from fwtopics import FWTopics
|
||||
|
||||
if __name__ == '__main__':
|
||||
fw = FWTopics()
|
||||
fw.read_aliases()
|
||||
argv.pop(0)
|
||||
for arg in argv:
|
||||
fw.scan_firmware(arg, fw.update_alias())
|
||||
fw.write_aliases()
|
Loading…
Reference in New Issue
Block a user