From 92f6176390a9f9f7ec893f08d07203621b7de75b Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 6 Mar 2008 16:22:24 +0000 Subject: * pkg-config (note name change): updated to 0.23. Also, look in share/pkgconfig in addition to lib/pkgconfig. svn path=/nixpkgs/branches/stdenv-updates/; revision=10993 --- pkgs/development/tools/misc/pkgconfig/default.nix | 22 +-- .../development/tools/misc/pkgconfig/private.patch | 177 +++++++++++++++++++++ .../development/tools/misc/pkgconfig/setup-hook.sh | 1 + 3 files changed, 191 insertions(+), 9 deletions(-) create mode 100644 pkgs/development/tools/misc/pkgconfig/private.patch (limited to 'pkgs/development/tools/misc/pkgconfig') diff --git a/pkgs/development/tools/misc/pkgconfig/default.nix b/pkgs/development/tools/misc/pkgconfig/default.nix index 41a61f600e04..f5912438d6be 100644 --- a/pkgs/development/tools/misc/pkgconfig/default.nix +++ b/pkgs/development/tools/misc/pkgconfig/default.nix @@ -1,21 +1,25 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "pkgconfig-0.22"; + name = "pkg-config-0.23"; + setupHook = ./setup-hook.sh; + src = fetchurl { - url = http://pkgconfig.freedesktop.org/releases/pkg-config-0.22.tar.gz; - sha256 = "1rpb5wygmp0f8nal7y3ga4556i7hkjdslv3wdq04fj30gns621vy"; + url = http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz; + sha256 = "0lrvk17724mc2nzpaa0vwybarrl50r7qdnr4h6jijm50srrf1808"; }; patches = [ # Process Requires.private properly, see # http://bugs.freedesktop.org/show_bug.cgi?id=4738. - (fetchurl { - name = "pkgconfig-8494.patch"; - url = http://bugs.freedesktop.org/attachment.cgi?id=8494; - sha256 = "1pcrdbb7dypg2biy0yqc7bdxak5zii8agqljdvk7j4wbyghpqzws"; - }) + ./private.patch ]; -} + patchFlags = "-p0"; + + meta = { + description = "A tool that allows packages to find out information about other packages"; + homepage = http://pkg-config.freedesktop.org/wiki/; + }; +} diff --git a/pkgs/development/tools/misc/pkgconfig/private.patch b/pkgs/development/tools/misc/pkgconfig/private.patch new file mode 100644 index 000000000000..4eb6555b4c98 --- /dev/null +++ b/pkgs/development/tools/misc/pkgconfig/private.patch @@ -0,0 +1,177 @@ +=== modified file 'main.c' +--- main.c 2006-08-16 17:57:14 +0000 ++++ main.c 2007-12-18 23:40:46 +0000 +@@ -420,6 +420,27 @@ + 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 cflags or static libs wanted */ ++ if (want_cflags || ++ want_I_cflags || ++ want_other_cflags || ++ want_static_lib_list) ++ enable_requires_private(); ++ else ++ disable_requires_private(); ++ + if (want_my_version) + { + printf ("%s\n", VERSION); + +=== modified file 'parse.c' +--- parse.c 2007-05-30 11:24:42 +0000 ++++ parse.c 2007-12-18 23:40:46 +0000 +@@ -913,7 +913,9 @@ + #endif + + static void +-parse_line (Package *pkg, const char *untrimmed, const char *path, gboolean ignore_requires, gboolean ignore_private_libs) ++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,15 +958,12 @@ + 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, "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,7 +1066,9 @@ + } + + Package* +-parse_package_file (const char *path, gboolean ignore_requires, gboolean ignore_private_libs) ++parse_package_file (const char *path, gboolean ignore_requires, ++ gboolean ignore_requires_private, ++ gboolean ignore_private_libs) + { + FILE *f; + Package *pkg; +@@ -1104,7 +1105,8 @@ + { + one_line = TRUE; + +- parse_line (pkg, str->str, path, ignore_requires, ignore_private_libs); ++ parse_line (pkg, str->str, path, ignore_requires, ++ ignore_requires_private, ignore_private_libs); + + g_string_truncate (str, 0); + } + +=== modified file 'parse.h' +--- parse.h 2005-07-14 13:07:18 +0000 ++++ parse.h 2007-12-18 23:40:46 +0000 +@@ -23,6 +23,7 @@ + #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); + +=== modified file 'pkg.c' +--- pkg.c 2007-06-18 21:19:27 +0000 ++++ pkg.c 2007-12-18 23:40:46 +0000 +@@ -55,6 +55,7 @@ + + gboolean disable_uninstalled = FALSE; + gboolean ignore_requires = FALSE; ++gboolean ignore_requires_private = FALSE; + gboolean ignore_private_libs = TRUE; + + static Package pkg_config_package = { +@@ -349,7 +350,8 @@ + } + + debug_spew ("Reading '%s' from file '%s'\n", name, location); +- pkg = parse_package_file (location, ignore_requires, ignore_private_libs); ++ pkg = parse_package_file (location, ignore_requires, ignore_requires_private, ++ ignore_private_libs); + + if (pkg == NULL) + { +@@ -1503,6 +1505,7 @@ + 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)); +@@ -1519,3 +1522,27 @@ + { + 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; ++} + +=== modified file 'pkg.h' +--- pkg.h 2005-10-16 17:31:41 +0000 ++++ pkg.h 2007-12-18 23:40:46 +0000 +@@ -120,6 +120,12 @@ + 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/pkgs/development/tools/misc/pkgconfig/setup-hook.sh b/pkgs/development/tools/misc/pkgconfig/setup-hook.sh index c137fb0e96c5..ccb48c129e7c 100644 --- a/pkgs/development/tools/misc/pkgconfig/setup-hook.sh +++ b/pkgs/development/tools/misc/pkgconfig/setup-hook.sh @@ -1,5 +1,6 @@ addPkgConfigPath () { addToSearchPath PKG_CONFIG_PATH /lib/pkgconfig "" $1 + addToSearchPath PKG_CONFIG_PATH /share/pkgconfig "" $1 } envHooks=(${envHooks[@]} addPkgConfigPath) -- cgit 1.4.1