]> git.pld-linux.org Git - packages/Firebird.git/blame - parallel-build.patch
- pl for -ss,-classic
[packages/Firebird.git] / parallel-build.patch
CommitLineData
8f47d69b
AM
1Description: 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
8Author: Damyan Ivanov <dmn@debian.org>
9Forwarded: no
10
11--- a/builds/posix/Makefile.in
12+++ b/builds/posix/Makefile.in
13@@ -329,8 +329,8 @@ yachts.lnk: metadata.fdb
14
15 metadata.fdb: $(RUN_ISQL) $(SRC_ROOT)/dbs/metadata.sql
16 -$(RM) $@
17- $(RUN_ISQL) -q -i $(SRC_ROOT)/dbs/metadata.sql
18- $(RUN_GFIX) -mode read_only $@
19+ $(call LOCK_RUN,$(RUN_ISQL) -q -i $(SRC_ROOT)/dbs/metadata.sql)
20+ $(call LOCK_RUN,$(RUN_GFIX) -mode read_only $@)
21 $(CHMOD) 0444 $@
22
23 $(HELP_FDB): help.fdb
24@@ -339,7 +339,7 @@ $(HELP_FDB): help.fdb
25 $(CHMOD) 0444 $@
26
27 help.fdb: $(BLD_ROOT)/misc/help.gbak
28- $(RUN_GBAK) -MODE read_only -R $< $@
29+ $(call LOCK_RUN,$(RUN_GBAK) -MODE read_only -R $< $@)
30 $(CHMOD) 0444 $@
31
32 $(SECURITY_FDB): security.fdb
33@@ -349,18 +349,18 @@ $(SECURITY_FDB): security.fdb
34 security.fdb: $(SRC_ROOT)/dbs/security.sql
35 -$(RM) $@
36 -$(RM) $(SECURITY_TMP)
37- echo create database \'$(SECURITY_TMP)\'\; | $(RUN_ISQL)
38- $(RUN_GFIX) -write async $(SECURITY_TMP)
39- $(RUN_ISQL) -i $^ $(SECURITY_TMP)
40+ $(call LOCK_RUN,echo create database \'$(SECURITY_TMP)\'\; | $(RUN_ISQL))
41+ $(call LOCK_RUN,$(RUN_GFIX) -write async $(SECURITY_TMP))
42+ $(call LOCK_RUN,$(RUN_ISQL) -i $^ $(SECURITY_TMP))
43 $(CHMOD) a=rw $(SECURITY_TMP)
44 $(CP) $(SECURITY_TMP) $@
45- $(RUN_GFIX) -write sync $@
46+ $(call LOCK_RUN,$(RUN_GFIX) -write sync $@)
47
48 msg.timestamp: $(MSG_FILES)
49 -$(RM) msg.fdb
50- echo create database \'msg.fdb\'\; | $(RUN_ISQL)
51- $(RUN_GFIX) -write async msg.fdb
52- for sql in $(MSG_FILES); do (echo $$sql; $(RUN_ISQL) -i $$sql msg.fdb) || exit; done
53+ $(call LOCK_RUN,echo create database \'msg.fdb\'\; | $(RUN_ISQL))
54+ $(call LOCK_RUN,$(RUN_GFIX) -write async msg.fdb)
55+ $(call LOCK_RUN,for sql in $(MSG_FILES); do (echo $$sql; $(RUN_ISQL) -i $$sql msg.fdb) || exit; done)
56 $(TOUCH) $@
57
58
59@@ -528,7 +528,7 @@ codes: gen_codes
60 ids: $(IDS)
61
62 gen_codes: $(CODES) msg.timestamp
63- $(CODES) $(SRC_ROOT)/include/gen $(LNG_ROOT)
64+ $(call LOCK_RUN,$(CODES) $(SRC_ROOT)/include/gen $(LNG_ROOT))
65
66 $(CODES): $(CODES_Objects) $(COMMON_LIB)
67 $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS)
68@@ -564,7 +564,7 @@ examples: include_generic
69 message_file: $(FIREBIRD_MSG)
70
71 $(FIREBIRD_MSG): $(BUILD_FILE) msg.timestamp
72- $(BUILD_FILE) -d msg.fdb -f $@
73+ $(call LOCK_RUN,$(BUILD_FILE) -d msg.fdb -f $@)
74 $(CHMOD_6) $@
75
76 $(BUILD_FILE): $(BUILD_Objects) $(COMMON_LIB)
77--- a/builds/posix/make.defaults
78+++ b/builds/posix/make.defaults
79@@ -378,6 +378,7 @@ GPRE_BOOT = $(RBIN)/gpre_boot$(EXE
80 GPRE = $(BIN)/gpre$(EXEC_EXT)
81 RUN_GPRE = $(RBIN)/gpre$(EXEC_EXT)
82 GPRE_CURRENT = $(RBIN)/gpre_current$(EXEC_EXT)
83+LOCK_RUN = sh -x -c "lockfile -1 $(BIN)/build-db.lock && $(subst $$,\$$,$(1)); res=\$$?; rm -f $(BIN)/build-db.lock; exit \$$res"
84
85
86 # From msgs
87--- a/builds/posix/make.rules
88+++ b/builds/posix/make.rules
89@@ -72,17 +72,17 @@ ISQL_GPRE_FLAGS = -m -z -n -ocxx
90 .SUFFIXES: .c .e .epp .cpp
91
92 .e.c:
93- $(GPRE_CURRENT) $(GPRE_FLAGS) $< $@
94+ $(call LOCK_RUN,$(GPRE_CURRENT) $(GPRE_FLAGS) $< $@)
95
96
97 $(OBJ)/jrd/%.cpp: $(SRC_ROOT)/jrd/%.epp
98- $(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $(firstword $<) $@
99+ $(call LOCK_RUN,$(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $(firstword $<) $@)
100
101 $(OBJ)/isql/%.cpp: $(SRC_ROOT)/isql/%.epp
102- $(GPRE_CURRENT) $(ISQL_GPRE_FLAGS) $< $@
103+ $(call LOCK_RUN,$(GPRE_CURRENT) $(ISQL_GPRE_FLAGS) $< $@)
104
105 $(OBJ)/%.cpp: $(SRC_ROOT)/%.epp
106- $(GPRE_CURRENT) $(GPRE_FLAGS) $(firstword $<) $@
107+ $(call LOCK_RUN,$(GPRE_CURRENT) $(GPRE_FLAGS) $(firstword $<) $@)
108
109
110 .SUFFIXES: .lo .o .cpp .c
111--- a/builds/posix/make.shared.targets
112+++ b/builds/posix/make.shared.targets
113@@ -65,13 +65,13 @@ $(OBJ)/dsql/Parser.o $(OBJ)/yvalve/keywo
114
115 # Special cases for building cpp from epp
116 $(OBJ)/dsql/metd.cpp: $(SRC_ROOT)/dsql/metd.epp
117- $(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@
118+ $(call LOCK_RUN,$(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@)
119
120 $(OBJ)/dsql/DdlNodes.cpp: $(SRC_ROOT)/dsql/DdlNodes.epp
121- $(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@
122+ $(call LOCK_RUN,$(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@)
123
124 $(OBJ)/dsql/PackageNodes.cpp: $(SRC_ROOT)/dsql/PackageNodes.epp
125- $(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@
126+ $(call LOCK_RUN,$(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@)
127
128 # Adding resources as prerequisite for some files
129
130--- a/builds/posix/Makefile.in.examples
131+++ b/builds/posix/Makefile.in.examples
132@@ -123,8 +123,8 @@ $(EXAMPLES_DEST)% : $(EXAMPLES_SRC)%
133
134 $(EMPLOYEE_DB): $(EXAMPLES_DEST)/empbuild$(EXEC_EXT) $(INPUT_Sources) $(EXAMPLES_DEST)/isql$(EXEC_EXT)
135 -$(RM) $(EMPLOYEE_DB)
136- ./empbuild $(EMPLOYEE_DB)
137- $(GFIX) -write sync $(EMPLOYEE_DB)
138+ $(call LOCK_RUN,./empbuild $(EMPLOYEE_DB))
139+ $(call LOCK_RUN,$(GFIX) -write sync $(EMPLOYEE_DB))
140 -$(CHMOD_6) $(EMPLOYEE_DB)
141
142 # To get past the fact isql is called from the programs, we create a local link in this directory
143@@ -140,7 +140,7 @@ $(EXAMPLES_DEST)/empbuild.c: $(EXAMPLES_
144
145 $(EXAMPLES_DEST)/empbuild.fdb : $(EXAMPLES_DEST)/empddl.sql $(EXAMPLES_DEST)/empbld.sql $(EXAMPLES_DEST)/isql$(EXEC_EXT)
146 -$(RM) $(EXAMPLES_DEST)/empbuild.fdb
147- $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i empbld.sql
148+ $(call LOCK_RUN,$(EXAMPLES_DEST)/isql$(EXEC_EXT) -i empbld.sql)
149
150 # The chain for intlemp.fdb is the same a script file to create an empty database
151 # to allow a .e program to be compiled, to then create and populate with data
152@@ -148,7 +148,7 @@ $(EXAMPLES_DEST)/empbuild.fdb : $(EXAMPL
153
154 $(EXAMPLES_DEST)/intlemp.fdb: $(EXAMPLES_DEST)/intlbld$(EXEC_EXT) $(INTL_Sources) $(EXAMPLES_DEST)/isql$(EXEC_EXT)
155 -$(RM) intlemp.fdb
156- ./intlbld intlemp.fdb
157+ $(call LOCK_RUN,./intlbld intlemp.fdb)
158 -$(CHMOD_6) intlemp.fdb
159
160 $(EXAMPLES_DEST)/intlbld$(EXEC_EXT): $(INTLBLD_Objects) $(COMMON_LIB)
161@@ -158,7 +158,7 @@ $(EXAMPLES_DEST)/intlbld.c: $(EXAMPLES_D
162
163 $(EXAMPLES_DEST)/intlbuild.fdb : $(EXAMPLES_DEST)/intlddl.sql $(EXAMPLES_DEST)/intlbld.sql $(EXAMPLES_DEST)/isql$(EXEC_EXT)
164 -$(RM) intlbuild.fdb
165- $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i intlbld.sql
166+ $(call LOCK_RUN,$(EXAMPLES_DEST)/isql$(EXEC_EXT) -i intlbld.sql)
167
168
169 $(EXAMPLES_DEST)/%.sql: $(EXAMPLES_SRC)/empbuild/%.sql
This page took 0.068236 seconds and 4 git commands to generate.