diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | check/Makefile.am | 3 | ||||
-rwxr-xr-x | check/check-missing | 26 | ||||
-rw-r--r-- | check/missing-requires.pc | 12 | ||||
-rw-r--r-- | main.c | 6 | ||||
-rw-r--r-- | pkg.c | 11 | ||||
-rw-r--r-- | pkg.h | 2 |
7 files changed, 63 insertions, 1 deletions
@@ -1,5 +1,9 @@ 2009-03-30 Tollef Fog Heen <tfheen@err.no> + * pkg.[ch], main.c, check/check-missing: Don't recurse Requires at + all unless we need to. Add check. Again, thanks to Loïc Minier + for most of the idea and the implementation. + * pkg.[ch], parse.[ch], main.c, check/Makefile.am, check/check-missing, check/missing-requires-private.pc: Skip Requires.private unless we need to look at them for cflags. diff --git a/check/Makefile.am b/check/Makefile.am index 355f192..0728514 100644 --- a/check/Makefile.am +++ b/check/Makefile.am @@ -4,5 +4,6 @@ TESTS = check-cflags check-libs check-define-variable \ check-conflicts check-missing EXTRA_DIST = $(TESTS) common simple.pc requires-test.pc public-dep.pc \ - private-dep.pc includedir.pc missing-requires-private.pc + private-dep.pc includedir.pc missing-requires-private.pc \ + missing-requires.pc diff --git a/check/check-missing b/check/check-missing index bd2650c..667de6c 100755 --- a/check/check-missing +++ b/check/check-missing @@ -50,3 +50,29 @@ ARGS="--variable includedir missing-requires-private" EXPECT_RETURN=0 RESULT="/usr/include/somedir" run_test + +# tests below are on an existing package, but with missing Requires; when +# pkg-config outputs error, the actual error text isn't checked +# package exists +ARGS="missing-requires" +EXPECT_RETURN=0 +RESULT="" +run_test + +# Libs should fail +ARGS="--silence-errors --libs missing-requires" +EXPECT_RETURN=1 +RESULT="" +run_test + +# Cflags should fail +ARGS="--silence-errors --cflags missing-requires" +EXPECT_RETURN=1 +RESULT="" +run_test + +# get includedir var +ARGS="--variable includedir missing-requires" +EXPECT_RETURN=0 +RESULT="/usr/include/somedir" +run_test diff --git a/check/missing-requires.pc b/check/missing-requires.pc new file mode 100644 index 0000000..755feb7 --- /dev/null +++ b/check/missing-requires.pc @@ -0,0 +1,12 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include/somedir + +Name: Missing Requires test package +Description: Dummy pkgconfig test package for testing with a missing Requires +Version: 1.0.0 +Requires: pkg-non-existent-dep +Libs: -L/missing-requires/lib -lmissing-requires +Cflags: -I/missing-requires/include +foodir: bar @@ -391,6 +391,12 @@ main (int argc, char **argv) (want_static_lib_list && (want_libs || want_l_libs || want_L_libs))) enable_requires_private(); + /* ignore Requires if no Cflags or Libs are requested */ + + if (!want_I_cflags && !want_other_cflags && !want_cflags && + !want_libs && !want_l_libs && !want_L_libs) + disable_requires(); + if (want_my_version) { printf ("%s\n", VERSION); @@ -1531,6 +1531,17 @@ disable_private_libs(void) ignore_private_libs = TRUE; } +void +enable_requires(void) +{ + ignore_requires = FALSE; +} + +void +disable_requires(void) +{ + ignore_requires = TRUE; +} void enable_requires_private(void) @@ -119,6 +119,8 @@ gboolean name_ends_in_uninstalled (const char *str); 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); |