nixpkgs/pkgs/top-level
aszlig c420de6b05
gobject-introspection: Fix patching shared objects
The gi-r-scanner is generating a list of shared libraries that are
referenced in the shared-library attribute of the <namespace/> element
of the GIR file. However, this attribute only contains the names of the
libraries and not the full store paths, like for example while preparing
to package libblockdev, the following items were included in the
shared-library attribute:

  /nix/store/...-libblockdev-1.3/lib/libblockdev.so.0
  libm.so.6
  libdmraid.so.1.0.0.rc16
  libbd_utils.so.0

Unfortunately, loading such a library without setting LD_LIBRARY_PATH is
going to fail finding libm.so.6 and libdmraid.so.1.0.0.rc16.

Now the first attempt at solving this was to put absolute paths of all
the libraries referenced in the shared-library attribute, but this also
led up to including paths of build-time shared objects into that
attribute:

  /nix/store/...-libblockdev-1.3/lib/libblockdev.so.0
  /nix/store/...-glibc-2.21/lib/libm.so.6
  /nix/store/...-dmraid-1.0.0.rc16/lib/libdmraid.so.1.0.0.rc16
  /tmp/nix-build-libblockdev-1.3.drv-0/.../utils/.libs/libbd_utils.so.0

This of course is not what we want, so the final solution is to only
use the absolute path whenever it is a Nix path and leave the library
name as-is if the path doesn't reside within the store, like this:

  /nix/store/...-libblockdev-1.3/lib/libblockdev.so.0
  /nix/store/...-glibc-2.21/lib/libm.so.6
  /nix/store/...-dmraid-1.0.0.rc16/lib/libdmraid.so.1.0.0.rc16
  libbd_utils.so.0

The downside of this approach is that if not even the output path of the
library is in LD_LIBRARY_PATH, even loading of libbd_utils.so.0 could
fail, so we need to patch the loader as well.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
2016-01-22 22:46:02 +01:00
..
all-packages.nix gobject-introspection: Fix patching shared objects 2016-01-22 22:46:02 +01:00
dotnet-packages.nix fstar: init at 2016-01-12 2016-01-19 01:46:30 +01:00
emacs-packages.nix emacs-packages: update diminish 0.44 -> 0.45 2016-01-19 14:16:35 -08:00
go-packages.nix goPackages: comment on kagome about no parallel build 2016-01-22 14:51:24 +01:00
guile-2-test.nix
haskell-packages.nix Add LTS Haskell 4.2. 2016-01-20 14:33:37 +01:00
lua-packages.nix lua-bitop: update MACOSX_DEPLOYMENT_TARGET 2015-10-22 13:47:03 -07:00
make-tarball.nix make-tarball.nix: Allow passing in a different Nix 2016-01-19 21:28:53 +01:00
node-packages-generated.nix node-packages: remove 7f 2016-01-05 12:17:49 +01:00
node-packages.json node-packages: remove 7f 2016-01-05 12:17:49 +01:00
node-packages.nix node-packages: add a few packages, fix, regenerate 2015-04-25 14:54:26 +02:00
perl-packages.nix Merge branch 'master' into staging 2016-01-18 09:48:49 +01:00
php-packages.nix phpPackages.composer: 1.0.0-alpha10 -> 1.0.0-alpha11 2015-12-10 19:11:26 +01:00
platforms.nix platforms.nix: Use bcm2835_defconfig for RPi kernelHeadersBaseConfig 2015-11-16 02:37:13 +02:00
pure-packages.nix Fairly complete set of packages for Pure 2015-05-26 17:51:07 +10:00
python-packages.nix awscli: Install less to fix help docs 2016-01-22 18:31:49 +01:00
release-cross.nix Disable system_tarball_pc and fix eval 2015-07-22 12:27:15 +02:00
release-lib.nix copy-tarballs.pl: Revive extracting all tarballs from release.nix 2015-12-16 15:38:59 +01:00
release-python.nix release-python.nix: automatically detect buildPythonPackage 2015-11-21 21:44:12 +01:00
release-small.nix policykit: remove the package obsoleted by polkit 2016-01-02 09:02:06 +01:00
release.nix release.nix: remove troubling glib-tested, add python 2016-01-21 20:07:17 +01:00
rust-packages.nix rustRegistry: 2015-12-23 -> 2016-01-17 2016-01-17 22:05:20 +00:00