I am posting this here because could not fully master the creation deb packages and PPA. I stumbled too many times (and still stumble) on those things that I didn’t even think about while preparing rpm packages fixes for openSUSE and Fedora and burned out.
Patch for GNOME Software from 22.04, which separate some associations like the last version one.
file.patch
diff -ruN a/contrib/gnome-software.spec.in b/contrib/gnome-software.spec.in
--- a/contrib/gnome-software.spec.in 2022-03-18 11:09:27.885578000 +0300
+++ b/contrib/gnome-software.spec.in 2023-10-24 18:02:56.123336857 +0300
@@ -134,7 +134,9 @@
%doc AUTHORS README.md
%license COPYING
%{_bindir}/gnome-software
-%{_datadir}/applications/gnome-software-local-file.desktop
+%{_datadir}/applications/gnome-software-local-file-flatpak.desktop
+%{_datadir}/applications/gnome-software-local-file-fwupd.desktop
+%{_datadir}/applications/gnome-software-local-file-packagekit.desktop
%{_datadir}/applications/org.gnome.Software.desktop
%dir %{_datadir}/gnome-software
%{_datadir}/gnome-software/*.png
diff -ruN a/po/POTFILES.in b/po/POTFILES.in
--- a/po/POTFILES.in 2022-03-18 11:09:27.916578000 +0300
+++ b/po/POTFILES.in 2023-10-24 18:04:07.883802228 +0300
@@ -2,7 +2,10 @@
data/org.gnome.software.external-appstream.policy.in.in
data/org.gnome.software.gschema.xml
gs-install-appstream/gs-install-appstream.c
-src/gnome-software-local-file.desktop.in
+src/gnome-software-local-file-flatpak.desktop.in
+src/gnome-software-local-file-fwupd.desktop.in
+src/gnome-software-local-file-packagekit.desktop.in
+src/gnome-software-local-file-snap.desktop.in
src/gs-age-rating-context-dialog.c
src/gs-age-rating-context-dialog.ui
lib/gs-app.c
diff -ruN a/src/gnome-software-local-file.desktop.in b/src/gnome-software-local-file.desktop.in
--- a/src/gnome-software-local-file.desktop.in 2022-03-18 11:09:27.977578000 +0300
+++ b/src/gnome-software-local-file.desktop.in 1970-01-01 03:00:00.000000000 +0300
@@ -1,12 +0,0 @@
-[Desktop Entry]
-Name=Software Install
-Comment=Install selected software on the system
-Categories=System;
-Exec=gnome-software --local-filename %f
-Terminal=false
-Type=Application
-# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
-Icon=system-software-install
-StartupNotify=true
-NoDisplay=true
-MimeType=application/x-rpm;application/x-redhat-package-manager;application/x-deb;application/x-app-package;application/vnd.ms-cab-compressed;application/vnd.flatpak;application/vnd.flatpak.repo;application/vnd.flatpak.ref;application/vnd.snap;
diff -ruN a/src/gnome-software-local-file-flatpak.desktop.in b/src/gnome-software-local-file-flatpak.desktop.in
--- a/src/gnome-software-local-file-flatpak.desktop.in 1970-01-01 03:00:00.000000000 +0300
+++ b/src/gnome-software-local-file-flatpak.desktop.in 2023-10-24 18:05:49.084373977 +0300
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Name=Software Install
+Comment=Install selected software on the system
+Categories=System;
+Exec=gnome-software --local-filename %f
+Terminal=false
+Type=Application
+Icon=system-software-install
+StartupNotify=true
+NoDisplay=true
+MimeType=application/vnd.flatpak;application/vnd.flatpak.repo;application/vnd.flatpak.ref;
diff -ruN a/src/gnome-software-local-file-fwupd.desktop.in b/src/gnome-software-local-file-fwupd.desktop.in
--- a/src/gnome-software-local-file-fwupd.desktop.in 1970-01-01 03:00:00.000000000 +0300
+++ b/src/gnome-software-local-file-fwupd.desktop.in 2023-10-24 18:06:46.776667203 +0300
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Name=Software Install
+Comment=Install selected software on the system
+Categories=System;
+Exec=gnome-software --local-filename %f
+Terminal=false
+Type=Application
+Icon=system-software-install
+StartupNotify=true
+NoDisplay=true
+MimeType=application/vnd.ms-cab-compressed;
diff -ruN a/src/gnome-software-local-file-packagekit.desktop.in b/src/gnome-software-local-file-packagekit.desktop.in
--- a/src/gnome-software-local-file-packagekit.desktop.in 1970-01-01 03:00:00.000000000 +0300
+++ b/src/gnome-software-local-file-packagekit.desktop.in 2023-10-24 18:08:01.889022804 +0300
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Name=Software Install
+Comment=Install selected software on the system
+Categories=System;
+Exec=gnome-software --local-filename %f
+Terminal=false
+Type=Application
+Icon=system-software-install
+StartupNotify=true
+NoDisplay=true
+MimeType=application/x-rpm;application/x-redhat-package-manager;application/x-deb;application/vnd.debian.binary-package;application/x-app-package;
diff -ruN a/src/gnome-software-local-file-snap.desktop.in b/src/gnome-software-local-file-snap.desktop.in
--- a/src/gnome-software-local-file-snap.desktop.in 1970-01-01 03:00:00.000000000 +0300
+++ b/src/gnome-software-local-file-snap.desktop.in 2023-10-24 18:09:02.153291454 +0300
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Name=Software Install
+Comment=Install selected software on the system
+Categories=System;
+Exec=gnome-software --local-filename %f
+Terminal=false
+Type=Application
+Icon=system-software-install
+StartupNotify=true
+NoDisplay=true
+MimeType=application/vnd.snap;
diff -ruN a/src/meson.build b/src/meson.build
--- a/src/meson.build 2022-03-18 11:09:27.994578000 +0300
+++ b/src/meson.build 2023-10-24 18:10:08.565574348 +0300
@@ -213,14 +213,49 @@
install_dir: join_paths(get_option('datadir'), 'applications')
)
-i18n.merge_file(
- input: 'gnome-software-local-file.desktop.in',
- output: 'gnome-software-local-file.desktop',
- type: 'desktop',
- po_dir: join_paths(meson.source_root(), 'po'),
- install: true,
- install_dir: join_paths(get_option('datadir'), 'applications')
-)
+if get_option('flatpak')
+ i18n.merge_file(
+ input: 'gnome-software-local-file-flatpak.desktop.in',
+ output: 'gnome-software-local-file-flatpak.desktop',
+ type: 'desktop',
+ po_dir: join_paths(meson.project_source_root(), 'po'),
+ install: true,
+ install_dir: join_paths(get_option('datadir'), 'applications')
+ )
+endif
+
+if get_option('fwupd')
+ i18n.merge_file(
+ input: 'gnome-software-local-file-fwupd.desktop.in',
+ output: 'gnome-software-local-file-fwupd.desktop',
+ type: 'desktop',
+ po_dir: join_paths(meson.project_source_root(), 'po'),
+ install: true,
+ install_dir: join_paths(get_option('datadir'), 'applications')
+ )
+endif
+
+if get_option('packagekit') or get_option('rpm_ostree')
+ i18n.merge_file(
+ input: 'gnome-software-local-file-packagekit.desktop.in',
+ output: 'gnome-software-local-file-packagekit.desktop',
+ type: 'desktop',
+ po_dir: join_paths(meson.project_source_root(), 'po'),
+ install: true,
+ install_dir: join_paths(get_option('datadir'), 'applications')
+ )
+endif
+
+if get_option('snap')
+ i18n.merge_file(
+ input: 'gnome-software-local-file-snap.desktop.in',
+ output: 'gnome-software-local-file-snap.desktop',
+ type: 'desktop',
+ po_dir: join_paths(meson.project_source_root(), 'po'),
+ install: true,
+ install_dir: join_paths(get_option('datadir'), 'applications')
+ )
+endif
install_data('org.gnome.Software-search-provider.ini',
install_dir : 'share/gnome-shell/search-providers')
I also attach the modified control file for 22.04, which seems to handle dependencies correctly (but not tested):
control
Source: gnome-software
Section: gnome
Priority: optional
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
Uploaders: @GNOME_TEAM@
Build-Depends: debhelper-compat (= 13),
dh-sequence-gnome,
docbook-xsl,
gsettings-desktop-schemas-dev (>= 3.18),
gtk-doc-tools,
libappstream-dev (>= 0.14.0),
libflatpak-dev (>= 1.0.4) [amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el s390x hppa powerpc powerpcspe ppc64],
libfwupd-dev (>= 1.0.3) [linux-any],
libglib2.0-dev (>= 2.56.0),
libgnome-desktop-3-dev (>= 3.18.0),
libgspell-1-dev,
libgtk-3-dev (>= 3.22.4),
libgudev-1.0-dev [linux-any],
libhandy-1-dev (>= 1.2.0),
libjson-glib-dev (>= 1.2.0),
libostree-dev [linux-any],
libmalcontent-0-dev [amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el s390x hppa powerpc powerpcspe ppc64],
libpackagekit-glib2-dev (>= 1.1.11),
libpolkit-gobject-1-dev,
libsnapd-glib-dev (>= 1.54) [amd64 arm64 armel armhf i386 ppc64el s390x],
libsoup2.4-dev (>= 2.52.0),
libxml2-utils,
libxmlb-dev (>= 0.1.7),
meson (>= 0.47),
pkg-config,
policykit-1,
valgrind [amd64 arm64 armhf i386 mips mips64 mips64el mipsel powerpc ppc64 ppc64el s390x],
xsltproc
Build-Depends-Indep: libgdk-pixbuf2.0-doc <!nodoc>,
libglib2.0-doc <!nodoc>,
libgtk-3-doc <!nodoc>,
libjson-glib-doc <!nodoc>,
libsoup2.4-doc <!nodoc>
Rules-Requires-Root: no
Standards-Version: 4.6.0
XS-Debian-Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-software
XS-Debian-Vcs-Git: https://salsa.debian.org/gnome-team/gnome-software.git
Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-software/-/tree/ubuntu/jammy
Vcs-Git: https://salsa.debian.org/gnome-team/gnome-software.git -b ubuntu/jammy
Homepage: https://wiki.gnome.org/Apps/Software
X-Ubuntu-Use-Langpack: yes
Package: gnome-software
Architecture: any
Depends: apt-config-icons,
gnome-software-common (= ${source:Version}),
gsettings-desktop-schemas (>= 3.18),
libgtk3-perl,
software-properties-gtk,
${misc:Depends},
${shlibs:Depends}
Conflicts: sessioninstaller
Recommends: fwupd [linux-any], ${plugin:Recommends}
Suggests: apt-config-icons-hidpi,
gnome-software-plugin-flatpak [amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el s390x hppa powerpc powerpcspe ppc64],
${plugin:Suggests}
Description: Software Center for GNOME
Software lets you install and update applications and system extensions.
.
Software uses a plugin architecture to separate the frontend from the
technologies that are used underneath. Currently, a PackageKit plugin provides
data from a number of traditional packaging systems, such as rpm or apt. An
appdata plugin provides additional metadata from locally installed data in the
appdata format.
Package: gnome-software-common
Architecture: all
Multi-Arch: foreign
Depends: ${misc:Depends}
Description: Software Center for GNOME (common files)
Software lets you install and update applications and system extensions.
.
Software uses a plugin architecture to separate the frontend from the
technologies that are used underneath. Currently, a PackageKit plugin provides
data from a number of traditional packaging systems, such as rpm or apt. An
appdata plugin provides additional metadata from locally installed data in the
appdata format.
.
This package contains the architecture-independent files.
Package: gnome-software-plugin-flatpak
Architecture: amd64 arm64 armel armhf hppa i386 mips mipsel mips64el powerpc powerpcspe ppc64 ppc64el s390x
Depends: flatpak,
gnome-software (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends}
Description: PackageKit support for GNOME Software
Software lets you install and update applications and system extensions.
.
Software uses a plugin architecture to separate the frontend from the
technologies that are used underneath. Currently, a PackageKit plugin provides
data from a number of traditional packaging systems, such as rpm or apt. An
appdata plugin provides additional metadata from locally installed data in the
appdata format.
.
This package contains the Flatpak plugin.
Package: gnome-software-plugin-packagekit
Architecture: amd64 arm64 armel armhf hppa i386 mips mipsel mips64el powerpc powerpcspe ppc64 ppc64el s390x
Depends: packagekit (>= 1.1.11),
appstream,
gnome-software (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends}
Description: PackageKit support for GNOME Software
Software lets you install and update applications and system extensions.
.
Software uses a plugin architecture to separate the frontend from the
technologies that are used underneath. Currently, a PackageKit plugin provides
data from a number of traditional packaging systems, such as rpm or apt. An
appdata plugin provides additional metadata from locally installed data in the
appdata format.
.
This package contains the PackageKit plugin.
Package: gnome-software-plugin-snap
Architecture: amd64 arm64 armel armhf i386 ppc64el s390x
Depends: gnome-software (= ${binary:Version}),
snapd [amd64 arm64 armel armhf i386 ppc64el],
${misc:Depends},
${shlibs:Depends}
Recommends: snapd [s390x]
Breaks: gnome-software (<< 3.22.3)
Replaces: gnome-software (<< 3.22.3)
Description: Snap support for GNOME Software
Software lets you install and update applications and system extensions.
.
Software uses a plugin architecture to separate the frontend from the
technologies that are used underneath. Currently, a PackageKit plugin provides
data from a number of traditional packaging systems, such as rpm or apt. An
appdata plugin provides additional metadata from locally installed data in the
appdata format.
.
This package contains the Snap plugin.
Package: gnome-software-dev
Section: libdevel
Architecture: any
Multi-Arch: same
Depends: libappstream-dev (>= 0.14.0),
libglib2.0-dev (>= 2.56.0),
libgtk-3-dev (>= 3.22.4),
libsoup2.4-dev (>= 2.52.0),
${misc:Depends}
Suggests: gnome-software-doc
Description: Software Center for GNOME - development files
Software lets you install and update applications and system extensions.
.
This package contains headers and other files required when compiling external
plugins for use with Software.
Package: gnome-software-doc
Section: doc
Architecture: all
Multi-Arch: foreign
Depends: ${misc:Depends}
Build-Profiles: <!nodoc>
Description: Software Center for GNOME - documentation
Software lets you install and update applications and system extensions.
.
This package contains documentation for use when developing plugins for
Software.
I hope that someone who has more experience and/or time, and has the desire to help improve the experience with flatpak on Ubuntu, will be able to finish it and release it.