diff options
author | Stefano Lattarini <stefano.lattarini@gmail.com> | 2012-12-13 09:46:18 +0100 |
---|---|---|
committer | Stefano Lattarini <stefano.lattarini@gmail.com> | 2012-12-13 17:54:32 +0100 |
commit | 7a4e193773e6f5b58dfc81a78b7508f9d4c9b1ee (patch) | |
tree | 0599bcb6129d4e2e4cb5bc141b12dffe8e1bb841 /t | |
parent | 319ae3dd47bddff0dbe4da2dca87f50d5347108c (diff) | |
download | automake-7a4e193773e6f5b58dfc81a78b7508f9d4c9b1ee.tar.gz |
tests: improve 'pkg-config' requirement
This improves (and unifies among different tests) the detection of
both the 'pkg-config' program and m4 macros provided by it; they are
needed in particular by tests on Vala support.
Before this, some Vala-related tests were failing spuriously when the
pkg-config program was available but the macros from pkg.m4 were not
made explicitly available in ACLOCAL_PATH. These tests were:
vala-mix vala-mix2 vala-parallel vala-vapi vala-vpath
See also similar commit 'v1.11-581-gb7d67d5' of 2011-12-22,
"tests: better handling of gettext and libtool requirements".
* t/ax/am-test-lib.sh (process_requirements): If a requirement
matches the 'pkg-config*' wildcard, try to make available to it
the pkg-config m4 macros, and skip it if it's not possible.
This is done by sourcing the 'get.sh' fragment generated by ...
* t/pkg-config-macros.sh: ... this new test, which looks in
advance for the 'pkg-config' program and the m4 macros that
comes with it.
* t/list-of-tests.mk: Add the new test.
* gen-testsuite-part (%deps_extractor): Tests requiring pkg-config
will need the m4 macros coming with it; so these tests should be
run after the 'pkg-config-macros.sh' test. Automatically generate
proper declarations for such dependencies.
* t/vala-header.sh: No need to explicitly check that the macro
PKG_CHECK_MODULES has been expanded by autoconf.
* t/vala-libs.sh: Likewise.
* t/vala-non-recursive-setup.sh: Likewise.
* t/vala-per-target-flags.sh: Likewise.
* t/vala-recursive-setup.sh: Likewise.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Diffstat (limited to 't')
-rw-r--r-- | t/ax/am-test-lib.sh | 14 | ||||
-rw-r--r-- | t/list-of-tests.mk | 3 | ||||
-rwxr-xr-x | t/pkg-config-macros.sh | 94 | ||||
-rwxr-xr-x | t/vala-headers.sh | 2 | ||||
-rwxr-xr-x | t/vala-libs.sh | 2 | ||||
-rwxr-xr-x | t/vala-non-recursive-setup.sh | 2 | ||||
-rwxr-xr-x | t/vala-per-target-flags.sh | 2 | ||||
-rwxr-xr-x | t/vala-recursive-setup.sh | 2 |
8 files changed, 103 insertions, 18 deletions
diff --git a/t/ax/am-test-lib.sh b/t/ax/am-test-lib.sh index 5725f28c4..29ed61ad2 100644 --- a/t/ax/am-test-lib.sh +++ b/t/ax/am-test-lib.sh @@ -800,14 +800,14 @@ process_requirements () for am_tool in $*; do require_tool $am_tool done + # We might need extra m4 macros, e.g., for Libtool or Gettext. + for am_tool in gettext libtool pkg-config; do + case " $required " in + # The lack of whitespace after $am_tool is intended. + *" $am_tool"*) . ./t/$am_tool-macros.dir/get.sh;; + esac + done am_tool=; unset am_tool - # We might need extra macros, e.g., from Libtool or Gettext. - case " $required " in - *\ libtool*) . ./t/libtool-macros.dir/get.sh;; - esac - case " $required " in - *\ gettext*) . ./t/gettext-macros.dir/get.sh;; - esac } ## ---------------------------------------------------------------- ## diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk index 8b58c2fac..1771ef6ac 100644 --- a/t/list-of-tests.mk +++ b/t/list-of-tests.mk @@ -1279,7 +1279,8 @@ t/yflags-force-conditional.sh \ t/yflags-force-override.sh \ t/yflags-var-expand.sh \ t/libtool-macros.sh \ -t/gettext-macros.sh +t/gettext-macros.sh \ +t/pkg-config-macros.sh print-list-of-tests: @echo $(handwritten_TESTS) diff --git a/t/pkg-config-macros.sh b/t/pkg-config-macros.sh new file mode 100755 index 000000000..06a65e35e --- /dev/null +++ b/t/pkg-config-macros.sh @@ -0,0 +1,94 @@ +#! /bin/sh +# Copyright (C) 2012 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Try to find the pkg-config '.m4' files and make them easily accessed +# to the test cases requiring them. + +. ./defs || exit 1 + +echo "# Automatically generated by $me." > get.sh +echo : >> get.sh + +if ver=$(pkg-config --version) && test -n "$ver"; then + echo "printf 'pkg-config version: %s\\n' '$ver'" >> get.sh +else + echo "skip_all_ \"'pkg-config' not available\"" >> get.sh +fi + +cat > configure.ac <<'END' +AC_INIT([pkg], [1.0]) +PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.4]) +END + +have_pkg_config_macros () +{ + $AUTOCONF && ! $FGREP PKG_CHECK_MODULES configure +} + +if have_pkg_config_macros; then + # The pkg-config macros are already available, nothing to do. + exit 0 +fi + +# Usual locations where pkg.m4 *might* be installed. +XT_ACLOCAL_PATH=/usr/local/share/aclocal:/usr/share/aclocal + +# Find the location of the pkg-config executable. +oIFS=$IFS dir= +for d in $PATH; do + IFS=$oIFS + if test -f $dir/pkg-config || test -f $dir/pkg-config.exe; then + dir=$d + break + fi +done +IFS=$oIFS + +# Now try to use the location of the pkg-config executable to guess +# where the corresponding pkg.m4 might be installed. +if test -n "$dir"; then + # Only support standard installation layouts. + XT_ACLOCAL_PATH=${dir%/bin}/share/alocal:$XT_ACLOCAL_PATH +fi + +XT_ACLOCAL_PATH=$XT_ACLOCAL_PATH${ACLOCAL_PATH+":$ACLOCAL_PATH"} + +# Try once again to fetch the pkg-config macros. +mkdir m4 +ACLOCAL_PATH=$XT_ACLOCAL_PATH $ACLOCAL --install -I m4 +if test -f m4/pkg.m4 && have_pkg_config_macros; then + echo "ACLOCAL_PATH='$(pwd)/m4':\$ACLOCAL_PATH" >> get.sh + echo "export ACLOCAL_PATH" >> get.sh + echo "sed 20q '$(pwd)/m4/pkg.m4' # For debugging." >> get.sh +else + echo "skip_all_ \"pkg-config m4 macros not found\"" >> get.sh +fi + +ACLOCAL_PATH=; unset ACLOCAL_PATH +. ./get.sh + +$ACLOCAL --force -I m4 || cat >> get.sh <<'END' +# We need to use '-Wno-syntax', since we do not want our test suite +# to fail merely because some third-party '.m4' file is underquoted. +ACLOCAL="$ACLOCAL -Wno-syntax" +END + +# The pkg-config m4 file(s) we might fetched will be copied in the +# 'm4' subdirectory of the test directory are going to be needed by +# other tests, so we must not remove the test directory. +keep_testdirs=yes + +: diff --git a/t/vala-headers.sh b/t/vala-headers.sh index 79a7b27c8..9d2f95fd1 100755 --- a/t/vala-headers.sh +++ b/t/vala-headers.sh @@ -62,8 +62,6 @@ $ACLOCAL $AUTOCONF $AUTOMAKE -a -grep PKG_CHECK_MODULES configure && skip_ "pkg-config m4 macros not found" - ./configure $MAKE diff --git a/t/vala-libs.sh b/t/vala-libs.sh index 852051b0d..87394483d 100755 --- a/t/vala-libs.sh +++ b/t/vala-libs.sh @@ -49,8 +49,6 @@ $ACLOCAL $AUTOCONF $AUTOMAKE -a -grep PKG_CHECK_MODULES configure && skip_ "pkg-config m4 macros not found" - ./configure cat > mu2.c << 'END' diff --git a/t/vala-non-recursive-setup.sh b/t/vala-non-recursive-setup.sh index 96135d34e..67c7920b2 100755 --- a/t/vala-non-recursive-setup.sh +++ b/t/vala-non-recursive-setup.sh @@ -50,8 +50,6 @@ $ACLOCAL $AUTOCONF $AUTOMAKE -a -grep PKG_CHECK_MODULES configure && skip_ "pkg-config m4 macros not found" - ./configure $MAKE test -f src/zardoz.c diff --git a/t/vala-per-target-flags.sh b/t/vala-per-target-flags.sh index 5eae28185..f73b58772 100755 --- a/t/vala-per-target-flags.sh +++ b/t/vala-per-target-flags.sh @@ -68,8 +68,6 @@ $ACLOCAL $AUTOCONF $AUTOMAKE -a -grep PKG_CHECK_MODULES configure && skip_ "pkg-config m4 macros not found" - ./configure $MAKE diff --git a/t/vala-recursive-setup.sh b/t/vala-recursive-setup.sh index 2543c78e9..a0cc43892 100755 --- a/t/vala-recursive-setup.sh +++ b/t/vala-recursive-setup.sh @@ -56,8 +56,6 @@ $ACLOCAL $AUTOCONF $AUTOMAKE -a -grep PKG_CHECK_MODULES configure && skip_ "pkg-config m4 macros not found" - ./configure $MAKE |