#1079458 esptool: Add Appstream metainfo announcing HW support

Package:
esptool
Source:
esptool
Submitter:
Petter Reinholdtsen
Date:
2025-03-06 13:54:01 UTC
Severity:
normal
Tags:
#1079458#5
Date:
2024-08-23 13:10:26 UTC
From:
To:
Here is a draft patch to add Appstream metainfo XML announcing the
hardware handled by this package.  The USB IDs were fetched from the
kernel module cdc_acm, based on its listing in debian/esptool.udev.  The
change is untested, as I lacked the needed free disk space to install
all dependencies.

Including this information in the package will ensure programs mapping
hardware to packages using Appstream information, like the isenkram
package, will know that this package is useful on machines where the
hardware is discovered.

The appstream metadata file can be checked using this command after
package build:

  appstreamcli validate-tree  --no-net --explain debian/esptool

diff --git a/debian/esptool.install b/debian/esptool.install
new file mode 100644
index 0000000..84f3b9a
--- /dev/null
+++ b/debian/esptool.install
@@ -0,0 +1 @@
+com.github.espressif.esptool.metainfo.xml usr/share/metainfo
diff --git a/debian/patches/1000-appstream-metainfo.patch b/debian/patches/1000-appstream-metainfo.patch
new file mode 100644
index 0000000..b5bc308
--- /dev/null
+++ b/debian/patches/1000-appstream-metainfo.patch
@@ -0,0 +1,159 @@
+Description: Added AppStream metainfo XML with hardware provide info.
+ This allow isenkram to propose this package when the relevant hardware is
+ present.
+Author: Petter Reinholdtsen
+Forwarded: no
+Last-Update: 2024-08-23
+---
+Index: esptool-salsa/com.github.espressif.esptool.metainfo.xml
+===================================================================
+--- /dev/null  1970-01-01 00:00:00.000000000 +0000
++++ esptool-salsa/com.github.espressif.esptool.metainfo.xml    2024-08-23 15:03:35.941332029 +0200
+@@ -0,0 +1,147 @@
++<?xml version="1.0" encoding="UTF-8"?>
++<component>
++  <id>com.github.espressif.esptool</id>
++  <metadata_license>MIT</metadata_license>
++  <name>esptool</name>
++  <summary>create and flash firmware files to ESP8266 and ESP32 chips</summary>
++  <description>
++    <p>Communicate with the ROM bootloader in Espressif ESP8266 and
++    ESP32 chips to fash firmware files, create firmware images or read
++    OTP ROM or flash memory content such is manufacturer or device
++    IDs.</p>
++  </description>
++  <url type="homepage">https://github.com/espressif/esptool</url>
++  <provides>
++    <modalias>usb:*ic02isc02ip00in*</modalias>
++    <modalias>usb:*ic02isc02ip01in*</modalias>
++    <modalias>usb:*ic02isc02ip02in*</modalias>
++    <modalias>usb:*ic02isc02ip03in*</modalias>
++    <modalias>usb:*ic02isc02ip04in*</modalias>
++    <modalias>usb:*ic02isc02ip05in*</modalias>
++    <modalias>usb:*ic02isc02ip06in*</modalias>
++    <modalias>usb:v03EBp0030d*</modalias>
++    <modalias>usb:v0421p0001d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0007d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p000Ed*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p002Fd*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p003Ad*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0042d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0070d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0071d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p007Bd*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0088d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p008Fd*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0094d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0099d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p00A0d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p00ABd*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p00B0d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p00E9d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p00FCd*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0108d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p010Ed*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0128d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0134d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0154d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0178d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p01D0d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p01D4d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p01F5d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0223d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p026Cd*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0275d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p02D9d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p02E3d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0302d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0335d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p03CDd*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0418d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0419d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0420d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0425d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p042Dd*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p042Fd*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0445d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p044Dd*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p046Ed*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0475d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0481d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0486d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p048Ed*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p04B2d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p04C9d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p04CEd*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p04D8d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p04DFd*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p04E6d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p04F0d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0508d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0424p274Ed*</modalias>
++    <modalias>usb:v045Bp023Cd*</modalias>
++    <modalias>usb:v045Bp0248d*</modalias>
++    <modalias>usb:v045Bp024Dd*</modalias>
++    <modalias>usb:v0482p0203d*</modalias>
++    <modalias>usb:v04E2p1400d*</modalias>
++    <modalias>usb:v04E2p1401d*</modalias>
++    <modalias>usb:v04E2p1402d*</modalias>
++    <modalias>usb:v04E2p1403d*</modalias>
++    <modalias>usb:v04E2p1410d*</modalias>
++    <modalias>usb:v04E2p1411d*</modalias>
++    <modalias>usb:v04E2p1412d*</modalias>
++    <modalias>usb:v04E2p1414d*</modalias>
++    <modalias>usb:v04E2p1420d*</modalias>
++    <modalias>usb:v04E2p1422d*</modalias>
++    <modalias>usb:v04E2p1424d*</modalias>
++    <modalias>usb:v04E7p6651d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v04E8p685Dd*</modalias>
++    <modalias>usb:v0572p1321d*</modalias>
++    <modalias>usb:v0572p1324d*</modalias>
++    <modalias>usb:v0572p1328d*</modalias>
++    <modalias>usb:v0572p1329d*</modalias>
++    <modalias>usb:v0572p1340d*</modalias>
++    <modalias>usb:v0572p1349d*</modalias>
++    <modalias>usb:v058Bp0041d*</modalias>
++    <modalias>usb:v05F9p4002d*</modalias>
++    <modalias>usb:v076Dp0006d*</modalias>
++    <modalias>usb:v079Bp000Fd*</modalias>
++    <modalias>usb:v0803p3095d*</modalias>
++    <modalias>usb:v0870p0001d*</modalias>
++    <modalias>usb:v09D8p0320d*</modalias>
++    <modalias>usb:v0ACEp1602d*</modalias>
++    <modalias>usb:v0ACEp1608d*</modalias>
++    <modalias>usb:v0ACEp1611d*</modalias>
++    <modalias>usb:v0C26p0020d*</modalias>
++    <modalias>usb:v0CA6pA050d*</modalias>
++    <modalias>usb:v0E8Dp0003d*</modalias>
++    <modalias>usb:v0E8Dp2000d*</modalias>
++    <modalias>usb:v0E8Dp3329d*</modalias>
++    <modalias>usb:v108Cp0159d*</modalias>
++    <modalias>usb:v108Cp0168d*</modalias>
++    <modalias>usb:v108Cp0169d*</modalias>
++    <modalias>usb:v11CAp0201d*</modalias>
++    <modalias>usb:v1519p0452d*</modalias>
++    <modalias>usb:v1576p03B1d*</modalias>
++    <modalias>usb:v17EFp7000d*</modalias>
++    <modalias>usb:v1965p0018d*</modalias>
++    <modalias>usb:v1BBBp0003d*</modalias>
++    <modalias>usb:v1BC7p0021d*</modalias>
++    <modalias>usb:v1BC7p0023d*</modalias>
++    <modalias>usb:v20DFp0001d*</modalias>
++    <modalias>usb:v2184p001Cd*</modalias>
++    <modalias>usb:v2184p0036d*</modalias>
++    <modalias>usb:v22B8p2D91d*</modalias>
++    <modalias>usb:v22B8p2D92d*</modalias>
++    <modalias>usb:v22B8p2D93d*</modalias>
++    <modalias>usb:v22B8p2D95d*</modalias>
++    <modalias>usb:v22B8p2D96d*</modalias>
++    <modalias>usb:v22B8p2D97d*</modalias>
++    <modalias>usb:v22B8p2D99d*</modalias>
++    <modalias>usb:v22B8p2D9Ad*</modalias>
++    <modalias>usb:v22B8p6425d*</modalias>
++    <modalias>usb:v22B8p7000d*</modalias>
++    <modalias>usb:v27C6p5395d*</modalias>
++    <modalias>usb:v2912p0001d*</modalias>
++    <modalias>usb:v32A7p0000d*</modalias>
++    <modalias>usb:vFFF0p0100d*</modalias>
++  </provides>
++</component>
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..42e8b1a
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+1000-appstream-metainfo.patch

