On Fri, Feb 10, 2012 at 1:31 AM, Allan McRae <allan@archlinux.org> wrote:
> 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])
Minor nag, but if the option is scriptlet-shell, I'd expect the
variable to be SCRIPTLET_SHELL.
> +
> *# 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@
I think I'd rather see this in config.h than have to change the defs
line- is that possible? If you just add an AC_DEFINE_UNQUOTED call
similar to the PKGEXT stuff already in configure.ac, it should work.
On 11/02/12 01:42, Dan McGee wrote:
> On Fri, Feb 10, 2012 at 1:31 AM, Allan McRae <allan@archlinux.org> wrote:
>> 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])
> Minor nag, but if the option is scriptlet-shell, I'd expect the
> variable to be SCRIPTLET_SHELL.
>> +
>> # 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@
> I think I'd rather see this in config.h than have to change the defs
> line- is that possible? If you just add an AC_DEFINE_UNQUOTED call
> similar to the PKGEXT stuff already in configure.ac, it should work.
I followed ROOTDIR as the example. Would you also like that moved to
config.h? It seems to be the only variable not defined there...