probonopd / go-appimage

Go implementation of AppImage tools
MIT License
760 stars 73 forks source link

fixed misleading AppStream warning #223

Closed lordofbikes closed 2 years ago

lordofbikes commented 2 years ago

The condition for the AppStream file checks appdir/usr/share/metainfo/{APPLICATION}.appdata.xml. But the warning requested appdir/usr/share/metainfo/{APPLICATION}.desktop.appdata.xml.

Also the link to the simple-appstream-generator in this warning was dead.

probonopd commented 2 years ago

Thanks @lordofbikes

lordofbikes commented 2 years ago

I found this when I tried to to silence the warning in LibreCAD AppImage creation. But it makes things more worse :cry:. Don't know how this is related to AppImage/AppImageKit#603, but it seems to be true for go-appimage too.

First I provided the expected librecad.appimage.xml, what results in:

Trying to validate AppStream information with the appstreamcli tool
ERROR appstreamcli: signal: segmentation fault (core dumped)
ERROR: AppStream metainfo file file contains errors. Please fix them. Please see https://www.freedesktop.org/software/appstream/docs/chap-Quickstart.html#sect-Quickstart-DesktopApps
In case of questions regarding the validation, please refer to https://github.com/ximion/appstream

I checked locally appstreamcli validate-tree appdir with librecad.appimage.xml:

librecad.appdata.xml
  W: org.librecad.librecad:~: metainfo-filename-cid-mismatch

Validierung fehlgeschlagen: Warnhinweise: 1, Pedantisch: 1

appstreamcli is version 0.12.10, called from shell gave this warning, but no seg fault.

Renaming librecad.appimage.xml to org.librecad.librecad.appimage.xml satisfied appstreamcli:

~/Projekte/LibreCAD$ appstreamcli validate-tree appdir
org.librecad.librecad.appdata.xml

Validierung war erfolgreich: Pedantisch: 1

So org.librecad.librecad.appimage.xml seems to be valid and the correct name. But it is not recognized by go-appimage.

probonopd commented 2 years ago

Well, it seems like appstreamcli inside the AppImage is entirely crashing on your machine on that file: ERROR appstreamcli: signal: segmentation fault (core dumped). Why might that be?

Unpack the appimagetool AppImage, and try using the appstreamcli contained therein directly on that AppStream file. Will it also segfault?

lordofbikes commented 2 years ago

It's not only my local machine, it first appeared on our GitHub action run after pushing the correct named librecad.appdata.xml. Then I tried local for diagnostic and got a seg fault too.

Using appstreamcli from appimagetool-724-x86_64.AppImage I got this:

~/Projekte/LibreCAD$ ../appimagetool/squashfs-root/usr/bin/appstreamcli --version
AppStream version: 0.12.9
~/Projekte/LibreCAD$ ../appimagetool/squashfs-root/usr/bin/appstreamcli validate-tree appdir
Speicherzugriffsfehler (Speicherabzug geschrieben)
~/Projekte/LibreCAD$ ../appimagetool/squashfs-root/usr/bin/appstreamcli validate appdir/usr/share/metainfo/org.librecad.librecad.appdata.xml 
Speicherzugriffsfehler (Speicherabzug geschrieben)

My local appstreamcli (0.12.10) doesn't seg fault:

~/Projekte/LibreCAD$ appstreamcli --version
AppStream-Version: 0.12.10
~/Projekte/LibreCAD$ appstreamcli validate-tree appdir
org.librecad.librecad.appdata.xml

Validierung war erfolgreich: Pedantisch: 1
~/Projekte/LibreCAD$ appstreamcli validate appdir/usr/share/metainfo/org.librecad.librecad.appdata.xml 

Validierung war erfolgreich: Pedantisch: 1

This is the used appdata.xml: https://github.com/LibreCAD/LibreCAD/blob/master/desktop/org.librecad.librecad.appdata.xml It is in appdir/usr/share/metainfo/ when appimagetool is run.

lordofbikes commented 2 years ago

I believe the GitHub action used previous appimagetool-722-x86_64.AppImage. Doesn't make any difference I think, just to be correct :wink: