From c639b225128f1f5f9f6c76b41b9026ed5a69f618 Mon Sep 17 00:00:00 2001 From: Toshaan Bharvani Date: Thu, 18 Jan 2024 15:07:46 +0100 Subject: [PATCH] initial package creation Signed-off-by: Toshaan Bharvani --- SOURCES/README.Fedora | 17 + SOURCES/add-pkgconfig-files.patch | 28 + SOURCES/autoconf.patch | 24 + SOURCES/btyacc-honour-build-flags.patch | 12 + SOURCES/c++17.patch | 144 ++++ SOURCES/cloop-honour-build-flags.patch | 54 ++ SOURCES/examples-honour-build-flags.patch | 28 + SOURCES/fb_config | 20 + SOURCES/firebird-configure-c99.patch | 45 ++ SOURCES/firebird-logrotate | 9 + SOURCES/firebird.service | 14 + SOURCES/no-copy-from-icu.patch | 51 ++ SOURCES/noexcept.patch | 664 +++++++++++++++++++ SPECS/firebird.spec | 773 ++++++++++++++++++++++ 14 files changed, 1883 insertions(+) create mode 100644 SOURCES/README.Fedora create mode 100644 SOURCES/add-pkgconfig-files.patch create mode 100644 SOURCES/autoconf.patch create mode 100644 SOURCES/btyacc-honour-build-flags.patch create mode 100644 SOURCES/c++17.patch create mode 100644 SOURCES/cloop-honour-build-flags.patch create mode 100644 SOURCES/examples-honour-build-flags.patch create mode 100644 SOURCES/fb_config create mode 100644 SOURCES/firebird-configure-c99.patch create mode 100644 SOURCES/firebird-logrotate create mode 100644 SOURCES/firebird.service create mode 100644 SOURCES/no-copy-from-icu.patch create mode 100644 SOURCES/noexcept.patch create mode 100644 SPECS/firebird.spec diff --git a/SOURCES/README.Fedora b/SOURCES/README.Fedora new file mode 100644 index 0000000..071b351 --- /dev/null +++ b/SOURCES/README.Fedora @@ -0,0 +1,17 @@ +Differences between upstream and the Fedora package +=================================================== + +* In /usr/bin you have isql-fb for Firebird isql. + We can't name it isql to avoid conflict with isql from UNIX-ODBC. + In /usr/bin you have also gstat-fb for Firebird gstat. + We can't name it gstat to avoid conflict with gstat from Ganglia-gmond. + +* By default, Firebird is set as superserver mode. + Please read the Firebird doc if you want to change the mode. + +* According to Fedora packaging rules, firebird service is not started + automatically. You need to start it, as root : + systemctl start firebird.service + If you want to have firebird started at each boot, as root : + systemctl enable firebird.service + diff --git a/SOURCES/add-pkgconfig-files.patch b/SOURCES/add-pkgconfig-files.patch new file mode 100644 index 0000000..981afe2 --- /dev/null +++ b/SOURCES/add-pkgconfig-files.patch @@ -0,0 +1,28 @@ +diff --git a/builds/install/arch-specific/linux/misc/fbclient.pc.in b/builds/install/arch-specific/linux/misc/fbclient.pc.in +new file mode 100644 +index 0000000..d49fdc5 +--- /dev/null ++++ b/builds/install/arch-specific/linux/misc/fbclient.pc.in +@@ -0,0 +1,10 @@ ++prefix=@prefix@ ++exec_prefix=@exec_prefix@ ++libdir=@FB_LIBDIR@ ++includedir=@FB_INCDIR@ ++ ++Name: fbclient ++Description: Firebird client library ++Version: @FIREBIRD_VERSION@ ++Cflags: -I${includedir}/firebird ++Libs: -L${libdir} -lfbclient +diff --git a/configure.ac b/configure.ac +index 0a3de36..922c778 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1307,6 +1307,7 @@ case "$PLATFORM" in + gen/install/misc/firebird.init.d.gentoo:builds/install/arch-specific/linux/firebird.init.d.gentoo.in + gen/install/misc/firebird.init.d.slackware:builds/install/arch-specific/linux/firebird.init.d.slackware.in + gen/install/misc/rc.config.firebird:builds/install/arch-specific/linux/rc.config.firebird.in ++ gen/install/misc/fbclient.pc:builds/install/arch-specific/linux/misc/fbclient.pc.in + gen/Release/firebird/bin/linuxLibrary.sh:builds/install/arch-specific/linux/linuxLibrary.sh.in + gen/install/misc/firebird.service:builds/install/arch-specific/linux/firebird.service.in + ], diff --git a/SOURCES/autoconf.patch b/SOURCES/autoconf.patch new file mode 100644 index 0000000..e058262 --- /dev/null +++ b/SOURCES/autoconf.patch @@ -0,0 +1,24 @@ +From 3fe8f6510de79689a26868e244840b24dcb19567 Mon Sep 17 00:00:00 2001 +From: AlexPeshkoff +Date: Wed, 23 Nov 2022 20:30:03 +0300 +Subject: [PATCH] Fixed #7394: autoconf 2.72 support + +--- + configure.ac | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 75af92e862c..800453d25fa 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -696,8 +696,9 @@ if test "$STD_EDITLINE" = "true"; then + AC_CHECK_LIB(readline, readline, [READLINE=readline EDITLINE_FLG=Y], + [STD_EDITLINE=false + if test "$EDITLINE_FLG" = "Y"; then +- AC_MSG_WARN([[[--with-system-editline specified, not found. Using bundled editline]]])]))) ++ AC_MSG_WARN([[[--with-system-editline specified, not found. Using bundled editline]]]) + fi ++ ]))) + fi + XE_RESTORE_ENV() + diff --git a/SOURCES/btyacc-honour-build-flags.patch b/SOURCES/btyacc-honour-build-flags.patch new file mode 100644 index 0000000..cb9f38c --- /dev/null +++ b/SOURCES/btyacc-honour-build-flags.patch @@ -0,0 +1,12 @@ +--- a/extern/btyacc/Makefile 2022-08-12 15:24:40.846774310 +0200 ++++ a/extern/btyacc/Makefile 2022-08-12 15:26:20.954809720 +0200 +@@ -12,7 +12,7 @@ + # across all of our supported compilers/platforms. + + # Vanilla CFLAGS +-CFLAGS= ++CFLAGS=-fPIC -pie + + # No LDFLAGS + #LDFLAGS= + diff --git a/SOURCES/c++17.patch b/SOURCES/c++17.patch new file mode 100644 index 0000000..76cd4e2 --- /dev/null +++ b/SOURCES/c++17.patch @@ -0,0 +1,144 @@ +From ff49d71b0cdbab75f8a22717c4f88343a5961868 Mon Sep 17 00:00:00 2001 +From: Adriano dos Santos Fernandes +Date: Mon, 31 May 2021 08:55:26 -0300 +Subject: [PATCH] Set POSIX build to use C++17. + +--- + CMakeLists.txt | 4 ++-- + builds/posix/make.defaults | 2 +- + builds/posix/prefix.freebsd_amd64 | 2 +- + configure.ac | 2 +- + examples/extauth/Makefile | 2 +- + examples/interfaces/makefile | 2 +- + extern/icu/android/aarch64/config.sh | 2 +- + extern/icu/android/armv7a/config.sh | 4 ++-- + extern/icu/android/linux/config.sh | 2 +- + 9 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 620fd032af4..5f336efd611 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -206,14 +206,14 @@ if (MINGW) + set(CMAKE_STATIC_LIBRARY_PREFIX) + + add_definitions(-D_WIN32_WINNT=0x0600) +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4 -std=c++11") ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4 -std=c++17") + endif() + + if (UNIX) + set(OS_DIR posix) + + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -msse4 -std=c++11") ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -msse4 -std=c++17") + + if (NOT CMAKE_CROSSCOMPILING) + set(LIB_readline readline) +diff --git a/builds/posix/make.defaults b/builds/posix/make.defaults +index d96e89053fa..57bbb006865 100755 +--- a/builds/posix/make.defaults ++++ b/builds/posix/make.defaults +@@ -103,7 +103,7 @@ GLOB_OPTIONS:= + #____________________________________________________________________________ + + # Global c++ flags: firebird needs no RTTI, choose build standard +-PLUSPLUS_FLAGS:= -fno-rtti -std=c++11 ++PLUSPLUS_FLAGS:= -fno-rtti -std=c++17 + + # If this is defined then we use special rules useful for developers only + IsDeveloper = @DEVEL_FLG@ +diff --git a/builds/posix/prefix.freebsd_amd64 b/builds/posix/prefix.freebsd_amd64 +index f27567a2715..0736d87e935 100644 +--- a/builds/posix/prefix.freebsd_amd64 ++++ b/builds/posix/prefix.freebsd_amd64 +@@ -26,4 +26,4 @@ DEV_FLAGS=-ggdb -DFREEBSD -DAMD64 -pipe -MMD -p -fPIC -Wall -Wno-non-virtual-dto + # This file must be compiled with SSE4.2 support + %/CRC32C.o: CXXFLAGS += -msse4 + +-CXXFLAGS := $(CXXFLAGS) -std=c++11 ++CXXFLAGS := $(CXXFLAGS) -std=c++17 +diff --git a/configure.ac b/configure.ac +index 9b40be43101..e4a83cf8d3b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -899,7 +899,7 @@ dnl if 64-bit mode, then archive tool, ar, needs -X64 option + fi + + XE_SAVE_ENV() +-CXXFLAGS="$CXXFLAGS -std=c++11" ++CXXFLAGS="$CXXFLAGS -std=c++17" + AC_CACHE_CHECK([whether the C++ compiler understands noexcept], [ac_cv_cxx_noexcept], [ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int f(int x) noexcept { return x + 1; }]], [[]])], + [ac_cv_cxx_noexcept=yes], [ac_cv_cxx_noexcept=no])]) +diff --git a/examples/extauth/Makefile b/examples/extauth/Makefile +index 9da7bbd357f..3c8b878d225 100644 +--- a/examples/extauth/Makefile ++++ b/examples/extauth/Makefile +@@ -61,7 +61,7 @@ KEYGEN_objects=$(INTERMED)/keygen.o + TCWRAP_objects=$(INTERMED)/TcWrapper.o + KEY_AUTH_objects=$(INTERMED)/ExtAuth.o + +-CXXFLAGS=-std=c++11 -pthread -I$(ROOT)/include -fPIC $(TOMCRYPT_COMPILE) ++CXXFLAGS=-std=c++17 -pthread -I$(ROOT)/include -fPIC $(TOMCRYPT_COMPILE) + LDFLAGS=-pthread -L$(LIB) -Wl,-rpath,'$$ORIGIN/../lib' $(TOMCRYPT_LINK) + + LINK_LIBS=-lfbclient -ltomcrypt -ltommath +diff --git a/examples/interfaces/makefile b/examples/interfaces/makefile +index 153c3d558dc..b65dba90a7d 100644 +--- a/examples/interfaces/makefile ++++ b/examples/interfaces/makefile +@@ -33,7 +33,7 @@ FBCLIENT = $(FIREBIRD)/lib/libfbclient.so + # General Compiler and linker Defines for Linux + # --------------------------------------------------------------------- + CXX = c++ +-CXXFLAGS= -c -Wall -g3 -std=c++11 -fno-rtti $(INCLUDE) ++CXXFLAGS= -c -Wall -g3 -std=c++17 -fno-rtti $(INCLUDE) + RM = rm -f + + # +diff --git a/extern/icu/android/aarch64/config.sh b/extern/icu/android/aarch64/config.sh +index 51ef623a3c5..f464d930ec2 100755 +--- a/extern/icu/android/aarch64/config.sh ++++ b/extern/icu/android/aarch64/config.sh +@@ -18,7 +18,7 @@ + --enable-dyload \ + --with-cross-build=$CROSS_BUILD_DIR \ + CFLAGS='-Os' \ +- CXXFLAGS='--std=c++11' \ ++ CXXFLAGS='--std=c++17' \ + LDFLAGS='-static-libstdc++' \ + CC=aarch64-linux-android24-clang \ + CXX=aarch64-linux-android24-clang++ \ +diff --git a/extern/icu/android/armv7a/config.sh b/extern/icu/android/armv7a/config.sh +index fe1bd037456..0e458c690e7 100755 +--- a/extern/icu/android/armv7a/config.sh ++++ b/extern/icu/android/armv7a/config.sh +@@ -18,10 +18,10 @@ + --enable-dyload \ + --with-cross-build=$CROSS_BUILD_DIR \ + CFLAGS='-Os -march=armv7-a -mfloat-abi=softfp -mfpu=neon' \ +- CXXFLAGS='--std=c++11 -march=armv7-a -mfloat-abi=softfp -mfpu=neon' \ ++ CXXFLAGS='--std=c++17 -march=armv7-a -mfloat-abi=softfp -mfpu=neon' \ + LDFLAGS='-static-libstdc++ -march=armv7-a -Wl,--fix-cortex-a8' \ + CC=arm-linux-androideabi-clang \ + CXX=arm-linux-androideabi-clang++ \ + AR=arm-linux-androideabi-ar \ + RANLIB=arm-linux-androideabi-ranlib \ +- --with-data-packaging=archive +\ No newline at end of file ++ --with-data-packaging=archive +diff --git a/extern/icu/android/linux/config.sh b/extern/icu/android/linux/config.sh +index a8b56024aae..6e7d9c5f5c8 100755 +--- a/extern/icu/android/linux/config.sh ++++ b/extern/icu/android/linux/config.sh +@@ -1,7 +1,7 @@ + #!/bin/sh + ../source/runConfigureICU Linux --prefix=$PWD/prebuilt \ + CFLAGS="-Os" \ +- CXXFLAGS="--std=c++11" \ ++ CXXFLAGS="--std=c++17" \ + --enable-static \ + --enable-shared=no \ + --enable-extras=no \ diff --git a/SOURCES/cloop-honour-build-flags.patch b/SOURCES/cloop-honour-build-flags.patch new file mode 100644 index 0000000..3ce2e2f --- /dev/null +++ b/SOURCES/cloop-honour-build-flags.patch @@ -0,0 +1,54 @@ +Description: make cloop build honor compiler/linker flags from the environment +Author: Damyan Ivanov +Forwarded: no + +--- a/extern/cloop/Makefile ++++ b/extern/cloop/Makefile +@@ -27,8 +27,8 @@ SRCS_CPP := $(foreach sdir,$(SRC_DIRS),$ + OBJS_C := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRCS_C)) + OBJS_CPP := $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRCS_CPP)) + +-C_FLAGS := -ggdb -fPIC -MMD -MP -W -Wall -Wno-unused-parameter +-CXX_FLAGS := $(C_FLAGS) -std=c++11 ++C_FLAGS := -ggdb -fPIC -MMD -MP -W -Wall -Wno-unused-parameter $(CPPFLAGS) $(CFLAGS) ++CXX_FLAGS := $(C_FLAGS) $(CXXFLAGS) -std=c++11 + FPC_FLAGS := -Mdelphi -Cg + + ifeq ($(shell uname),FreeBSD) +@@ -94,7 +94,7 @@ $(BIN_DIR)/cloop: \ + $(OBJ_DIR)/cloop/Main.o \ + | $(BIN_DIR) + +- $(LD) $^ -o $@ $(LIBS) ++ $(LD) $(LDFLAGS) $^ -o $@ $(LIBS) + + $(SRC_DIR)/tests/test1/CalcCApi.h: $(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl + $(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl c-header $@ CALC_C_API_H CALC_I +@@ -121,23 +121,23 @@ $(BIN_DIR)/test1-c$(SHRLIB_EXT): \ + $(OBJ_DIR)/tests/test1/CalcCApi.o \ + $(OBJ_DIR)/tests/test1/CTest.o \ + +- $(LD) $^ -shared $(DL_LIB) -o $@ $(LIBS) ++ $(LD) $(LDFLAGS) $^ -shared $(DL_LIB) -o $@ $(LIBS) + + $(BIN_DIR)/test1-c$(EXE_EXT): \ + $(OBJ_DIR)/tests/test1/CalcCApi.o \ + $(OBJ_DIR)/tests/test1/CTest.o \ + +- $(LD) $^ $(DL_LIB) -o $@ $(LIBS) ++ $(LD) $(LDFLAGS) $^ $(DL_LIB) -o $@ $(LIBS) + + $(BIN_DIR)/test1-cpp$(SHRLIB_EXT): \ + $(OBJ_DIR)/tests/test1/CppTest.o \ + +- $(LD) $^ -shared $(DL_LIB) -o $@ $(LIBS) ++ $(LD) $(LDFLAGS) $^ -shared $(DL_LIB) -o $@ $(LIBS) + + $(BIN_DIR)/test1-cpp$(EXE_EXT): \ + $(OBJ_DIR)/tests/test1/CppTest.o \ + +- $(LD) $^ $(DL_LIB) -o $@ $(LIBS) ++ $(LD) $(LDFLAGS) $^ $(DL_LIB) -o $@ $(LIBS) + + $(BIN_DIR)/test1-pascal$(SHRLIB_EXT): \ + $(SRC_DIR)/tests/test1/PascalClasses.pas \ diff --git a/SOURCES/examples-honour-build-flags.patch b/SOURCES/examples-honour-build-flags.patch new file mode 100644 index 0000000..fc7ebd9 --- /dev/null +++ b/SOURCES/examples-honour-build-flags.patch @@ -0,0 +1,28 @@ +diff --git a/builds/posix/Makefile.in.plugins_examples b/builds/posix/Makefile.in.plugins_examples +index 989e80d..344f487 100644 +--- a/builds/posix/Makefile.in.plugins_examples ++++ b/builds/posix/Makefile.in.plugins_examples +@@ -101,7 +101,7 @@ AllObjects += $(CA_Objects) + crypt_app: $(CRYPT_APP) + + $(CRYPT_APP): $(CA_Objects) +- $(EXE_LINK) $(LSB_UNDEF) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) ++ $(EXE_LINK) $(EXE_LINK_OPTIONS) $(LSB_UNDEF) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) + + + include $(ROOT)/gen/make.shared.targets +diff --git a/examples/extauth/Makefile b/examples/extauth/Makefile +index 3c8b878..7de22a8 100644 +--- a/examples/extauth/Makefile ++++ b/examples/extauth/Makefile +@@ -61,8 +61,8 @@ KEYGEN_objects=$(INTERMED)/keygen.o + TCWRAP_objects=$(INTERMED)/TcWrapper.o + KEY_AUTH_objects=$(INTERMED)/ExtAuth.o + +-CXXFLAGS=-std=c++17 -pthread -I$(ROOT)/include -fPIC $(TOMCRYPT_COMPILE) +-LDFLAGS=-pthread -L$(LIB) -Wl,-rpath,'$$ORIGIN/../lib' $(TOMCRYPT_LINK) ++CXXFLAGS+=-std=c++17 -pthread -I$(ROOT)/include -fPIC $(TOMCRYPT_COMPILE) ++LDFLAGS+=-pthread -L$(LIB) -Wl,-rpath,'$$ORIGIN/../lib' $(TOMCRYPT_LINK) + + LINK_LIBS=-lfbclient -ltomcrypt -ltommath + diff --git a/SOURCES/fb_config b/SOURCES/fb_config new file mode 100644 index 0000000..2e4c410 --- /dev/null +++ b/SOURCES/fb_config @@ -0,0 +1,20 @@ +#!/usr/bin/sh + +ARCH=$(uname -m) + +case $ARCH in + x86_64 | sparc64 | s390x | ppc64 | aarch64) + LIB_DIR=/usr/lib64 + SECONDARY_LIB_DIR=/usr/lib + ;; + *) + LIB_DIR=/usr/lib + SECONDARY_LIB_DIR=/usr/lib64 + ;; +esac + +if [ ! -x $LIB_DIR/fb_config ]; then + LIB_DIR=$SECONDARY_LIB_DIR +fi + +exec $LIB_DIR/fb_config "$@" diff --git a/SOURCES/firebird-configure-c99.patch b/SOURCES/firebird-configure-c99.patch new file mode 100644 index 0000000..f24ba4a --- /dev/null +++ b/SOURCES/firebird-configure-c99.patch @@ -0,0 +1,45 @@ +Add missing int return types for main in the configure script. +Implicit ints are a language feature that was removed in C99. + +Submitted upstream: + +diff --git a/configure.ac b/configure.ac +index 05edb5ec9410ff50..0474dc850dfd04bc 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1038,7 +1038,7 @@ AC_CHECK_FUNCS(sem_init) + if test "$ac_cv_func_sem_init" = "yes"; then + AC_MSG_CHECKING(for working sem_init()) + AC_RUN_IFELSE([AC_LANG_SOURCE([[#include +- main () { ++ int main () { + sem_t s; + return sem_init(&s,0,0); + } +@@ -1079,7 +1079,7 @@ AC_SYS_LARGEFILE + if test "$ac_cv_sys_file_offset_bits" = "no"; then + AC_MSG_CHECKING(for native large file support) + AC_RUN_IFELSE([AC_LANG_SOURCE([[#include +- main () { ++ int main () { + return !(sizeof(off_t) == 8); + }]])],[ac_cv_sys_file_offset_bits=64; AC_DEFINE(_FILE_OFFSET_BITS,64) + AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)],[]) +@@ -1126,7 +1126,7 @@ dnl EKU: try to determine the alignment of long and double + dnl replaces FB_ALIGNMENT and FB_DOUBLE_ALIGN in src/jrd/common.h + AC_MSG_CHECKING(alignment of long) + AC_RUN_IFELSE([AC_LANG_SOURCE([[#include +-main () { ++int main () { + struct s { + char a; + union { long long x; sem_t y; } b; +@@ -1137,7 +1137,7 @@ AC_MSG_RESULT($ac_cv_c_alignment) + AC_DEFINE_UNQUOTED(FB_ALIGNMENT, $ac_cv_c_alignment, [Alignment of long]) + + AC_MSG_CHECKING(alignment of double) +-AC_RUN_IFELSE([AC_LANG_SOURCE([[main () { ++AC_RUN_IFELSE([AC_LANG_SOURCE([[int main () { + struct s { + char a; + double b; diff --git a/SOURCES/firebird-logrotate b/SOURCES/firebird-logrotate new file mode 100644 index 0000000..5da6610 --- /dev/null +++ b/SOURCES/firebird-logrotate @@ -0,0 +1,9 @@ +firebird.log { + weekly + missingok + rotate 52 + compress + delaycompress + notifempty + create 640 firebird adm + } diff --git a/SOURCES/firebird.service b/SOURCES/firebird.service new file mode 100644 index 0000000..ecd4cf4 --- /dev/null +++ b/SOURCES/firebird.service @@ -0,0 +1,14 @@ +[Unit] +Description=Firebird Database Server +After=network.target +Conflicts=firebird-classic.socket + +[Service] +User=firebird +Group=firebird +ExecStart=/usr/sbin/fbguard -forever +RuntimeDirectory=firebird +RuntimeDirectoryMode=0775 + +[Install] +WantedBy=multi-user.target diff --git a/SOURCES/no-copy-from-icu.patch b/SOURCES/no-copy-from-icu.patch new file mode 100644 index 0000000..3dfbd6d --- /dev/null +++ b/SOURCES/no-copy-from-icu.patch @@ -0,0 +1,51 @@ +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 +@@ -543,7 +543,7 @@ $(GSTAT): $(GSTAT_Objects) $(COMMON_LIB + isql: $(ISQL) + + $(ISQL): $(ISQL_Objects) $(COMMON_LIB) +- $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LIBEDITLINE) $(TERMLIB) $(LINK_LIBS) ++ $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LIBEDITLINE) $(TERMLIB) $(LINK_LIBS) $(ICU_LIBS) + + nbackup: $(NBACKUP) + diff --git a/SOURCES/noexcept.patch b/SOURCES/noexcept.patch new file mode 100644 index 0000000..f1a1f48 --- /dev/null +++ b/SOURCES/noexcept.patch @@ -0,0 +1,664 @@ +From a999f35f0fad27798fdc88a3f5cdf2e3e9041594 Mon Sep 17 00:00:00 2001 +From: Adriano dos Santos Fernandes +Date: Mon, 31 May 2021 08:55:26 -0300 +Subject: [PATCH] Replace FB_NOTHROW by noexcept and remove FB_THROW. + +--- + src/common/classes/alloc.cpp | 128 +++++++++++++++++------------------ + src/common/classes/alloc.h | 74 ++++++++------------ + 2 files changed, 94 insertions(+), 108 deletions(-) + +diff --git a/src/common/classes/alloc.cpp b/src/common/classes/alloc.cpp +index 1bd6ad4f09d..ee91ab89df8 100644 +--- a/src/common/classes/alloc.cpp ++++ b/src/common/classes/alloc.cpp +@@ -68,19 +68,19 @@ + #define VALGRIND_FIX_IT // overrides suspicious valgrind behavior + #endif // USE_VALGRIND + +-void* operator new(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) ++void* operator new(size_t s ALLOC_PARAMS) + { + return MemoryPool::globalAlloc(s ALLOC_PASS_ARGS); + } +-void* operator new[](size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) ++void* operator new[](size_t s ALLOC_PARAMS) + { + return MemoryPool::globalAlloc(s ALLOC_PASS_ARGS); + } +-void operator delete(void* mem ALLOC_PARAMS) FB_NOTHROW ++void operator delete(void* mem ALLOC_PARAMS) noexcept + { + MemoryPool::globalFree(mem); + } +-void operator delete[](void* mem ALLOC_PARAMS) FB_NOTHROW ++void operator delete[](void* mem ALLOC_PARAMS) noexcept + { + MemoryPool::globalFree(mem); + } +@@ -109,7 +109,7 @@ static const int GUARD_BYTES = 0; + #endif + + template +-T absVal(T n) FB_NOTHROW ++T absVal(T n) noexcept + { + return n < 0 ? -n : n; + } +@@ -160,7 +160,7 @@ struct FailedBlock + FailedBlock* failedList = NULL; + #endif + +-void corrupt(const char* text) FB_NOTHROW ++void corrupt(const char* text) noexcept + { + #ifdef DEV_BUILD + fprintf(stderr, "%s\n", text); +@@ -377,7 +377,7 @@ class MemHeader + + #ifdef MEM_DEBUG + void print_contents(bool used, FILE* file, bool used_only, +- const char* filter_path, const size_t filter_len) FB_NOTHROW ++ const char* filter_path, const size_t filter_len) noexcept + { + if (used || !used_only) + { +@@ -406,7 +406,7 @@ class MemHeader + } + #endif + +- void validate(MemPool* p, StatInt& vUse) FB_NOTHROW ++ void validate(MemPool* p, StatInt& vUse) noexcept + { + if (p == pool && !isExtent()) + vUse += getSize(); +@@ -461,7 +461,7 @@ class MemBaseHunk + } + + public: +- void validate(MemPool* pool, size_t hdr, StatInt& vMap, StatInt& vUse) FB_NOTHROW ++ void validate(MemPool* pool, size_t hdr, StatInt& vMap, StatInt& vUse) noexcept + { + if (length >= DEFAULT_ALLOCATION) + { +@@ -526,7 +526,7 @@ class MemSmallHunk : public MemBaseHunk + + #ifdef MEM_DEBUG + void print_contents(FILE* file, MemPool* pool, bool used_only, +- const char* filter_path, const size_t filter_len) FB_NOTHROW ++ const char* filter_path, const size_t filter_len) noexcept + { + UCHAR* m = ((UCHAR*) this) + hdrSize(); + fprintf(file, "Small hunk %p: memory=[%p:%p) spaceRemaining=%" SIZEFORMAT " length=%" SIZEFORMAT "\n", +@@ -598,7 +598,7 @@ class MemMediumHunk : public MemBaseHunk + + #ifdef MEM_DEBUG + void print_contents(FILE* file, MemPool* pool, bool used_only, +- const char* filter_path, const size_t filter_len) FB_NOTHROW ++ const char* filter_path, const size_t filter_len) noexcept + { + UCHAR* m = ((UCHAR*) this) + hdrSize(); + fprintf(file, "Medium hunk %p: memory=[%p:%p) spaceRemaining=%" SIZEFORMAT " length=%" SIZEFORMAT "\n", +@@ -630,7 +630,7 @@ class MemBigHunk + + #ifdef MEM_DEBUG + void print_contents(FILE* file, MemPool* pool, bool used_only, +- const char* filter_path, const size_t filter_len) FB_NOTHROW ++ const char* filter_path, const size_t filter_len) noexcept + { + fprintf(file, "Big hunk %p: memory=%p length=%" SIZEFORMAT "\n", + this, block, length); +@@ -1647,7 +1647,7 @@ class FreeObjects + + ~FreeObjects(); + +- FreeObjPtr allocateBlock(MemPool* pool, size_t from, size_t& size) FB_THROW (OOM_EXCEPTION) ++ FreeObjPtr allocateBlock(MemPool* pool, size_t from, size_t& size) + { + size_t full_size = size + (from ? 0 : ListBuilder::MEM_OVERHEAD); + if (full_size > Limits::TOP_LIMIT) +@@ -1696,7 +1696,7 @@ class FreeObjects + + #ifdef MEM_DEBUG + void print_contents(FILE* file, MemPool* pool, bool used_only, +- const char* filter_path, const size_t filter_len) FB_NOTHROW ++ const char* filter_path, const size_t filter_len) noexcept + { + for (Extent* ext = currentExtent; ext; ext = ext->next) + ext->print_contents(file, pool, used_only, filter_path, filter_len); +@@ -1717,7 +1717,7 @@ class FreeObjects + ListBuilder listBuilder; + Extent* currentExtent; + +- MemBlock* newBlock(MemPool* pool, unsigned slot) FB_THROW (OOM_EXCEPTION); ++ MemBlock* newBlock(MemPool* pool, unsigned slot); + }; + + +@@ -1799,26 +1799,26 @@ class MemPool + }; + #endif // VALIDATE_POOL + +- MemBlock* alloc(size_t from, size_t& length, bool flagRedirect) FB_THROW (OOM_EXCEPTION); +- void releaseBlock(MemBlock *block, bool flagDecr) FB_NOTHROW; ++ MemBlock* alloc(size_t from, size_t& length, bool flagRedirect); ++ void releaseBlock(MemBlock *block, bool flagDecr) noexcept; + + public: +- void* allocate(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION); +- MemBlock* allocate2(size_t from, size_t& size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION); ++ void* allocate(size_t size ALLOC_PARAMS); ++ MemBlock* allocate2(size_t from, size_t& size ALLOC_PARAMS); + + private: +- virtual void memoryIsExhausted(void) FB_THROW (OOM_EXCEPTION); +- void* allocRaw(size_t length) FB_THROW (OOM_EXCEPTION); +- static void releaseMemory(void* block, bool flagExtent) FB_NOTHROW; +- static void releaseRaw(bool destroying, void *block, size_t size, bool use_cache = true) FB_NOTHROW; +- void* getExtent(size_t from, size_t& to) FB_THROW (OOM_EXCEPTION); ++ virtual void memoryIsExhausted(void); ++ void* allocRaw(size_t length); ++ static void releaseMemory(void* block, bool flagExtent) noexcept; ++ static void releaseRaw(bool destroying, void *block, size_t size, bool use_cache = true) noexcept; ++ void* getExtent(size_t from, size_t& to); + + public: +- static void releaseExtent(bool destroying, void *block, size_t size, MemPool* pool) FB_NOTHROW; ++ static void releaseExtent(bool destroying, void *block, size_t size, MemPool* pool) noexcept; + + // pass desired size, return actual extent size + template +- void newExtent(size_t& size, Extent** linkedList) FB_THROW (OOM_EXCEPTION); ++ void newExtent(size_t& size, Extent** linkedList); + + private: + #ifdef USE_VALGRIND +@@ -1830,9 +1830,9 @@ class MemPool + + public: + static void deletePool(MemPool* pool); +- static void globalFree(void* block) FB_NOTHROW; ++ static void globalFree(void* block) noexcept; + +- static void deallocate(void* block) FB_NOTHROW; ++ static void deallocate(void* block) noexcept; + bool validate(char* buf, FB_SIZE_T size); + + // Create memory pool instance +@@ -1840,7 +1840,7 @@ class MemPool + + // Set statistics group for pool. Usage counters will be decremented from + // previously set group and added to new +- void setStatsGroup(MemoryStats& stats) FB_NOTHROW; ++ void setStatsGroup(MemoryStats& stats) noexcept; + + // Initialize and finalize global memory pool + static MemPool* init() +@@ -1893,25 +1893,25 @@ class MemPool + } + + // Statistics +- void increment_usage(size_t size) FB_NOTHROW ++ void increment_usage(size_t size) noexcept + { + stats->increment_usage(size); + used_memory += size; + } + +- void decrement_usage(size_t size) FB_NOTHROW ++ void decrement_usage(size_t size) noexcept + { + stats->decrement_usage(size); + used_memory -= size; + } + +- void increment_mapping(size_t size) FB_NOTHROW ++ void increment_mapping(size_t size) noexcept + { + stats->increment_mapping(size); + mapped_memory += size; + } + +- void decrement_mapping(size_t size) FB_NOTHROW ++ void decrement_mapping(size_t size) noexcept + { + stats->decrement_mapping(size); + mapped_memory -= size; +@@ -1919,9 +1919,9 @@ class MemPool + + #ifdef MEM_DEBUG + // Print out pool contents. This is debugging routine +- void print_contents(FILE*, unsigned flags, const char* filter_path) FB_NOTHROW; ++ void print_contents(FILE*, unsigned flags, const char* filter_path) noexcept; + // The same routine, but more easily callable from the debugger +- void print_contents(const char* filename, unsigned flags, const char* filter_path) FB_NOTHROW; ++ void print_contents(const char* filename, unsigned flags, const char* filter_path) noexcept; + + private: + MemPool* next; +@@ -1961,7 +1961,7 @@ void DoubleLinkedList::decrUsage(MemMediumHunk* hunk, MemPool* pool) + + + template +-MemBlock* FreeObjects::newBlock(MemPool* pool, unsigned slot) FB_THROW (OOM_EXCEPTION) ++MemBlock* FreeObjects::newBlock(MemPool* pool, unsigned slot) + { + size_t size = Limits::getSize(slot); + +@@ -2170,7 +2170,7 @@ MemPool::~MemPool(void) + } + + template +-void MemPool::newExtent(size_t& size, Extent** linkedList) FB_THROW(OOM_EXCEPTION) ++void MemPool::newExtent(size_t& size, Extent** linkedList) + { + // No large enough block found. We need to extend the pool + void* memory = NULL; +@@ -2214,7 +2214,7 @@ MemoryPool* MemoryPool::createPool(MemoryPool* parentPool, MemoryStats& stats) + return FB_NEW_POOL(*parentPool) MemoryPool(p); + } + +-void MemPool::setStatsGroup(MemoryStats& newStats) FB_NOTHROW ++void MemPool::setStatsGroup(MemoryStats& newStats) noexcept + { + MutexLockGuard guard(mutex, "MemPool::setStatsGroup"); + +@@ -2230,12 +2230,12 @@ void MemPool::setStatsGroup(MemoryStats& newStats) FB_NOTHROW + stats->increment_usage(sav_used_memory); + } + +-void MemoryPool::setStatsGroup(MemoryStats& newStats) FB_NOTHROW ++void MemoryPool::setStatsGroup(MemoryStats& newStats) noexcept + { + pool->setStatsGroup(newStats); + } + +-MemBlock* MemPool::alloc(size_t from, size_t& length, bool flagRedirect) FB_THROW (OOM_EXCEPTION) ++MemBlock* MemPool::alloc(size_t from, size_t& length, bool flagRedirect) + { + MutexEnsureUnlock guard(mutex, "MemPool::alloc"); + guard.enter(); +@@ -2294,7 +2294,7 @@ MemBlock* MemPool::allocate2(size_t from, size_t& size + #ifdef DEBUG_GDS_ALLOC + , const char* fileName, int line + #endif +-) FB_THROW (OOM_EXCEPTION) ++) + { + size_t length = from ? size : ROUNDUP(size + VALGRIND_REDZONE, roundingSize) + GUARD_BYTES; + MemBlock* memory = alloc(from, length, true); +@@ -2324,7 +2324,7 @@ MemBlock* MemPool::allocate2(size_t from, size_t& size + } + + +-void* MemPool::allocate(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) ++void* MemPool::allocate(size_t size ALLOC_PARAMS) + { + #ifdef VALIDATE_POOL + MutexLockGuard guard(mutex, "MemPool::allocate"); +@@ -2339,7 +2339,7 @@ void* MemPool::allocate(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) + } + + +-void MemPool::releaseMemory(void* object, bool flagExtent) FB_NOTHROW ++void MemPool::releaseMemory(void* object, bool flagExtent) noexcept + { + if (object) + { +@@ -2403,7 +2403,7 @@ void MemPool::releaseMemory(void* object, bool flagExtent) FB_NOTHROW + } + } + +-void MemPool::releaseBlock(MemBlock* block, bool decrUsage) FB_NOTHROW ++void MemPool::releaseBlock(MemBlock* block, bool decrUsage) noexcept + { + if (block->pool != this) + corrupt("bad block released"); +@@ -2464,12 +2464,12 @@ void MemPool::releaseBlock(MemBlock* block, bool decrUsage) FB_NOTHROW + releaseRaw(pool_destroying, hunk, hunk->length, false); + } + +-void MemPool::memoryIsExhausted(void) FB_THROW (OOM_EXCEPTION) ++void MemPool::memoryIsExhausted(void) + { + Firebird::BadAlloc::raise(); + } + +-void* MemPool::allocRaw(size_t size) FB_THROW (OOM_EXCEPTION) ++void* MemPool::allocRaw(size_t size) + { + #ifndef USE_VALGRIND + if (size == DEFAULT_ALLOCATION) +@@ -2549,7 +2549,7 @@ void* MemPool::allocRaw(size_t size) FB_THROW (OOM_EXCEPTION) + } + + +-void* MemPool::getExtent(size_t from, size_t& to) FB_THROW(OOM_EXCEPTION) // pass desired minimum size, return actual extent size ++void* MemPool::getExtent(size_t from, size_t& to) // pass desired minimum size, return actual extent size + { + #ifdef VALIDATE_POOL + MutexLockGuard guard(mutex, "MemPool::getExtent"); +@@ -2560,7 +2560,7 @@ void* MemPool::getExtent(size_t from, size_t& to) FB_THROW(OOM_EXCEPTION) // pa + } + + +-void MemPool::releaseExtent(bool destroying, void* block, size_t size, MemPool* pool) FB_NOTHROW ++void MemPool::releaseExtent(bool destroying, void* block, size_t size, MemPool* pool) noexcept + { + if (size < DEFAULT_ALLOCATION) + releaseMemory(block, true); +@@ -2573,7 +2573,7 @@ void MemPool::releaseExtent(bool destroying, void* block, size_t size, MemPool* + } + + +-void MemPool::releaseRaw(bool destroying, void* block, size_t size, bool use_cache) FB_NOTHROW ++void MemPool::releaseRaw(bool destroying, void* block, size_t size, bool use_cache) noexcept + { + #ifndef USE_VALGRIND + if (use_cache && (size == DEFAULT_ALLOCATION)) +@@ -2666,19 +2666,19 @@ void MemPool::releaseRaw(bool destroying, void* block, size_t size, bool use_cac + } + } + +-void MemPool::globalFree(void* block) FB_NOTHROW ++void MemPool::globalFree(void* block) noexcept + { + deallocate(block); + } + +-void* MemoryPool::calloc(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) ++void* MemoryPool::calloc(size_t size ALLOC_PARAMS) + { + void* block = allocate(size ALLOC_PASS_ARGS); + memset(block, 0, size); + return block; + } + +-void MemPool::deallocate(void* block) FB_NOTHROW ++void MemPool::deallocate(void* block) noexcept + { + releaseMemory(block, false); + } +@@ -2720,7 +2720,7 @@ bool MemPool::validate(char* buf, FB_SIZE_T size) + } + + #ifdef MEM_DEBUG +-void MemPool::print_contents(const char* filename, unsigned flags, const char* filter_path) FB_NOTHROW ++void MemPool::print_contents(const char* filename, unsigned flags, const char* filter_path) noexcept + { + FILE* out = os_utils::fopen(filename, "w"); + if (!out) +@@ -2731,7 +2731,7 @@ void MemPool::print_contents(const char* filename, unsigned flags, const char* f + } + + // This member function can't be const because there are calls to the mutex. +-void MemPool::print_contents(FILE* file, unsigned flags, const char* filter_path) FB_NOTHROW ++void MemPool::print_contents(FILE* file, unsigned flags, const char* filter_path) noexcept + { + bool used_only = flags & MemoryPool::PRINT_USED_ONLY; + +@@ -2818,7 +2818,7 @@ MemoryPool& AutoStorage::getAutoMemoryPool() + } + + #ifdef LIBC_CALLS_NEW +-void* MemoryPool::globalAlloc(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) ++void* MemoryPool::globalAlloc(size_t s ALLOC_PARAMS) + { + if (!defaultMemoryManager) + { +@@ -2831,17 +2831,17 @@ void* MemoryPool::globalAlloc(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) + } + #endif // LIBC_CALLS_NEW + +-void MemoryPool::globalFree(void* block) FB_NOTHROW ++void MemoryPool::globalFree(void* block) noexcept + { + MemPool::globalFree(block); + } + +-void* MemoryPool::allocate(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) ++void* MemoryPool::allocate(size_t size ALLOC_PARAMS) + { + return pool->allocate(size ALLOC_PASS_ARGS); + } + +-void MemoryPool::deallocate(void* block) FB_NOTHROW ++void MemoryPool::deallocate(void* block) noexcept + { + pool->deallocate(block); + } +@@ -2870,14 +2870,14 @@ void MemoryPool::deletePool(MemoryPool* pool) + delete pool; + } + +-void MemoryPool::print_contents(FILE* file, unsigned flags, const char* filter_path) FB_NOTHROW ++void MemoryPool::print_contents(FILE* file, unsigned flags, const char* filter_path) noexcept + { + #ifdef MEM_DEBUG + pool->print_contents(file, flags, filter_path); + #endif + } + +-void MemoryPool::print_contents(const char* filename, unsigned flags, const char* filter_path) FB_NOTHROW ++void MemoryPool::print_contents(const char* filename, unsigned flags, const char* filter_path) noexcept + { + #ifdef MEM_DEBUG + pool->print_contents(filename, flags, filter_path); +@@ -2950,21 +2950,21 @@ void AutoStorage::ProbeStack() const + // in a case when we actually need "new" only with file/line information + // this version should be also present as a pair for "delete". + #ifdef DEBUG_GDS_ALLOC +-void* operator new(size_t s) FB_THROW (OOM_EXCEPTION) ++void* operator new(size_t s) + { + return MemoryPool::globalAlloc(s ALLOC_ARGS); + } +-void* operator new[](size_t s) FB_THROW (OOM_EXCEPTION) ++void* operator new[](size_t s) + { + return MemoryPool::globalAlloc(s ALLOC_ARGS); + } + +-void operator delete(void* mem) FB_NOTHROW ++void operator delete(void* mem) noexcept + { + MemoryPool::globalFree(mem); + } + +-void operator delete[](void* mem) FB_NOTHROW ++void operator delete[](void* mem) noexcept + { + MemoryPool::globalFree(mem); + } +diff --git a/src/common/classes/alloc.h b/src/common/classes/alloc.h +index 65f9afbb8a9..44d9e0ea462 100644 +--- a/src/common/classes/alloc.h ++++ b/src/common/classes/alloc.h +@@ -58,20 +58,6 @@ + + #include + +-#define OOM_EXCEPTION std::bad_alloc +- +-#if __cplusplus >= 201103L +-#define FB_NO_THROW_SPECIFIER +-#endif +- +-#ifdef FB_NO_THROW_SPECIFIER +-#define FB_THROW(x) +-#define FB_NOTHROW noexcept +-#else +-#define FB_THROW(x) throw(x) +-#define FB_NOTHROW throw() +-#endif +- + #ifdef DEBUG_GDS_ALLOC + #define FB_NEW new(__FILE__, __LINE__) + #define FB_NEW_POOL(pool) new(pool, __FILE__, __LINE__) +@@ -106,10 +92,10 @@ class MemoryStats + ~MemoryStats() + {} + +- size_t getCurrentUsage() const FB_NOTHROW { return mst_usage.value(); } +- size_t getMaximumUsage() const FB_NOTHROW { return mst_max_usage; } +- size_t getCurrentMapping() const FB_NOTHROW { return mst_mapped.value(); } +- size_t getMaximumMapping() const FB_NOTHROW { return mst_max_mapped; } ++ size_t getCurrentUsage() const noexcept { return mst_usage.value(); } ++ size_t getMaximumUsage() const noexcept { return mst_max_usage; } ++ size_t getCurrentMapping() const noexcept { return mst_mapped.value(); } ++ size_t getMaximumMapping() const noexcept { return mst_max_mapped; } + + private: + // Forbid copying/assignment +@@ -131,7 +117,7 @@ class MemoryStats + size_t mst_max_mapped; + + // These methods are thread-safe due to usage of atomic counters only +- void increment_usage(size_t size) FB_NOTHROW ++ void increment_usage(size_t size) noexcept + { + for (MemoryStats* statistics = this; statistics; statistics = statistics->mst_parent) + { +@@ -141,7 +127,7 @@ class MemoryStats + } + } + +- void decrement_usage(size_t size) FB_NOTHROW ++ void decrement_usage(size_t size) noexcept + { + for (MemoryStats* statistics = this; statistics; statistics = statistics->mst_parent) + { +@@ -149,7 +135,7 @@ class MemoryStats + } + } + +- void increment_mapping(size_t size) FB_NOTHROW ++ void increment_mapping(size_t size) noexcept + { + for (MemoryStats* statistics = this; statistics; statistics = statistics->mst_parent) + { +@@ -159,7 +145,7 @@ class MemoryStats + } + } + +- void decrement_mapping(size_t size) FB_NOTHROW ++ void decrement_mapping(size_t size) noexcept + { + for (MemoryStats* statistics = this; statistics; statistics = statistics->mst_parent) + { +@@ -205,21 +191,21 @@ class MemoryPool + #define ALLOC_PASS_ARGS + #endif // DEBUG_GDS_ALLOC + +- void* calloc(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION); ++ void* calloc(size_t size ALLOC_PARAMS); + + #ifdef LIBC_CALLS_NEW +- static void* globalAlloc(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION); ++ static void* globalAlloc(size_t s ALLOC_PARAMS); + #else +- static void* globalAlloc(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) ++ static void* globalAlloc(size_t s ALLOC_PARAMS) + { + return defaultMemoryManager->allocate(s ALLOC_PASS_ARGS); + } + #endif // LIBC_CALLS_NEW + +- void* allocate(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION); ++ void* allocate(size_t size ALLOC_PARAMS); + +- static void globalFree(void* mem) FB_NOTHROW; +- void deallocate(void* mem) FB_NOTHROW; ++ static void globalFree(void* mem) noexcept; ++ void deallocate(void* mem) noexcept; + + // Set context pool for current thread of execution + static MemoryPool* setContextPool(MemoryPool* newPool); +@@ -229,7 +215,7 @@ class MemoryPool + + // Set statistics group for pool. Usage counters will be decremented from + // previously set group and added to new +- void setStatsGroup(MemoryStats& stats) FB_NOTHROW; ++ void setStatsGroup(MemoryStats& stats) noexcept; + + // Initialize and finalize global memory pool + static void init(); +@@ -241,9 +227,9 @@ class MemoryPool + // Print out pool contents. This is debugging routine + static const unsigned PRINT_USED_ONLY = 0x01; + static const unsigned PRINT_RECURSIVE = 0x02; +- void print_contents(FILE*, unsigned flags = 0, const char* filter_path = 0) FB_NOTHROW; ++ void print_contents(FILE*, unsigned flags = 0, const char* filter_path = 0) noexcept; + // The same routine, but more easily callable from the debugger +- void print_contents(const char* filename, unsigned flags = 0, const char* filter_path = 0) FB_NOTHROW; ++ void print_contents(const char* filename, unsigned flags = 0, const char* filter_path = 0) noexcept; + + public: + struct Finalizer +@@ -298,7 +284,7 @@ class MemoryPool + + } // namespace Firebird + +-static inline Firebird::MemoryPool* getDefaultMemoryPool() FB_NOTHROW ++static inline Firebird::MemoryPool* getDefaultMemoryPool() noexcept + { + fb_assert(Firebird::MemoryPool::defaultMemoryManager); + return Firebird::MemoryPool::defaultMemoryManager; +@@ -355,36 +341,36 @@ class SubsystemContextPoolHolder : public ContextPoolHolder + using Firebird::MemoryPool; + + // operators new and delete +-extern void* operator new(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION); +-extern void* operator new[](size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION); +-extern void operator delete(void* mem ALLOC_PARAMS) FB_NOTHROW; +-extern void operator delete[](void* mem ALLOC_PARAMS) FB_NOTHROW; ++extern void* operator new(size_t s ALLOC_PARAMS); ++extern void* operator new[](size_t s ALLOC_PARAMS); ++extern void operator delete(void* mem ALLOC_PARAMS) noexcept; ++extern void operator delete[](void* mem ALLOC_PARAMS) noexcept; + + +-inline void* operator new(size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) ++inline void* operator new(size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS) + { + return pool.allocate(s ALLOC_PASS_ARGS); + } +-inline void* operator new[](size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) ++inline void* operator new[](size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS) + { + return pool.allocate(s ALLOC_PASS_ARGS); + } + +-inline void operator delete(void* mem, Firebird::MemoryPool& pool ALLOC_PARAMS) FB_NOTHROW ++inline void operator delete(void* mem, Firebird::MemoryPool& pool ALLOC_PARAMS) noexcept + { + MemoryPool::globalFree(mem); + } +-inline void operator delete[](void* mem, Firebird::MemoryPool& pool ALLOC_PARAMS) FB_NOTHROW ++inline void operator delete[](void* mem, Firebird::MemoryPool& pool ALLOC_PARAMS) noexcept + { + MemoryPool::globalFree(mem); + } + + #if __cplusplus >= 201402L +-inline void operator delete(void* mem, std::size_t s ALLOC_PARAMS) FB_NOTHROW ++inline void operator delete(void* mem, std::size_t s ALLOC_PARAMS) noexcept + { + MemoryPool::globalFree(mem); + } +-inline void operator delete[](void* mem, std::size_t s ALLOC_PARAMS) FB_NOTHROW ++inline void operator delete[](void* mem, std::size_t s ALLOC_PARAMS) noexcept + { + MemoryPool::globalFree(mem); + } +@@ -392,8 +378,8 @@ inline void operator delete[](void* mem, std::size_t s ALLOC_PARAMS) FB_NOTHROW + + #ifdef DEBUG_GDS_ALLOC + +-extern void operator delete(void* mem) FB_NOTHROW; +-extern void operator delete[](void* mem) FB_NOTHROW; ++extern void operator delete(void* mem) noexcept; ++extern void operator delete[](void* mem) noexcept; + + #endif // DEBUG_GDS_ALLOC + diff --git a/SPECS/firebird.spec b/SPECS/firebird.spec new file mode 100644 index 0000000..503ce72 --- /dev/null +++ b/SPECS/firebird.spec @@ -0,0 +1,773 @@ +%global upversion 4.0.4.3010 +%global pkgversion Firebird-%{upversion}-0 + +%global major 4.0 +%global _hardened_build 1 +# firebird is mis-compiled when LTO is enabled. A root +# cause analysis has not yet been completed. Reported upstream. +# Disable LTO for now +%global _lto_cflags %nil + +Name: firebird +Version: %{upversion} +Release: 1%{?dist} + +Summary: SQL relational database management system +License: Interbase +URL: http://www.firebirdsql.org/ + +Source0: https://github.com/FirebirdSQL/firebird/releases/download/v4.0.3/%{pkgversion}.tar.xz +Source1: firebird-logrotate +Source2: README.Fedora +Source3: firebird.service +Source4: fb_config + +# from OpenSuse +Patch101: add-pkgconfig-files.patch + +# from Debian to be sent upstream +Patch203: no-copy-from-icu.patch +Patch205: cloop-honour-build-flags.patch + +# from upstream +Patch301: c++17.patch +Patch302: noexcept.patch +Patch303: autoconf.patch +Patch401: btyacc-honour-build-flags.patch +Patch402: firebird-configure-c99.patch + +# not yet upstream +Patch501: examples-honour-build-flags.patch + +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: libtommath-devel +BuildRequires: libtool +BuildRequires: ncurses-devel +BuildRequires: libicu-devel +BuildRequires: libedit-devel +BuildRequires: gcc-c++ +BuildRequires: libstdc++-static +BuildRequires: systemd-rpm-macros +BuildRequires: chrpath +BuildRequires: zlib-devel +BuildRequires: procmail +BuildRequires: make +BuildRequires: libtomcrypt-devel +BuildRequires: unzip +BuildRequires: sed + +Requires(postun): /usr/sbin/userdel +Requires(postun): /usr/sbin/groupdel +Requires(pre): /usr/sbin/groupadd +Requires(pre): /usr/sbin/useradd +Recommends: logrotate +Requires: libfbclient2 = %{version}-%{release} +Requires: libib-util = %{version}-%{release} +Requires: %{name}-utils = %{version}-%{release} + +Obsoletes: firebird-arch < 4.0 +Obsoletes: firebird-filesystem < 4.0 +Obsoletes: firebird-classic-common < 4.0 +Obsoletes: firebird-classic < 4.0 +Obsoletes: firebird-superclassic < 4.0 +Obsoletes: firebird-superserver < 4.0 +Conflicts: firebird-arch < 4.0 +Conflicts: firebird-filesystem < 4.0 +Conflicts: firebird-classic-common < 4.0 +Conflicts: firebird-classic < 4.0 +Conflicts: firebird-superclassic < 4.0 +Conflicts: firebird-superserver < 4.0 + + +%description +Firebird is a relational database offering many ANSI SQL standard +features that runs on Linux, Windows, and a variety of Unix platforms. +Firebird offers excellent concurrency, high performance, and powerful +language support for stored procedures and triggers. It has been used +in production systems, under a variety of names, since 1981. + + +%package devel +Requires: %{name} = %{version}-%{release} +Requires: libfbclient2-devel = %{version}-%{release} +Summary: UDF support library for Firebird SQL server + +%description devel +This package is needed for development of client applications and user +defined functions (UDF) for Firebird SQL server. + +Firebird is a relational database offering many ANSI SQL standard +features that runs on Linux, Windows, and a variety of Unix platforms. +Firebird offers excellent concurrency, high performance, and powerful +language support for stored procedures and triggers. It has been used +in production systems, under a variety of names, since 1981. + + +%package -n libib-util +Summary: Firebird SQL UDF support library + +%description -n libib-util +libib_util contains utility functions used by +User-Defined Functions (UDF) for memory management etc. + +Firebird is a relational database offering many ANSI SQL standard +features that runs on Linux, Windows, and a variety of Unix platforms. +Firebird offers excellent concurrency, high performance, and powerful +language support for stored procedures and triggers. It has been used +in production systems, under a variety of names, since 1981. + + +%package -n libfbclient2 +Summary: Firebird SQL server client library +Obsoletes: firebird-libfbclient < 4.0 +Conflicts: firebird-libfbclient < 4.0 +Obsoletes: firebird-libfbembed < 4.0 + +%description -n libfbclient2 +Shared client library for Firebird SQL server. + +Firebird is a relational database offering many ANSI SQL standard +features that runs on Linux, Windows, and a variety of Unix platforms. +Firebird offers excellent concurrency, high performance, and powerful +language support for stored procedures and triggers. It has been used +in production systems, under a variety of names, since 1981. + + +%package -n libfbclient2-devel +Summary: Development libraries and headers for Firebird SQL server +Requires: %{name}-devel = %{version}-%{release} +Requires: libfbclient2 = %{version}-%{release} +Requires: pkgconfig + +%description -n libfbclient2-devel +Development files for Firebird SQL server client library. + +Firebird is a relational database offering many ANSI SQL standard +features that runs on Linux, Windows, and a variety of Unix platforms. +Firebird offers excellent concurrency, high performance, and powerful +language support for stored procedures and triggers. It has been used +in production systems, under a variety of names, since 1981. + + +%package doc +Requires: %{name} = %{version}-%{release} +Summary: Documentation for Firebird SQL server +BuildArch: noarch + +%description doc +Documentation for Firebird SQL server. + +Firebird is a relational database offering many ANSI SQL standard +features that runs on Linux, Windows, and a variety of Unix platforms. +Firebird offers excellent concurrency, high performance, and powerful +language support for stored procedures and triggers. It has been used +in production systems, under a variety of names, since 1981. + + +%package utils +Requires: libfbclient2 = %{version}-%{release} +Summary: Firebird SQL user utilities + +%description utils +Firebird SQL user utilities. + +Firebird is a relational database offering many ANSI SQL standard +features that runs on Linux, Windows, and a variety of Unix platforms. +Firebird offers excellent concurrency, high performance, and powerful +language support for stored procedures and triggers. It has been used +in production systems, under a variety of names, since 1981. + + +%package examples +Requires: %{name}-doc = %{version}-%{release} +Summary: Examples for Firebird SQL server +BuildArch: noarch + +%description examples +Examples for Firebird SQL server. + +Firebird is a relational database offering many ANSI SQL standard +features that runs on Linux, Windows, and a variety of Unix platforms. +Firebird offers excellent concurrency, high performance, and powerful +language support for stored procedures and triggers. It has been used +in production systems, under a variety of names, since 1981. + + +%prep +%setup -q -n %{pkgversion} +%patch -P101 -p1 +%patch -P203 -p1 +%patch -P205 -p1 +%patch -P301 -p1 +%patch -P302 -p1 +%patch -P303 -p1 +%patch -P401 -p1 +%patch -P402 -p1 +%patch -P501 -p1 + + +%build +%ifarch s390x +%global _lto_cflags %{nil} +%endif +export CFLAGS="%{optflags} -fno-strict-aliasing" +export CXXFLAGS="${CFLAGS} -fno-delete-null-pointer-checks" +NOCONFIGURE=1 ./autogen.sh +%configure --disable-rpath --prefix=%{_prefix} \ + --with-system-editline \ + --with-fbbin=%{_bindir} --with-fbsbin=%{_sbindir} \ + --with-fbconf=%{_sysconfdir}/%{name} \ + --with-fblib=%{_libdir} --with-fbinclude=%{_includedir} \ + --with-fbdoc=%{_defaultdocdir}/%{name} \ + --with-fbsample=%{_defaultdocdir}/%{name}/sample \ + --with-fbsample-db=%{_localstatedir}/lib/%{name}/data \ + --with-fbhelp=%{_localstatedir}/lib/%{name}/system \ + --with-fbintl=%{_libdir}/%{name}/intl \ + --with-fbmisc=%{_datadir}/%{name}/misc \ + --with-fbsecure-db=%{_localstatedir}/lib/%{name}/secdb \ + --with-fbmsg=%{_localstatedir}/lib/%{name}/system \ + --with-fblog=%{_localstatedir}/log/%{name} \ + --with-fbglock=%{_rundir}/%{name} \ + --with-fbplugins=%{_libdir}/%{name}/plugins \ + --with-fbtzdata=%{_localstatedir}/lib/%{name}/tzdata + +make %{?_smp_mflags} +cd gen +sed -i '/linkFiles "/d' ./install/makeInstallImage.sh +./install/makeInstallImage.sh +chmod -R u+w buildroot%{_docdir}/%{name} + +%install +chmod u+rw,a+rx gen/buildroot/%{_includedir}/firebird/impl +cp -r gen/buildroot/* ${RPM_BUILD_ROOT}/ +mkdir -p ${RPM_BUILD_ROOT}%{_libdir}/pkgconfig +cp -v gen/install/misc/*.pc ${RPM_BUILD_ROOT}%{_libdir}/pkgconfig/ + +cd ${RPM_BUILD_ROOT} +rm -vf .%{_sbindir}/*.sh +mv -v .%{_sbindir}/fb_config .%{_libdir}/ +install -p -m 0755 %{SOURCE4} %{buildroot}%{_sbindir}/fb_config +rm -vf .%{_includedir}/perf.h +rm -vf .%{_libdir}/libicu*.so +chmod -R u+w .%{_docdir}/%{name} +mv -v .%{_datadir}/%{name}/misc/upgrade/udf/* .%{_docdir}/%{name}/ +rm -rvf .%{_datadir}/%{name}/misc +mv -v .%{_sysconfdir}/%{name}/README.md .%{_sysconfdir}/%{name}/CHANGELOG.md \ + .%{_docdir}/%{name}/ +mv -v .%{_sysconfdir}/%{name}/IDPLicense.txt .%{_docdir}/%{name}/ +mv -v .%{_sysconfdir}/%{name}/IPLicense.txt .%{_docdir}/%{name}/ +install -p -m 0644 -D %{SOURCE2} .%{_docdir}/%{name}/README.Fedora +mv -v .%{_bindir}/gstat .%{_bindir}/gstat-fb +mv -v .%{_bindir}/isql .%{_bindir}/isql-fb +rm -rvf .%{_defaultdocdir}/%{name}/sample/prebuilt + +mkdir -p .%{_localstatedir}/log/%{name} +mkdir -p .%{_sysconfdir}/logrotate.d +echo 1 > .%{_localstatedir}/log/%{name}/%{name}.log +sed "s@%{name}.log@%{_localstatedir}/log/%{name}/%{name}.log@g" %{SOURCE1} > .%{_sysconfdir}/logrotate.d/%{name} + +mkdir -p .%{_unitdir} +cp -f %{SOURCE3} .%{_unitdir}/%{name}.service + + +%pre +# Create the firebird group if it doesn't exist +getent group %{name} > /dev/null || /usr/sbin/groupadd -r %{name} +getent passwd %{name} >/dev/null || /usr/sbin/useradd -d / -g %{name} -s /sbin/nologin -r %{name} + +# Add gds_db to /etc/services if needed +FileName=/etc/services +newLine="gds_db 3050/tcp # Firebird SQL Database Remote Protocol" +oldLine=`grep "^gds_db" $FileName` +if [ -z "$oldLine" ]; then + echo $newLine >> $FileName +fi + + +%post +%systemd_post firebird.service + + +%postun +%systemd_postun_with_restart firebird.service + + +%preun +%systemd_preun firebird.service + + +%files +%{_docdir}/%{name}/IDPLicense.txt +%{_docdir}/%{name}/IPLicense.txt +%{_docdir}/%{name}/README.Fedora +%{_bindir}/fbtracemgr +%{_sbindir}/firebird +%{_sbindir}/fbguard +%{_sbindir}/fb_lock_print +%dir %{_sysconfdir}/%{name} +%config(noreplace) %{_sysconfdir}/%{name}/databases.conf +%config(noreplace) %{_sysconfdir}/%{name}/fbtrace.conf +%config(noreplace) %{_sysconfdir}/%{name}/firebird.conf +%config(noreplace) %{_sysconfdir}/%{name}/plugins.conf +%config(noreplace) %{_sysconfdir}/%{name}/replication.conf +%dir %{_libdir}/%{name} +%dir %{_datadir}/%{name} +%{_libdir}/%{name}/intl +%{_libdir}/%{name}/plugins + +%dir %{_localstatedir}/lib/%{name} +%dir %attr(0700,%{name},%{name}) %{_localstatedir}/lib/%{name}/secdb +%dir %attr(0700,%{name},%{name}) %{_localstatedir}/lib/%{name}/data +%dir %attr(0755,%{name},%{name}) %{_localstatedir}/lib/%{name}/system +%dir %attr(0755,%{name},%{name}) %{_localstatedir}/lib/%{name}/tzdata +%attr(0600,firebird,firebird) %config(noreplace) %{_localstatedir}/lib/%{name}/secdb/security4.fdb +%attr(0644,firebird,firebird) %{_localstatedir}/lib/%{name}/system/help.fdb +%attr(0644,firebird,firebird) %{_localstatedir}/lib/%{name}/system/firebird.msg +%attr(0644,firebird,firebird) %{_localstatedir}/lib/%{name}/tzdata/*.res +%ghost %dir %attr(0775,%{name},%{name}) /run/%{name} +%ghost %attr(0644,%{name},%{name}) /run/%{name}/fb_guard +%dir %{_localstatedir}/log/%{name} +%config(noreplace) %attr(0664,%{name},%{name}) %{_localstatedir}/log/%{name}/%{name}.log +%config(noreplace) %attr(0644,root,root) %{_sysconfdir}/logrotate.d/%{name} + +%attr(0644,root,root) %{_unitdir}/%{name}.service + + +%files devel +%{_includedir}/*.h +%{_includedir}/%{name} +%{_libdir}/fb_config +%{_sbindir}/fb_config + + +%files -n libfbclient2 +%{_libdir}/libfbclient.so.* + + +%files -n libfbclient2-devel +%{_libdir}/libfbclient.so +%{_libdir}/pkgconfig/fbclient.pc + + +%files -n libib-util +%{_libdir}/libib_util.so + + +%files doc +%{_docdir}/%{name} +%exclude %{_docdir}/%{name}/sample +%exclude %{_docdir}/%{name}/IDPLicense.txt +%exclude %{_docdir}/%{name}/IPLicense.txt + + +%files utils +%{_bindir}/gstat-fb +%{_bindir}/fbsvcmgr +%{_bindir}/gbak +%{_bindir}/gfix +%{_bindir}/gpre +%{_bindir}/gsec +%{_bindir}/isql-fb +%{_bindir}/nbackup +%{_bindir}/qli +%{_bindir}/gsplit + + +%files examples +%{_docdir}/%{name}/sample +%attr(0600,firebird,firebird) %{_localstatedir}/lib/%{name}/data/employee.fdb + + +%changelog +* Thu Nov 09 2023 Philippe Makowski - 4.0.4.3010-0 +- Update to 4.0.4 (#2247832) + +* Tue Aug 08 2023 Philippe Makowski - 4.0.3.2975-0 +- Update to 4.0.3 (#2228171) + +* Wed Jul 19 2023 Fedora Release Engineering - 4.0.2.2816-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jan 19 2023 Fedora Release Engineering - 4.0.2.2816-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Dec 1 2022 Florian Weimer - 4.0.2.2816-3 +- Port configure script to C99 + +* Thu Nov 24 2022 Philippe Makowski - 4.0.2.2816-2 +- Patch for autoconf 2.72 (#2144802) + +* Fri Aug 12 2022 Philippe Makowski - 4.0.2.2816-1 +- Update to 4.0.2 (#2033945) + +* Thu Jul 21 2022 Fedora Release Engineering - 4.0.0.2496-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Fri May 13 2022 Philippe Makowski - 4.0.0.2496-7 +- Remove Standard output type syslog (#2035798) + +* Thu Jan 20 2022 Fedora Release Engineering - 4.0.0.2496-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Sun Oct 10 2021 Kalev Lember - 4.0.0.2496-5 +- Recommend logrotate rather than hard requiring + +* Fri Oct 08 2021 Kalev Lember - 4.0.0.2496-4 +- BuildRequire systemd-rpm-macros instead of systemd-units +- Remove requires on systemd-units as per updated guidelines + +* Fri Aug 20 2021 Philippe Makowski - 4.0.0.2496-3 +- Fix build on s390x (#1969393) + +* Wed Jul 21 2021 Fedora Release Engineering - 4.0.0.2496-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Jun 08 2021 Philippe Makowski - 4.0.0.2496-1 +- Update to 4.0.0 (#1963311) + +* Mon May 10 2021 Jeff Law - 3.0.7.33374-5 +- Re-enable LTO + +* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 3.0.7.33374-4 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + +* Tue Jan 26 2021 Fedora Release Engineering - 3.0.7.33374-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Oct 27 2020 Jeff Law - 3.0.7.33374-2 +- Force C++14 as this code is not C++17 ready + +* Fri Oct 23 2020 Philippe Makowski - 3.0.7.33374-1 +- new upstream release fix #1887991 + +* Mon Aug 10 2020 Jeff Law - 3.0.6.33328-4 +- Disable LTO on s390x for now + +* Sat Aug 01 2020 Fedora Release Engineering - 3.0.6.33328-3 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 3.0.6.33328-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 08 2020 Philippe Makowski - 3.0.6.33328-1 +- new upstream release fix #1850675 + +* Tue Jan 28 2020 Fedora Release Engineering - 3.0.5.33220-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Jan 20 2020 Philippe Makowski - 3.0.5.33220-1 +- new upstream release fix #1786885 + +* Mon Nov 4 2019 Philippe Makowski - 3.0.4.33054-5 +- Change firebird-superserver.service file permissions, fix #1768091 +- Set login shell to /sbin/nologin, fix #1764128 +- Remove BR libtermcap-devel + +* Wed Aug 21 2019 Philippe Makowski - 3.0.4.33054-4 +- Remove tmpfile, fix #1687058 + +* Thu Jul 25 2019 Fedora Release Engineering - 3.0.4.33054-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jan 31 2019 Fedora Release Engineering - 3.0.4.33054-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Thu Nov 22 2018 Philippe Makowski - 3.0.4.33054-1 +- new upstream release + +* Fri Jul 13 2018 Fedora Release Engineering - 3.0.3.32900-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Sun Mar 18 2018 Richard W.M. Jones - 3.0.3.32900-2 +- Add support for riscv64. + +* Tue Feb 20 2018 Philippe Makowski - 3.0.3.32900-1 +- new upstream release. +- Drop obsolete ldconfig scriptlets. +- Fix tmpfiles path + +* Tue Feb 13 2018 Remi Collet - 3.0.2.32703-5 +- add shebang in fb_config, fix #1544837 + +* Wed Feb 07 2018 Fedora Release Engineering - 3.0.2.32703-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Aug 02 2017 Fedora Release Engineering - 3.0.2.32703-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 3.0.2.32703-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon Mar 27 2017 Philippe Makowski - 3.0.2.32703-1 +- new upstream release + +* Tue Feb 21 2017 Philippe Makowski - 3.0.1.32609-5 +- security fix (#1425333) + +* Fri Feb 10 2017 Fedora Release Engineering - 3.0.1.32609-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Nov 15 2016 Philippe Makowski - 3.0.1.32609-3 +- add requires on libfbclient2-devel for firebird-devel #1394750 + +* Mon Oct 31 2016 Philippe Makowski - 3.0.1.32609-2 +- obsolete firebird-libfbembed #1388648 + +* Wed Oct 12 2016 Philippe Makowski - 3.0.1.32609-1 +- new upstream release + +* Fri Apr 15 2016 David Tardon - 2.5.5.26952.0-7 +- rebuild for ICU 57.1 + +* Wed Mar 30 2016 Philippe Makowski - 2.5.5.26952.0-6 +- use _tmpfilesdir macro + +* Wed Mar 09 2016 Philippe Makowski - 2.5.5.26952.0-5 +- Resolves: rbhz#1307503 building with gcc6 + +* Sat Feb 20 2016 David Tardon - 2.5.5.26952.0-4 +- Resolves: rbhz#1309223 restore /usr/sbin/fb_config + +* Fri Feb 05 2016 Philippe Makowski - 2.5.5.26952.0-3 +- move fb_config (#1297506) +- fixe CVE-2016-1569 (#1297447 #1297450 #1297451) + +* Wed Feb 03 2016 Fedora Release Engineering - 2.5.5.26952.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Nov 19 2015 Philippe Makowski 2.5.5.26952.0-1 +- update to 2.5.5 + +* Wed Oct 28 2015 David Tardon - 2.5.4.26856.0-4 +- rebuild for ICU 56.1 + +* Wed Jun 17 2015 Fedora Release Engineering - 2.5.4.26856.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sat May 02 2015 Kalev Lember - 2.5.4.26856.0-2 +- Rebuilt for GCC 5 C++11 ABI change + +* Thu Apr 2 2015 Philippe Makowski 2.5.4.26856.0-1 +- update to 2.5.4 + +* Mon Jan 26 2015 David Tardon - 2.5.3.26778.0-6 +- rebuild for ICU 54.1 + +* Sun Dec 7 2014 Philippe Makowski 2.5.3.26778.0-5 +- security fix firebird CORE-4630 + +* Thu Oct 30 2014 Philippe Makowski 2.5.3.26778.0-4 +- Remove lib64 rpaths (#1154706) + +* Tue Aug 26 2014 David Tardon - 2.5.3.26778.0-3 +- rebuild for ICU 53.1 + +* Sat Aug 16 2014 Fedora Release Engineering - 2.5.3.26778.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jul 26 2014 Philippe Makowski - 2.5.3.26778.0-1 +- update from upstream 2.5.3 +- update arm64 patch + +* Sat Jun 07 2014 Fedora Release Engineering - 2.5.2.26539.0-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed Feb 12 2014 Rex Dieter 2.5.2.26539.0-10 +- rebuild (libicu) + +* Sat Dec 07 2013 Philippe Makowski 2.5.2.26539.0-9 +- fix FTBFS if "-Werror=format-security" flag is used (bug #1037062) + +* Thu Aug 08 2013 Philippe Makowski 2.5.2.26539.0-8 +- add BR libatomic_ops-static (bug #993439) + +* Tue Jul 23 2013 Philippe Makowski 2.5.2.26539.0-7 +- make fb_config executable (bug #985335) + +* Tue Jul 23 2013 Philippe Makowski 2.5.2.26539.0-6 +- Provide fb_config in firebird-devel (bug #985335) + +* Mon Jun 03 2013 Philippe Makowski 2.5.2.26539.0-5 +- Firebird fails to build for aarch64 (bug #969851) + +* Thu Apr 25 2013 Philippe Makowski 2.5.2.26539.0-4 +- set PIE compiler flags (bug #955274) + +* Sun Mar 10 2013 Philippe Makowski 2.5.2.26539.0-3 +- added patch from upstream to fix Firebird CORE-4058 CVE-2013-2492 + +* Sat Jan 26 2013 Rex Dieter 2.5.2.26539.0-2 +- rebuild (icu) + +* Fri Nov 09 2012 Philippe Makowski 2.5.2.26539.0-1 +- new upstream (bug fix release) +- added patch from upstream to fix Firebird CORE-3946 + +* Sat Aug 25 2012 Philippe Makowski 2.5.1.26351.0-4 +- Modernize systemd scriptlets (bug #850109) + +* Thu Jul 19 2012 Fedora Release Engineering - 2.5.1.26351.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon Apr 23 2012 Philippe Makowski 2.5.1.26351.0-2 +- rebuild for icu 4.8 + +* Thu Jan 19 2012 Philippe Makowski 2.5.1.26351.0-1 +- Fix non-fatal POSTIN fix rh #781691 +- new upstream + +* Fri Jan 06 2012 Philippe Makowski 2.5.1.26349.0-4 +- Rebuild for GCC-4.7 + +* Mon Nov 28 2011 Philippe Makowski 2.5.1.26349.O-3 +- Better systemd support fix rh #757624 + +* Sun Oct 02 2011 Karsten Hopp 2.5.1.26349.O-2 +- drop ppc64 configure script hack, not required anymore + +* Thu Sep 29 2011 Philippe Makowski 2.5.1.26349.0-1 +- new upstream (bug fix release) +- added patch from upstream to fix Firebird CORE-3610 + +* Thu Sep 22 2011 Philippe Makowski 2.5.0.26074.0-10 +- Add support for systemd (rh #737281) + +* Fri Apr 22 2011 Philippe Makowski 2.5.0.26074.0-8 +- added patch from upstream to fix rh #697313 + +* Mon Mar 07 2011 Caolán McNamara - 2.5.0.26074.0-7 +- rebuild for icu 4.6 + +* Tue Feb 08 2011 Fedora Release Engineering - 2.5.0.26074.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Jan 28 2011 Philippe Makowski 2.5.0.26074.0-5 +- services must not be enabled by default + +* Tue Jan 25 2011 Karsten Hopp 2.5.0.26074.0-4 +- firebird got miscompiled on ppc and had an empty libfbclient.so.2.5.0 + bump release and rebuild + +* Wed Dec 22 2010 Philippe Makowski 2.5.0.26074.0-3 +- Fix wrong assign file for classic and classic common + +* Thu Dec 16 2010 Dan Horák 2.5.0.26074.0-2 +- sync the s390(x) utilities list with other arches +- add libatomic_ops-devel as BR: on non-x86 arches + +* Sat Dec 04 2010 Philippe Makowski 2.5.0.26074.0-1 +- Fix rh #656587 /var/run mounted as tempfs + +* Mon Nov 22 2010 Philippe Makowski 2.5.0.26074.0-0 +- build with last upstream + +* Tue Jun 29 2010 Dan Horák 2.1.3.18185.0-9 +- update the s390(x) patch to match upstream + +* Fri Jun 04 2010 Philippe Makowski 2.1.3.18185.0-8 + - conditional BuildRequires libstdc++-static + +* Fri Jun 04 2010 Philippe Makowski 2.1.3.18185.0-7 +- build with last upstream +- Fix rh #563461 with backport mainstream patch CORE-2928 + + +* Fri Apr 02 2010 Caolán McNamara 2.1.3.18185.0-6 +- rebuild for icu 4.4 + +* Sat Sep 05 2009 Karsten Hopp 2.1.3.18185.0-5 +- fix build on s390x for F-12 mass rebuild (Dan Horák) + +* Tue Aug 11 2009 Philippe Makowski 2.1.3.18185.0-4 +- build it against system edit lib +- set correct setuid for Classic lock manager +- set correct permission for /var/run/firebird + +* Wed Aug 05 2009 Philippe Makowski 2.1.3.18185.0-2 +- rename /usr/bin/gstat to /usr/bin/gstat-fb to avoid conflict with ganglia-gmond (rh #515510) +- remove stupid rm -rf in postun + +* Thu Jul 30 2009 Philippe Makowski 2.1.3.18185.0-1 +- Update to 2.1.3.18185 +- Fix rh #514463 +- Remove doc patch +- Apply backport initscript patch + +* Sat Jul 11 2009 Philippe Makowski 2.1.2.18118.0-11 +- change xinetd script (rh #506528) +- add missing library (and header files) for build php4-interbase module (rh #506728) +- update README.fedora +- automatically created user now have /bin/nologin as shell to make things a little more secure + +* Tue May 12 2009 Philippe Makowski 2.1.2.18118.0-8 +- patch to fix gcc 4.4.0 and icu 4.2 build error + +* Tue May 12 2009 Philippe Makowski 2.1.2.18118.0-7 +- patch to change lock files location and avoid %%{fbroot} owned by firebird user (rh #500219) +- add README.fedora +- add symlinks in /usr/bin +- change xinetd reload (rh #500219) + +* Sat May 02 2009 Philippe Makowski 2.1.2.18118.0-6 +- add filesystem-subpackage +- remove common subpackage and use the main instead +- add logrotate config + +* Thu Apr 30 2009 Philippe Makowski 2.1.2.18118.0-5 +- fix directories owning + +* Thu Apr 23 2009 Philippe Makowski 2.1.2.18118.0-4 +- major cleaning install process to take care of the two architectures (Classic and Superserver) the right way + +* Wed Apr 22 2009 Philippe Makowski 2.1.2.18118.0-3 +- fix group creation + +* Sun Apr 19 2009 Philippe Makowski 2.1.2.18118.0-2 +- fix autogen issue for f11 +- patch init script +- fix ppc64 lib destination issue + +* Sun Apr 19 2009 Philippe Makowski 2.1.2.18118.0-1 +- backport doc patch +- update to 2.1.2.18118 +- cleanup macros +- specifie libdir +- change firebird user login + +* Sat Mar 28 2009 Philippe Makowski 2.1.1.17910.0-5 +- Major packaging restructuring + +* Sat Mar 21 2009 Philippe Makowski 2.1.1.17190.0-4 +- Create a doc package +- major cleaning to avoid rpmlint errors +- revert to 2.1.1 (last stable build published) + +* Mon Mar 09 2009 Jonathan MERCIER 2.1.2.18116.0-3 +- Perform %%configure with option --with-system-icu +- Add libicu-devel in BuildRequires +- Use iconv for convert files to UTF-8 + +* Thu Mar 05 2009 Jonathan MERCIER 2.1.2.18116.0-2 +- Update to 2.1.2 +- Use %%global instead of %%define +- Change ${SOURCE1} to %%{SOURCE1} +- Change Group Database to Applications/Databases +- Change License IPL to Interbase +- Perform %%configure section's with some module +- Cconvert cyrillic character to UTF-8 + +* Thu Jul 17 2008 Arkady L. Shane 2.1.1.17910.0-1 +- Update to 2.1.1 + +* Fri Apr 18 2008 Arkady L. Shane 2.1.0.17798.0-1 +- Update to 2.1.0 + +* Thu Sep 27 2007 Arkady L. Shane 2.0.3.12981.1-1 +- Update to 2.0.3 + +* Thu Sep 13 2007 Arkady L. Shane 2.0.1.12855.0-1 +- Initial build for Fedora +- cleanup Mandriva spec