The guidelines at https://docs.fedoraproject.org/en-US/packaging-guidelines/AppData/ require all appdata files to be validated with appstream-util validate-relax.
appstream-util validate-relax
However, gnome-software 40.beta has switched to using the appstream implementation from appstream instead: https://gitlab.gnome.org/GNOME/gnome-software/-/merge_requests/583
We should probably switch appdata validation from the metadata library nobody uses any longer to the one that's actually used by gnome-software (and all other app stores in Fedora):
appstreamcli validate --no-net $PATH
Which also means switching BRs from libappstream-glib to appstream.
+1
@rhughes any comment on this?
I just tested the proposed approach on a small scale by adding appstreamcli validation to eleven GUI packages I maintain, and I was unsurprised to find that I did not encounter any practical difficulties. (I retained the appstream-util version for compliance with current guidelines.)
appstreamcli
appstream-util
Yeah, I found that appstreamcli is usually less strict when validating files, so switching over should not cause problems.
Ping. This is also now affecting KDE software. KDE uses appstreamcli validate to ensure their appstream data is valid in their CI but because we use appstreamdata-util our builds fail.
appstreamdata-util
appstream-builder is the tool we use for generate AppStream repodata, which uses appstream-glib instead of appstream, so for that reason alone we need to keep using appstream-util instead of appstreamcli.
appstream-builder
appstream-glib
appstream
So we're stuck using a downstream tool instead of the "official" appstream one which makes our builds fail even though upstream code is fine against appstreamcli?
They are both official, and standards changes don't get implemented unless both projects are going to implement the change. The fact it fails appstream-util means the files are still broken, because it's more strict than appstreamcli in some regards.
Thank you for the additional info @ngompa
Hum ... given that the only place where appstream-glib is involved is in appstream-builder, but all client-side applications use appstream, shouldn't we make sure we verify that they work with both implementations? :smiling_imp:
Sure, if you want. But we can't drop appstream-util verification.
Login to comment on this ticket.