[pacman-dev] makepkg and (n)awk
Dave Reisner
d at falconindy.com
Sun Dec 26 18:23:11 EST 2010
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.
Wasn't able to locate a multi-line provides, but any multi-line array attribute
should be sufficient, no?
dave
More information about the pacman-dev
mailing list