diff options
author | Allan McRae <allan@archlinux.org> | 2012-02-10 07:26:37 +0100 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2012-02-13 17:02:35 +0100 |
commit | 3ba5391839b34823e97574cba2952d732c2729e0 (patch) | |
tree | 8436d07670395e27076da8d29201ea48450ab221 | |
parent | 20a16f55b32da071d362c2fa3faf1f55285d13a9 (diff) | |
download | pacman-3ba5391839b34823e97574cba2952d732c2729e0.tar.gz pacman-3ba5391839b34823e97574cba2952d732c2729e0.tar.xz |
Allow specifying shell for running scriptlets
Some distributions insist on using bash specific commands in their
install scripts under the assumption that "sh" is a symlink to bash.
This can causes issues if (e.g.) their users what to change sh to
point at another shell, such as dash, that does not support these
features. Add a configure option to explicitly set the shell being
used to run install scripts.
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r-- | configure.ac | 9 | ||||
-rw-r--r-- | lib/libalpm/trans.c | 2 |
2 files changed, 10 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac index 45e0111a..a88e5514 100644 --- a/configure.ac +++ b/configure.ac @@ -89,6 +89,12 @@ AC_ARG_WITH(buildscript, AS_HELP_STRING([--with-buildscript=name], [set the build script name used by makepkg]), [BUILDSCRIPT=$withval], [BUILDSCRIPT=PKGBUILD]) +# 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]) + # Help line for using OpenSSL AC_ARG_WITH(openssl, AS_HELP_STRING([--with-openssl], [use OpenSSL crypto implementations instead of internal routines]), @@ -338,6 +344,9 @@ AC_DEFINE_UNQUOTED([SRCEXT], "$SRCEXT", [The file extension used by pacman sourc # Set makepkg build script name AC_SUBST(BUILDSCRIPT) AC_DEFINE_UNQUOTED([BUILDSCRIPT], "$BUILDSCRIPT", [The build script name 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]) # Configuration files AC_CONFIG_FILES([ diff --git a/lib/libalpm/trans.c b/lib/libalpm/trans.c index 5ceaaa70..dc75f577 100644 --- a/lib/libalpm/trans.c +++ b/lib/libalpm/trans.c @@ -277,7 +277,7 @@ int _alpm_runscriptlet(alpm_handle_t *handle, const char *filepath, const char *script, const char *ver, const char *oldver, int is_archive) { char cmdline[PATH_MAX]; - char *argv[] = { "sh", "-c", cmdline, NULL }; + char *argv[] = { SCRIPTLET_SHELL, "-c", cmdline, NULL }; char *tmpdir, *scriptfn = NULL, *scriptpath; int retval = 0; size_t len; |