summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan McRae <allan@archlinux.org>2013-01-20 01:32:11 +0100
committerAllan McRae <allan@archlinux.org>2013-01-28 14:30:40 +0100
commitad280e1b56b6c6632b2fae5288f6441c343d0185 (patch)
treebffdd98fb20dc1a1b16f234f0edd00309aed58b6
parentb27886ab5967c30e2e80d46e47968c9f4a95e760 (diff)
downloadpacman-ad280e1b56b6c6632b2fae5288f6441c343d0185.tar.gz
pacman-ad280e1b56b6c6632b2fae5288f6441c343d0185.tar.xz
Revert execvp and related commits
This reverts commit 4a8c2852a887d2b1aaa43be3071ab586eb24b9e3. This reverts commit 993700bc6b12cd291544d2a22845f480e8a7925e. This reverts commit bb4d2b72c1d35ab9d65d632be0dcaf00cfa7d600. This reverts commit 60b192e3836a150eb6950ce52241efebbee00f11. Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r--Makefile.am1
-rw-r--r--configure.ac6
-rw-r--r--lib/libalpm/util.c17
-rwxr-xr-xtest/pacman/pactest.py5
-rw-r--r--test/pacman/pmenv.py2
-rw-r--r--test/pacman/pmtest.py21
6 files changed, 16 insertions, 36 deletions
diff --git a/Makefile.am b/Makefile.am
index cd69b6e7..b05feb68 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -28,7 +28,6 @@ check-local: test-pacman test-pacsort test-vercmp test-parseopts
test-pacman: test/pacman src/pacman
LC_ALL=C $(PYTHON) $(top_srcdir)/test/pacman/pactest.py --debug=1 \
--test $(top_srcdir)/test/pacman/tests/*.py \
- --scriptlet-shell $(SCRIPTLET_SHELL) \
-p $(top_builddir)/src/pacman/pacman
test-pacsort: test/util src/util
diff --git a/configure.ac b/configure.ac
index e89d4fce..aa3305db 100644
--- a/configure.ac
+++ b/configure.ac
@@ -105,8 +105,8 @@ AC_ARG_WITH(debug-suffix,
# Help line for changing shell used to run install scriptlets
AC_ARG_WITH(scriptlet-shell,
AS_HELP_STRING([--with-scriptlet-shell=shell],
- [set the shell used to run install scriptlets]),
- [SCRIPTLET_SHELL=$withval], [SCRIPTLET_SHELL=sh])
+ [set the full path to the shell used to run install scriptlets]),
+ [SCRIPTLET_SHELL=$withval], [SCRIPTLET_SHELL=/bin/sh])
# Help line for using OpenSSL
AC_ARG_WITH(openssl,
@@ -455,7 +455,7 @@ AC_SUBST(DEBUGSUFFIX)
AC_DEFINE_UNQUOTED([DEBUGSUFFIX], "$DEBUGSUFFIX", [The suffix for debugging symbol packages used by makepkg])
# Set shell used by install scriptlets
AC_SUBST(SCRIPTLET_SHELL)
-AC_DEFINE_UNQUOTED([SCRIPTLET_SHELL], "$SCRIPTLET_SHELL", [The shell used to run install scriptlets])
+AC_DEFINE_UNQUOTED([SCRIPTLET_SHELL], "$SCRIPTLET_SHELL", [The full path of the shell used to run install scriptlets])
# Configuration files
AC_CONFIG_FILES([
diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c
index fd1d7868..c88326f2 100644
--- a/lib/libalpm/util.c
+++ b/lib/libalpm/util.c
@@ -549,9 +549,9 @@ int _alpm_run_chroot(alpm_handle_t *handle, const char *cmd, char *const argv[])
exit(1);
}
umask(0022);
- execvp(cmd, argv);
- /* execvp only returns if there was an error */
- fprintf(stderr, _("call to execvp failed (%s)\n"), strerror(errno));
+ execv(cmd, argv);
+ /* execv only returns if there was an error */
+ fprintf(stderr, _("call to execv failed (%s)\n"), strerror(errno));
exit(1);
} else {
/* this code runs for the parent only (wait on the child) */
@@ -621,10 +621,13 @@ int _alpm_ldconfig(alpm_handle_t *handle)
snprintf(line, PATH_MAX, "%setc/ld.so.conf", handle->root);
if(access(line, F_OK) == 0) {
- char arg0[32];
- char *argv[] = { arg0, NULL };
- strcpy(arg0, "ldconfig");
- return _alpm_run_chroot(handle, "ldconfig", argv);
+ snprintf(line, PATH_MAX, "%ssbin/ldconfig", handle->root);
+ if(access(line, X_OK) == 0) {
+ char arg0[32];
+ char *argv[] = { arg0, NULL };
+ strcpy(arg0, "ldconfig");
+ return _alpm_run_chroot(handle, "/sbin/ldconfig", argv);
+ }
}
return 0;
diff --git a/test/pacman/pactest.py b/test/pacman/pactest.py
index 42c6a825..2fb64edc 100755
--- a/test/pacman/pactest.py
+++ b/test/pacman/pactest.py
@@ -3,7 +3,6 @@
# pactest : run automated testing on the pacman binary
#
# Copyright (c) 2006 by Aurelien Foret <orelien@chez.com>
-# Copyright (c) 2006-2013 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
@@ -82,9 +81,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 = "sh",
- help = "specify shell used for install scriptlets")
return parser
@@ -103,7 +99,6 @@ if __name__ == "__main__":
env.pacman["gdb"] = opts.gdb
env.pacman["valgrind"] = opts.valgrind
env.pacman["manual-confirm"] = opts.manualconfirm
- env.pacman["scriptlet-shell"] = opts.scriptletshell
if opts.testcases is None or len(opts.testcases) == 0:
print "no tests defined, nothing to do"
diff --git a/test/pacman/pmenv.py b/test/pacman/pmenv.py
index 04948c12..0e455cee 100644
--- a/test/pacman/pmenv.py
+++ b/test/pacman/pmenv.py
@@ -66,7 +66,7 @@ class pmenv(object):
print t.description
print "----------"*8
- t.generate(self.pacman)
+ t.generate()
t.run(self.pacman)
diff --git a/test/pacman/pmtest.py b/test/pacman/pmtest.py
index 5503559f..00a0b96e 100644
--- a/test/pacman/pmtest.py
+++ b/test/pacman/pmtest.py
@@ -1,7 +1,6 @@
#! /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
@@ -103,18 +102,7 @@ class pmtest(object):
else:
raise IOError("file %s does not exist!" % self.name)
- 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):
+ def generate(self):
print "==> Generating test environment"
# Cleanup leftover files from a previous test session
@@ -132,18 +120,13 @@ 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")
- 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]
+ sys_dirs = [dbdir, cachedir, syncdir, tmpdir, logdir, etcdir, bindir, sbindir]
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")