On 6/25/19 3:24 PM, Tim Rühsen wrote: > Hi Akim, > > the command expands to > > if gawk --version | grep GNU >/dev/null 2>&1; then \ > (cd . && autoconf --trace AC_CONFIG_FILES:'$1') | \ > tr ' ' '\n' | \ > /usr/bin/sed -ne '/Makefile/{s/\.in$//;p;}' | \ > while read m; do \ > make -qp -f $m .DUMMY-TARGET 2>/dev/null | \ > gawk -v file=$m -e 'BEGIN { RS = "\n\n"; in_rules = 0; } /^# > Files/ { in_rules = 1; } /\$</ && in_rules && $0 !~ /^(.*\n)* > \.\w+(\.\w+)?:/ { print "Error: " file ": $< in a non implicit rule\n" > $0; status = 1; } END { exit status; }' || exit 1; \ > done; \ > fi > > # make --version > GNU Make 4.2.1 > Built for x86_64-redhat-linux-gnu > > # gawk --version > GNU Awk 4.2.1, API: 2.0 (GNU MPFR 3.1.6-p2, GNU MP 6.1.2) > > # sed --version > sed (GNU sed) 4.5 > > # tr --version > tr (GNU coreutils) 8.31 > > # autoconf --version > autoconf (GNU Autoconf) 2.69
Testing the above directly in bash works. So after some testing I found a work-around: LC_ALL=en_US.UTF-8 make syntax-check The issue is seen on Fedora 30 and Arch Linux. Arch `locale` output: LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL= The difference to a 'working' environment is that LC_ALL isn't set. So the outcome of 'make syntax-check' (concrete: sc_prohibit_gnu_make_extensions rule) is locale dependent. Is that wanted behavior ? Fun fact: Once you run `LC_ALL=en_US.UTF-8 make syntax-check`, all following 'make syntax-check' succeed while LC_ALL still is empty. This is on Arch. I have no idea how to fix this properly. Regards, Tim
signature.asc
Description: OpenPGP digital signature