On 24/12/13 23:11, Jeremy Heiner wrote:
This patch is not ready for accepting into the repository.
It does not work for VPATH builds (because the paths to all the .py tests are seen as relative to $(builddir)). Dave is working on a fix for this VPATH issue, so a real version of this patch must wait to incorporate his commit. This patch works fine for in-$(srcdir) builds.
The purpose of posting it is to follow up Saturday's conversation. I think it implements all of Allan's suggestions (if I understood correctly). The real commit message would be something like:
SCRIPTLET_SHELL and LDCONFIG can be set via args to configure, and up 'till now those options were passed to pactest by Makefile.am as command-line args. That works fine for 'make check', but required repeated specification when running pactest manually. This patch makes pactest a configured file so it has direct access to those options and they no longer need to be specified (by Makefile.am nor by hand).
I would really like SCRIPTLET_SHELL to still be at test run time. My system pacman may have a different shell that the one built in the source tree. Keep it defaulting to the configured value, but changeable. Removing the flag to set LDCONFIG is fine for me. But I like other opinions on this to make sure I'm not missing something.
Also the default for the pactest '-p' arg is changed to be the pacman that the make builds. The '-p' arg is still available, but it should now be very rare to have to use it when calling pactest manually. --- Makefile.am | 4 ---- configure.ac | 1 + test/pacman/.gitignore | 1 + test/pacman/{pactest.py => pactest.py.in} | 21 ++++++++++++--------- 4 files changed, 14 insertions(+), 13 deletions(-) rename test/pacman/{pactest.py => pactest.py.in} (88%) mode change 100755 => 100644
diff --git a/Makefile.am b/Makefile.am index 4d5adae..9689992 100644 --- a/Makefile.am +++ b/Makefile.am @@ -41,10 +41,6 @@ LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \ PY_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \ $(top_srcdir)/build-aux/tap-driver.sh PY_LOG_COMPILER = $(top_srcdir)/test/pacman/pactest.py -AM_PY_LOG_FLAGS = \ - --scriptlet-shell $(SCRIPTLET_SHELL) \ - --ldconfig $(LDCONFIG) \ - -p $(top_builddir)/src/pacman/pacman
# create the pacman DB and cache directories upon install install-data-local: diff --git a/configure.ac b/configure.ac index cfcc8d1..292260a 100644 --- a/configure.ac +++ b/configure.ac @@ -507,6 +507,7 @@ test/util/Makefile contrib/Makefile Makefile ]) +AC_CONFIG_FILES([test/pacman/pactest.py],[chmod +x test/pacman/pactest.py]) AC_OUTPUT
echo " diff --git a/test/pacman/.gitignore b/test/pacman/.gitignore index 0d20b64..39fa72b 100644 --- a/test/pacman/.gitignore +++ b/test/pacman/.gitignore @@ -1 +1,2 @@ *.pyc +pactest.py diff --git a/test/pacman/pactest.py b/test/pacman/pactest.py.in old mode 100755 new mode 100644 similarity index 88% rename from test/pacman/pactest.py rename to test/pacman/pactest.py.in index e21cde7..0d9e1f7 --- a/test/pacman/pactest.py +++ b/test/pacman/pactest.py.in @@ -1,5 +1,7 @@ #! /usr/bin/python2 # +# @configure_input@ +# # pactest : run automated testing on the pacman binary # # Copyright (c) 2006 by Aurelien Foret <orelien@chez.com> @@ -25,6 +27,12 @@ import sys import tempfile
+BUILDDIR = os.path.dirname(os.path.realpath(__file__)) +SRCDIR = os.path.realpath(os.path.join(BUILDDIR, "@srcdir@")) +if BUILDDIR != SRCDIR: sys.path.insert(0, SRCDIR) +TOP_BUILDDIR = os.path.realpath(os.path.join(BUILDDIR, "@top_builddir@")) +BUILT_EXE = os.path.realpath(os.path.join(TOP_BUILDDIR, "src/pacman/pacman")) + import pmenv import tap import util @@ -50,7 +58,7 @@ def create_parser(): help = "set debug level for pacman") parser.add_option("-p", "--pacman", action = "callback", callback = resolve_binary_path, type = "string", - dest = "bin", default = "pacman", + dest = "bin", default = BUILT_EXE, help = "specify location of the pacman binary") parser.add_option("--keep-root", action = "store_true", dest = "keeproot", default = False, @@ -67,12 +75,6 @@ def create_parser(): parser.add_option("--manual-confirm", action = "store_true", dest = "manualconfirm", default = False, help = "do not use --noconfirm for pacman calls") - parser.add_option("--scriptlet-shell", type = "string", - dest = "scriptletshell", default = "/bin/sh", - help = "specify path to shell used for install scriptlets") - parser.add_option("--ldconfig", type = "string", - dest = "ldconfig", default = "/sbin/ldconfig", - help = "specify path to ldconfig") return parser
@@ -97,8 +99,9 @@ def create_parser(): env.pacman["gdb"] = opts.gdb env.pacman["valgrind"] = opts.valgrind env.pacman["manual-confirm"] = opts.manualconfirm - env.pacman["scriptlet-shell"] = opts.scriptletshell - env.pacman["ldconfig"] = opts.ldconfig + # and add configured options + env.pacman["scriptlet-shell"] = "@SCRIPTLET_SHELL@" + env.pacman["ldconfig"] = "@LDCONFIG@"
opts.testcases = [] for path in args: