From bbbdab4c606a1996e6ba573336b425ccc136463c Mon Sep 17 00:00:00 2001 From: Dan Nicholson Date: Wed, 24 Aug 2016 10:32:57 -0700 Subject: Don't override empty prefix setting If the original prefix setting is empty, skip prepending the redefined prefix to other variables. This works the same as if the pc file doesn't have a prefix variable at all. https://bugs.freedesktop.org/show_bug.cgi?id=97453-empty --- check/Makefile.am | 1 + check/check-relocatable | 7 +++++++ check/pkgconfig/empty-prefix.pc | 10 ++++++++++ parse.c | 1 + 4 files changed, 19 insertions(+) create mode 100644 check/pkgconfig/empty-prefix.pc diff --git a/check/Makefile.am b/check/Makefile.am index f6d88e9..cf26019 100644 --- a/check/Makefile.am +++ b/check/Makefile.am @@ -99,6 +99,7 @@ EXTRA_DIST = \ gtk/xproto.pc \ gtk/xrender.pc \ tilde.pc \ + pkgconfig/empty-prefix.pc \ pkgconfig/prefixdef.pc \ pkgconfig/prefixdef-expanded.pc \ pcfiledir.pc \ diff --git a/check/check-relocatable b/check/check-relocatable index 589eddf..40c2c88 100755 --- a/check/check-relocatable +++ b/check/check-relocatable @@ -44,3 +44,10 @@ for pkg in prefixdef prefixdef-expanded; do RESULT="-I/reloc/include -L/reloc/lib -lfoo" run_test --dont-define-prefix --cflags --libs $pkg done + +# Test prefix redefinition for .pc files with an empty prefix. In this +# case, there should be no prefix adjustment to the other variables. The +# result should be the same regardless of prefix redefinition. +RESULT="-I/some/path/include -L/some/path/lib -lfoo" +run_test --define-prefix --cflags --libs empty-prefix +run_test --dont-define-prefix --cflags --libs empty-prefix diff --git a/check/pkgconfig/empty-prefix.pc b/check/pkgconfig/empty-prefix.pc new file mode 100644 index 0000000..9007250 --- /dev/null +++ b/check/pkgconfig/empty-prefix.pc @@ -0,0 +1,10 @@ +prefix= +libdir=/some/path/lib +includedir=/some/path/include + +Name: Empty prefix redefinition test +Description: Test pkg-config empty prefix redefinition +Version: 1.0.0 +Requires: +Libs: -L${libdir} -lfoo +Cflags: -I${includedir} diff --git a/parse.c b/parse.c index 4da6702..229d6f2 100644 --- a/parse.c +++ b/parse.c @@ -1046,6 +1046,7 @@ parse_line (Package *pkg, const char *untrimmed, const char *path, } else if (define_prefix && pkg->orig_prefix != NULL && + *(pkg->orig_prefix) != '\0' && strncmp (p, pkg->orig_prefix, strlen (pkg->orig_prefix)) == 0 && G_IS_DIR_SEPARATOR (p[strlen (pkg->orig_prefix)])) { -- cgit v1.2.1