#1079458#10
Date:
2024-12-04 11:49:03 UTC
From:
To:
Is there anything I can do to help with getting the Appstream metadata
XML file into the archive?

#1079458#15
Date:
2025-01-04 10:30:08 UTC
From:
To:
I submitted the patch upstream, including a setup.py change to install
the file in /usr/share/metainfo/, as
<URL:https://github.com/espressif/esptool/pull/1046>.

#1079458#24
Date:
2025-03-06 11:23:31 UTC
From:
To:
Is the esptool package still being maintained?  I notice no upload for
many years and a new upstream available, and no response in this
ticket to my questions.

Note, upstream did not want to maintain the list of supported hardware
and believe it is better fixed on the Debian side, see forwarded
github issue.  If the Debian maintainer do not want to maintain this
list either, I see no point in pushing the issue any further.

#1079458#29
Date:
2025-03-06 11:41:49 UTC
From:
To:
There was an upload by Faidon in 2024, adding to CC:.

Generally speaking, it would seem to me that upstreams are more
suited to maintain such lists than downstreams...

Best,
Chris

#1079458#34
Date:
2025-03-06 11:47:09 UTC
From:
To:
[Chris Hofstaedtler]

I agree.  Feel free to chip in on github if you believe it will help.

In the mean time, my priority is improving Debian with better hardware
to package mappings.  135 packages already announce their supported
hardware using AppStream.  I hope we can make it to 136 with this
package. :)

