Hello, hackers!
When running cpluspluscheck/headerscheck on REL_16_STABLE [1] I found
that everything was ok only if it was preceded by a build and make
maintainer-clean was not used:
$ ./configure --without-icu --with-perl --with-python > configure.txt &&
make -j16 > make.txt &&
make -j16 clean > clean.txt &&
make -j16 cpluspluscheck > cpluspluscheck.txt
$ ./configure --without-icu --with-perl --with-python > configure_1.txt
&&
make -j16 > make.txt &&
make -j16 distclean > clean.txt &&
./configure --without-icu --with-perl --with-python > configure_2.txt &&
make -j16 cpluspluscheck > cpluspluscheck.txt
Otherwise cpluspluscheck/headerscheck will fail:
$ ./configure --without-icu --with-perl --with-python > configure_1.txt
&&
make -j16 > make.txt &&
make -j16 maintainer-clean > clean.txt &&
./configure --without-icu --with-perl --with-python > configure_2.txt &&
make -j16 cpluspluscheck > cpluspluscheck.txt
$ ./configure --without-icu --with-perl --with-python > configure.txt &&
make -j16 cpluspluscheck > cpluspluscheck.txt
In file included from /tmp/cpluspluscheck.Zy4645/test.cpp:3:
/home/marina/postgrespro/postgrespro/src/backend/parser/gramparse.h:29:10:
fatal error: gram.h: No such file or directory
29 | #include "gram.h"
| ^~~~~~~~
compilation terminated.
In file included from /tmp/cpluspluscheck.Zy4645/test.cpp:3:
/home/marina/postgrespro/postgrespro/src/backend/utils/adt/jsonpath_internal.h:26:10:
fatal error: jsonpath_gram.h: No such file or directory
26 | #include "jsonpath_gram.h"
| ^~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [GNUmakefile:141: cpluspluscheck] Error 1
In the other branches everything is fine: these problems begin with
commits [2] (jsonpath_gram.h) and [3] (gram.h) and in the master branch
there're no such problems after commit [4]. The attached diff.patch
fixes this issue for me. (IIUC internal headers generated by Bison are
usually excluded from such checks so I also excluded gramparse.h and
jsonpath_internal.h...)
[1]
https://github.com/postgres/postgres/commit/e177da5c87a10abac97c028bfb427bafb7353aa2
[2]
https://github.com/postgres/postgres/commit/dac048f71ebbcf2f980d280711f8ff8001331c5d
[3]
https://github.com/postgres/postgres/commit/ecaf7c5df54f7fa9df2fdc7225d2bb4e283f0081
[4]
https://github.com/postgres/postgres/commit/721856ff24b3722ce8e894e5a32c9c063cd48455
--
Marina Polyakova
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company
diff --git a/src/tools/pginclude/cpluspluscheck b/src/tools/pginclude/cpluspluscheck
index 4e09c4686b30b973fd4ca2443d04b5228e904f4b..e77979c97ebd09dff18cb98090254bd3724de0ff 100755
--- a/src/tools/pginclude/cpluspluscheck
+++ b/src/tools/pginclude/cpluspluscheck
@@ -121,14 +121,15 @@ do
# We can't make these Bison output files compilable standalone
# without using "%code require", which old Bison versions lack.
- # parser/gram.h will be included by parser/gramparse.h anyway.
test "$f" = contrib/cube/cubeparse.h && continue
test "$f" = contrib/seg/segparse.h && continue
test "$f" = src/backend/bootstrap/bootparse.h && continue
test "$f" = src/backend/parser/gram.h && continue
+ test "$f" = src/backend/parser/gramparse.h && continue
test "$f" = src/backend/replication/repl_gram.h && continue
test "$f" = src/backend/replication/syncrep_gram.h && continue
test "$f" = src/backend/utils/adt/jsonpath_gram.h && continue
+ test "$f" = src/backend/utils/adt/jsonpath_internal.h && continue
test "$f" = src/bin/pgbench/exprparse.h && continue
test "$f" = src/pl/plpgsql/src/pl_gram.h && continue
test "$f" = src/interfaces/ecpg/preproc/preproc.h && continue
diff --git a/src/tools/pginclude/headerscheck b/src/tools/pginclude/headerscheck
index 8dee1b56709d06a9ef1f5e80b956a079fa8a1e6a..30e0e47684e571e8c86459654a0ad37326d798e0 100755
--- a/src/tools/pginclude/headerscheck
+++ b/src/tools/pginclude/headerscheck
@@ -116,14 +116,15 @@ do
# We can't make these Bison output files compilable standalone
# without using "%code require", which old Bison versions lack.
- # parser/gram.h will be included by parser/gramparse.h anyway.
test "$f" = contrib/cube/cubeparse.h && continue
test "$f" = contrib/seg/segparse.h && continue
test "$f" = src/backend/bootstrap/bootparse.h && continue
test "$f" = src/backend/parser/gram.h && continue
+ test "$f" = src/backend/parser/gramparse.h && continue
test "$f" = src/backend/replication/repl_gram.h && continue
test "$f" = src/backend/replication/syncrep_gram.h && continue
test "$f" = src/backend/utils/adt/jsonpath_gram.h && continue
+ test "$f" = src/backend/utils/adt/jsonpath_internal.h && continue
test "$f" = src/bin/pgbench/exprparse.h && continue
test "$f" = src/pl/plpgsql/src/pl_gram.h && continue
test "$f" = src/interfaces/ecpg/preproc/preproc.h && continue