diff --git a/pkgs/development/tools/misc/pkgconfig/default.nix b/pkgs/development/tools/misc/pkgconfig/default.nix index 49b2cbfe66e4..2ce1fd7b6e4d 100644 --- a/pkgs/development/tools/misc/pkgconfig/default.nix +++ b/pkgs/development/tools/misc/pkgconfig/default.nix @@ -1,15 +1,17 @@ {stdenv, fetchurl, automake, vanilla ? false}: stdenv.mkDerivation (rec { - name = "pkg-config-0.23"; + name = "pkg-config-0.28"; setupHook = ./setup-hook.sh; src = fetchurl { url = "http://pkgconfig.freedesktop.org/releases/${name}.tar.gz"; - sha256 = "0lrvk17724mc2nzpaa0vwybarrl50r7qdnr4h6jijm50srrf1808"; + sha256 = "0igqq5m204w71m11y0nipbdf5apx87hwfll6axs12hn4dqfb6vkb"; }; + configureFlags = [ "--with-internal-glib" ]; + patches = if vanilla then [] else [ # Process Requires.private properly, see # http://bugs.freedesktop.org/show_bug.cgi?id=4738. diff --git a/pkgs/development/tools/misc/pkgconfig/requires-private.patch b/pkgs/development/tools/misc/pkgconfig/requires-private.patch index f5dee097d601..d40aa9801379 100644 --- a/pkgs/development/tools/misc/pkgconfig/requires-private.patch +++ b/pkgs/development/tools/misc/pkgconfig/requires-private.patch @@ -1,221 +1,17 @@ -diff -rc pkg-config-0.23-orig/main.c pkg-config-0.23/main.c -*** pkg-config-0.23-orig/main.c 2008-01-16 23:06:48.000000000 +0100 ---- pkg-config-0.23/main.c 2008-10-14 13:04:04.000000000 +0200 -*************** -*** 431,436 **** ---- 431,454 ---- - else - disable_private_libs(); - -+ /* Only process Requires field if cflags or libs wanted */ -+ if (want_libs || -+ want_cflags || -+ want_l_libs || -+ want_L_libs || -+ want_other_libs || -+ want_I_cflags || -+ want_other_cflags) -+ enable_requires(); -+ else -+ disable_requires(); -+ -+ /* Only process Requires.private if static libs wanted */ -+ if (want_static_lib_list) -+ enable_requires_private(); -+ else -+ disable_requires_private(); -+ - if (want_my_version) - { - printf ("%s\n", VERSION); -diff -rc pkg-config-0.23-orig/parse.c pkg-config-0.23/parse.c -*** pkg-config-0.23-orig/parse.c 2008-01-16 21:42:49.000000000 +0100 ---- pkg-config-0.23/parse.c 2008-10-13 14:41:42.000000000 +0200 -*************** -*** 913,919 **** - #endif - - static void -! parse_line (Package *pkg, const char *untrimmed, const char *path, gboolean ignore_requires, gboolean ignore_private_libs) - { - char *str; - char *p; ---- 913,921 ---- - #endif - - static void -! parse_line (Package *pkg, const char *untrimmed, const char *path, -! gboolean ignore_requires, gboolean ignore_requires_private, -! gboolean ignore_private_libs) - { - char *str; - char *p; -*************** -*** 956,970 **** - parse_description (pkg, p, path); - else if (strcmp (tag, "Version") == 0) - parse_version (pkg, p, path); -! else if (strcmp (tag, "Requires.private") == 0) -! parse_requires_private (pkg, p, path); -! else if (strcmp (tag, "Requires") == 0) -! { -! if (ignore_requires == FALSE) -! parse_requires (pkg, p, path); -! else -! goto cleanup; -! } - else if ((strcmp (tag, "Libs.private") == 0) && - ignore_private_libs == FALSE) - parse_libs_private (pkg, p, path); ---- 958,969 ---- - parse_description (pkg, p, path); - else if (strcmp (tag, "Version") == 0) - parse_version (pkg, p, path); -! else if ((strcmp (tag, "Requires.private") == 0) && -! ignore_requires_private == FALSE) -! parse_requires_private (pkg, p, path); -! else if ((strcmp (tag, "Requires") == 0) && -! ignore_requires == FALSE) -! parse_requires (pkg, p, path); - else if ((strcmp (tag, "Libs.private") == 0) && - ignore_private_libs == FALSE) - parse_libs_private (pkg, p, path); -*************** -*** 1067,1073 **** - } - - Package* -! parse_package_file (const char *path, gboolean ignore_requires, gboolean ignore_private_libs) - { - FILE *f; - Package *pkg; ---- 1066,1074 ---- - } - - Package* -! parse_package_file (const char *path, gboolean ignore_requires, -! gboolean ignore_requires_private, -! gboolean ignore_private_libs) - { - FILE *f; - Package *pkg; -*************** -*** 1104,1110 **** - { - one_line = TRUE; - -! parse_line (pkg, str->str, path, ignore_requires, ignore_private_libs); - - g_string_truncate (str, 0); - } ---- 1105,1112 ---- - { - one_line = TRUE; - -! parse_line (pkg, str->str, path, ignore_requires, -! ignore_requires_private, ignore_private_libs); - - g_string_truncate (str, 0); - } -diff -rc pkg-config-0.23-orig/parse.h pkg-config-0.23/parse.h -*** pkg-config-0.23-orig/parse.h 2008-01-16 21:42:49.000000000 +0100 ---- pkg-config-0.23/parse.h 2008-10-13 14:41:42.000000000 +0200 -*************** -*** 23,28 **** ---- 23,29 ---- - #include "pkg.h" - - Package *parse_package_file (const char *path, gboolean ignore_requires, -+ gboolean ignore_requires_private, - gboolean ignore_private_libs); - - Package *get_compat_package (const char *name); -diff -rc pkg-config-0.23-orig/pkg.c pkg-config-0.23/pkg.c -*** pkg-config-0.23-orig/pkg.c 2008-01-16 22:59:49.000000000 +0100 ---- pkg-config-0.23/pkg.c 2008-10-13 14:41:42.000000000 +0200 -*************** -*** 55,60 **** ---- 55,61 ---- - - gboolean disable_uninstalled = FALSE; - gboolean ignore_requires = FALSE; -+ gboolean ignore_requires_private = FALSE; - gboolean ignore_private_libs = TRUE; - - void -*************** -*** 337,343 **** - } - - debug_spew ("Reading '%s' from file '%s'\n", name, location); -! pkg = parse_package_file (location, ignore_requires, ignore_private_libs); - - if (pkg == NULL) - { ---- 338,345 ---- - } - - debug_spew ("Reading '%s' from file '%s'\n", name, location); -! pkg = parse_package_file (location, ignore_requires, ignore_requires_private, -! ignore_private_libs); - - if (pkg == NULL) - { -*************** -*** 1506,1511 **** ---- 1508,1514 ---- - int mlen = 0; - - ignore_requires = TRUE; -+ ignore_requires_private = TRUE; - - g_hash_table_foreach (locations, max_len_foreach, &mlen); - g_hash_table_foreach (locations, packages_foreach, GINT_TO_POINTER (mlen + 1)); -*************** -*** 1522,1524 **** ---- 1525,1551 ---- - { - ignore_private_libs = TRUE; - } -+ -+ void -+ enable_requires(void) -+ { -+ ignore_requires = FALSE; -+ } -+ -+ void -+ disable_requires(void) -+ { -+ ignore_requires = TRUE; -+ } -+ -+ void -+ enable_requires_private(void) -+ { -+ ignore_requires_private = FALSE; -+ } -+ -+ void -+ disable_requires_private(void) -+ { -+ ignore_requires_private = TRUE; -+ } -diff -rc pkg-config-0.23-orig/pkg.h pkg-config-0.23/pkg.h -*** pkg-config-0.23-orig/pkg.h 2008-01-16 22:27:19.000000000 +0100 ---- pkg-config-0.23/pkg.h 2008-10-13 14:41:42.000000000 +0200 -*************** -*** 120,125 **** ---- 120,131 ---- - void enable_private_libs(void); - void disable_private_libs(void); - -+ void enable_requires(void); -+ void disable_requires(void); -+ -+ void enable_requires_private(void); -+ void disable_requires_private(void); -+ - /* If TRUE, do not automatically prefer uninstalled versions */ - extern gboolean disable_uninstalled; - +diff --git a/main.c b/main.c +index b61ca34..5a420c2 100644 +--- a/main.c ++++ b/main.c +@@ -602,10 +602,10 @@ main (int argc, char **argv) + else + disable_private_libs(); + +- /* honor Requires.private if any Cflags are requested or any static ++ /* honor Requires.private if any any static + * libs are requested */ + +- if (pkg_flags & CFLAGS_ANY || want_requires_private || want_exists || ++ if (want_requires_private || + (want_static_lib_list && (pkg_flags & LIBS_ANY))) + enable_requires_private(); +