[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: t/aclocal-print-acdir.sh at installcheck and AUTOMAKE_UNINSTALLED
From: |
Mathieu Lirzin |
Subject: |
Re: t/aclocal-print-acdir.sh at installcheck and AUTOMAKE_UNINSTALLED |
Date: |
Tue, 04 Feb 2020 15:54:09 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) |
Hello Karl,
Karl Berry <address@hidden> writes:
> The aclocal-print-acdir.sh test fails at the make installcheck step of
> make distcheck (it succeeds in the normal make check, and it succeeds at
> the make check of make distcheck; only fails in the make installcheck).
>
> This is because AUTOMAKE_UNINSTALLED is (correctly) set in the
> environment at that point, which causes aclocal-1.16 --print-ac-dir
> to forcibly return the empty string, which does not match the expected
> acdir string:
>
> + aclocal-1.16 -Werror --print-ac-dir
>
> test "$($ACLOCAL --print-ac-dir)" = "$am_system_acdir"
> ++ aclocal-1.16 -Werror --print-ac-dir
> + test '' = /u/karl/gnu/src/akarl/automake-1.16a/_inst/share/aclocal
> am_exit_trap $?
> + am_exit_trap 1
>
> Per this bit in the aclocal-1.16 Perl script:
>
> if (exists $ENV{"AUTOMAKE_UNINSTALLED"})
> {
> @automake_includes = ();
> @system_includes = ();
> }
>
> (The --print-ac-dir option simply prints the value of @system_includes.)
>
> So, if I unset AUTOMAKE_UNINSTALLED in the test, it works:
> test "$am_running_installcheck" = yes && unset AUTOMAKE_UNINSTALLED || :
>
> Since this test is intended to check exactly a value that only is set
> normally in an installation, that seems like a reasonable thing to do.
>
> But I am not sure. Jim, anyone with more experience, can you confirm/deny?
The AUTOMAKE_UNINSTALLED environment variable along side the
“pre-inst-env” wrapper script were introduced to isolate srcdir and
builddir environment from installdir while not having to patch the
source code at install time. This follows a pattern I discovered in the
Guix package and ported to Automake and Texinfo.
To fix ‘make installcheck’ I think it would make sense to remove the
usage of the “pre-inst-env” script in that context because as its name
suggest this is a "pre-inst{allation}-env{ironment}". Concretely This
means overriding LOG_COMPILER and PL_LOG_COMPILER and ensuring that the
installed perl modules are found for the tests.
Here is a patch that seem to fix the issue, I have added some clutter to
AM_TESTS_ENVIRONMENT which is not ideal but was less work than migrating
everything to a “test-env” wrapper script which would probably improve
readability.
What do you think?
It is nice to see some activity on Automake. :-)
>From 49a02b8ce3e1e2475ec51e432806c9fb8eb743e5 Mon Sep 17 00:00:00 2001
From: Mathieu Lirzin <address@hidden>
Date: Tue, 4 Feb 2020 15:28:00 +0100
Subject: [PATCH] =?UTF-8?q?build:=20fix=20=E2=80=98installcheck=E2=80=99?=
=?UTF-8?q?=20target?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* t/local.mk (installcheck-testsuite): Do not use "pre-inst-env" script.
(AM_TESTS_ENVIRONMENT): Ensure that installed perl modules are found.
---
t/local.mk | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/t/local.mk b/t/local.mk
index 7e3a61965..06ed70d0e 100644
--- a/t/local.mk
+++ b/t/local.mk
@@ -244,12 +244,22 @@ check-parallel:
test_subdirs = %D% %D%/pm contrib/%D%
include %D%/CheckListOfTests.am
-# Run the testsuite with the installed aclocal and automake.
+# Run the testsuite with the installed aclocal and automake without using
+# the ‘pre-inst-env’ wrapper script.
installcheck-local: installcheck-testsuite
installcheck-testsuite:
$(AM_V_GEN)$(MAKE) $(AM_MAKEFLAGS) check \
+ LOG_COMPILER=$(AM_TEST_RUNNER_SHELL) \
+ PL_LOG_COMPILER=$(PERL) \
am_running_installcheck=yes
+# Ensure that the installed Automake perl modules are found when running
'installcheck' target
+AM_TESTS_ENVIRONMENT += \
+ if test "$${am_running_installcheck}" = yes; then \
+
PERL5LIB="$(DESTDIR)$(pkgvdatadir)/$${PERL5LIB:+$(PATH_SEPARATOR)}$$PERL5LIB"; \
+ fi; \
+ export PERL5LIB;
+
# Performance tests.
.PHONY: perf
perf: all
--
2.20.1
--
Mathieu Lirzin
GPG: F2A3 8D7E EB2B 6640 5761 070D 0ADE E100 9460 4D37