diff options
author | Allan McRae <allan@archlinux.org> | 2012-09-20 15:09:29 +0200 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2013-01-17 13:32:54 +0100 |
commit | 4a8c2852a887d2b1aaa43be3071ab586eb24b9e3 (patch) | |
tree | 13bd705ab4b7c139d1cc378f7c7c5fe715483402 /test/pacman/pmtest.py | |
parent | 993700bc6b12cd291544d2a22845f480e8a7925e (diff) | |
download | pacman-4a8c2852a887d2b1aaa43be3071ab586eb24b9e3.tar.gz pacman-4a8c2852a887d2b1aaa43be3071ab586eb24b9e3.tar.xz |
pmtest: resolve path to scriptlet shell
In order to support a variety of values for the --with-scriptlet-shell
configure flag, pmtest has to be aware of what kind of path was passed,
be it an absolute path or a fragment for a path lookup. For absolute
paths, leave the path alone. For fragments, search the PATH environment
var for the resolved path to the binary. In both cases, join the
resultant path to the root directory defined for the test, not a
pre-determined bin directory.
Fixes FS#31552.
With-contribution-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'test/pacman/pmtest.py')
-rw-r--r-- | test/pacman/pmtest.py | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/test/pacman/pmtest.py b/test/pacman/pmtest.py index 00a0b96e..5503559f 100644 --- a/test/pacman/pmtest.py +++ b/test/pacman/pmtest.py @@ -1,6 +1,7 @@ #! /usr/bin/python2 # # Copyright (c) 2006 by Aurelien Foret <orelien@chez.com> +# Copyright (c) 2006-2012 Pacman Development Team <pacman-dev@archlinux.org> # # 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 @@ -102,7 +103,18 @@ class pmtest(object): else: raise IOError("file %s does not exist!" % self.name) - def generate(self): + def resolve_binary(self, binary): + if os.path.isabs(binary): + return binary + + for path in os.environ["PATH"].split(':'): + resolved = os.path.join(path, binary) + if os.path.exists(resolved): + return resolved + + return binary + + def generate(self, pacman): print "==> Generating test environment" # Cleanup leftover files from a previous test session @@ -120,13 +132,18 @@ class pmtest(object): etcdir = os.path.join(self.root, os.path.dirname(util.PACCONF)) bindir = os.path.join(self.root, "bin") sbindir = os.path.join(self.root, "sbin") - sys_dirs = [dbdir, cachedir, syncdir, tmpdir, logdir, etcdir, bindir, sbindir] + scriptlet_shell = self.resolve_binary(pacman["scriptlet-shell"]) + shelldir = os.path.join(self.root, os.path.dirname(scriptlet_shell)[1:]) + sys_dirs = [dbdir, cachedir, syncdir, tmpdir, logdir, etcdir, bindir, + sbindir, shelldir] for sys_dir in sys_dirs: if not os.path.isdir(sys_dir): vprint("\t%s" % sys_dir[len(self.root)+1:]) os.makedirs(sys_dir, 0755) # Only the dynamically linked binary is needed for fakechroot shutil.copy("/bin/sh", bindir) + if scriptlet_shell != "/bin/sh": + shutil.copy("/bin/sh", os.path.join(self.root, scriptlet_shell[1:])) shutil.copy(os.path.join(util.SELFPATH, "ldconfig.stub"), os.path.join(sbindir, "ldconfig")) ld_so_conf = open(os.path.join(etcdir, "ld.so.conf"), "w") |