[pacman-dev] [PATCH] makepkg: more bash-3.2 compatibility
Allan McRae
allan at archlinux.org
Fri Feb 4 21:55:38 EST 2011
On 05/02/11 12:15, Dave Reisner wrote:
> On Sat, Feb 05, 2011 at 11:54:04AM +1000, Allan McRae wrote:
>> On 05/02/11 11:02, Dave Reisner wrote:
>>> On Sat, Feb 05, 2011 at 10:26:20AM +1000, Allan McRae wrote:
>>>> Adding the "|| true" to the subshell prevents bash-3.2 setting off the
>>>> error_trap but requires changing the if statement.
>>>>
>>>> Signed-off-by: Allan McRae<allan at archlinux.org>
>>>> ---
>>>> scripts/makepkg.sh.in | 4 ++--
>>>> 1 files changed, 2 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
>>>> index 13415fb..001178a 100644
>>>> --- a/scripts/makepkg.sh.in
>>>> +++ b/scripts/makepkg.sh.in
>>>> @@ -507,8 +507,8 @@ download_sources() {
>>>>
>>>> local netfile
>>>> for netfile in "${source[@]}"; do
>>>> - local file
>>>> - if file=$(get_filepath "$netfile"); then
>>>> + local file=$(get_filepath "$netfile" || true)
>>>> + if [[ -n "$file" ]]; then
>>>> msg2 "$(gettext "Found %s")" "${file##*/}"
>>>> ln -sf "$file" "$srcdir/"
>>>> continue
>>>> --
>>>> 1.7.4
>>>>
>>>>
>>>
>>> I don't agree with this. The local keyword will actually mask the return
>>> value of the command substitution and you will always return without
>>> error. It's therefore sufficient to do:
>>>
>>> local file=$(get_filepath "$netfile")
>>> if [[ -n $file ]]; then
>>> ...
>>>
>>> This also applies to any variable defined via the 'declare' builtin.
>>>
>>
>> Not in bash-3.2...
>>
>>
>> allan at mugen /var/abs/local/tmp
>>> makepkg -gc
>> ==> Retrieving Sources...
>> ==> ERROR: An unknown error has occurred. Exiting...
>> -> Downloading abs-2.4.2.tar.gz...
>> --2011-02-05 11:53:38-- ftp://ftp.archlinux.org/other/abs/abs-2.4.2.tar.gz
>>
>>
>> Allan
>>
>
> Something else is foul, then.
>
> -----8<------------------
> #!/bin/bash3 -e
>
> badfun() {
> local foo=$(asdlkfjasdf)
> echo $?
> }
>
> badfunc
> ------------------>8-----
>
> prints the error and echos 0.
>
> d
It may well be a bug in bash-3.2. Either way, this "fixes" the issue.
I'm open to suggestions for a better fix.
Allan
More information about the pacman-dev
mailing list