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).

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 <[email protected]>
@@ -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:
-- 
1.8.5.2


Reply via email to