[pacman-dev] makepkg and (n)awk

Allan McRae allan at archlinux.org
Sun Dec 26 18:34:14 EST 2010


On 27/12/10 09:23, Dave Reisner wrote:
> On Sun, Dec 26, 2010 at 01:59:05AM +0200, Nezmer wrote:
>> Hi,
>>
>> In commit ef977865, awk was added as an external tool needed by makepkg.
>>
>> As you know, there is different awk implementations out there. nawk is
>> the implementation shipped by default in non-GNU systems As far as I
>> know.
>>
>> Unfortunately, awk usage in makepkg is not nawk-compatible.
>>
>> Command:
>>
>> %gawk '/^[[:space:]]*provides=/,/)/' B | sed "s/provides=/provides_list+=/"
>>
>> Output:
>>
>>   provides_list+=('p1' 'p2' '3') # comment
>>
>> Command:
>>
>> % awk '/^[[:space:]]*provides=/,/)/' B | sed "s/provides=/provides_list+=/"
>>
>> Output:
>>
>> awk: illegal primary in regular expression ) at
>>   source line number 1
>>   context is
>>           >>>  /^[[:space:]]*provides=/,/)/<<<
>>
>>
>> ======================
>>
>> Anyway, what is awk doing here? Is it the same as:
>> egrep '^\s*provides=\(.*\)'
>>
>
> Installed nawk to play around with this. It looks like all that's needed is to
> escape the closing parenthesis on the ending address:
>
> $ nawk '/^[[:space:]]*md5sums=/,/\)/'<  PKGBUILD
> md5sums=('f26f78f09cc675c9d2c0eacc54b223d6'
>           'c5e849fcb1101149977355c99d8ff78f'
>           '096a46ef386817988250d2d7bddd1b34')
>
> This plays well with gawk and mawk as well.

Awesome.  Want to send a patch?

> Wasn't able to locate a multi-line provides, but any multi-line array attribute
> should be sufficient, no?

Yes, any multi-line array is fine.

Allan


More information about the pacman-dev mailing list