FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > ArchLinux > ArchLinux Pacman Development

 
 
LinkBack Thread Tools
 
Old 02-10-2012, 05:31 AM
Allan McRae
 
Default 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>
---
configure.ac | 8 ++++++++
lib/libalpm/Makefile.am | 4 +++-
lib/libalpm/trans.c | 2 +-
3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 45e0111..ac65a5c 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]),
+ [SCRIPTLETSHELL=$withval], [SCRIPTLETSHELL=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,8 @@ 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(SCRIPTLETSHELL)

# Configuration files
AC_CONFIG_FILES([
diff --git a/lib/libalpm/Makefile.am b/lib/libalpm/Makefile.am
index 61dcb87..5691019 100644
--- a/lib/libalpm/Makefile.am
+++ b/lib/libalpm/Makefile.am
@@ -5,7 +5,9 @@ SUBDIRS = po
lib_LTLIBRARIES = libalpm.la
include_HEADERS = alpm_list.h alpm.h

-DEFS = -DLOCALEDIR="@localedir@" @DEFS@
+DEFS = -DLOCALEDIR="@localedir@"
+ -DSCRIPTLETSHELL="$(SCRIPTLETSHELL)"
+ @DEFS@

AM_CPPFLAGS =
-imacros $(top_builddir)/config.h
diff --git a/lib/libalpm/trans.c b/lib/libalpm/trans.c
index 5ceaaa7..e5937c1 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[] = { SCRIPTLETSHELL, "-c", cmdline, NULL };
char *tmpdir, *scriptfn = NULL, *scriptpath;
int retval = 0;
size_t len;
--
1.7.9
 
Old 02-11-2012, 04:19 AM
Allan McRae
 
Default 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>
---
configure.ac | 9 +++++++++
lib/libalpm/trans.c | 2 +-
2 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/configure.ac b/configure.ac
index 45e0111..a88e551 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 5ceaaa7..dc75f57 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;
--
1.7.9
 

Thread Tools




All times are GMT. The time now is 12:04 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org