diff options
Diffstat (limited to 'pkgs/development/libraries/glib/default.nix')
-rw-r--r-- | pkgs/development/libraries/glib/default.nix | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/pkgs/development/libraries/glib/default.nix b/pkgs/development/libraries/glib/default.nix new file mode 100644 index 00000000000..f9229793165 --- /dev/null +++ b/pkgs/development/libraries/glib/default.nix @@ -0,0 +1,82 @@ +{ stdenv, fetchurl, pkgconfig, gettext, perl, libiconvOrEmpty, zlib, libffi +, python, pcre, libelf }: + +# TODO: +# * Add gio-module-fam +# Problem: cyclic dependency on gamin +# Possible solution: build as a standalone module, set env. vars +# * Make it build without python +# Problem: an example (test?) program needs it. +# Possible solution: disable compilation of this example somehow +# Reminder: add 'sed -e 's@python2\.[0-9]@python@' -i +# $out/bin/gtester-report' to postInstall if this is solved + +let + # some packages don't get "Cflags" from pkgconfig correctly + # and then fail to build when directly including like <glib/...> + flattenInclude = '' + for dir in $out/include/*; do + cp -r $dir/* "$out/include/" + rm -r "$dir" + ln -s . "$dir" + done + ln -sr -t "$out/include/" $out/lib/*/include/* 2>/dev/null || true + ''; +in + +stdenv.mkDerivation (rec { + name = "glib-2.36.1"; + + src = fetchurl { + url = "mirror://gnome/sources/glib/2.36/${name}.tar.xz"; + sha256 = "090bw5par3dfy5m6dhq393pmy92zpw3d7rgbzqjc14jfg637bqvx"; + }; + + outputs = [ "dev" "out" "bin" "doc" ]; + + # configure script looks for d-bus but it is only needed for tests + buildInputs = [ libelf ]; + + nativeBuildInputs = [ perl pkgconfig gettext python ]; + + propagatedBuildInputs = [ pcre zlib libffi ] ++ libiconvOrEmpty; + + configureFlags = "--with-pcre=system --disable-fam"; + + postConfigure = "sed '/SANE_MALLOC_PROTOS/s,^,//,' -i config.h" # https://bugzilla.gnome.org/show_bug.cgi?id=698716 :-) + + stdenv.lib.optionalString stdenv.isDarwin '' + sed '24 i #include <Foundation/Foundation.h>' + ''; + + enableParallelBuilding = true; + + passthru = { + gioModuleDir = "lib/gio/modules"; + inherit flattenInclude; + }; + + meta = { + description = "GLib, a C library of programming buildings blocks"; + homepage = http://www.gtk.org/; + license = "LGPLv2+"; + maintainers = with stdenv.lib.maintainers; [ raskin urkud lovek323 ]; + platforms = stdenv.lib.platforms.unix; + + longDescription = '' + GLib provides the core application building blocks for libraries + and applications written in C. It provides the core object + system used in GNOME, the main loop implementation, and a large + set of utility functions for strings and common data structures. + ''; + }; +} + +// + +(stdenv.lib.optionalAttrs stdenv.isDarwin { + # XXX: Disable the NeXTstep back-end because stdenv.gcc doesn't support + # Objective-C. + postConfigure = + '' sed -i configure -e's/glib_have_cocoa=yes/glib_have_cocoa=no/g' + ''; +})) |