[pacman-dev] [PATCH] makepkg: use printf when writing pkginfo

Allan McRae allan at archlinux.org
Mon May 24 23:20:38 EDT 2010


On 25/05/10 12:22, Dan McGee wrote:
> On Sun, May 23, 2010 at 8:32 AM, Andres P<aepd87 at gmail.com>  wrote:
>> Signed-off-by: Andres P<aepd87 at gmail.com>
>> ---
>>   scripts/makepkg.sh.in |   34 +++++++++-------------------------
>>   1 files changed, 9 insertions(+), 25 deletions(-)
>>
>> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
>> index fd1b68b..efd3d80 100644
>> --- a/scripts/makepkg.sh.in
>> +++ b/scripts/makepkg.sh.in
>> @@ -947,31 +947,15 @@ write_pkginfo() {
>>                 echo "force = true"
>>         fi
>>
>> -       local it
>> -       for it in "${license[@]}"; do
>> -               echo "license = $it"
>> -       done
>> -       for it in "${replaces[@]}"; do
>> -               echo "replaces = $it"
>> -       done
>> -       for it in "${groups[@]}"; do
>> -               echo "group = $it"
>> -       done
>> -       for it in "${depends[@]}"; do
>> -               echo "depend = $it"
>> -       done
>> -       for it in "${optdepends[@]}"; do
>> -               echo "optdepend = $it"
>> -       done
>> -       for it in "${conflicts[@]}"; do
>> -               echo "conflict = $it"
>> -       done
>> -       for it in "${provides[@]}"; do
>> -               echo "provides = $it"
>> -       done
>> -       for it in "${backup[@]}"; do
>> -               echo "backup = $it"
>> -       done
>> +       [[ $license ]]&&  printf "license = %s\n"   "${license[@]}"
>> +       [[ $replaces ]]&&  printf "replaces = %s\n"  "${replaces[@]}"
>> +       [[ $groups ]]&&  printf "group = %s\n"     "${groups[@]}"
>> +       [[ $depends ]]&&  printf "depend = %s\n"    "${depends[@]}"
>> +       [[ $optdepend ]]&&  printf "optdepend = %s\n" "${optdepends[@]}"
>> +       [[ $conflict ]]&&  printf "conflict = %s\n"  "${conflicts[@]}"
>> +       [[ $provides ]]&&  printf "provides = %s\n"  "${provides[@]}"
>> +       [[ $backup ]]&&  printf "backup = %s\n"    "${backup[@]}"
>> +
>>         for it in "${packaging_options[@]}"; do
>>                 local ret="$(check_option $it)"
>>                 if [[ $ret != "?" ]]; then
>> --
>
> This looks really cool, but where is this printf behavior documented?
> I can't find it at all in the bash manpage. Is it portable to
> different (read: older) versions of bash?
>

I can confirm that this works in bash-3.1.17 which is from 2005.  I 
think that is old enough.

Remember that this patch relies on the one removing all the >.PKGINFO 
redirections when it comes time to commit.

Allan


More information about the pacman-dev mailing list