As some of you are aware, I've been working on a project to make it
possible to build Flatpaks out of Fedora RPMs within the Fedora
infrastructure. One of the key elements of this is rebuilding RPMs with
prefix=/app. The way that Flatpak works is that at runtime, two filesystems
are mounted:
/usr- the "runtime" - standard Fedora libraries shared by multiple Flatpaks
/app - the application and libraries distributed inside the app container
To rebuild a package with prefix=/app, it is rebuilt in a module that has
the 'flatpak-rpm-macros' package installed in the buildroot (this is
automatically done when your package depends on the flatpak-runtime
module.) The flatpak-rpm-macros package overrides %{_prefix}, %{_datadir},
etc, and points them to /app.
About 90% of packages just work without any changes at all, but other
packages need some (mostly minor) changes.
Generally, I'd consider most changes that are needed things that make the
packages more compliant with the packaging guidelines - we expect packages
to honor %{_prefix}. But there is one assumption some of the changes make
that Petr Pisar pointed out to me that everybody might not agree with:
%{_prefix} and related macros specify the install location of this
package, they
should not be used for paths to tools used as BuildRequires.
So I wanted to run that idea past the packaging list for comment. In many
cases, that assumption can be fixed inside installed RPM macros (meson,
ninja, and qt5 macros have already been fixed.) But in a few cases a spec
file does make that assumption.
I've made a wiki pages that has all the changes I've needed so far:
https://fedoraproject.org/wiki/Flatpak:Fixes
Everything marked with a checkmark is already in Fedora - either because I
committed a fix directly (mostly workstation related packages), or more
commonly, because I've submitted a pull-request that the maintainer
accepted.
Regards,
Owen