On AIX 7.2, the m4-1.4.18 build fails in "make check":
Checking ../../checks/006.command_li
@ ../doc/m4.texi:1000: Origin of test
../../checks/006.command_li: stderr mismatch
--- m4-tmp.23068986/m4-xerr 2020-05-03 06:30:35.000000000 -0500
+++ m4-tmp.23068986/m4-err 2020-05-03 06:30:35.000000000 -0500
@@ -1,2 +1,3 @@
+ sh: Broken pipe
hi
bye
...
Failed checks were:
../../checks/006.command_li:err
I reproduce with a probability of ca. 30% like this:
$ cat > in <<EOF
ifdef(`__unix__', ,
`errprint(` skipping: syscmd does not have unix semantics
')m4exit(`77')')dnl
syscmd(`echo | cat >&- 2>/dev/null')ifelse(sysval, `0',
`errprint(` skipping: system does not allow closing stdout
')m4exit(`77')')dnl
changequote(`[', `]')dnl
syscmd([echo 'esyscmd(echo hi >&2 && echo err"print(bye
)d"nl)dnl' > tmp.m4 \
&& ']__program__[' tmp.m4 <&- >&- \
&& rm tmp.m4])sysval
EOF
$ src/m4 < in
sh: There is no process to read data written to a pipe.
hi
bye
0
The attached patch fixes it.
>From 922bd937edae734435a449ef90647939be775bc7 Mon Sep 17 00:00:00 2001
From: Bruno Haible <[email protected]>
Date: Sun, 3 May 2020 13:49:26 +0200
Subject: [PATCH 3/3] Fix failure of test 006.command_li on AIX 7.2.
* doc/m4.texi (Command line files): Discard the shell's "Broken pipe"
diagnostic.
---
doc/m4.texi | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/doc/m4.texi b/doc/m4.texi
index 59f0212..a85ca46 100644
--- a/doc/m4.texi
+++ b/doc/m4.texi
@@ -40,7 +40,7 @@ This manual (@value{UPDATED}) is for GNU M4 (version
@value{VERSION}), a package containing an implementation of the m4 macro
language.
-Copyright @copyright{} 1989-1994, 2004-2014, 2016-2017 Free Software
+Copyright @copyright{} 1989-1994, 2004-2014, 2016-2017, 2020 Free Software
Foundation, Inc.
@quotation
@@ -987,7 +987,7 @@ options.
ifdef(`__unix__', ,
`errprint(` skipping: syscmd does not have unix semantics
')m4exit(`77')')dnl
-syscmd(`echo | cat >&- 2>/dev/null')ifelse(sysval, `0',
+syscmd(`(echo | cat >&-) 2>/dev/null')ifelse(sysval, `0',
`errprint(` skipping: system does not allow closing stdout
')m4exit(`77')')dnl
changequote(`[', `]')dnl
@@ -1001,7 +1001,7 @@ sysval
ifdef(`__unix__', ,
`errprint(` skipping: syscmd does not have unix semantics
')m4exit(`77')')dnl
-syscmd(`echo | cat >&- 2>/dev/null')ifelse(sysval, `0',
+syscmd(`(echo | cat >&-) 2>/dev/null')ifelse(sysval, `0',
`errprint(` skipping: system does not allow closing stdout
')m4exit(`77')')dnl
changequote(`[', `]')dnl
--
2.7.4