[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: What's the deal with discover*?



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 <ben@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-kernel@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 <ben@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>

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: