Commit Graph

31 Commits

Author SHA1 Message Date
Emil Velikov 2f0464118f check_whence.py: skip some validation if git ls-files fails
Recently we started running check_whence.py to validate WHENCE before
installing files with copy-firmware.sh. It did not consider the fact
that people may be using the distribution tarball, which lacks the
relevant git metadata.

Throw a warning and skip the relevant validation.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2024-10-18 15:08:24 +00:00
Emil Velikov 8c232721a5 check_whence.py: check the permissions
A handful of in-tree scripts must have the execute bit, as well as all
directories. Everything else should not.

In the past we had multiple commits adding and removing execute bit(s),
so instead we can check before things get in-tree.

With all the firmware files updated to drop the bit (as of last commit),
we can add some tests to enforce it going forward.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2024-10-16 15:52:59 +00:00
Emil Velikov d2fd241fe0 configure: remove unused file
Remove the dummy and unused configure file. Glancing across distributions (Alpine, Arch,
Fedora, CentOS Stream, Gentoo, Debian, Ubuntu) - they don't use it.

It's not mentioned in our README either, so let's just remove it.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2024-10-16 15:52:59 +00:00
Emil Velikov ee8c336ab3 copy-firmware.sh: flesh out and fix dedup-firmware.sh
Flesh out the de-duplication logic in separate script. The copy-firmware.sh is
already complex enough and de-duplication doesn't really fit in there.

In the process we migrate away from the open-coded `ln --relative`. We also
avoid touching symlinks, which are not created by rdfind. Otherwise we end up
"fixing" the folder to folder symlinks (created earlier in the process) and
things explode.

As result we also get a few bonuses:
 - the COPYOPTS shell injection is gone - the variable was never used
 - people can dedup as separate step if/when they choose to do so

Aside: based on the noise in git log and around distros ... I'm wondering if
having the de-duplication as opt-in, would have been better. Is it too late to
change or the ship has sailed?

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2024-10-10 14:33:32 +00:00
Emil Velikov a924bda835 editorconfig: add initial config file
It's a simple format handled by practically every supported platform or program
out there.

Add an initial configuration file, so we reduce the style variation of the files
in-tree.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2024-10-10 14:33:32 +00:00
Emil Velikov 737e6f37c0 check_whence.py: annotate replacement strings as raw
Otherwise python 3.12 throws warnings like below:

.../check_whence.py:40: SyntaxWarning: invalid escape sequence '\ '
  yield match.group(1).replace("\ ", " ").replace('"', "")

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2024-10-10 14:33:32 +00:00
Emil Velikov 1dbbc8fb82 check_whence.py: LC_ALL=C sort -u the filelist
Sort the file list, so it's easier to manage.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2024-10-10 14:33:32 +00:00
Emil Velikov 8a507494f3 check_whence.py: ban link-to-a-link
Using link-to-a-link reduces legibility and changes to the root link,
also changes the leafs. Where the latter may be undesired and in some
cases just wrong.

We have a couple of instances in-tree, so fix them up and ban the
combination.

One particularly good example, why we'd want this is:
https://gitlab.com/kernel-firmware/linux-firmware/-/merge_requests/272

In there we have the following:

    File: ti/tas2781/TAS2XXX1EB30.bin
    [snip]
    Link: TAS2XXX1EB3.bin -> ti/tas2781/TAS2XXX1EB3.bin
    Link: ti/tas2781/TAS2XXX1EB3.bin -> TAS2XXX1EB30.bin
    Link: TAS2XXX1EB30.bin -> ti/tas2781/TAS2XXX1EB30.bin

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2024-10-10 14:33:32 +00:00
Emil Velikov 981b1ab776 check_whence.py: use consistent naming
Namely: file(name) and sym(link) ... which were swapped in a few places.
One of which by yours truly 🤦

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2024-10-10 14:33:32 +00:00
Juerg Haefliger dcab028b36 check_whence: Add a check for duplicate link entries
Verify that there a no duplicate 'Link:' entries in the WHENCE file.

Signed-off-by: Juerg Haefliger <juerg.haefliger@canonical.com>
2024-02-13 01:30:01 +00:00
Mario Limonciello 4d6190714d Add a script for a robot to open up pull requests
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
2023-10-13 13:50:00 -05:00
Mario Limonciello cef80743ca Add new Makefile target to build a deb and rpm package
The package would put all files into /lib/firmware/updates to avoid
conflicting with distro packages.

The package is also intentionally named to avoid conflicts with
distro packages.

Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
2023-10-02 14:19:30 -05:00
Juerg Haefliger 80de4d8a41
check_whence: Recognize RawFile keyword
WHENCE and copy_firmware.sh now support a new keyword RawFile to list
files that must not be compressed. Update check_whence.py to recognize
that.

Signed-off-by: Juerg Haefliger <juerg.haefliger@canonical.com>
Signed-off-by: Josh Boyer <jwboyer@kernel.org>
2023-09-05 12:51:05 -04:00
Mario Limonciello 69e68cde08 Add gitlab ci for calling pre-commit and ci-fairy
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
2023-08-30 22:58:36 -05:00
Mario Limonciello 792115b20c Add Dockerfile used to build CI image
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
2023-08-30 22:58:36 -05:00
Mario Limonciello 408eb34a78 Rewrite README in markdown
This will make it render more nicely if linux-firmware.git moves
to Gitlab or a fork of it is hosted in Gitlab.

Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
2023-08-30 07:54:49 -05:00
Mario Limonciello c442a5002c Add pre-commit hooks and codespell template
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
2023-08-29 17:02:23 -05:00
Mario Limonciello 27fb2f6368 check_whence: reformat using python black
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
2023-08-29 16:57:24 -05:00
Adam Sampson 9e0343cf92
check_whence: Check link targets are valid
This should catch a couple of common errors: reversing the two arguments
to Link, and not making the second argument relative to the first.

