[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#11029: bootstrap problems
From: |
Peter Rosin |
Subject: |
bug#11029: bootstrap problems |
Date: |
Mon, 19 Mar 2012 10:05:11 +0100 |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2 |
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