diff options
Diffstat (limited to 'pkgs/development/libraries/glib/default.nix')
-rw-r--r-- | pkgs/development/libraries/glib/default.nix | 79 |
1 files changed, 62 insertions, 17 deletions
diff --git a/pkgs/development/libraries/glib/default.nix b/pkgs/development/libraries/glib/default.nix index 50983994a28a..ec43d9f8c4bf 100644 --- a/pkgs/development/libraries/glib/default.nix +++ b/pkgs/development/libraries/glib/default.nix @@ -1,5 +1,11 @@ -{ stdenv, fetchurl, pkgconfig, gettext, perl, python, autoconf, automake, libtool -, libiconvOrEmpty, libintlOrEmpty, zlib, libffi, pcre, libelf, dbus }: +{ stdenv, fetchurl, pkgconfig, gettext, perl, python +, libiconvOrEmpty, libintlOrEmpty, zlib, libffi, pcre, libelf + +# this is just for tests (not in closure of any regular package) +, coreutils, dbus_daemon, libxml2, tzdata, desktop_file_utils, shared_mime_info, doCheck ? false +}: + +with stdenv.lib; # TODO: # * Add gio-module-fam @@ -10,7 +16,13 @@ # 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 - +/* + * Use --enable-installed-tests for GNOME-related packages, + and use them as a separately installed tests runned by Hydra + (they should test an already installed package) + https://wiki.gnome.org/GnomeGoals/InstalledTests + * Support org.freedesktop.Application, including D-Bus activation from desktop files +*/ let # Some packages don't get "Cflags" from pkgconfig correctly # and then fail to build when directly including like <glib/...>. @@ -24,36 +36,69 @@ let done ln -sr -t "$out/include/" "$out"/lib/*/include/* 2>/dev/null || true ''; + + ver_maj = "2.40"; + ver_min = "0"; in -with { inherit (stdenv.lib) optionalString; }; stdenv.mkDerivation rec { - name = "glib-2.36.4"; + name = "glib-${ver_maj}.${ver_min}"; src = fetchurl { - url = "mirror://gnome/sources/glib/2.36/${name}.tar.xz"; - sha256 = "0zmdbkg2yjyxdl72w34lxvrssbzqzdficskkfn22s0994dad4m7n"; + url = "mirror://gnome/sources/glib/${ver_maj}/${name}.tar.xz"; + sha256 = "1d98mbqjmc34s8095lkw1j1bwvnnkw9581yfvjaikjvfjsaz29qd"; }; + patches = optional stdenv.isDarwin ./darwin-compilation.patch; + outputs = [ "dev" "out" "bin" "doc" ]; - # configure script looks for d-bus but it is (probably) only needed for tests - buildInputs = [ libelf ]; - # I don't know why the autotools are needed now, even without modifying configure scripts - nativeBuildInputs = [ pkgconfig gettext perl python ] ++ [ autoconf automake libtool ]; + setupHook = ./setup-hook.sh; + + buildInputs = [ libelf ] + ++ optionals doCheck [ tzdata libxml2 desktop_file_utils shared_mime_info ]; - propagatedBuildInputs = [ pcre zlib libffi ] ++ libiconvOrEmpty ++ libintlOrEmpty; + nativeBuildInputs = [ pkgconfig gettext perl python ]; - preConfigure = "autoreconf -fi"; - configureFlags = "--with-pcre=system --disable-fam"; + propagatedBuildInputs = [ pcre zlib libffi ] + ++ optional (!stdenv.isDarwin) libiconvOrEmpty + ++ libintlOrEmpty; - NIX_CFLAGS_COMPILE = optionalString stdenv.isDarwin "-lintl"; + configureFlags = + optional stdenv.isDarwin "--disable-compile-warnings" + ++ optional stdenv.isSunOS "--disable-modular-tests"; + + NIX_CFLAGS_COMPILE = optionalString stdenv.isDarwin " -lintl" + + optionalString stdenv.isSunOS " -DBSD_COMP"; + + preBuild = optionalString stdenv.isDarwin + '' + export MACOSX_DEPLOYMENT_TARGET= + ''; enableParallelBuilding = true; - doCheck = false; # ToDo: fix the remaining problems, so we have checked glib by default - LD_LIBRARY_PATH = optionalString doCheck "${stdenv.gcc.gcc}/lib"; + inherit doCheck; + preCheck = optionalString doCheck + # libgcc_s.so.1 must be installed for pthread_cancel to work + # also point to the glib/.libs path + '' export LD_LIBRARY_PATH="${stdenv.gcc.gcc}/lib:$NIX_BUILD_TOP/${name}/glib/.libs:$LD_LIBRARY_PATH" + export TZDIR="${tzdata}/share/zoneinfo" + export XDG_CACHE_HOME="$TMP" + export XDG_RUNTIME_HOME="$TMP" + export HOME="$TMP" + export XDG_DATA_DIRS="${desktop_file_utils}/share:${shared_mime_info}/share" + export G_TEST_DBUS_DAEMON="${dbus_daemon}/bin/dbus-daemon" + + substituteInPlace gio/tests/desktop-files/home/applications/epiphany-weather-for-toronto-island-9c6a4e022b17686306243dada811d550d25eb1fb.desktop --replace "Exec=/bin/true" "Exec=${coreutils}/bin/true" + # Needs machine-id, comment the test + sed -e '/\/gdbus\/codegen-peer-to-peer/ s/^\/*/\/\//' -i gio/tests/gdbus-peer.c + # All gschemas fail to pass the test, upstream bug? + sed -e '/g_test_add_data_func/ s/^\/*/\/\//' -i gio/tests/gschema-compile.c + # Needed because of libtool wrappers + sed -e '/g_subprocess_launcher_set_environ (launcher, envp);/a g_subprocess_launcher_setenv (launcher, "PATH", g_getenv("PATH"), TRUE);' -i gio/tests/gsubprocess.c + ''; passthru = { gioModuleDir = "lib/gio/modules"; |