]>
Commit | Line | Data |
---|---|---|
8f47d69b AM |
1 | Description: allow building with make -jN |
2 | without this there are sporadic segmentation faults | |
3 | . | |
4 | it seems that when gpre opens a database, it clashes with other gpre | |
5 | processes that have the database open. perhaps this is because at | |
6 | this stage of the build the compiled firebird engine lacks ability for | |
7 | synchronisation. So, wrap all engine-using calls with a lock file | |
8 | Author: Damyan Ivanov <dmn@debian.org> | |
9 | Forwarded: no | |
10 | ||
eee53b00 BS |
11 | diff -up Firebird-4.0.4.3010-0/builds/posix/Makefile.in.orig Firebird-4.0.4.3010-0/builds/posix/Makefile.in |
12 | --- Firebird-4.0.4.3010-0/builds/posix/Makefile.in.orig 2023-12-20 10:59:23.894063119 +0100 | |
13 | +++ Firebird-4.0.4.3010-0/builds/posix/Makefile.in 2023-12-20 11:04:55.318624451 +0100 | |
14 | @@ -442,8 +442,8 @@ yachts.lnk: metadata.fdb | |
8f47d69b AM |
15 | |
16 | metadata.fdb: $(RUN_ISQL) $(SRC_ROOT)/dbs/metadata.sql | |
17 | -$(RM) $@ | |
18 | - $(RUN_ISQL) -q -i $(SRC_ROOT)/dbs/metadata.sql | |
19 | - $(RUN_GFIX) -mode read_only $@ | |
20 | + $(call LOCK_RUN,$(RUN_ISQL) -q -i $(SRC_ROOT)/dbs/metadata.sql) | |
21 | + $(call LOCK_RUN,$(RUN_GFIX) -mode read_only $@) | |
22 | $(CHMOD) 0444 $@ | |
23 | ||
24 | $(HELP_FDB): help.fdb | |
eee53b00 | 25 | @@ -452,7 +452,7 @@ $(HELP_FDB): help.fdb |
8f47d69b AM |
26 | $(CHMOD) 0444 $@ |
27 | ||
28 | help.fdb: $(BLD_ROOT)/misc/help.gbak | |
eee53b00 BS |
29 | - $(RUN_GBAK) -MODE read_only -R $< $@ |
30 | + $(call LOCK_RUN,$(RUN_GBAK) -MODE read_only -R $< $@) | |
8f47d69b AM |
31 | $(CHMOD) 0444 $@ |
32 | ||
33 | $(SECURITY_FDB): security.fdb | |
eee53b00 | 34 | @@ -462,18 +462,18 @@ $(SECURITY_FDB): security.fdb |
8f47d69b AM |
35 | security.fdb: $(SRC_ROOT)/dbs/security.sql |
36 | -$(RM) $@ | |
37 | -$(RM) $(SECURITY_TMP) | |
38 | - echo create database \'$(SECURITY_TMP)\'\; | $(RUN_ISQL) | |
39 | - $(RUN_GFIX) -write async $(SECURITY_TMP) | |
40 | - $(RUN_ISQL) -i $^ $(SECURITY_TMP) | |
41 | + $(call LOCK_RUN,echo create database \'$(SECURITY_TMP)\'\; | $(RUN_ISQL)) | |
42 | + $(call LOCK_RUN,$(RUN_GFIX) -write async $(SECURITY_TMP)) | |
43 | + $(call LOCK_RUN,$(RUN_ISQL) -i $^ $(SECURITY_TMP)) | |
44 | $(CHMOD) a=rw $(SECURITY_TMP) | |
45 | $(CP) $(SECURITY_TMP) $@ | |
46 | - $(RUN_GFIX) -write sync $@ | |
47 | + $(call LOCK_RUN,$(RUN_GFIX) -write sync $@) | |
48 | ||
49 | msg.timestamp: $(MSG_FILES) | |
50 | -$(RM) msg.fdb | |
51 | - echo create database \'msg.fdb\'\; | $(RUN_ISQL) | |
52 | - $(RUN_GFIX) -write async msg.fdb | |
53 | - for sql in $(MSG_FILES); do (echo $$sql; $(RUN_ISQL) -i $$sql msg.fdb) || exit; done | |
54 | + $(call LOCK_RUN,echo create database \'msg.fdb\'\; | $(RUN_ISQL)) | |
55 | + $(call LOCK_RUN,$(RUN_GFIX) -write async msg.fdb) | |
56 | + $(call LOCK_RUN,for sql in $(MSG_FILES); do (echo $$sql; $(RUN_ISQL) -i $$sql msg.fdb) || exit; done) | |
57 | $(TOUCH) $@ | |
58 | ||
59 | ||
eee53b00 BS |
60 | @@ -643,7 +643,7 @@ CODES = $(BIN)/codes$(EXEC_EXT) |
61 | codes: gen_codes | |
8f47d69b AM |
62 | |
63 | gen_codes: $(CODES) msg.timestamp | |
64 | - $(CODES) $(SRC_ROOT)/include/gen $(LNG_ROOT) | |
65 | + $(call LOCK_RUN,$(CODES) $(SRC_ROOT)/include/gen $(LNG_ROOT)) | |
66 | ||
67 | $(CODES): $(CODES_Objects) $(COMMON_LIB) | |
1fe5ebac | 68 | $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) |
eee53b00 | 69 | @@ -675,7 +675,7 @@ examples: include_generic |
8f47d69b AM |
70 | message_file: $(FIREBIRD_MSG) |
71 | ||
72 | $(FIREBIRD_MSG): $(BUILD_FILE) msg.timestamp | |
73 | - $(BUILD_FILE) -d msg.fdb -f $@ | |
74 | + $(call LOCK_RUN,$(BUILD_FILE) -d msg.fdb -f $@) | |
75 | $(CHMOD_6) $@ | |
76 | ||
eee53b00 BS |
77 | tzdata: $(FIREBIRD)/tzdata |
78 | diff -up Firebird-4.0.4.3010-0/builds/posix/Makefile.in.examples.orig Firebird-4.0.4.3010-0/builds/posix/Makefile.in.examples | |
79 | --- Firebird-4.0.4.3010-0/builds/posix/Makefile.in.examples.orig 2023-11-08 13:07:47.000000000 +0100 | |
80 | +++ Firebird-4.0.4.3010-0/builds/posix/Makefile.in.examples 2023-12-20 10:59:23.900729743 +0100 | |
81 | @@ -140,8 +140,8 @@ $(EXAMPLES_DEST)% : $(EXAMPLES_SRC)% | |
7130cd50 MK |
82 | |
83 | $(EMPLOYEE_DB): $(EXAMPLES_DEST)/empbuild$(EXEC_EXT) $(INPUT_Sources) $(EXAMPLES_DEST)/isql$(EXEC_EXT) | |
84 | -$(RM) $(EMPLOYEE_DB) | |
85 | - ./empbuild $(EMPLOYEE_DB) | |
86 | - $(GFIX) -write sync $(EMPLOYEE_DB) | |
87 | + $(call LOCK_RUN,./empbuild $(EMPLOYEE_DB)) | |
88 | + $(call LOCK_RUN,$(GFIX) -write sync $(EMPLOYEE_DB)) | |
89 | -$(CHMOD_6) $(EMPLOYEE_DB) | |
90 | ||
91 | # To get past the fact isql is called from the programs, we create a local link in this directory | |
eee53b00 | 92 | @@ -157,7 +157,7 @@ $(EXAMPLES_DEST)/empbuild.c: $(EXAMPLES_ |
7130cd50 MK |
93 | |
94 | $(EXAMPLES_DEST)/empbuild.fdb : $(EXAMPLES_DEST)/empddl.sql $(EXAMPLES_DEST)/empbld.sql $(EXAMPLES_DEST)/isql$(EXEC_EXT) | |
95 | -$(RM) $(EXAMPLES_DEST)/empbuild.fdb | |
96 | - $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i empbld.sql | |
97 | + $(call LOCK_RUN,$(EXAMPLES_DEST)/isql$(EXEC_EXT) -i empbld.sql) | |
98 | ||
99 | # The chain for intlemp.fdb is the same a script file to create an empty database | |
100 | # to allow a .e program to be compiled, to then create and populate with data | |
eee53b00 | 101 | @@ -165,7 +165,7 @@ $(EXAMPLES_DEST)/empbuild.fdb : $(EXAMPL |
7130cd50 MK |
102 | |
103 | $(EXAMPLES_DEST)/intlemp.fdb: $(EXAMPLES_DEST)/intlbld$(EXEC_EXT) $(INTL_Sources) $(EXAMPLES_DEST)/isql$(EXEC_EXT) | |
104 | -$(RM) intlemp.fdb | |
105 | - ./intlbld intlemp.fdb | |
106 | + $(call LOCK_RUN,./intlbld intlemp.fdb) | |
107 | -$(CHMOD_6) intlemp.fdb | |
108 | ||
109 | $(EXAMPLES_DEST)/intlbld$(EXEC_EXT): $(INTLBLD_Objects) $(COMMON_LIB) | |
eee53b00 | 110 | @@ -175,7 +175,7 @@ $(EXAMPLES_DEST)/intlbld.c: $(EXAMPLES_D |
7130cd50 MK |
111 | |
112 | $(EXAMPLES_DEST)/intlbuild.fdb : $(EXAMPLES_DEST)/intlddl.sql $(EXAMPLES_DEST)/intlbld.sql $(EXAMPLES_DEST)/isql$(EXEC_EXT) | |
113 | -$(RM) intlbuild.fdb | |
114 | - $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i intlbld.sql | |
115 | + $(call LOCK_RUN,$(EXAMPLES_DEST)/isql$(EXEC_EXT) -i intlbld.sql) | |
116 | ||
117 | ||
118 | $(EXAMPLES_DEST)/%.sql: $(EXAMPLES_SRC)/empbuild/%.sql | |
eee53b00 BS |
119 | diff -up Firebird-4.0.4.3010-0/builds/posix/make.defaults.orig Firebird-4.0.4.3010-0/builds/posix/make.defaults |
120 | --- Firebird-4.0.4.3010-0/builds/posix/make.defaults.orig 2023-12-20 10:59:23.900729743 +0100 | |
121 | +++ Firebird-4.0.4.3010-0/builds/posix/make.defaults 2023-12-20 11:06:32.591338933 +0100 | |
122 | @@ -427,6 +427,7 @@ GPRE_BOOT = $(RBIN)/gpre_boot$(EXE | |
8f47d69b AM |
123 | GPRE = $(BIN)/gpre$(EXEC_EXT) |
124 | RUN_GPRE = $(RBIN)/gpre$(EXEC_EXT) | |
125 | GPRE_CURRENT = $(RBIN)/gpre_current$(EXEC_EXT) | |
126 | +LOCK_RUN = sh -x -c "lockfile -1 $(BIN)/build-db.lock && $(subst $$,\$$,$(1)); res=\$$?; rm -f $(BIN)/build-db.lock; exit \$$res" | |
127 | ||
8f47d69b | 128 | # From msgs |
eee53b00 BS |
129 | CHECK_MESSAGES = $(BIN)/check_messages$(EXEC_EXT) |
130 | diff -up Firebird-4.0.4.3010-0/builds/posix/make.rules.orig Firebird-4.0.4.3010-0/builds/posix/make.rules | |
131 | --- Firebird-4.0.4.3010-0/builds/posix/make.rules.orig 2023-12-20 10:59:23.900729743 +0100 | |
132 | +++ Firebird-4.0.4.3010-0/builds/posix/make.rules 2023-12-20 11:08:35.277238011 +0100 | |
133 | @@ -88,20 +88,20 @@ OBJECT_GPRE_FLAGS = -m -z -n -ocxx | |
8f47d69b AM |
134 | .SUFFIXES: .c .e .epp .cpp |
135 | ||
136 | .e.c: | |
137 | - $(GPRE_CURRENT) $(GPRE_FLAGS) $< $@ | |
138 | + $(call LOCK_RUN,$(GPRE_CURRENT) $(GPRE_FLAGS) $< $@) | |
139 | ||
140 | ||
141 | $(OBJ)/jrd/%.cpp: $(SRC_ROOT)/jrd/%.epp | |
142 | - $(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $(firstword $<) $@ | |
143 | + $(call LOCK_RUN,$(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $(firstword $<) $@) | |
144 | ||
145 | $(OBJ)/isql/%.cpp: $(SRC_ROOT)/isql/%.epp | |
eee53b00 BS |
146 | - $(GPRE_CURRENT) $(OBJECT_GPRE_FLAGS) $< $@ |
147 | + $(call LOCK_RUN,$(GPRE_CURRENT) $(OBJECT_GPRE_FLAGS) $< $@) | |
148 | ||
149 | $(OBJ)/burp/%.cpp: $(SRC_ROOT)/burp/%.epp | |
150 | - $(GPRE_CURRENT) $(OBJECT_GPRE_FLAGS) $< $@ | |
151 | + $(call LOCK_RUN,$(GPRE_CURRENT) $(OBJECT_GPRE_FLAGS) $< $@) | |
8f47d69b AM |
152 | |
153 | $(OBJ)/%.cpp: $(SRC_ROOT)/%.epp | |
154 | - $(GPRE_CURRENT) $(GPRE_FLAGS) $(firstword $<) $@ | |
155 | + $(call LOCK_RUN,$(GPRE_CURRENT) $(GPRE_FLAGS) $(firstword $<) $@) | |
156 | ||
157 | ||
eee53b00 BS |
158 | .SUFFIXES: .lo .o .cpp .c .cc |
159 | diff -up Firebird-4.0.4.3010-0/builds/posix/make.shared.targets.orig Firebird-4.0.4.3010-0/builds/posix/make.shared.targets | |
7130cd50 MK |
160 | --- Firebird-3.0.7.33374-0.org/builds/posix/make.shared.targets 2020-10-20 08:40:05.000000000 +0000 |
161 | +++ Firebird-3.0.7.33374-0/builds/posix/make.shared.targets 2022-04-04 17:53:33.598825549 +0000 | |
162 | @@ -65,13 +65,13 @@ $(OBJ)/dsql/Parser.o $(OBJ)/common/keywo | |
8f47d69b AM |
163 | |
164 | # Special cases for building cpp from epp | |
165 | $(OBJ)/dsql/metd.cpp: $(SRC_ROOT)/dsql/metd.epp | |
166 | - $(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@ | |
167 | + $(call LOCK_RUN,$(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@) | |
168 | ||
169 | $(OBJ)/dsql/DdlNodes.cpp: $(SRC_ROOT)/dsql/DdlNodes.epp | |
170 | - $(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@ | |
171 | + $(call LOCK_RUN,$(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@) | |
172 | ||
173 | $(OBJ)/dsql/PackageNodes.cpp: $(SRC_ROOT)/dsql/PackageNodes.epp | |
174 | - $(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@ | |
175 | + $(call LOCK_RUN,$(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@) | |
176 | ||
177 | # Adding resources as prerequisite for some files | |
178 |