From 8f47d69b00b6c3b422924c807a7f11bf6f237e81 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= Date: Thu, 2 Feb 2017 12:46:13 +0100 Subject: [PATCH] - up to 3.0.1.32609; patches from FC and Debian --- Firebird-noroot.patch | 14 -- Firebird.spec | 18 +- ...ed-code-compatible-with-gcc-6-in-C-1.patch | 29 +++ ...lobal-delete-operators-when-compiled.patch | 36 ++++ no-copy-from-icu.patch | 52 ++++++ parallel-build.patch | 169 ++++++++++++++++++ 6 files changed, 300 insertions(+), 18 deletions(-) delete mode 100644 Firebird-noroot.patch create mode 100644 Make-the-generated-code-compatible-with-gcc-6-in-C-1.patch create mode 100644 Provide-sized-global-delete-operators-when-compiled.patch create mode 100644 no-copy-from-icu.patch create mode 100644 parallel-build.patch diff --git a/Firebird-noroot.patch b/Firebird-noroot.patch deleted file mode 100644 index afbd4ad..0000000 --- a/Firebird-noroot.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- Firebird-3.0.0.32483-0/builds/install/arch-specific/linux/makeInstallImage.sh.in.orig 2016-04-14 16:07:29.000000000 +0200 -+++ Firebird-3.0.0.32483-0/builds/install/arch-specific/linux/makeInstallImage.sh.in 2016-08-31 21:15:58.897726690 +0200 -@@ -28,11 +28,6 @@ - # This script builds an image of the installed system into - # the gen/buildroot directory. - --if [ "`whoami`" != "root" ]; then -- echo 'You must be root to build package' -- exit 1 --fi -- - # Making an assumption that this program is being run in the gen directory - BuildRootDir=.. - BuiltFBDir=Release/firebird # Where the just build fb exists. diff --git a/Firebird.spec b/Firebird.spec index eddf9b7..8103acd 100644 --- a/Firebird.spec +++ b/Firebird.spec @@ -17,12 +17,12 @@ Summary(de.UTF-8): Firebird - relationalen Open-Source- Datenbankmanagementsyste Summary(pl.UTF-8): Firebird - serwer baz danych SQL oraz narzędzia klienckie Name: Firebird # FirebirdCS/FirebirdSS (Classic Server/Super Server)? -Version: 3.0.0.32483 +Version: 3.0.1.32609 Release: 0.1 License: Interbase Public License 1.0, Initial Developer's Public License 1.0 Group: Applications/Databases Source0: http://downloads.sourceforge.net/firebird/%{name}-%{version}-0.tar.bz2 -# Source0-md5: 821260b61dafc22899d1464d4e91ee6a +# Source0-md5: 85e2ace3d6950793d4c6917473e00c74 Source1: http://www.firebirdsql.org/file/documentation/reference_manuals/user_manuals/Firebird-3-QuickStart.pdf # Source1-md5: 8e029d449e9cb3e1da8213ac6c11ad02 # distfiles refuses this, would require some audit to allow '('/')' chars @@ -52,7 +52,10 @@ Patch3: %{name}-FHS.patch Patch4: %{name}-opt.patch Patch5: %{name}-gcc-icu.patch Patch6: %{name}-libpath.patch -Patch7: %{name}-noroot.patch +Patch7: Make-the-generated-code-compatible-with-gcc-6-in-C-1.patch +Patch8: Provide-sized-global-delete-operators-when-compiled.patch +Patch9: parallel-build.patch +Patch10: no-copy-from-icu.patch URL: http://www.firebirdsql.org/ BuildRequires: autoconf >= 2.67 BuildRequires: automake @@ -63,6 +66,8 @@ BuildRequires: libicu-devel BuildRequires: libstdc++-devel BuildRequires: libtommath-devel BuildRequires: libtool >= 2:2 +# for lockfile +BuildRequires: procmail BuildRequires: rpmbuild(macros) >= 1.268 BuildRequires: sed >= 4.0 BuildRequires: zlib-devel @@ -163,6 +168,9 @@ Obszerna dokumentacja do baz InterBase i Firebird. %patch5 -p0 %patch6 -p1 %patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 mkdir docs cp %{SOURCE1} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7} %{SOURCE8} %{SOURCE9} docs @@ -177,8 +185,9 @@ cp %{SOURCE1} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7} %{SOURCE8} %{__autoconf} %configure \ + CFLAGS="%{rpmcflags} -fno-delete-null-pointer-checks" \ --prefix=%{ibdir} \ - --with-editline \ + --with-system-editline \ --with-fbconf=%{_sysconfdir}/firebird \ --with-fbinclude=%{_includedir} \ --with-fblib=%{_libdir} \ @@ -190,6 +199,7 @@ cp %{SOURCE1} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7} %{SOURCE8} --with-system-editline \ %{?debug:--enable-debug} \ --disable-rpath \ + --disable-binreloc \ %{?with_ss:--enable-superserver} \ %{__make} -j1 diff --git a/Make-the-generated-code-compatible-with-gcc-6-in-C-1.patch b/Make-the-generated-code-compatible-with-gcc-6-in-C-1.patch new file mode 100644 index 0000000..981b09b --- /dev/null +++ b/Make-the-generated-code-compatible-with-gcc-6-in-C-1.patch @@ -0,0 +1,29 @@ +From: asfernandes +Date: Sat, 5 Mar 2016 03:39:36 +0000 +Subject: Make the generated code compatible with gcc 6 in C++-14 mode. + (cherry picked from commit 3618aa2171674babf79ef935aa049c40a3db1321) +Patch-mainline: +Git-commit: 3618aa2171674babf79ef935aa049c40a3db1321 +References: bsc#964466 CORE-5099 + +--- + src/gpre/c_cxx.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/gpre/c_cxx.cpp b/src/gpre/c_cxx.cpp +index df175dca9465..bafce8f282bf 100644 +--- a/src/gpre/c_cxx.cpp ++++ b/src/gpre/c_cxx.cpp +@@ -2820,7 +2820,7 @@ static void gen_request(const gpre_req* request) + printa(0, "static %sshort\n isc_%dl = %d;", + (request->req_flags & REQ_extend_dpb) ? "" : CONST_STR, + request->req_ident, request->req_length); +- printa(0, "static %schar\n isc_%d [] = {", CONST_STR, request->req_ident); ++ printa(0, "static %sunsigned char\n isc_%d [] = {", CONST_STR, request->req_ident); + + const TEXT* string_type = "blr"; + if (gpreGlob.sw_raw) +-- +2.8.2 + + diff --git a/Provide-sized-global-delete-operators-when-compiled.patch b/Provide-sized-global-delete-operators-when-compiled.patch new file mode 100644 index 0000000..1302d1d --- /dev/null +++ b/Provide-sized-global-delete-operators-when-compiled.patch @@ -0,0 +1,36 @@ +From: Michal Kubecek +Date: Mon, 25 Apr 2016 08:55:36 +0200 +Subject: Provide sized global delete operators when compiled in C++14 mode +Patch-mainline: submitted +Git-commit: 038f9fbf559e56032e4cb49eb7ce4c3ead23fda9 +References: bsc#964466 CORE-5099 + +--- + src/common/classes/alloc.h | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/src/common/classes/alloc.h b/src/common/classes/alloc.h +index b1026ce2aac4..fda5bfebb0cc 100644 +--- a/src/common/classes/alloc.h ++++ b/src/common/classes/alloc.h +@@ -331,6 +331,16 @@ inline void operator delete[](void* mem, Firebird::MemoryPool& pool ALLOC_PARAMS + MemoryPool::globalFree(mem); + } + ++#if __cplusplus >= 201402L ++inline void operator delete(void* mem, std::size_t s ALLOC_PARAMS) throw() ++{ ++ MemoryPool::globalFree(mem); ++} ++inline void operator delete[](void* mem, std::size_t s ALLOC_PARAMS) throw() ++{ ++ MemoryPool::globalFree(mem); ++} ++#endif + #ifdef DEBUG_GDS_ALLOC + + #ifdef __clang__ +-- +2.8.2 + + diff --git a/no-copy-from-icu.patch b/no-copy-from-icu.patch new file mode 100644 index 0000000..42ef318 --- /dev/null +++ b/no-copy-from-icu.patch @@ -0,0 +1,52 @@ +Description: Link isql with ICU instead of embedding part of it in the source +Author: Damyan Ivanov + +--- a/src/isql/isql.epp ++++ b/src/isql/isql.epp +@@ -173,34 +173,6 @@ const char* UNKNOWN = "*unknown*"; + + namespace IcuUtil + { +- // Duplicate from ICU to not need to link ISQL with it. It's used by U8_NEXT_UNSAFE. +- static const uint8_t utf8_countTrailBytes[256] = { +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- +- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +- +- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, +- 3, 3, 3, 3, 3, +- 3, 3, 3, /* illegal in Unicode */ +- 4, 4, 4, 4, /* illegal in Unicode */ +- 5, 5, /* illegal in Unicode */ +- 0, 0 /* illegal bytes 0xfe and 0xff */ +- }; +- + // Return the number of characters of a string. + static unsigned charLength(SSHORT charset, unsigned len, const char* str) + { +--- a/builds/posix/Makefile.in ++++ b/builds/posix/Makefile.in +@@ -454,7 +454,8 @@ $(GSTAT): $(GSTAT_Objects) $(COMMON_LIB + isql: $(ISQL) + + $(ISQL): $(ISQL_Objects) $(COMMON_LIB) +- $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LIBEDITLINE) $(LINK_LIBS) ++ $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) \ ++ $(LIBEDITLINE) $(LINK_LIBS) $(ICU_LIBS) + + nbackup: $(NBACKUP) + diff --git a/parallel-build.patch b/parallel-build.patch new file mode 100644 index 0000000..dc43df9 --- /dev/null +++ b/parallel-build.patch @@ -0,0 +1,169 @@ +Description: allow building with make -jN + without this there are sporadic segmentation faults + . + it seems that when gpre opens a database, it clashes with other gpre + processes that have the database open. perhaps this is because at + this stage of the build the compiled firebird engine lacks ability for + synchronisation. So, wrap all engine-using calls with a lock file +Author: Damyan Ivanov +Forwarded: no + +--- a/builds/posix/Makefile.in ++++ b/builds/posix/Makefile.in +@@ -329,8 +329,8 @@ yachts.lnk: metadata.fdb + + metadata.fdb: $(RUN_ISQL) $(SRC_ROOT)/dbs/metadata.sql + -$(RM) $@ +- $(RUN_ISQL) -q -i $(SRC_ROOT)/dbs/metadata.sql +- $(RUN_GFIX) -mode read_only $@ ++ $(call LOCK_RUN,$(RUN_ISQL) -q -i $(SRC_ROOT)/dbs/metadata.sql) ++ $(call LOCK_RUN,$(RUN_GFIX) -mode read_only $@) + $(CHMOD) 0444 $@ + + $(HELP_FDB): help.fdb +@@ -339,7 +339,7 @@ $(HELP_FDB): help.fdb + $(CHMOD) 0444 $@ + + help.fdb: $(BLD_ROOT)/misc/help.gbak +- $(RUN_GBAK) -MODE read_only -R $< $@ ++ $(call LOCK_RUN,$(RUN_GBAK) -MODE read_only -R $< $@) + $(CHMOD) 0444 $@ + + $(SECURITY_FDB): security.fdb +@@ -349,18 +349,18 @@ $(SECURITY_FDB): security.fdb + security.fdb: $(SRC_ROOT)/dbs/security.sql + -$(RM) $@ + -$(RM) $(SECURITY_TMP) +- echo create database \'$(SECURITY_TMP)\'\; | $(RUN_ISQL) +- $(RUN_GFIX) -write async $(SECURITY_TMP) +- $(RUN_ISQL) -i $^ $(SECURITY_TMP) ++ $(call LOCK_RUN,echo create database \'$(SECURITY_TMP)\'\; | $(RUN_ISQL)) ++ $(call LOCK_RUN,$(RUN_GFIX) -write async $(SECURITY_TMP)) ++ $(call LOCK_RUN,$(RUN_ISQL) -i $^ $(SECURITY_TMP)) + $(CHMOD) a=rw $(SECURITY_TMP) + $(CP) $(SECURITY_TMP) $@ +- $(RUN_GFIX) -write sync $@ ++ $(call LOCK_RUN,$(RUN_GFIX) -write sync $@) + + msg.timestamp: $(MSG_FILES) + -$(RM) msg.fdb +- echo create database \'msg.fdb\'\; | $(RUN_ISQL) +- $(RUN_GFIX) -write async msg.fdb +- for sql in $(MSG_FILES); do (echo $$sql; $(RUN_ISQL) -i $$sql msg.fdb) || exit; done ++ $(call LOCK_RUN,echo create database \'msg.fdb\'\; | $(RUN_ISQL)) ++ $(call LOCK_RUN,$(RUN_GFIX) -write async msg.fdb) ++ $(call LOCK_RUN,for sql in $(MSG_FILES); do (echo $$sql; $(RUN_ISQL) -i $$sql msg.fdb) || exit; done) + $(TOUCH) $@ + + +@@ -528,7 +528,7 @@ codes: gen_codes + ids: $(IDS) + + gen_codes: $(CODES) msg.timestamp +- $(CODES) $(SRC_ROOT)/include/gen $(LNG_ROOT) ++ $(call LOCK_RUN,$(CODES) $(SRC_ROOT)/include/gen $(LNG_ROOT)) + + $(CODES): $(CODES_Objects) $(COMMON_LIB) + $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) +@@ -564,7 +564,7 @@ examples: include_generic + message_file: $(FIREBIRD_MSG) + + $(FIREBIRD_MSG): $(BUILD_FILE) msg.timestamp +- $(BUILD_FILE) -d msg.fdb -f $@ ++ $(call LOCK_RUN,$(BUILD_FILE) -d msg.fdb -f $@) + $(CHMOD_6) $@ + + $(BUILD_FILE): $(BUILD_Objects) $(COMMON_LIB) +--- a/builds/posix/make.defaults ++++ b/builds/posix/make.defaults +@@ -378,6 +378,7 @@ GPRE_BOOT = $(RBIN)/gpre_boot$(EXE + GPRE = $(BIN)/gpre$(EXEC_EXT) + RUN_GPRE = $(RBIN)/gpre$(EXEC_EXT) + GPRE_CURRENT = $(RBIN)/gpre_current$(EXEC_EXT) ++LOCK_RUN = sh -x -c "lockfile -1 $(BIN)/build-db.lock && $(subst $$,\$$,$(1)); res=\$$?; rm -f $(BIN)/build-db.lock; exit \$$res" + + + # From msgs +--- a/builds/posix/make.rules ++++ b/builds/posix/make.rules +@@ -72,17 +72,17 @@ ISQL_GPRE_FLAGS = -m -z -n -ocxx + .SUFFIXES: .c .e .epp .cpp + + .e.c: +- $(GPRE_CURRENT) $(GPRE_FLAGS) $< $@ ++ $(call LOCK_RUN,$(GPRE_CURRENT) $(GPRE_FLAGS) $< $@) + + + $(OBJ)/jrd/%.cpp: $(SRC_ROOT)/jrd/%.epp +- $(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $(firstword $<) $@ ++ $(call LOCK_RUN,$(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $(firstword $<) $@) + + $(OBJ)/isql/%.cpp: $(SRC_ROOT)/isql/%.epp +- $(GPRE_CURRENT) $(ISQL_GPRE_FLAGS) $< $@ ++ $(call LOCK_RUN,$(GPRE_CURRENT) $(ISQL_GPRE_FLAGS) $< $@) + + $(OBJ)/%.cpp: $(SRC_ROOT)/%.epp +- $(GPRE_CURRENT) $(GPRE_FLAGS) $(firstword $<) $@ ++ $(call LOCK_RUN,$(GPRE_CURRENT) $(GPRE_FLAGS) $(firstword $<) $@) + + + .SUFFIXES: .lo .o .cpp .c +--- a/builds/posix/make.shared.targets ++++ b/builds/posix/make.shared.targets +@@ -65,13 +65,13 @@ $(OBJ)/dsql/Parser.o $(OBJ)/yvalve/keywo + + # Special cases for building cpp from epp + $(OBJ)/dsql/metd.cpp: $(SRC_ROOT)/dsql/metd.epp +- $(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@ ++ $(call LOCK_RUN,$(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@) + + $(OBJ)/dsql/DdlNodes.cpp: $(SRC_ROOT)/dsql/DdlNodes.epp +- $(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@ ++ $(call LOCK_RUN,$(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@) + + $(OBJ)/dsql/PackageNodes.cpp: $(SRC_ROOT)/dsql/PackageNodes.epp +- $(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@ ++ $(call LOCK_RUN,$(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $< $@) + + # Adding resources as prerequisite for some files + +--- a/builds/posix/Makefile.in.examples ++++ b/builds/posix/Makefile.in.examples +@@ -123,8 +123,8 @@ $(EXAMPLES_DEST)% : $(EXAMPLES_SRC)% + + $(EMPLOYEE_DB): $(EXAMPLES_DEST)/empbuild$(EXEC_EXT) $(INPUT_Sources) $(EXAMPLES_DEST)/isql$(EXEC_EXT) + -$(RM) $(EMPLOYEE_DB) +- ./empbuild $(EMPLOYEE_DB) +- $(GFIX) -write sync $(EMPLOYEE_DB) ++ $(call LOCK_RUN,./empbuild $(EMPLOYEE_DB)) ++ $(call LOCK_RUN,$(GFIX) -write sync $(EMPLOYEE_DB)) + -$(CHMOD_6) $(EMPLOYEE_DB) + + # To get past the fact isql is called from the programs, we create a local link in this directory +@@ -140,7 +140,7 @@ $(EXAMPLES_DEST)/empbuild.c: $(EXAMPLES_ + + $(EXAMPLES_DEST)/empbuild.fdb : $(EXAMPLES_DEST)/empddl.sql $(EXAMPLES_DEST)/empbld.sql $(EXAMPLES_DEST)/isql$(EXEC_EXT) + -$(RM) $(EXAMPLES_DEST)/empbuild.fdb +- $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i empbld.sql ++ $(call LOCK_RUN,$(EXAMPLES_DEST)/isql$(EXEC_EXT) -i empbld.sql) + + # The chain for intlemp.fdb is the same a script file to create an empty database + # to allow a .e program to be compiled, to then create and populate with data +@@ -148,7 +148,7 @@ $(EXAMPLES_DEST)/empbuild.fdb : $(EXAMPL + + $(EXAMPLES_DEST)/intlemp.fdb: $(EXAMPLES_DEST)/intlbld$(EXEC_EXT) $(INTL_Sources) $(EXAMPLES_DEST)/isql$(EXEC_EXT) + -$(RM) intlemp.fdb +- ./intlbld intlemp.fdb ++ $(call LOCK_RUN,./intlbld intlemp.fdb) + -$(CHMOD_6) intlemp.fdb + + $(EXAMPLES_DEST)/intlbld$(EXEC_EXT): $(INTLBLD_Objects) $(COMMON_LIB) +@@ -158,7 +158,7 @@ $(EXAMPLES_DEST)/intlbld.c: $(EXAMPLES_D + + $(EXAMPLES_DEST)/intlbuild.fdb : $(EXAMPLES_DEST)/intlddl.sql $(EXAMPLES_DEST)/intlbld.sql $(EXAMPLES_DEST)/isql$(EXEC_EXT) + -$(RM) intlbuild.fdb +- $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i intlbld.sql ++ $(call LOCK_RUN,$(EXAMPLES_DEST)/isql$(EXEC_EXT) -i intlbld.sql) + + + $(EXAMPLES_DEST)/%.sql: $(EXAMPLES_SRC)/empbuild/%.sql -- 2.43.0