GNU bug report logs -
#11029
bootstrap problems
Previous Next
Reported by: Peter Rosin <peda <at> lysator.liu.se>
Date: Fri, 16 Mar 2012 22:02:01 UTC
Severity: normal
Done: Mike Frysinger <vapier <at> gentoo.org>
Bug is archived. No further changes may be made.
Full log
Message #17 received at 11029 <at> debbugs.gnu.org (full text, mbox):
Peter Rosin skrev 2012-03-19 09:48:
> Peter O'Gorman skrev 2012-03-17 04:53:
>> On 03/16/2012 04:30 PM, Peter Rosin wrote:
>>> 2. Automake didn't like that ChangeLog was missing -> "touch ChangeLog"
>>>
>>
>> I had a look at this, bootstrap is supposed to add a dummy ChangeLog for this, but does not, depending upon what bs_echo got set to.
>>
>> func_ifcontains has this:
>> # The embedded echo is to squash whitespace before globbing.
>> _G_wslist=`$bs_echo " "$1" "`
>> _G_member=$2
>> _G_yes_cmd=$3
>> _G_no_cmd=${4-":"}
>>
>> case $_G_wslist in
>> *" $_G_member "*)
>>
>> and is called like this:
>> func_ifcontains '
>> announce-gen
>> do-release-commit-and-tag
>> gendocs
>> git-version-gen
>> gitlog-to-changelog
>> gnu-web-doc-update
>> gnupload
>> maintainer-makefile
>> readme-release
>> ' gitlog-to-changelog func_ensure_changelog
>>
>> If bs_echo is printf '%s\n' then the embedded newlines in $_G_wslist do not get eliminated by the `$bs_echo " "$1" "` and " gitlog-to-changelog " (with those spaces on both sides) is not in the string, so no ChangeLog is created.
>>
>> This function doesn't appear to be part of gnulib yet, and I'm not sure how best to fix it.
>>
>> Changing $bs_echo to 'echo' should work, so should using set foo $1; shift (after assigning $2,3 and 4) and then assigning _G_wslist=" $@ ".
>>
>> I'll look to see how we eliminate spaces and newlines elsewhere in libtool and use the same idiom.
>
> Something like this also works:
>
> diff --git a/bootstrap b/bootstrap
> index 7b26d00..21d2268 100755
> --- a/bootstrap
> +++ b/bootstrap
> @@ -1803,10 +1803,12 @@ func_ifcontains ()
> _G_member=$2
> _G_yes_cmd=$3
> _G_no_cmd=${4-":"}
> + nl='
> +'
>
> case $_G_wslist in
> - *" $_G_member "*)
> - eval "$_G_yes_cmd"
> + *[\ $nl]$_G_member[\ $nl]*)
> + eval "$_G_yes_cmd"
> _G_status=$?
> ;;
> *)
>
> It fixes the common case when bs_echo is printf '%s\n' at least. But it doesn't
> fix the real bug of course (feeding multiple args to bs_echo).
Oh crap, I forgot the part that made me send any response at all...
I.e. I think the standard way to deal with this in libtool is to
use $NL2SP. To make up for failing to add that bit, I'm providing a
patch as well...
diff --git a/bootstrap b/bootstrap
index 7b26d00..d118109 100755
--- a/bootstrap
+++ b/bootstrap
@@ -206,6 +206,17 @@ copy=false
# "auto".
vc_ignore=
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ bs_SP2NL='tr \040 \012'
+ bs_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ bs_SP2NL='tr \100 \n'
+ bs_NL2SP='tr \r\n \100\100'
+ ;;
+esac
## ------------------- ##
## Hookable functions. ##
@@ -1799,14 +1810,14 @@ func_ifcontains ()
$debug_cmd
# The embedded echo is to squash whitespace before globbing.
- _G_wslist=`$bs_echo " "$1" "`
+ _G_wslist=`$bs_echo " $1 " | $bs_NL2SP`
_G_member=$2
_G_yes_cmd=$3
_G_no_cmd=${4-":"}
case $_G_wslist in
*" $_G_member "*)
- eval "$_G_yes_cmd"
+ eval "$_G_yes_cmd"
_G_status=$?
;;
*)
Cheers,
Peter
This bug report was last modified 1 year and 187 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.