packaging: fix AppStream issues

The AppStream specification includes both a "metainfo" file format,
which can be used (among other things) to provide metadata about a
specific application, as well as a "catalog" file format used to provide
information about the contents of a repository. This patch adds a
"catalog" file for the Jami repos, which seems to be necessary in order
for some graphical package management applications to be able to launch
or uninstall Jami. In particular, this was an issue with GNOME Software
on all the rpm-based distributions supported by Jami (Fedora, openSUSE,
AlmaLinux).

This patch also fixes a few minor noncompliance issues with the existing
metainfo and .desktop files:

- the metainfo and .desktop files were renamed so that the names'
  prefixes match the application's ID as defined by the <id> tag in the
  metainfo file (in our case "net.jami.Jami") [1];

- the <br/> tags in the metainfo file were removed (they are not
  supported -- metainfo files only allow a very limited number of tags,
  not arbitrary html [2]); the list (<ul>) and list item (<li>) tags are
  now used instead;

- the invalid categories "Communication" and "Productivity" were removed
  [3, 4].

[1] https://docs.fedoraproject.org/en-US/packaging-guidelines/AppData/
[2] https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-description
[3] https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-categories
[4] https://specifications.freedesktop.org/menu-spec/latest/category-registry.html

GitLab: #1842
Change-Id: I4a8bab79b6e54d02c08f509d7a9196a0a2e1541e
This commit is contained in:
François-Simon Fauteux-Chapleau
2025-01-07 16:58:21 -05:00
parent 484808a2eb
commit 49d83fd937
9 changed files with 340 additions and 237 deletions

View File

@@ -715,13 +715,13 @@ elseif (NOT APPLE)
# Install .desktop in XDG desktop direcory so that it is recognized
# by the system.
install(
FILES ${DATA_DIR}/jami.desktop
FILES ${DATA_DIR}/net.jami.Jami.desktop
DESTINATION ${JAMI_DATA_PREFIX}/applications)
# Install .desktop in the jami data directory, so that it can be
# copied to the autostart directory by the client.
install(
FILES ${DATA_DIR}/jami.desktop
FILES ${DATA_DIR}/net.jami.Jami.desktop
DESTINATION "${JAMI_DATA_PREFIX}/${PROJECT_NAME}"
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) # 644
@@ -756,9 +756,19 @@ elseif (NOT APPLE)
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps
RENAME jami.xpm)
# AppStream metadata
#
# MetaInfo file:
install(
FILES ${DATA_DIR}/jami.appdata.xml
FILES ${DATA_DIR}/net.jami.Jami.metainfo.xml
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/metainfo)
# Catalog file:
if(NOT DEFINED APPSTREAM_CATALOG_DIR)
set(APPSTREAM_CATALOG_DIR /share/swcatalog/xml)
endif()
install(
FILES ${DATA_DIR}/jami.xml
DESTINATION ${CMAKE_INSTALL_PREFIX}${APPSTREAM_CATALOG_DIR})
# man page
install(