#1079458#39
Date:
2025-03-06 12:44:29 UTC
From:
To:
Yeah I made three major uploads in 2023-2024, but I very explicitly made
them as -0.1 NMUs: I wanted to see a few things happen, but I did not
want to commit on maintaining this in the longer-term. So while I've
been subscribed to the PTS and had seen this bug when it was first
posted, I refrained from commenting on it since I am not nor want to be
the maintainer. Sorry :)

I do have the bandwidth for maybe another upload if necessary, but I
agree that this package needs a bit more "permanent" love, perhaps under
the auspices of a team like the Electronics team.

(To be clear, I had an ongoing off-list thread with Milan when I made
these uploads who was gracious enough to both welcome these uploads and
to invite me to be a comaintainer.)

With that out of the day, my 2¢ with regards to this bug:

I know very little about AppStream, but this proposal doesn't make sense
to me. cdc_acm is just a driver for modems and serial devices and the
likes. Some ESP32 devices support this interface; for these devices,
cdc_acm creates /dev/ttyACM nodes, that esptool then uses as a transport
for communicating/flashing these devices using a bespoke protocol.

esptool targets only a set of very specific devices, which represent a
tiny fraction of all the possible cdc_acm devices out there. If this
AppStream inclusion means that esptool will be recommended to every CDC
ACM device, then I think that would be very confusing to users and
generally not the right thing to do.

Regards,
Faidon

#1079458#44
Date:
2025-03-06 13:03:10 UTC
From:
To:
[Faidon Liambotis]

Perhaps
<URL: http://www.hungry.com/~pere/blog/121_packages_in_Debian_mapped_to_hardware_for_automatic_recommendation.html >
explain a bit how the AppStream hardware information work.

The initial patch was based on udev rules, which in my experience
generally is a good indicator of hardware specific packages that should
announce their supported hardware using AppStream.  I do not know
esptool enough to say what make sense or not in this specific case.

#1079458#49
Date:
2025-03-06 13:21:22 UTC
From:
To:
++    <modalias>usb:v0421p0001d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p0007d*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p000Ed*ic02isc02ipFFin*</modalias>
++    <modalias>usb:v0421p002Fd*ic02isc02ipFFin*</modalias>
...

these are USB IDs of Nokia phones. Clearly offering esptool for them
makes zero sense. Wherever the data came from, taking it as the
truth seems like a bad plan.

Chris

#1079458#54
Date:
2025-03-06 13:50:35 UTC
From:
To:
[Chris Hofstaedtler]

It is based on debian/esptool.udev listing kernel modules usb-serial and
cdc_acm, and 'modinfo cdc_acm' listing these modalias entries.