Make path to ldconfig configurable
The FHS (2.3) says having ldconfig in /sbin is optional and it is usually located in /usr/sbin. So /sbin/ldconfig should not be hard coded in pacman. Instead, provide a configure option --with-ldconfig that defaults to the current path. Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
e3d8197d67
commit
89ecf8cabe
5 changed files with 21 additions and 5 deletions
|
@ -29,6 +29,7 @@ test-pacman: test/pacman src/pacman
|
||||||
LC_ALL=C $(PYTHON) $(top_srcdir)/test/pacman/pactest.py --debug=1 \
|
LC_ALL=C $(PYTHON) $(top_srcdir)/test/pacman/pactest.py --debug=1 \
|
||||||
--test $(top_srcdir)/test/pacman/tests/*.py \
|
--test $(top_srcdir)/test/pacman/tests/*.py \
|
||||||
--scriptlet-shell $(SCRIPTLET_SHELL) \
|
--scriptlet-shell $(SCRIPTLET_SHELL) \
|
||||||
|
--ldconfig $(LDCONFIG) \
|
||||||
-p $(top_builddir)/src/pacman/pacman
|
-p $(top_builddir)/src/pacman/pacman
|
||||||
|
|
||||||
test-pacsort: test/util src/util
|
test-pacsort: test/util src/util
|
||||||
|
|
10
configure.ac
10
configure.ac
|
@ -108,6 +108,12 @@ AC_ARG_WITH(scriptlet-shell,
|
||||||
[set the full path to the shell used to run install scriptlets]),
|
[set the full path to the shell used to run install scriptlets]),
|
||||||
[SCRIPTLET_SHELL=$withval], [SCRIPTLET_SHELL=/bin/sh])
|
[SCRIPTLET_SHELL=$withval], [SCRIPTLET_SHELL=/bin/sh])
|
||||||
|
|
||||||
|
# Help line for ldconfig path
|
||||||
|
AC_ARG_WITH(ldconfig,
|
||||||
|
AS_HELP_STRING([--with-ldconfig=path],
|
||||||
|
[set the full path to ldconfig]),
|
||||||
|
[LDCONFIG=$withval], [LDCONFIG=/sbin/ldconfig])
|
||||||
|
|
||||||
# Help line for using OpenSSL
|
# Help line for using OpenSSL
|
||||||
AC_ARG_WITH(openssl,
|
AC_ARG_WITH(openssl,
|
||||||
AS_HELP_STRING([--with-openssl], [use OpenSSL crypto implementations instead of internal routines]),
|
AS_HELP_STRING([--with-openssl], [use OpenSSL crypto implementations instead of internal routines]),
|
||||||
|
@ -456,6 +462,10 @@ AC_DEFINE_UNQUOTED([DEBUGSUFFIX], "$DEBUGSUFFIX", [The suffix for debugging symb
|
||||||
# Set shell used by install scriptlets
|
# Set shell used by install scriptlets
|
||||||
AC_SUBST(SCRIPTLET_SHELL)
|
AC_SUBST(SCRIPTLET_SHELL)
|
||||||
AC_DEFINE_UNQUOTED([SCRIPTLET_SHELL], "$SCRIPTLET_SHELL", [The full path of 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])
|
||||||
|
# Set ldconfig path
|
||||||
|
AC_SUBST(LDCONFIG)
|
||||||
|
AC_DEFINE_UNQUOTED([LDCONFIG], "$LDCONFIG", [The full path to ldconfig])
|
||||||
|
|
||||||
|
|
||||||
# Configuration files
|
# Configuration files
|
||||||
AC_CONFIG_FILES([
|
AC_CONFIG_FILES([
|
||||||
|
|
|
@ -621,12 +621,12 @@ int _alpm_ldconfig(alpm_handle_t *handle)
|
||||||
|
|
||||||
snprintf(line, PATH_MAX, "%setc/ld.so.conf", handle->root);
|
snprintf(line, PATH_MAX, "%setc/ld.so.conf", handle->root);
|
||||||
if(access(line, F_OK) == 0) {
|
if(access(line, F_OK) == 0) {
|
||||||
snprintf(line, PATH_MAX, "%ssbin/ldconfig", handle->root);
|
snprintf(line, PATH_MAX, "%s%s", handle->root, LDCONFIG);
|
||||||
if(access(line, X_OK) == 0) {
|
if(access(line, X_OK) == 0) {
|
||||||
char arg0[32];
|
char arg0[32];
|
||||||
char *argv[] = { arg0, NULL };
|
char *argv[] = { arg0, NULL };
|
||||||
strcpy(arg0, "ldconfig");
|
strcpy(arg0, "ldconfig");
|
||||||
return _alpm_run_chroot(handle, "/sbin/ldconfig", argv);
|
return _alpm_run_chroot(handle, LDCONFIG, argv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,6 +85,9 @@ def create_parser():
|
||||||
parser.add_option("--scriptlet-shell", type = "string",
|
parser.add_option("--scriptlet-shell", type = "string",
|
||||||
dest = "scriptletshell", default = "/bin/sh",
|
dest = "scriptletshell", default = "/bin/sh",
|
||||||
help = "specify path to shell used for install scriptlets")
|
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
|
return parser
|
||||||
|
|
||||||
|
|
||||||
|
@ -104,6 +107,7 @@ if __name__ == "__main__":
|
||||||
env.pacman["valgrind"] = opts.valgrind
|
env.pacman["valgrind"] = opts.valgrind
|
||||||
env.pacman["manual-confirm"] = opts.manualconfirm
|
env.pacman["manual-confirm"] = opts.manualconfirm
|
||||||
env.pacman["scriptlet-shell"] = opts.scriptletshell
|
env.pacman["scriptlet-shell"] = opts.scriptletshell
|
||||||
|
env.pacman["ldconfig"] = opts.ldconfig
|
||||||
|
|
||||||
if opts.testcases is None or len(opts.testcases) == 0:
|
if opts.testcases is None or len(opts.testcases) == 0:
|
||||||
print "no tests defined, nothing to do"
|
print "no tests defined, nothing to do"
|
||||||
|
|
|
@ -120,11 +120,12 @@ class pmtest(object):
|
||||||
logdir = os.path.join(self.root, os.path.dirname(util.LOGFILE))
|
logdir = os.path.join(self.root, os.path.dirname(util.LOGFILE))
|
||||||
etcdir = os.path.join(self.root, os.path.dirname(util.PACCONF))
|
etcdir = os.path.join(self.root, os.path.dirname(util.PACCONF))
|
||||||
bindir = os.path.join(self.root, "bin")
|
bindir = os.path.join(self.root, "bin")
|
||||||
sbindir = os.path.join(self.root, "sbin")
|
ldconfig = os.path.basename(pacman["ldconfig"])
|
||||||
|
ldconfigdir = os.path.join(self.root, os.path.dirname(pacman["ldconfig"][1:]))
|
||||||
shell = pacman["scriptlet-shell"][1:]
|
shell = pacman["scriptlet-shell"][1:]
|
||||||
shelldir = os.path.join(self.root, os.path.dirname(shell))
|
shelldir = os.path.join(self.root, os.path.dirname(shell))
|
||||||
sys_dirs = [dbdir, cachedir, syncdir, tmpdir, logdir, etcdir, bindir,
|
sys_dirs = [dbdir, cachedir, syncdir, tmpdir, logdir, etcdir, bindir,
|
||||||
sbindir, shelldir]
|
ldconfigdir, shelldir]
|
||||||
for sys_dir in sys_dirs:
|
for sys_dir in sys_dirs:
|
||||||
if not os.path.isdir(sys_dir):
|
if not os.path.isdir(sys_dir):
|
||||||
vprint("\t%s" % sys_dir[len(self.root)+1:])
|
vprint("\t%s" % sys_dir[len(self.root)+1:])
|
||||||
|
@ -134,7 +135,7 @@ class pmtest(object):
|
||||||
if shell != "bin/sh":
|
if shell != "bin/sh":
|
||||||
shutil.copy("/bin/sh", os.path.join(self.root, shell))
|
shutil.copy("/bin/sh", os.path.join(self.root, shell))
|
||||||
shutil.copy(os.path.join(util.SELFPATH, "ldconfig.stub"),
|
shutil.copy(os.path.join(util.SELFPATH, "ldconfig.stub"),
|
||||||
os.path.join(sbindir, "ldconfig"))
|
os.path.join(ldconfigdir, ldconfig))
|
||||||
ld_so_conf = open(os.path.join(etcdir, "ld.so.conf"), "w")
|
ld_so_conf = open(os.path.join(etcdir, "ld.so.conf"), "w")
|
||||||
ld_so_conf.close()
|
ld_so_conf.close()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue