e44038bcca
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
68 lines
2.1 KiB
Nix
68 lines
2.1 KiB
Nix
{ stdenv, fetchurl, glib, flex, bison, pkgconfig, libffi, python
|
|
, libintlOrEmpty, cctools, cairo
|
|
, substituteAll, nixStoreDir ? builtins.storeDir
|
|
}:
|
|
# now that gobjectIntrospection 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
|
|
|
|
let
|
|
ver_maj = "1.54";
|
|
ver_min = "1";
|
|
in
|
|
with stdenv.lib;
|
|
stdenv.mkDerivation rec {
|
|
name = "gobject-introspection-${ver_maj}.${ver_min}";
|
|
|
|
src = fetchurl {
|
|
url = "mirror://gnome/sources/gobject-introspection/${ver_maj}/${name}.tar.xz";
|
|
sha256 = "0zl7pfkzkm07733391b4f3cwjbnvb1nwvpmajf5bajh6bxgfv3dq";
|
|
};
|
|
|
|
outputs = [ "out" "dev" ];
|
|
outputBin = "dev";
|
|
outputMan = "dev"; # tiny pages
|
|
|
|
nativeBuildInputs = [ pkgconfig ];
|
|
buildInputs = [ flex bison python setupHook/*move .gir*/ ]
|
|
++ libintlOrEmpty
|
|
++ stdenv.lib.optional stdenv.isDarwin cctools;
|
|
propagatedBuildInputs = [ libffi glib ];
|
|
|
|
preConfigure = ''
|
|
sed 's|/usr/bin/env ||' -i tools/g-ir-tool-template.in
|
|
'';
|
|
|
|
# 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 = ./absolute_shlib_path.patch;
|
|
inherit nixStoreDir;
|
|
})
|
|
# https://github.com/NixOS/nixpkgs/issues/34080
|
|
(substituteAll {
|
|
src = ./absolute_gir_path.patch;
|
|
cairoLib = "${getLib cairo}/lib";
|
|
})
|
|
];
|
|
|
|
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;
|
|
|
|
longDescription = ''
|
|
GObject introspection is a middleware layer between C libraries (using
|
|
GObject) and language bindings. The C library can be scanned at compile
|
|
time and generate a metadata file, in addition to the actual native C
|
|
library. Then at runtime, language bindings can read this metadata and
|
|
automatically provide bindings to call into the C library.
|
|
'';
|
|
};
|
|
}
|