gappsWrapperArgsHook tries to collect GI_TYPELIB_PATH environment variable so if we want it to see the path giDiscoverSelf adds, we need to force the order.
Updated the shlib patches:
- Upstream now forces basename in sanitize_shlib_path(lib) if the system isn't
darwin. We patch the function to always prefer absolute paths
- Due to the above we no longer need the macos patch
- `sanitize_shlib_path` is applied after `resolve_from_ldd_output` so we need to
apply `fallback_libpath` afterwards too (else we get stuff like
`/nix/store/...@rpath/foo.dylib` on darwin)
- Note that the `fallback_path` no longer have any unit tests
https://gitlab.gnome.org/GNOME/gobject-introspection/blob/1.60.1/NEWS
We patch gobject-introspection somewhat heavily, so add some unit tests that
will catch potential errors when we're eg. updating the patches.
There's two tests:
- Basic test for absolute nix store paths (testing absolute_shlib_path.patch)
- Test for macos `@rpath` sanitizing, including
fallback_libpath (macos-shared-library.patch)
Upstream now strips absolute paths to their basename on all platforms apart from
Darwin: a41abe1868
To get around this without modifying the basename test we simply pass in
`basename=False` when normally generating gir files.
When a library path contained the library name it was eagerly matched
libfwupd.so.2 => /build/fwupd-1.0.5/build/libfwupd/libfwupd.so.2 (0x00007ffff7bbd000)
^^^^^^^^^^^^^^^^^^^^^^
libgweather-3.so.15 => /build/libgweather-3.28.0/build/libgweather/libgweather-3.so.15 (0x00007ffff7bae000)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
which lead to a broken shared library path in the generated GIR file.
This patch allows the soname on the left-hand side of the arrow to
be matched to avoid the trap of the right-hand side. A negative
lookahead had to be added to select the store path, since only
the first match is taken into account.
libglib-2.0.so.0 => /nix/store/dqlc8y4phlg1hmdbwkhqfwhnxcac88d1-glib-2.56.0/lib/libglib-2.0.so.0 (0x00007ffff6400000)
This will not fix non-GNU platforms, where the soname is not printed
first, but we cannot do much without structured ldd output.
Closes: https://github.com/NixOS/nixpkgs/issues/34988
Resolved the following conflicts (by carefully applying patches from the both
branches since the fork point):
pkgs/development/libraries/epoxy/default.nix
pkgs/development/libraries/gtk+/3.x.nix
pkgs/development/python-modules/asgiref/default.nix
pkgs/development/python-modules/daphne/default.nix
pkgs/os-specific/linux/systemd/default.nix
Cairo does not provide its own GObject bindinds so they are provided
by gobject-introspection package. Unfortunately, this means that if we
want to use the absolute path, we need gi to depend on cairo, which
increases the closure size from 41M to 56M. We will probably want
to split the typelib into a separate output.
Closes: #34080
Some derivations need to discover their own typelibs. giDiscoverSelf
runs as a preFixupPhase and populates GI_TYPELIB_PATH with an entry
pointing to $prefix/lib/girepository-1.0, if it exists.
This is a squash commit of the joint work from:
* Jan Tojnar (@jtojnar)
* Linus Heckemann (@lheckemann)
* Ryan Mulligan (@ryantm)
* romildo (@romildo)
* Tom Hunger (@teh)
Includes the patches from macports and fixes an issue with the
`otool -L` output that was causing g-ir-scanner to fail.
The paths in the macports patches have been modified so that they
will work with `patches` in nix (an extra directory level was
added).
Stop using obsolete `otool` package, preferring `cctools` (which
includes otool), on darwin.
Remove autoconf & automake from reqs, as they were unused.
Fixes#12670