This effectively adds `<package name="libnautilus-extension"/>` to gir
xml file, which makes it easy to obtain necessary compiler and linker
flags for use in compile time bindings.
When hacking on Nautilus, it is very inconvenient to have to close any
running instance before running the built version. This commit enables
running three different instances by changing the application ID.
Beside the default “profile” is one crafted for stable flatpak
releases and one for development. The stable flatpak profile adds an
identifying mark to the about dialog to aid collecting information in
bug reports. The development profile is that plus additional styling to
help visually identify the development instance. It also will be used
when generating Flatpak bundles with the help of CI.
Generally, the implementation is slightly hacky to allow all the
different workflows, spanning from regular installations to GNOME
Builder flatpak builds, as each comes with its own quirks.
The libnautilus-extensions internal dependency must include the
generated enumeration header file, otherwise we may end up building
targets that depend on the library prior to have the header properly
generated.
The changes include:
* adding a single-include header and deprecating
nautilus-extension-types.h and direct inclusions of individual
headers;
* type definition simplifications - this causes some breakages in
nautilus-file, because NautilusFile used to be typedefed to
NautilusFileInfo, and that is no longer possible, so the interface
implementation was moved to static functions and the public
NautilusFile API provides thin wrappers for them to maintain
compatibility;
* documentation cleanups and reorganization;
* general build rule and code cleanups: mostly g_auto* sprinkled
around and style changes (sorry)
Currently, the pkgconfig file for nautilus-extension is generated by
substituting variables in a template file. That is prone to mistakes and
requires manual tracking of dependencies. Using the pkgconfig module
from Meson helps automate much of the process.
This commit does the following:
* Canonicalize the style:
* Use two-space indentations.
* Un-Autotools-ify option names.
* Don’t align arguments, simply increase indentation.
* Don’t add a space before opening parenthesis in calls.
* Remove unused variables.
* Remove unused dependencies.
* Remove config.h.meson.
* Optimize dependencies.
* Use disabler functionality for libselinux dependency, to save lines.
Currently, when building with Meson, the version of the pkg-config file
for libnautilus-extension is set to the version of the library itself.
This is incompatible with how it was before - the version was set to the
version of Nautilus. That breaks some modules that build extensions
(e.g. file-roller).
https://bugzilla.gnome.org/show_bug.cgi?id=779472
Since it’s 2017 already, Nautilus should use a build system that doesn’t
take longer to set up the build than it takes to actually build. An
observed build time using Ninja of roughly one-fifth of what it took
Autotools is more than reason enough to add support for Meson. Along
with that, this commit adds a convenience script to generate a tarball
for releases, since we use libgd as a submodule and Meson does not
handle source distributions.
https://bugzilla.gnome.org/show_bug.cgi?id=778167