Signed-off-by: Adam Sampson <ats@offog.org>
Signed-off-by: Josh Boyer <jwboyer@kernel.org>
2023-07-06 15:35:25 -04:00
Emil Velikov 77f92e0b9d
check_whence: error if symlinks are in-tree
Currently we have no symlinks in-tree. Add a simple check, ensuring they
don't get added in the future.

This allows us to remove the clunky symlink checking code in
copy-firmware.sh

v2:
 - tweak helper to produce link and target (based off Adam's patch)

v3:
 - honour quoted target/linkname

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Signed-off-by: Josh Boyer <jwboyer@kernel.org>
2023-06-25 11:57:45 -04:00
Emil Velikov f2671b1f50
check_whence: error if File: is actually a link
Commits from a few years ago added support for Link entries, over having
the symlinks in-tree.

At the same time, it didn't add a check whether one didn't add a File
entry that is actually a symlink. Do so now, to be on the safe side.

v2:
 - drop copy-firmware.sh changes

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Signed-off-by: Josh Boyer <jwboyer@kernel.org>
2023-06-25 11:57:07 -04:00
Emil Velikov 4b539e7a32
check_whence: strip quotation marks
Earlier commit added check for duplicate entries. Although the commit
was picked without one of its dependencies which removes the quotation
marks in the File entries.

Since the quotation marks are here to stay, escape them as needed in the
script.

Cc: Emil Velikov <emil.l.velikov@gmail.com>
Fixes: 05183b7b ("check_whence: error on duplicate file entries")
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Signed-off-by: Josh Boyer <jwboyer@kernel.org>
2023-06-25 11:56:43 -04:00
Emil Velikov 6c9e0ed536
check_whence: error on directory listed as File
No occurrences in-tree, but it makes sense to sanity check that.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Signed-off-by: Josh Boyer <jwboyer@kernel.org>
2023-05-08 08:38:18 -04:00
Emil Velikov 05183b7bd5
check_whence: error on duplicate file entries
There's little point in copying (or compressing with later patches) the
same files multiple times. So let's error out when duplicate entries are
present.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Signed-off-by: Josh Boyer <jwboyer@kernel.org>
2023-05-08 08:37:54 -04:00
Josh Boyer 6de0c03ff0
Merge branch 'dg2_dmc_v2.8' of git://anongit.freedesktop.org/drm/drm-firmware
Signed-off-by: Josh Boyer <jwboyer@kernel.org>
2022-11-30 07:52:25 -05:00
Brian Norris 94cb0a6837
check_whence: python3/utf-8 support
WHENCE contains non-ASCII characters, so we should specify an encoding.
To get the encoding= arg in python2, we pull open from 'io' directly.

Signed-off-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Josh Boyer <jwboyer@kernel.org>
2020-03-02 08:06:45 -05:00
Brian Norris 7fa32bcc68
Makefile: improve `make check` usefulness
Silence the make echo'ing, so the output is cleaner.

Add an exit code to check_whence.py, so we can get a real failure for
bad WHENCE files.

Signed-off-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Josh Boyer <jwboyer@kernel.org>
2020-03-02 08:06:26 -05:00
Thierry Reding 9cfefbd7fb
Remove duplicate symlinks
Now that the copy-firmware.sh script can create symlinks from the Link:
entries in the WHENCE file on the fly, remove the duplicate symlinks
from the filesystem.

One odd entry was intel/dsp_fw_cnl.bin which was listed both as symlink
and as a regular file. Both entries can be removed since the it's really
a symlink, so it will be recreated at installation time.

While at it, update the check_whence.py script to not look for the
existence of symlinks in the filesystem because they are created on the
fly at installation time by the copy_firmware.sh script.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Josh Boyer <jwboyer@kernel.org>
2019-10-04 18:34:07 -04:00
Josh Boyer c0fb3d9862
check_whence: Add copy-firmware.sh to the list of ignored files
This was added recently as the script to install the firmware files.
Add it to the ignored list so check_whence doesn't complain about it.

Signed-off-by: Josh Boyer <jwboyer@kernel.org>
2019-08-21 08:03:43 -04:00
Hans de Goede be15035deb check_whence.py: Add support for filenames with spaces in them
Some vendors save a couple of cents by not including an eeprom for
wifi parameters on their boards. Instead the driver loads these board
specific parameters through the request_firmware mechanism.

Since these are board specific the filenames also must be board specific,
on x86 DMI strings are used for this and the wifi chipname is postfixed
with $sys_vendor-$product_name from the DMI tables. These DMi variables
may contain spaces.

This commit adds support to check_whence.py for filenames with spaces
in them, after this commit these can be specified by putting double-quotes
around them, e.g "name with spaces.bin".

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Josh Boyer <jwboyer@kernel.org>
2018-12-18 15:35:55 -05:00
Ben Hutchings 7d88736093 Add a metadata consistency check script
The script compares the files listed in WHENCE (or otherwise expected)
and the files known to git, and reports all differences as errors.

Add a 'check' rule to the Makefile that runs this.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
2016-09-26 01:28:45 +01:00