mirror of
https://gitlab.com/kernel-firmware/linux-firmware.git
synced 2025-12-10 07:44:48 +01:00
Merge branch 'mlimonci/update-ci' into 'main'
Some improvements for hosting at gitlab.com See merge request kernel-firmware/linux-firmware!1
This commit is contained in:
commit
5ebb5914a3
7 changed files with 141 additions and 79 deletions
4
.codespell.cfg
Normal file
4
.codespell.cfg
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
[codespell]
|
||||||
|
builtin = clear,informal,en-GB_to_en-US
|
||||||
|
skip = .git,carl9170fw,licence
|
||||||
|
ignore-words-list = fils
|
||||||
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
debian/
|
||||||
26
.pre-commit-config.yaml
Normal file
26
.pre-commit-config.yaml
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
default_stages: [commit]
|
||||||
|
repos:
|
||||||
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
|
rev: v4.0.1
|
||||||
|
hooks:
|
||||||
|
- id: check-executables-have-shebangs
|
||||||
|
- id: forbid-new-submodules
|
||||||
|
- id: check-yaml
|
||||||
|
- id: check-symlinks
|
||||||
|
- id: destroyed-symlinks
|
||||||
|
- repo: https://github.com/ambv/black
|
||||||
|
rev: 22.6.0
|
||||||
|
hooks:
|
||||||
|
- id: black
|
||||||
|
- repo: https://github.com/igorshubovych/markdownlint-cli
|
||||||
|
rev: v0.33.0
|
||||||
|
hooks:
|
||||||
|
- id: markdownlint
|
||||||
|
args: ['--fix']
|
||||||
|
- repo: local
|
||||||
|
hooks:
|
||||||
|
- id: check-whence
|
||||||
|
name: Check whence
|
||||||
|
files: 'WHENCE'
|
||||||
|
language: script
|
||||||
|
entry: ./check_whence.py
|
||||||
6
Makefile
6
Makefile
|
|
@ -6,7 +6,11 @@ FIRMWAREDIR = /lib/firmware
|
||||||
all:
|
all:
|
||||||
|
|
||||||
check:
|
check:
|
||||||
@./check_whence.py
|
@if ! which pre-commit >/dev/null; then \
|
||||||
|
echo "Install pre-commit to check files"; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
@pre-commit run --all-files
|
||||||
|
|
||||||
install:
|
install:
|
||||||
install -d $(DESTDIR)$(FIRMWAREDIR)
|
install -d $(DESTDIR)$(FIRMWAREDIR)
|
||||||
|
|
|
||||||
43
README
43
README
|
|
@ -1,43 +0,0 @@
|
||||||
|
|
||||||
Linux firmware
|
|
||||||
==============
|
|
||||||
|
|
||||||
<http://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git>
|
|
||||||
|
|
||||||
git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
|
|
||||||
|
|
||||||
This repository contains all these firmware images which have been
|
|
||||||
extracted from older drivers, as well various new firmware images which
|
|
||||||
we were never permitted to include in a GPL'd work, but which we _have_
|
|
||||||
been permitted to redistribute under separate cover.
|
|
||||||
|
|
||||||
To submit firmware to this repository, please send either a git binary
|
|
||||||
diff or preferably a git pull request to:
|
|
||||||
linux-firmware@kernel.org
|
|
||||||
and also cc: to related mailing lists.
|
|
||||||
|
|
||||||
If your commit adds new firmware, it must update the WHENCE file to
|
|
||||||
clearly state the license under which the firmware is available, and
|
|
||||||
that it is redistributable. Being redistributable includes ensuring
|
|
||||||
the firmware license provided includes an implicit or explicit
|
|
||||||
patent grant to end users to ensure full functionality of device
|
|
||||||
operation with the firmware. If the license is long and involved, it's
|
|
||||||
permitted to include it in a separate file and refer to it from the
|
|
||||||
WHENCE file ('See LICENSE.foo for details.').
|
|
||||||
And if it were possible, a changelog of the firmware itself.
|
|
||||||
|
|
||||||
Run 'make check' to check that WHENCE is consistent with the
|
|
||||||
repository contents.
|
|
||||||
|
|
||||||
Ideally, your commit should contain a Signed-Off-By: from someone
|
|
||||||
authoritative on the licensing of the firmware in question (i.e. from
|
|
||||||
within the company that owns the code).
|
|
||||||
|
|
||||||
|
|
||||||
WARNING:
|
|
||||||
=======
|
|
||||||
|
|
||||||
Don't send any "CONFIDENTIALITY STATEMENT" in your e-mail, patch or
|
|
||||||
request. Otherwise your firmware _will never be accepted_.
|
|
||||||
|
|
||||||
Maintainers are really busy, so don't expect a prompt reply.
|
|
||||||
52
README.md
Normal file
52
README.md
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
|
||||||
|
# Linux firmware
|
||||||
|
|
||||||
|
This repository contains all these firmware images which have been
|
||||||
|
extracted from older drivers, as well various new firmware images which
|
||||||
|
we were never permitted to include in a GPL'd work, but which we _have_
|
||||||
|
been permitted to redistribute under separate cover.
|
||||||
|
|
||||||
|
The upstream repository is located at <https://gitlab.com/kernel-firmware/linux-firmware.git>.
|
||||||
|
|
||||||
|
## Submitting firmware
|
||||||
|
|
||||||
|
To submit firmware to this repository, please do one of the following:
|
||||||
|
|
||||||
|
* open a MR [upstream](https://gitlab.com/kernel-firmware/linux-firmware)
|
||||||
|
* send a git binary diff to `linux-firmware@kernel.org`
|
||||||
|
* send a git pull request to: `linux-firmware@kernel.org`
|
||||||
|
|
||||||
|
## Quality
|
||||||
|
|
||||||
|
If your commit adds new firmware, it must update the `WHENCE` file to
|
||||||
|
clearly state the license under which the firmware is available, and
|
||||||
|
that it is redistributable. Being redistributable includes ensuring
|
||||||
|
the firmware license provided includes an implicit or explicit
|
||||||
|
patent grant to end users to ensure full functionality of device
|
||||||
|
operation with the firmware. If the license is long and involved, it's
|
||||||
|
permitted to include it in a separate file and refer to it from the
|
||||||
|
`WHENCE` file (IE _'See `LICENSE.foo` for details.'_).
|
||||||
|
And if it were possible, a changelog of the firmware itself.
|
||||||
|
|
||||||
|
To maintain consistent quality on the repository, please run the following
|
||||||
|
before submitting a patch:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
make check
|
||||||
|
```
|
||||||
|
|
||||||
|
If you don't have pre-commit installed, you can install it with:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
pip install pre-commit
|
||||||
|
```
|
||||||
|
|
||||||
|
Your commit **must** contain a `Signed-Off-By:` from someone authoritative on
|
||||||
|
the licensing of the firmware in question (i.e. from within the company
|
||||||
|
that owns the code).
|
||||||
|
|
||||||
|
## Warnings
|
||||||
|
|
||||||
|
1. Don't send any `CONFIDENTIALITY STATEMENT` in your e-mail, patch or
|
||||||
|
request. Otherwise your firmware _will never be accepted_.
|
||||||
|
2. Maintainers are really busy, so don't expect a prompt reply.
|
||||||
|
|
@ -3,48 +3,53 @@
|
||||||
import os, re, sys
|
import os, re, sys
|
||||||
from io import open
|
from io import open
|
||||||
|
|
||||||
|
|
||||||
def list_whence():
|
def list_whence():
|
||||||
with open('WHENCE', encoding='utf-8') as whence:
|
with open("WHENCE", encoding="utf-8") as whence:
|
||||||
for line in whence:
|
for line in whence:
|
||||||
match = re.match(r'(?:File|Source):\s*"(.*)"', line)
|
match = re.match(r'(?:File|Source):\s*"(.*)"', line)
|
||||||
if match:
|
if match:
|
||||||
yield match.group(1)
|
yield match.group(1)
|
||||||
continue
|
continue
|
||||||
match = re.match(r'(?:File|Source):\s*(\S*)', line)
|
match = re.match(r"(?:File|Source):\s*(\S*)", line)
|
||||||
if match:
|
if match:
|
||||||
yield match.group(1)
|
yield match.group(1)
|
||||||
continue
|
continue
|
||||||
match = re.match(r'Licen[cs]e: (?:.*\bSee (.*) for details\.?|(\S*))\n',
|
match = re.match(
|
||||||
line)
|
r"Licen[cs]e: (?:.*\bSee (.*) for details\.?|(\S*))\n", line
|
||||||
|
)
|
||||||
if match:
|
if match:
|
||||||
if match.group(1):
|
if match.group(1):
|
||||||
for name in re.split(r', | and ', match.group(1)):
|
for name in re.split(r", | and ", match.group(1)):
|
||||||
yield name
|
yield name
|
||||||
continue
|
continue
|
||||||
if match.group(2):
|
if match.group(2):
|
||||||
# Just one word - may or may not be a filename
|
# Just one word - may or may not be a filename
|
||||||
if not re.search(r'unknown|distributable', match.group(2),
|
if not re.search(
|
||||||
re.IGNORECASE):
|
r"unknown|distributable", match.group(2), re.IGNORECASE
|
||||||
|
):
|
||||||
yield match.group(2)
|
yield match.group(2)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
||||||
def list_whence_files():
|
def list_whence_files():
|
||||||
with open('WHENCE', encoding='utf-8') as whence:
|
with open("WHENCE", encoding="utf-8") as whence:
|
||||||
for line in whence:
|
for line in whence:
|
||||||
match = re.match(r'File:\s*(.*)', line)
|
match = re.match(r"File:\s*(.*)", line)
|
||||||
if match:
|
if match:
|
||||||
yield match.group(1).replace("\ ", " ").replace("\"", "")
|
yield match.group(1).replace("\ ", " ").replace('"', "")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
||||||
def list_links_list():
|
def list_links_list():
|
||||||
with open('WHENCE', encoding='utf-8') as whence:
|
with open("WHENCE", encoding="utf-8") as whence:
|
||||||
for line in whence:
|
for line in whence:
|
||||||
match = re.match(r'Link:\s*(.*)', line)
|
match = re.match(r"Link:\s*(.*)", line)
|
||||||
if match:
|
if match:
|
||||||
linkname, target = match.group(1).split("->")
|
linkname, target = match.group(1).split("->")
|
||||||
|
|
||||||
linkname = linkname.strip().replace("\ ", " ").replace("\"", "")
|
linkname = linkname.strip().replace("\ ", " ").replace('"', "")
|
||||||
target = target.strip().replace("\ ", " ").replace("\"", "")
|
target = target.strip().replace("\ ", " ").replace('"', "")
|
||||||
|
|
||||||
# Link target is relative to the link
|
# Link target is relative to the link
|
||||||
target = os.path.join(os.path.dirname(linkname), target)
|
target = os.path.join(os.path.dirname(linkname), target)
|
||||||
|
|
@ -53,42 +58,52 @@ def list_links_list():
|
||||||
yield (linkname, target)
|
yield (linkname, target)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
||||||
def list_git():
|
def list_git():
|
||||||
with os.popen('git ls-files') as git_files:
|
with os.popen("git ls-files") as git_files:
|
||||||
for line in git_files:
|
for line in git_files:
|
||||||
yield line.rstrip('\n')
|
yield line.rstrip("\n")
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
ret = 0
|
ret = 0
|
||||||
whence_list = list(list_whence())
|
whence_list = list(list_whence())
|
||||||
whence_files = list(list_whence_files())
|
whence_files = list(list_whence_files())
|
||||||
links_list = list(list_links_list())
|
links_list = list(list_links_list())
|
||||||
known_files = set(name for name in whence_list if not name.endswith('/')) | \
|
known_files = set(name for name in whence_list if not name.endswith("/")) | set(
|
||||||
set(['check_whence.py', 'configure', 'Makefile',
|
[
|
||||||
'README', 'copy-firmware.sh', 'WHENCE'])
|
".gitignore",
|
||||||
known_prefixes = set(name for name in whence_list if name.endswith('/'))
|
".codespell.cfg",
|
||||||
|
".pre-commit-config.yaml",
|
||||||
|
"check_whence.py",
|
||||||
|
"configure",
|
||||||
|
"Makefile",
|
||||||
|
"README.md",
|
||||||
|
"copy-firmware.sh",
|
||||||
|
"WHENCE",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
known_prefixes = set(name for name in whence_list if name.endswith("/"))
|
||||||
git_files = set(list_git())
|
git_files = set(list_git())
|
||||||
|
|
||||||
for name in set(name for name in whence_files if name.endswith('/')):
|
for name in set(name for name in whence_files if name.endswith("/")):
|
||||||
sys.stderr.write('E: %s listed in WHENCE as File, but is directory\n' %
|
sys.stderr.write("E: %s listed in WHENCE as File, but is directory\n" % name)
|
||||||
name)
|
|
||||||
ret = 1
|
ret = 1
|
||||||
|
|
||||||
for name in set(fw for fw in whence_files if whence_files.count(fw) > 1):
|
for name in set(fw for fw in whence_files if whence_files.count(fw) > 1):
|
||||||
sys.stderr.write('E: %s listed in WHENCE twice\n' % name)
|
sys.stderr.write("E: %s listed in WHENCE twice\n" % name)
|
||||||
ret = 1
|
ret = 1
|
||||||
|
|
||||||
for name in set(link for link in whence_files if os.path.islink(link)):
|
for name in set(link for link in whence_files if os.path.islink(link)):
|
||||||
sys.stderr.write('E: %s listed in WHENCE as File, but is a symlink\n' %
|
sys.stderr.write("E: %s listed in WHENCE as File, but is a symlink\n" % name)
|
||||||
name)
|
|
||||||
ret = 1
|
ret = 1
|
||||||
|
|
||||||
for name in set(link[0] for link in links_list if os.path.islink(link[0])):
|
for name in set(link[0] for link in links_list if os.path.islink(link[0])):
|
||||||
sys.stderr.write('E: %s listed in WHENCE as Link, is in tree\n' % name)
|
sys.stderr.write("E: %s listed in WHENCE as Link, is in tree\n" % name)
|
||||||
ret = 1
|
ret = 1
|
||||||
|
|
||||||
for name in sorted(list(known_files - git_files)):
|
for name in sorted(list(known_files - git_files)):
|
||||||
sys.stderr.write('E: %s listed in WHENCE does not exist\n' % name)
|
sys.stderr.write("E: %s listed in WHENCE does not exist\n" % name)
|
||||||
ret = 1
|
ret = 1
|
||||||
|
|
||||||
# A link can point to another link, or to a file...
|
# A link can point to another link, or to a file...
|
||||||
|
|
@ -99,20 +114,22 @@ def main():
|
||||||
dirname = target
|
dirname = target
|
||||||
while True:
|
while True:
|
||||||
dirname = os.path.dirname(dirname)
|
dirname = os.path.dirname(dirname)
|
||||||
if dirname == '':
|
if dirname == "":
|
||||||
break
|
break
|
||||||
valid_targets.add(dirname)
|
valid_targets.add(dirname)
|
||||||
|
|
||||||
for name, target in sorted(links_list):
|
for name, target in sorted(links_list):
|
||||||
if target not in valid_targets:
|
if target not in valid_targets:
|
||||||
sys.stderr.write('E: target %s of link %s in WHENCE'
|
sys.stderr.write(
|
||||||
' does not exist\n' % (target, name))
|
"E: target %s of link %s in WHENCE" " does not exist\n" % (target, name)
|
||||||
|
)
|
||||||
ret = 1
|
ret = 1
|
||||||
|
|
||||||
for name in sorted(list(git_files - known_files)):
|
for name in sorted(list(git_files - known_files)):
|
||||||
# Ignore subdirectory changelogs and GPG detached signatures
|
# Ignore subdirectory changelogs and GPG detached signatures
|
||||||
if (name.endswith('/ChangeLog') or
|
if name.endswith("/ChangeLog") or (
|
||||||
(name.endswith('.asc') and name[:-4] in known_files)):
|
name.endswith(".asc") and name[:-4] in known_files
|
||||||
|
):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Ignore unknown files in known directories
|
# Ignore unknown files in known directories
|
||||||
|
|
@ -120,9 +137,10 @@ def main():
|
||||||
if name.startswith(prefix):
|
if name.startswith(prefix):
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
sys.stderr.write('E: %s not listed in WHENCE\n' % name)
|
sys.stderr.write("E: %s not listed in WHENCE\n" % name)
|
||||||
ret = 1
|
ret = 1
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
|
if __name__ == "__main__":
|
||||||
sys.exit(main())
|
sys.exit(main())
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue