On Sun, 2016-01-10 at 16:44 +0100, Petter Reinholdtsen wrote: [...] > One thing that would help a lot is to get the firmware packages to > announce their firmware using appstream metadata. This would make it a > lot easier to locate the correct firmware package, and would help both > isenkram and all others interested in operating on firmware data. [...]
Like this (patch attached)? Ben. -- Ben Hutchings Power corrupts. Absolute power is kind of neat. - John Lehman, Secretary of the US Navy 1981-1987
From 163f82127633623028cfe408777aaac6dfdd2c87 Mon Sep 17 00:00:00 2001 From: Ben Hutchings <b...@decadent.org.uk> Date: Sun, 10 Jan 2016 18:02:33 +0000 Subject: [PATCH firmware-nonfree] Add AppStream metadata to all packages containing firmware blobs To: debian-ker...@lists.debian.org --- debian/bin/gencontrol.py | 9 +++++++++ debian/changelog | 6 ++++++ debian/rules | 1 + debian/rules.real | 4 ++++ debian/templates/metainfo.xml.firmware.in | 1 + debian/templates/metainfo.xml.in | 12 ++++++++++++ 6 files changed, 33 insertions(+) create mode 100644 debian/templates/metainfo.xml.firmware.in create mode 100644 debian/templates/metainfo.xml.in diff --git a/debian/bin/gencontrol.py b/debian/bin/gencontrol.py index 9fce9b8..4664585 100755 --- a/debian/bin/gencontrol.py +++ b/debian/bin/gencontrol.py @@ -273,11 +273,15 @@ class GenControl(debian_linux.gencontrol.Gencontrol): for link, target in links.items()]) files_desc = ["Contents:"] + firmware_meta_temp = self.templates["metainfo.xml.firmware"] + firmware_meta_list = [] wrap = TextWrapper(width = 71, fix_sentence_endings = True, initial_indent = ' * ', subsequent_indent = ' ').wrap for f in config_entry['files']: + firmware_meta_list.append(self.substitute(firmware_meta_temp, + {'filename': f})) if f in links: continue f, f_real, version = files_real[f] @@ -328,6 +332,11 @@ You must agree to the terms of this license before it is installed.""" makefile.add('binary-indep', cmds = ["$(MAKE) -f debian/rules.real binary-indep %s" % makeflags]) + vars['firmware-list'] = ''.join(firmware_meta_list) + package_meta_temp = self.templates["metainfo.xml"] + # XXX Might need to escape some characters + codecs.open("debian/firmware-%s.metainfo.xml" % package, 'w', 'utf-8').write(self.substitute(package_meta_temp, vars)) + def process_template(self, in_entry, vars): e = Template() for key, value in in_entry.items(): diff --git a/debian/changelog b/debian/changelog index 7d64e5c..844bdd0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +firmware-nonfree (20151207-2) UNRELEASED; urgency=medium + + * Add AppStream metadata to all packages containing firmware blobs + + -- Ben Hutchings <b...@decadent.org.uk> Sun, 10 Jan 2016 17:58:39 +0000 + firmware-nonfree (20151207-1) unstable; urgency=medium * New upstream version diff --git a/debian/rules b/debian/rules index a836df1..d6d3e89 100755 --- a/debian/rules +++ b/debian/rules @@ -70,6 +70,7 @@ maintainerclean: rm -f debian/*.bug-presubj -rm debian/*.copyright -rm debian/*.hook.* + rm -f debian/*.metainfo.xml -rm debian/*.preinst -rm debian/*.postinst -rm debian/*.templates diff --git a/debian/rules.real b/debian/rules.real index da5e040..1def0e3 100644 --- a/debian/rules.real +++ b/debian/rules.real @@ -25,6 +25,10 @@ install: echo ln -s "$$target" "$$link"; \ ln -s "$$target" "$$link"; \ done +ifneq ($(FILES),) + dh_installdirs /usr/share/appdata + dh_install debian/$(PACKAGE_NAME).metainfo.xml /usr/share/appdata +endif dh_bugfiles dh_installchangelogs dh_installdocs -XTODO diff --git a/debian/templates/metainfo.xml.firmware.in b/debian/templates/metainfo.xml.firmware.in new file mode 100644 index 0000000..a555b93 --- /dev/null +++ b/debian/templates/metainfo.xml.firmware.in @@ -0,0 +1 @@ + <firmware type="runtime">@filename@</firmware> diff --git a/debian/templates/metainfo.xml.in b/debian/templates/metainfo.xml.in new file mode 100644 index 0000000..697ce1d --- /dev/null +++ b/debian/templates/metainfo.xml.in @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<component type="firmware"> + <id>org.debian.packages.firmware-@package@</id> + <name>Binary firmware for @desc@</name> + <summary> +Binary firmware for @longdesc@. + </summary> + <metadata_license>CC0-1.0</metadata_license> + <provides> +@firmware-list@ + </provides> +</component>
signature.asc
Description: This is a digitally signed message part