public inbox for [email protected]  
help / color / mirror / Atom feed
From: Maksim.Melnikov <[email protected]>
To: [email protected]
Subject: Fix race with LLVM and bison.
Date: Fri, 27 Mar 2026 14:31:52 +0300
Message-ID: <[email protected]> (raw)

Hi All.

I've found build error in configuration --with-llvm

CPPFLAGS="-O2" ./configure --enable-debug --enable-cassert 
--enable-tap-tests --with-openssl --with-icu  --with-llvm

....

make world-bin -j3

....

cubescan.c:9:10: fatal error: 'cubeparse.h' file not found
     9 | #include "cubeparse.h"  /* must be after cubedata.h for YYSTYPE 
and NDBOX */

....
segscan.c:9:10: fatal error: 'segparse.h' file not found
     9 | #include "segparse.h"   /* must be after segdata.h for SEG */


The reason is race, that exist between LLVM compilation and bison source 
code generation and compilation can occur first.

Ideally LLVM compilation target should depend on header files targets.

The error is difficult to reproduce and I've done simple patch to have 
stable reproducing. Fix patch is also attached.

Thanks.


Attachments:

  [text/x-patch] v1-0002-Patch-simplify-reproducing-of-race-with-LLVM-and-.patch (635B, 2-v1-0002-Patch-simplify-reproducing-of-race-with-LLVM-and-.patch)
  download | inline diff:
From b326ca00b542ca45453efccbd41d97ccdf766e30 Mon Sep 17 00:00:00 2001
From: Maksim Melnikov <[email protected]>
Date: Fri, 27 Mar 2026 13:33:46 +0300
Subject: [PATCH v1 2/2] Patch simplify reproducing of race with LLVM and bison
 code generation.

---
 src/Makefile.global.in | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index a7699b026bb..f186f2e91e1 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -809,6 +809,7 @@ endif
 
 %.c: %.y
 	$(if $(BISON_CHECK_CMD),$(BISON_CHECK_CMD))
+	sleep 10s
 	$(BISON) $(BISONFLAGS) -o $@ $<
 
 %.i: %.c
-- 
2.43.0



  [text/x-patch] v1-0001-Fix-race-with-LLVM-compilation-and-bison-code-gen.patch (1.5K, 3-v1-0001-Fix-race-with-LLVM-compilation-and-bison-code-gen.patch)
  download | inline diff:
From ea157f883d54974f5924d78592813b5f1f082bd5 Mon Sep 17 00:00:00 2001
From: Maksim Melnikov <[email protected]>
Date: Fri, 27 Mar 2026 13:33:09 +0300
Subject: [PATCH v1 1/2] Fix race with LLVM compilation and bison code
 generation.

In case when source file is compiled with LLVM and include header file
that should be generated by bison, compile error can occur, example:

cubescan.c:9:10: fatal error: 'cubeparse.h' file not found
    9 | #include "cubeparse.h"

The reason is race, that exist between LLVM compilation and bison code
generation and compilation can occur first. Ideally LLVM compilation
target should depend on header files targets.
---
 contrib/cube/Makefile | 4 ++++
 contrib/seg/Makefile  | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/contrib/cube/Makefile b/contrib/cube/Makefile
index dfb0d806e4b..b4f3d32450b 100644
--- a/contrib/cube/Makefile
+++ b/contrib/cube/Makefile
@@ -35,6 +35,10 @@ endif
 cubeparse.h: cubeparse.c
 	touch $@
 
+ifeq ($(with_llvm), yes)
+cubescan.c: cubeparse.h
+endif
+
 cubeparse.c: BISONFLAGS += -d
 
 # Force these dependencies to be known even without dependency info built:
diff --git a/contrib/seg/Makefile b/contrib/seg/Makefile
index b408f4049cb..b98ca73bc64 100644
--- a/contrib/seg/Makefile
+++ b/contrib/seg/Makefile
@@ -34,6 +34,10 @@ endif
 segparse.h: segparse.c
 	touch $@
 
+ifeq ($(with_llvm), yes)
+segscan.bc: segparse.h
+endif
+
 segparse.c: BISONFLAGS += -d
 
 # Force these dependencies to be known even without dependency info built:
-- 
2.43.0



view thread (4+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: Fix race with LLVM and bison.
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox