Subject: mawk-as-awk considered harmful for PLIST
To: None <tech-pkg@NetBSD.org>
From: Hubert Feyrer <hubert@feyrer.de>
List: tech-pkg
Date: 04/14/2006 03:18:24
On a Debian Linux system, I had pkgsrc/databases/db4 install with an empty
PLIST, after printing an error (but not aborting...) during installation:
awk: run time error: regular expression compile failed (missing operand)
^@dirrm ()$
FILENAME="-" FNR=1 NR=1
The problem can be tracked down to the system's "awk", which is actually
"mawk". In pkgsrc/mk/plist/plist-info.awk, IGNORE_INFO_REGEXP can get set
to "()" which then gets used to match as regular expression. This works
fine with NetBSD's nawk and gawk, but not mawk:
miyu% echo "@dirrm xxx" | awk '/^@dirrm ()/{print}'
@dirrm xxx
miyu% echo "@dirrm xxx" | gawk '/^@dirrm ()/{print}'
@dirrm xxx
miyu% echo "@dirrm xxx" | mawk '/^@dirrm ()/{print}'
mawk: line 1: regular expression compile failed (missing operand)
^@dirrm ()
A fix was to nuke mawk and replace it with something working.
I'm not sure if there's an easy workaround/check to fix or prevent this,
but I thought I'd still mention it.
- Hubert