about summary refs log tree commit diff
path: root/pkgs/development/libraries/glib
diff options
context:
space:
mode:
authorTor Hedin Brønner <torhedinbronner@gmail.com>2019-09-02 17:53:03 +0200
committerTor Hedin Brønner <torhedinbronner@gmail.com>2019-09-30 19:39:38 +0200
commit1e3e7822a64fefb5ef98878047025efa6ae34b7b (patch)
tree5bfcf96f3b7fe496e1e0c8aff4c9956df91f7992 /pkgs/development/libraries/glib
parent1644d1cd678ff2afd49f7c279489543560de8d03 (diff)
downloadnixlib-1e3e7822a64fefb5ef98878047025efa6ae34b7b.tar
nixlib-1e3e7822a64fefb5ef98878047025efa6ae34b7b.tar.gz
nixlib-1e3e7822a64fefb5ef98878047025efa6ae34b7b.tar.bz2
nixlib-1e3e7822a64fefb5ef98878047025efa6ae34b7b.tar.lz
nixlib-1e3e7822a64fefb5ef98878047025efa6ae34b7b.tar.xz
nixlib-1e3e7822a64fefb5ef98878047025efa6ae34b7b.tar.zst
nixlib-1e3e7822a64fefb5ef98878047025efa6ae34b7b.zip
glib: 2.60.7 -> 2.62.0
Co-authored-by: Jan Tojnar <jtojnar@gmail.com>
Diffstat (limited to 'pkgs/development/libraries/glib')
-rw-r--r--pkgs/development/libraries/glib/default.nix57
-rw-r--r--pkgs/development/libraries/glib/split-dev-programs.patch154
2 files changed, 190 insertions, 21 deletions
diff --git a/pkgs/development/libraries/glib/default.nix b/pkgs/development/libraries/glib/default.nix
index de7505e6cde1..204aa03e06ff 100644
--- a/pkgs/development/libraries/glib/default.nix
+++ b/pkgs/development/libraries/glib/default.nix
@@ -1,4 +1,4 @@
-{ config, stdenv, fetchurl, gettext, meson, ninja, pkgconfig, perl, python3, glibcLocales
+{ config, stdenv, fetchurl, gettext, meson, ninja, pkgconfig, perl, python3
 , libiconv, zlib, libffi, pcre, libelf, gnome3, libselinux, bash, gnum4, gtk-doc, docbook_xsl, docbook_xml_dtd_45
 # use utillinuxMinimal to avoid circular dependency (utillinux, systemd, glib)
 , utillinuxMinimal ? null
@@ -44,17 +44,15 @@ let
     done
     ln -sr -t "''${!outputInclude}/include/" "''${!outputInclude}"/lib/*/include/* 2>/dev/null || true
   '';
-
-  binPrograms = optional (!stdenv.isDarwin) "gapplication" ++ [ "gdbus" "gio" "gsettings" ];
 in
 
 stdenv.mkDerivation rec {
   pname = "glib";
-  version = "2.60.7";
+  version = "2.62.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/glib/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0433m0na8nc4cf0gidf4gfzz8k5d3dsssmh541qkpzcsaspw04lb";
+    sha256 = "046sqfmr84blxh4vkipmh8ff7wd19fxmh6lnr5ibchx3l02p49bc";
   };
 
   patches = optional stdenv.isDarwin ./darwin-compilation.patch
@@ -66,10 +64,33 @@ stdenv.mkDerivation rec {
       ./schema-override-variable.patch
       # Require substituteInPlace in postPatch
       ./fix-gio-launch-desktop-path.patch
+
+      # GLib contains many binaries used for different purposes;
+      # we will install them to different outputs:
+      # 1. Tools for desktop environment ($bin)
+      #    * gapplication (non-darwin)
+      #    * gdbus
+      #    * gio
+      #    * gio-launch-desktop (symlink to $out)
+      #    * gsettings
+      # 2. Development/build tools ($dev)
+      #    * gdbus-codegen
+      #    * gio-querymodules
+      #    * glib-compile-resources
+      #    * glib-compile-schemas
+      #    * glib-genmarshal
+      #    * glib-gettextize
+      #    * glib-mkenums
+      #    * gobject-query
+      #    * gresource
+      #    * gtester
+      #    * gtester-report
+      # 3. Tools for desktop environment that cannot go to $bin due to $out depending on them ($out)
+      #    * gio-launch-desktop
+      ./split-dev-programs.patch
     ];
 
   outputs = [ "bin" "out" "dev" "devdoc" ];
-  outputBin = "dev";
 
   setupHook = ./setup-hook.sh;
 
@@ -84,7 +105,7 @@ stdenv.mkDerivation rec {
   ]);
 
   nativeBuildInputs = [
-    meson ninja pkgconfig perl python3 gettext gtk-doc docbook_xsl docbook_xml_dtd_45 glibcLocales
+    meson ninja pkgconfig perl python3 gettext gtk-doc docbook_xsl docbook_xml_dtd_45
   ];
 
   propagatedBuildInputs = [ zlib libffi gettext libiconv ];
@@ -94,10 +115,9 @@ stdenv.mkDerivation rec {
     # Instead we just copy them over from the native output.
     "-Dgtk_doc=${if stdenv.hostPlatform == stdenv.buildPlatform then "true" else "false"}"
     "-Dnls=enabled"
+    "-Ddevbindir=${placeholder ''dev''}/bin"
   ];
 
-  LC_ALL = "en_US.UTF-8";
-
   NIX_CFLAGS_COMPILE = [
     "-Wno-error=nonnull"
     # Default for release buildtype but passed manually because
@@ -111,6 +131,8 @@ stdenv.mkDerivation rec {
 
     chmod +x gio/tests/gengiotypefuncs.py
     patchShebangs gio/tests/gengiotypefuncs.py
+    chmod +x docs/reference/gio/concat-files-helper.py
+    patchShebangs docs/reference/gio/concat-files-helper.py
     patchShebangs glib/gen-unicode-tables.pl
     patchShebangs tests/gen-casefold-txt.py
     patchShebangs tests/gen-casemap-txt.py
@@ -122,18 +144,6 @@ stdenv.mkDerivation rec {
   DETERMINISTIC_BUILD = 1;
 
   postInstall = ''
-    mkdir -p $bin/bin
-    for app in ${concatStringsSep " " binPrograms}; do
-      mv "$dev/bin/$app" "$bin/bin"
-    done
-
-  '' + optionalString (!stdenv.isDarwin) ''
-    # Add gio-launch-desktop to $out so we can refer to it from $dev
-    mkdir $out/bin
-    mv "$dev/bin/gio-launch-desktop" "$out/bin/"
-    ln -s "$out/bin/gio-launch-desktop" "$bin/bin/"
-
-  '' + ''
     moveToOutput "share/glib-2.0" "$dev"
     substituteInPlace "$dev/bin/gdbus-codegen" --replace "$out" "$dev"
     sed -i "$dev/bin/glib-gettextize" -e "s|^gettext_dir=.*|gettext_dir=$dev/share/glib-2.0/gettext|"
@@ -141,6 +151,11 @@ stdenv.mkDerivation rec {
     # This file is *included* in gtk3 and would introduce runtime reference via __FILE__.
     sed '1i#line 1 "${pname}-${version}/include/glib-2.0/gobject/gobjectnotifyqueue.c"' \
       -i "$dev"/include/glib-2.0/gobject/gobjectnotifyqueue.c
+  '' + optionalString (!stdenv.isDarwin) ''
+    # Add gio-launch-desktop to $out so we can refer to it from $lib
+    mkdir $out/bin
+    mv "$bin/bin/gio-launch-desktop" "$out/bin/"
+    ln -s "$out/bin/gio-launch-desktop" "$bin/bin/"
   '' + optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
     cp -r ${buildPackages.glib.devdoc} $devdoc
   '';
diff --git a/pkgs/development/libraries/glib/split-dev-programs.patch b/pkgs/development/libraries/glib/split-dev-programs.patch
new file mode 100644
index 000000000000..9d3989a30a54
--- /dev/null
+++ b/pkgs/development/libraries/glib/split-dev-programs.patch
@@ -0,0 +1,154 @@
+diff --git a/gio/gdbus-2.0/codegen/meson.build b/gio/gdbus-2.0/codegen/meson.build
+index 121e9e6bb..b76fa0188 100644
+--- a/gio/gdbus-2.0/codegen/meson.build
++++ b/gio/gdbus-2.0/codegen/meson.build
+@@ -16,7 +16,7 @@ gdbus_codegen_conf.set('DATADIR', glib_datadir)
+ # Install gdbus-codegen executable
+ gdbus_codegen = configure_file(input : 'gdbus-codegen.in',
+   output : 'gdbus-codegen',
+-  install_dir : get_option('bindir'),
++  install_dir : get_option('devbindir'),
+   configuration : gdbus_codegen_conf
+ )
+   # Provide tools for others when we're a subproject and they use the Meson GNOME module
+diff --git a/gio/meson.build b/gio/meson.build
+index 9a9e621b3..12e1d146a 100644
+--- a/gio/meson.build
++++ b/gio/meson.build
+@@ -830,14 +830,15 @@ pkg.generate(libgio,
+   variables : ['datadir=' + join_paths('${prefix}', get_option('datadir')),
+                'schemasdir=' + join_paths('${datadir}', schemas_subdir),
+                'bindir=' + join_paths('${prefix}', get_option('bindir')),
++               'devbindir=' + get_option('devbindir'),
+                'giomoduledir=' + giomodulesdir,
+                'gio=' + join_paths('${bindir}', 'gio'),
+-               'gio_querymodules=' + join_paths('${bindir}', 'gio-querymodules'),
+-               'glib_compile_schemas=' + join_paths('${bindir}', 'glib-compile-schemas'),
+-               'glib_compile_resources=' + join_paths('${bindir}', 'glib-compile-resources'),
++               'gio_querymodules=' + join_paths('${devbindir}', 'gio-querymodules'),
++               'glib_compile_schemas=' + join_paths('${devbindir}', 'glib-compile-schemas'),
++               'glib_compile_resources=' + join_paths('${devbindir}', 'glib-compile-resources'),
+                'gdbus=' + join_paths('${bindir}', 'gdbus'),
+-               'gdbus_codegen=' + join_paths('${bindir}', 'gdbus-codegen'),
+-               'gresource=' + join_paths('${bindir}', 'gresource'),
++               'gdbus_codegen=' + join_paths('${devbindir}', 'gdbus-codegen'),
++               'gresource=' + join_paths('${devbindir}', 'gresource'),
+                'gsettings=' + join_paths('${bindir}', 'gsettings')],
+   version : glib_version,
+   install_dir : glib_pkgconfigreldir,
+@@ -938,12 +939,14 @@ executable('gio', gio_tool_sources,
+ 
+ executable('gresource', 'gresource-tool.c',
+   install : true,
++  install_dir : get_option('devbindir'),
+   # intl.lib is not compatible with SAFESEH
+   link_args : noseh_link_args,
+   dependencies : [libelf, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+ 
+ gio_querymodules = executable('gio-querymodules', 'gio-querymodules.c', 'giomodule-priv.c',
+   install : true,
++  install_dir : get_option('devbindir'),
+   c_args : gio_c_args,
+   # intl.lib is not compatible with SAFESEH
+   link_args : noseh_link_args,
+@@ -952,6 +955,7 @@ gio_querymodules = executable('gio-querymodules', 'gio-querymodules.c', 'giomodu
+ glib_compile_schemas = executable('glib-compile-schemas',
+   [gconstructor_as_data_h, 'gvdb/gvdb-builder.c', 'glib-compile-schemas.c'],
+   install : true,
++  install_dir : get_option('devbindir'),
+   # intl.lib is not compatible with SAFESEH
+   link_args : noseh_link_args,
+   dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+@@ -959,6 +963,7 @@ glib_compile_schemas = executable('glib-compile-schemas',
+ glib_compile_resources = executable('glib-compile-resources',
+   [gconstructor_as_data_h, 'gvdb/gvdb-builder.c', 'glib-compile-resources.c'],
+   install : true,
++  install_dir : get_option('devbindir'),
+   c_args : gio_c_args,
+   # intl.lib is not compatible with SAFESEH
+   link_args : noseh_link_args,
+diff --git a/glib/meson.build b/glib/meson.build
+index 91a48f194..80472a06b 100644
+--- a/glib/meson.build
++++ b/glib/meson.build
+@@ -375,9 +375,10 @@ pkg.generate(libglib,
+   subdirs : ['glib-2.0'],
+   extra_cflags : ['-I${libdir}/glib-2.0/include'] + win32_cflags,
+   variables : ['bindir=' + join_paths('${prefix}', get_option('bindir')),
+-               'glib_genmarshal=' + join_paths('${bindir}', 'glib-genmarshal'),
+-               'gobject_query=' + join_paths('${bindir}', 'gobject-query'),
+-               'glib_mkenums=' + join_paths('${bindir}', 'glib-mkenums')],
++               'devbindir=' + get_option('devbindir'),
++               'glib_genmarshal=' + join_paths('${devbindir}', 'glib-genmarshal'),
++               'gobject_query=' + join_paths('${devbindir}', 'gobject-query'),
++               'glib_mkenums=' + join_paths('${devbindir}', 'glib-mkenums')],
+   version : glib_version,
+   install_dir : glib_pkgconfigreldir,
+   filebase : 'glib-2.0',
+@@ -413,6 +414,7 @@ if host_system == 'windows'
+ else
+   gtester = executable('gtester', 'gtester.c',
+     install : true,
++    install_dir : get_option('devbindir'),
+     c_args : ['-UG_DISABLE_ASSERT'],
+     include_directories : configinc,
+     dependencies : [libglib_dep])
+@@ -424,7 +426,7 @@ report_conf.set('PYTHON', python_name)
+ configure_file(
+   input: 'gtester-report.in',
+   output: 'gtester-report',
+-  install_dir: get_option('bindir'),
++  install_dir: get_option('devbindir'),
+   configuration: report_conf,
+   install_mode: 'rwxr-xr-x'
+ )
+diff --git a/gobject/meson.build b/gobject/meson.build
+index c7805c556..22ec629a4 100644
+--- a/gobject/meson.build
++++ b/gobject/meson.build
+@@ -75,7 +75,7 @@ foreach tool: python_tools
+     input : tool + '.in',
+     output : tool,
+     configuration : python_tools_conf,
+-    install_dir : glib_bindir,
++    install_dir : get_option('devbindir'),
+   )
+ 
+   # Set variables for later use
+@@ -145,6 +145,7 @@ libgobject_dep = declare_dependency(link_with : libgobject,
+ 
+ executable('gobject-query', 'gobject-query.c',
+   install : true,
++  install_dir : get_option('devbindir'),
+   dependencies : [libglib_dep, libgobject_dep])
+ 
+ install_data('gobject_gdb.py', install_dir : join_paths(glib_pkgdatadir, 'gdb'))
+diff --git a/meson.build b/meson.build
+index 717d1bccb..fb0bee8a1 100644
+--- a/meson.build
++++ b/meson.build
+@@ -2118,7 +2118,7 @@ if have_sh
+   gettextize_conf.set('datarootdir', glib_datadir)
+   gettextize_conf.set('datadir', glib_datadir)
+   configure_file(input : 'glib-gettextize.in',
+-    install_dir : glib_bindir,
++    install_dir : get_option('devbindir'),
+     output : 'glib-gettextize',
+     configuration : gettextize_conf)
+ endif
+diff --git a/meson_options.txt b/meson_options.txt
+index 2c831e37e..5d8928577 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -3,6 +3,11 @@ option('runtime_libdir',
+        value : '',
+        description : 'install runtime libraries relative to libdir')
+ 
++option('devbindir',
++       type : 'string',
++       value : '',
++       description : 'bindir for development tools')
++
+ option('iconv',
+        type : 'combo',
+        choices : ['auto', 'libc', 'external'],