diff options
author | Alyssa Ross <hi@alyssa.is> | 2020-07-13 23:20:04 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2020-07-13 23:21:06 +0000 |
commit | a42c1d6d62656dcf9bd85de620f2e200a5ad22d8 (patch) | |
tree | 7d481fea9872f62a034452612be17f4494159baa /nixpkgs/pkgs/development/libraries/gobject-introspection | |
parent | 55f69a6b0e53c1c4b3e0396937c53bf5662b5519 (diff) | |
parent | 9480bae337095fd24f61380bce3174fdfe926a00 (diff) | |
download | nixlib-a42c1d6d62656dcf9bd85de620f2e200a5ad22d8.tar nixlib-a42c1d6d62656dcf9bd85de620f2e200a5ad22d8.tar.gz nixlib-a42c1d6d62656dcf9bd85de620f2e200a5ad22d8.tar.bz2 nixlib-a42c1d6d62656dcf9bd85de620f2e200a5ad22d8.tar.lz nixlib-a42c1d6d62656dcf9bd85de620f2e200a5ad22d8.tar.xz nixlib-a42c1d6d62656dcf9bd85de620f2e200a5ad22d8.tar.zst nixlib-a42c1d6d62656dcf9bd85de620f2e200a5ad22d8.zip |
Merge commit '9480bae337095fd24f61380bce3174fdfe926a00'
This is the last nixos-unstable release before 13b2903169f, which I'm a bit nervous about. So I want the update including that one to be as small as possible, hence going to this one first.
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/gobject-introspection')
3 files changed, 117 insertions, 79 deletions
diff --git a/nixpkgs/pkgs/development/libraries/gobject-introspection/absolute_shlib_path.patch b/nixpkgs/pkgs/development/libraries/gobject-introspection/absolute_shlib_path.patch index 6e56d3fab411..775c29855301 100644 --- a/nixpkgs/pkgs/development/libraries/gobject-introspection/absolute_shlib_path.patch +++ b/nixpkgs/pkgs/development/libraries/gobject-introspection/absolute_shlib_path.patch @@ -140,3 +140,46 @@ def extract_libtool(la_file): +--- a/tests/scanner/test_shlibs.py ++++ b/tests/scanner/test_shlibs.py +@@ -7,6 +7,30 @@ from giscanner.shlibs import resolve_from_ldd_output, sanitize_shlib_path + + class TestLddParser(unittest.TestCase): + ++ def test_resolve_from_ldd_output_nix(self): ++ output = '''\ ++ libglib-2.0.so.0 => @nixStoreDir@/gmrf09y7sfxrr0mcx90dba7w41jj2kzk-glib-2.58.1/lib/libglib-2.0.so.0 (0x00007f0ee1b28000) ++ libgobject-2.0.so.0 => @nixStoreDir@/gmrf09y7sfxrr0mcx90dba7w41jj2kzk-glib-2.58.1/lib/libgobject-2.0.so.0 (0x00007f0ee18cf000) ++ libgio-2.0.so.0 => @nixStoreDir@/gmrf09y7sfxrr0mcx90dba7w41jj2kzk-glib-2.58.1/lib/libgio-2.0.so.0 (0x00007f0ee1502000) ++ libxml2.so.2 => @nixStoreDir@/72mxkk74cv266snkjpz1kwl1i2rg8rpc-libxml2-2.9.8/lib/libxml2.so.2 (0x00007f0ee119c000) ++ libsqlite3.so.0 => @nixStoreDir@/ck5ay23hsmlc67pg3m34kzd1k2hhvww0-sqlite-3.24.0/lib/libsqlite3.so.0 (0x00007f0ee0e98000) ++ libpsl.so.5 => @nixStoreDir@/qn3l2gn7m76f318676wflrs2z6d4rrkj-libpsl-0.20.2-list-2017-02-03/lib/libpsl.so.5 (0x00007f0ee0c88000) ++ libc.so.6 => @nixStoreDir@/g2yk54hifqlsjiha3szr4q3ccmdzyrdv-glibc-2.27/lib/libc.so.6 (0x00007f0ee08d4000) ++ libpcre.so.1 => @nixStoreDir@/hxbq8lpc53qsf1bc0dfcsm47wmcxzjvh-pcre-8.42/lib/libpcre.so.1 (0x00007f0ee0662000) ++ @nixStoreDir@/g2yk54hifqlsjiha3szr4q3ccmdzyrdv-glibc-2.27/lib64/ld-linux-x86-64.so.2 (0x00007f0ee20ff000) ++ libblkid.so.1 => @nixStoreDir@/q0kgnq21j0l2yd77gdlld371246cwghh-util-linux-2.32.1/lib/libblkid.so.1 (0x00007f0edd0cd000) ++ libuuid.so.1 => @nixStoreDir@/q0kgnq21j0l2yd77gdlld371246cwghh-util-linux-2.32.1/lib/libuuid.so.1 (0x00007f0edcec5000) ++ librt.so.1 => @nixStoreDir@/g2yk54hifqlsjiha3szr4q3ccmdzyrdv-glibc-2.27/lib/librt.so.1 (0x00007f0edccbd000) ++ libstdc++.so.6 => @nixStoreDir@/3v5r7fkrbkw2qajadvjbf6p6qriz9p1i-gcc-7.3.0-lib/lib/libstdc++.so.6 (0x00007f0edc936000) ++ libgcc_s.so.1 => @nixStoreDir@/g2yk54hifqlsjiha3szr4q3ccmdzyrdv-glibc-2.27/lib/libgcc_s.so.1 (0x00007f0edc720000) ++ ''' ++ libraries = ['glib-2.0', 'gio-2.0'] ++ ++ self.assertEqual( ++ ['@nixStoreDir@/gmrf09y7sfxrr0mcx90dba7w41jj2kzk-glib-2.58.1/lib/libglib-2.0.so.0', ++ '@nixStoreDir@/gmrf09y7sfxrr0mcx90dba7w41jj2kzk-glib-2.58.1/lib/libgio-2.0.so.0'], ++ resolve_from_ldd_output(libraries, output)) ++ + def test_resolve_from_ldd_output(self): + output = '''\ + libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fbe12d68000) +@@ -40,7 +64,8 @@ class TestLddParser(unittest.TestCase): + + self.assertEqual( + sanitize_shlib_path('/foo/bar'), +- '/foo/bar' if sys.platform == 'darwin' else 'bar') ++ # NixOS always want the absolute path ++ '/foo/bar') + + def test_unresolved_library(self): + output = '' diff --git a/nixpkgs/pkgs/development/libraries/gobject-introspection/default.nix b/nixpkgs/pkgs/development/libraries/gobject-introspection/default.nix index 0d514c3fd7d8..03b0d1767d9f 100644 --- a/nixpkgs/pkgs/development/libraries/gobject-introspection/default.nix +++ b/nixpkgs/pkgs/development/libraries/gobject-introspection/default.nix @@ -1,61 +1,97 @@ -{ stdenv, fetchurl, glib, flex, bison, meson, ninja, pkgconfig, libffi, python3 -, libintl, cctools, cairo, gnome3, glibcLocales -, substituteAll, nixStoreDir ? builtins.storeDir +{ stdenv +, fetchurl +, glib +, flex +, bison +, meson +, ninja +, gtk-doc +, docbook-xsl-nons +, docbook_xml_dtd_43 +, docbook_xml_dtd_45 +, pkg-config +, libffi +, python3 +, cctools +, cairo +, gnome3 +, substituteAll +, nixStoreDir ? builtins.storeDir , x11Support ? true }: + # now that gobject-introspection creates large .gir files (eg gtk3 case) # it may be worth thinking about using multiple derivation outputs # In that case its about 6MB which could be separated -with stdenv.lib; stdenv.mkDerivation rec { pname = "gobject-introspection"; version = "1.64.1"; + # outputs TODO: share/gobject-introspection-1.0/tests is needed during build + # by pygobject3 (and maybe others), but it's only searched in $out + outputs = [ "out" "dev" "devdoc" "man" ]; + outputBin = "dev"; + src = fetchurl { url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; sha256 = "19vz7vp10h0zj3f491yk72dp89bix6rgkzxg4qcm4d6151ksxgl0"; }; - outputs = [ "out" "dev" "man" ]; - outputBin = "dev"; + patches = [ + # Make g-ir-scanner put absolute path to GIR files it generates + # so that programs can just dlopen them without having to muck + # with LD_LIBRARY_PATH environment variable. + (substituteAll { + src = ./absolute_shlib_path.patch; + inherit nixStoreDir; + }) + ] ++ stdenv.lib.optionals x11Support [ + # Hardcode the cairo shared library path in the Cairo gir shipped with this package. + # https://github.com/NixOS/nixpkgs/issues/34080 + (substituteAll { + src = ./absolute_gir_path.patch; + cairoLib = "${stdenv.lib.getLib cairo}/lib"; + }) + ]; - LC_ALL = "en_US.UTF-8"; # for tests + nativeBuildInputs = [ + meson + ninja + pkg-config + flex + bison + gtk-doc + docbook-xsl-nons + docbook_xml_dtd_43 # FIXME: remove in next release + docbook_xml_dtd_45 + python3 + setupHook # move .gir files + ]; - nativeBuildInputs = [ meson ninja pkgconfig libintl glibcLocales ]; - buildInputs = [ flex bison python3 setupHook/*move .gir*/ ] - ++ stdenv.lib.optional stdenv.isDarwin cctools; - propagatedBuildInputs = [ libffi glib ]; + buildInputs = [ + python3 + ]; + + checkInputs = stdenv.lib.optionals stdenv.isDarwin [ + cctools # for otool + ]; + + propagatedBuildInputs = [ + libffi + glib + ]; mesonFlags = [ "--datadir=${placeholder "dev"}/share" "-Ddoctool=disabled" "-Dcairo=disabled" + "-Dgtk_doc=true" ]; - # outputs TODO: share/gobject-introspection-1.0/tests is needed during build - # by pygobject3 (and maybe others), but it's only searched in $out - - setupHook = ./setup-hook.sh; - - patches = [ - (substituteAll { - src = ./test_shlibs.patch; - inherit nixStoreDir; - }) - (substituteAll { - src = ./absolute_shlib_path.patch; - inherit nixStoreDir; - }) - ] ++ stdenv.lib.optional x11Support # https://github.com/NixOS/nixpkgs/issues/34080 - (substituteAll { - src = ./absolute_gir_path.patch; - cairoLib = "${getLib cairo}/lib"; - }); - doCheck = !stdenv.isAarch64; - preBuild = '' + preCheck = '' # Our gobject-introspection patches make the shared library paths absolute # in the GIR files. When running tests, the library is not yet installed, # though, so we need to replace the absolute path with a local one during build. @@ -64,10 +100,12 @@ stdenv.mkDerivation rec { ln -s $PWD/tests/scanner/libregress-1.0${stdenv.targetPlatform.extensions.sharedLibrary} $out/lib/libregress-1.0${stdenv.targetPlatform.extensions.sharedLibrary} ''; - preInstall = '' + postCheck = '' rm $out/lib/libregress-1.0${stdenv.targetPlatform.extensions.sharedLibrary} ''; + setupHook = ./setup-hook.sh; + passthru = { updateScript = gnome3.updateScript { packageName = pname; @@ -76,9 +114,9 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A middleware layer between C libraries and language bindings"; - homepage = "http://live.gnome.org/GObjectIntrospection"; - maintainers = with maintainers; [ lovek323 lethalman ]; - platforms = platforms.unix; + homepage = "https://gi.readthedocs.io/"; + maintainers = teams.gnome.members ++ (with maintainers; [ lovek323 ]); + platforms = platforms.unix; license = with licenses; [ gpl2 lgpl2 ]; longDescription = '' diff --git a/nixpkgs/pkgs/development/libraries/gobject-introspection/test_shlibs.patch b/nixpkgs/pkgs/development/libraries/gobject-introspection/test_shlibs.patch deleted file mode 100644 index 65b5a1a13b91..000000000000 --- a/nixpkgs/pkgs/development/libraries/gobject-introspection/test_shlibs.patch +++ /dev/null @@ -1,43 +0,0 @@ ---- a/tests/scanner/test_shlibs.py -+++ b/tests/scanner/test_shlibs.py -@@ -7,6 +7,30 @@ from giscanner.shlibs import resolve_from_ldd_output, sanitize_shlib_path - - class TestLddParser(unittest.TestCase): - -+ def test_resolve_from_ldd_output_nix(self): -+ output = '''\ -+ libglib-2.0.so.0 => @nixStoreDir@/gmrf09y7sfxrr0mcx90dba7w41jj2kzk-glib-2.58.1/lib/libglib-2.0.so.0 (0x00007f0ee1b28000) -+ libgobject-2.0.so.0 => @nixStoreDir@/gmrf09y7sfxrr0mcx90dba7w41jj2kzk-glib-2.58.1/lib/libgobject-2.0.so.0 (0x00007f0ee18cf000) -+ libgio-2.0.so.0 => @nixStoreDir@/gmrf09y7sfxrr0mcx90dba7w41jj2kzk-glib-2.58.1/lib/libgio-2.0.so.0 (0x00007f0ee1502000) -+ libxml2.so.2 => @nixStoreDir@/72mxkk74cv266snkjpz1kwl1i2rg8rpc-libxml2-2.9.8/lib/libxml2.so.2 (0x00007f0ee119c000) -+ libsqlite3.so.0 => @nixStoreDir@/ck5ay23hsmlc67pg3m34kzd1k2hhvww0-sqlite-3.24.0/lib/libsqlite3.so.0 (0x00007f0ee0e98000) -+ libpsl.so.5 => @nixStoreDir@/qn3l2gn7m76f318676wflrs2z6d4rrkj-libpsl-0.20.2-list-2017-02-03/lib/libpsl.so.5 (0x00007f0ee0c88000) -+ libc.so.6 => @nixStoreDir@/g2yk54hifqlsjiha3szr4q3ccmdzyrdv-glibc-2.27/lib/libc.so.6 (0x00007f0ee08d4000) -+ libpcre.so.1 => @nixStoreDir@/hxbq8lpc53qsf1bc0dfcsm47wmcxzjvh-pcre-8.42/lib/libpcre.so.1 (0x00007f0ee0662000) -+ @nixStoreDir@/g2yk54hifqlsjiha3szr4q3ccmdzyrdv-glibc-2.27/lib64/ld-linux-x86-64.so.2 (0x00007f0ee20ff000) -+ libblkid.so.1 => @nixStoreDir@/q0kgnq21j0l2yd77gdlld371246cwghh-util-linux-2.32.1/lib/libblkid.so.1 (0x00007f0edd0cd000) -+ libuuid.so.1 => @nixStoreDir@/q0kgnq21j0l2yd77gdlld371246cwghh-util-linux-2.32.1/lib/libuuid.so.1 (0x00007f0edcec5000) -+ librt.so.1 => @nixStoreDir@/g2yk54hifqlsjiha3szr4q3ccmdzyrdv-glibc-2.27/lib/librt.so.1 (0x00007f0edccbd000) -+ libstdc++.so.6 => @nixStoreDir@/3v5r7fkrbkw2qajadvjbf6p6qriz9p1i-gcc-7.3.0-lib/lib/libstdc++.so.6 (0x00007f0edc936000) -+ libgcc_s.so.1 => @nixStoreDir@/g2yk54hifqlsjiha3szr4q3ccmdzyrdv-glibc-2.27/lib/libgcc_s.so.1 (0x00007f0edc720000) -+ ''' -+ libraries = ['glib-2.0', 'gio-2.0'] -+ -+ self.assertEqual( -+ ['@nixStoreDir@/gmrf09y7sfxrr0mcx90dba7w41jj2kzk-glib-2.58.1/lib/libglib-2.0.so.0', -+ '@nixStoreDir@/gmrf09y7sfxrr0mcx90dba7w41jj2kzk-glib-2.58.1/lib/libgio-2.0.so.0'], -+ resolve_from_ldd_output(libraries, output)) -+ - def test_resolve_from_ldd_output(self): - output = '''\ - libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fbe12d68000) -@@ -40,7 +64,8 @@ class TestLddParser(unittest.TestCase): - - self.assertEqual( - sanitize_shlib_path('/foo/bar'), -- '/foo/bar' if sys.platform == 'darwin' else 'bar') -+ # NixOS always want the absolute path -+ '/foo/bar') - - def test_unresolved_library(self): - output = '' |