[pacman-dev] [PATCH] makepkg: more bash-3.2 compatibility

Allan McRae allan at archlinux.org
Fri Feb 4 20:54:04 EST 2011


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


More information about the pacman-dev mailing list