bug-autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Option doesn't work properly when backporting to version 2.69


From: Ondrej Dubaj
Subject: Re: Option doesn't work properly when backporting to version 2.69
Date: Mon, 8 Mar 2021 15:09:30 +0100

Proposing patch fixing this issue. Inspired by expansion of the datarootdir
option.


   1. diff --git a/lib/autoconf/status.m4 b/lib/autoconf/status.m4
   2. index ca8cb69..9028701 100644
   3. --- a/lib/autoconf/status.m4
   4. +++ b/lib/autoconf/status.m4
   5. @@ -645,6 +645,35 @@ esac
   6.  _ACEOF
   7.  ])dnl
   8.
   9. +m4_ifndef([AC_LOCALSTATEDIR_CHECKED],
   10. +[cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
   11. +# If the template does not know about localstatedir, expand it.
   12. +# FIXME: This hack should be removed a few years after 2.60.
   13. +ac_localstatedir_hack=; ac_localstatedir_seen=
   14. +m4_define([_AC_localstatedir_vars],
   15. +         [runstatedir])]dnl
   16. +[m4_define([_AC_localstatedir_subst], [  s&@$][1@&$$][1&g])]dnl
   17. +[ac_sed_dataroot='
   18. +/localstatedir/ {
   19. +  p
   20. +  q
   21. +}
   22. +m4_map_args_sep([/@], [@/p], [
   23. +], _AC_localstatedir_vars)'
   24. +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
   25. +*localstatedir*) ac_localstatedir_seen=yes;;
   26. +*@[]m4_join([@*|*@], _AC_localstatedir_vars)@*)
   27. +  AC_MSG_WARN([$ac_file_inputs seems to ignore the --localstatedir
   setting])
   28. +_ACEOF
   29. +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
   30. +  ac_localstatedir_hack='
   31. +m4_map_args_sep([_AC_localstatedir_subst(], [)], [
   32. +], _AC_localstatedir_vars)
   33. +  s&\\\${localstatedir}&$localstatedir&g' ;;
   34. +esac
   35. +_ACEOF
   36. +])dnl
   37. +
   38.  # Neutralize VPATH when `$srcdir' = `.'.
   39.  # Shell code in configure.ac might set extrasub.
   40.  # FIXME: do we really want to maintain this feature?
   41. @@ -671,6 +700,8 @@ m4_map_args_sep([$0_ADJUST_DIR(], [)], [
   42.       [, [INSTALL]])AC_PROVIDE_IFELSE([AC_PROG_MKDIR_P], [,
   [MKDIR_P]]))
   43.  m4_ifndef([AC_DATAROOTDIR_CHECKED], [$ac_datarootdir_hack
   44.  ])dnl
   45. +m4_ifndef([AC_LOCALSTATEDIR_CHECKED], [$ac_localstatedir_hack
   46. +])dnl
   47.  "
   48.  eval sed \"\$ac_sed_extra\" "$ac_file_inputs"
   m4_defn([_AC_SUBST_CMDS]) \
   49.    >$ac_tmp/out || AC_MSG_ERROR([could not create $ac_file])
   50. @@ -682,6 +713,15 @@ m4_ifndef([AC_DATAROOTDIR_CHECKED],
   51.        "$ac_tmp/out"`; test -z "$ac_out"; } &&
   52.    AC_MSG_WARN([$ac_file contains a reference to the variable
   `datarootdir'
   53.  which seems to be undefined.  Please make sure it is defined])
   54. +])dnl
   55. +
   56. +m4_ifndef([AC_LOCALSTATEDIR_CHECKED],
   57. +[test -z "$ac_localstatedir_hack$ac_localstatedir_seen" &&
   58. +  { ac_out=`sed -n '/\${localstatedir}/p' "$ac_tmp/out"`; test -n
   "$ac_out"; } &&
   59. +  { ac_out=`sed -n '/^[[        ]]*localstatedir[[      ]]*:*=/p' \
   60. +      "$ac_tmp/out"`; test -z "$ac_out"; } &&
   61. +  AC_MSG_WARN([$ac_file contains a reference to the variable
   `localstatedir'
   62. +which seems to be undefined.  Please make sure it is defined])
   63.  ])dnl
   64.
   65.    rm -f "$ac_tmp/stdin"




On Fri, Mar 5, 2021 at 2:18 PM Ondrej Dubaj <odubaj@redhat.com> wrote:

> test.sh.in:
> #/bin/bash
> ls @runstatedir@
>
> configure.ac:
> # Taken from http://www.idryman.org/blog/2016/03/10/autoconf-tutorial-1/
> # Must init the autoconf setup
> # The first parameter is project name
> # second is version number
> # third is bug report address
> AC_INIT([test], [1.0])
>
> # We want to expand templates in this file
> AC_CONFIG_FILES([test.sh])
> # Store the auxiliary build tools (e.g., install-sh, config.sub, config.guess)
> # in this dir (build-aux)
> AC_CONFIG_AUX_DIR([build-aux])
>
> # Generate the output
> AC_OUTPUT
>
>
> On Fri, Mar 5, 2021 at 12:12 PM Ondrej Dubaj <odubaj@redhat.com> wrote:
>
>> When backporting the given commit to version 2.69:
>>
>>
>> https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=a197431414088a417b407b9b20583b2e8f7363bd
>>
>> we are experiencing problems with behaviour in Fedora.
>>
>> In the documentation there is: By default runstatedir is a subdirectory of 
>> ${localstatedir},
>> but it doesn't behave in such a way. The expectation was that after setting
>>
>> --localstatedir=/dirA
>>
>> will it change also @runstatedir@ to /dirA/run. But @runstatedir@ changes 
>> always to /run.
>>
>> Steps to Reproduce:
>>     1. run autoreconf --verbose --install --force
>>     2. mkdir /tmp/run/
>>     3. touch /tmp/run/file1
>>     4. ./configure --localstatedir=/tmp
>>     5. ./test.sh
>> Actual results:
>> list /run
>>
>> Expected results:
>> list /tmp/run
>>
>> test.sh.in:
>>
>> *#/bin/bashls @runstatedir@*
>>
>> configure.ac:
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> *# Taken from http://www.idryman.org/blog/2016/03/10/autoconf-tutorial-1/ 
>> <http://www.idryman.org/blog/2016/03/10/autoconf-tutorial-1/># Must init the 
>> autoconf setup# The first parameter is project name# second is version 
>> number# third is bug report addressAC_INIT([test], [1.0])# We want to expand 
>> templates in this fileAC_CONFIG_FILES([test.sh])# Store the auxiliary build 
>> tools (e.g., install-sh, config.sub, config.guess)# in this dir 
>> (build-aux)AC_CONFIG_AUX_DIR([build-aux])# Generate the outputAC_OUTPUT*
>>
>> Is there anything missing in the applied patch adding runstatedir option ?
>>
>> Thanks for cooperation.
>>
>> Red Hat developers
>>
>>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]