Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add FirebirdSQL server #5837

Open
wants to merge 15 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 12 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 127 additions & 0 deletions cross/firebird/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
PKG_NAME = firebird
PKG_VERS = 4.0.3
PKG_EXT = tar.gz
PKG_DIST_NAME = v$(PKG_VERS).$(PKG_EXT)
PKG_DIST_SITE = https://github.com/FirebirdSQL/firebird/archive/refs/tags
PKG_DIST_FILE = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT)
PKG_DIR = $(PKG_NAME)-$(PKG_VERS)

DEPENDS = cross/zlib cross/libicu native/libicu native/libtool

UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) $(OLD_PPC_ARCHS)

# Create proper src/make.synology.evansport to support this
UNSUPPORTED_ARCHS += $(i686_ARCHS)

# Uses too old GCC 4.9
UNSUPPORTED_ARCHS += comcerto2k

include ../../mk/spksrc.common.mk

# Currently v4.0.2 works only with 7.0 and 7.1
# DSM 7.2 has issues with GLIBC version
# DSM 6.x has issues with some C++ libraries versions
ifeq ($(call version_lt,$(TCVERSION),7.0)$(call version_gt,$(TCVERSION),7.1),1)
UNSUPPORTED_ARCHS += $(ARCH)
endif

HOMEPAGE = https://www.firebirdsql.org/
COMMENT = Firebird is a relational database offering many ANSI SQL standard features that runs on Linux, Windows, MacOS and a variety of Unix platforms.
LICENSE = MPL
MAINTAINER = vitkabele

PRE_CONFIGURE_TARGET = firebird_pre_configure

CONFIGURE_TARGET = firebird_configure

COMPILE_TARGET = firebird_compile

INSTALL_TARGET = firebird_install

# We must forward-declare the PKGVAR here as we must compile its value to the
# binaries. We only support DSM7 so we do not worry about DSM6 compatibility
SYNOPKG_PKGVAR = /var/packages/$(PKG_NAME)/var

# CXXFLAGS should be set fine by the spksrc for cross-compilation, we will
# use it in cross2 step CROSS_ENV
ADDITIONAL_CXXFLAGS = -Wno-invalid-offsetof \
'-DFB_SECDBDIR="\"$(SYNOPKG_PKGVAR)\""'

# Path to the libtool installed in the cross/libtool DEPENDS target
# We need the native libtool for building libommath/libtomcrypt in cross1 step
LIBTOOL_BIN = $(WORK_DIR)/../../../native/libtool/work-native/install/usr/local/bin/libtool

# We need both native and cross compilers for building the binary.
include ../../mk/spksrc.cross-cc.mk

# If we use --with-builtin-tomcrypt/math, the libraries are built during cross1
# phase without -fPIC and then refuse to link during cross2 phase. Further,
# they can be built for different platforms during cross1 and cross2 phase.
#
# termlib and editline are disabled because we don't provide ncurses
# and editline libraries
CONFIGURE_ARGS = --without-termlib --with-builtin-tommath --with-builtin-tomcrypt \
--without-editline --with-cross-build=synology.$(ARCH) --prefix=$(INSTALL_PREFIX)

NATIVE_LIBICU_DIR := $(WORK_DIR)/../../../native/libicu/work-native/install/usr/local

# CFLAGS and CXXFLAGS for cross1 compile stage
NATIVE_CFLAGS := -I$(NATIVE_LIBICU_DIR)/include -L$(NATIVE_LIBICU_DIR)/lib

# Preprocessor flags
NATIVE_CPPFLAGS := -I$(NATIVE_LIBICU_DIR)/include

# This ENV is for cross1 phase where we build native target
#
# The NATIVE flags must be passed to the configure part, because the configure
# fails when it cant find the headers.
NATIVE_ENV = CC=gcc CXX=g++ AS=as AR=ar LD=ld NM=nm OBJCOPY=objcopy OBJDUMP=objdump \
PARALLEL_MAKE=max \
LIBTOOL="$(LIBTOOL_BIN)" \
CFLAGS="$(NATIVE_CFLAGS)" \
CXXFLAGS="$(NATIVE_CFLAGS)" \
CPPFLAGS="$(NATIVE_CPPFLAGS)"

NATIVE_RUN = cd $(WORK_DIR)/$(PKG_DIR) && env $(NATIVE_ENV)

# DO NOT MODIFY $(ENV) variable (too much) a.k.a. only add variables for ourselves
# and do not modify any CFLAGS or other universally recognized variable
# It breaks compilation of dependent cross/* libraries (especially cross/libicu)
#
# This ENV is for cross2 build phase where we build binaries for target platform
# CROSS_ prefixed vars are for the cross2 phase and we "strip" the CROSS_ prefix
# in our provided src/makefile.xxx
#
# The C(XX)FLAGS variables are ready by the spksrc for cross compilation, we
# just use them
ENV += CROSS_TOOLCHAIN=$(TC_PATH)$(TC_PREFIX)

.PHONY: firebird_pre_configure
firebird_pre_configure:
cp src/make.synology.* $(WORK_DIR)/$(PKG_DIR)/builds/posix/
cp src/cross_config/* $(WORK_DIR)/$(PKG_DIR)/src/include/cross/
$(NATIVE_RUN) NOCONFIGURE=1 ./autogen.sh

# Override the configure target, because we must pass it different env than
# ENV. We cannot modify ENV to contain -I for native/libicu, because it breaks
# compilation of native/libicu, but we must have this -I in the configure
# CFLAGS, otherwise the configure step fails with unicode headers not found.
.PHONY: firebird_configure
firebird_configure:
$(NATIVE_RUN) ./configure $(CONFIGURE_ARGS)

# Firebird itself would be compiled by simple make, but we must pass different
# environment to cross1 and cross2 step. The toolchain and CFLAGS differ
.PHONY: firebird_compile
firebird_compile:
$(NATIVE_RUN) make TARGET=Native cross1
$(RUN) make TARGET=Release CROSS_OUT=Y cross2

.PHONY: firebird_install
firebird_install:
$(RUN) make TARGET=Release CROSS_OUT=Y dist
# We assume there is just one buildroot.tar.gz file in the build tree
# This is a little hack since we don't know the exact path where it is
# produced and it is easier than patching the firebird Makefiles
cd $(WORK_DIR)/install && tar xf $$(find ../ -name buildroot.tar.gz)

41 changes: 41 additions & 0 deletions cross/firebird/PLIST
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
rsc:IDPLicense.txt
rsc:IPLicense.txt
rsc:bin/fb_config
bin:bin/build_file
bin:bin/fb_lock_print
bin:bin/fbguard
bin:bin/fbsvcmgr
bin:bin/fbtracemgr
bin:bin/firebird
bin:bin/gbak
bin:bin/gfix
bin:bin/gsec
bin:bin/gsplit
bin:bin/gstat
bin:bin/isql
bin:bin/nbackup
rsc:bin/registerDatabase.sh
rsc:databases.conf
rsc:fbtrace.conf
rsc:firebird.conf
rsc:security4.gbak
rsc:msg.gbak
rsc:intl/fbintl
rsc:intl/fbintl.conf
lnk:lib/libfbclient.so
lnk:lib/libfbclient.so.2
lib:lib/libfbclient.so.4.0.3
lib:lib/libib_util.so
rsc:misc/intl.sql
rsc:plugins.conf
lib:plugins/libChaCha.so
lib:plugins/libEngine13.so
lib:plugins/libLegacy_Auth.so
lib:plugins/libLegacy_UserManager.so
lib:plugins/libSrp.so
lib:plugins/libfbtrace.so
lib:plugins/libudr_engine.so
lib:plugins/udr/libudf_compat.so
rsc:plugins/udr/udf_compat.sql
rsc:plugins/udr_engine.conf
rsc:replication.conf
3 changes: 3 additions & 0 deletions cross/firebird/digests
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
firebird-4.0.3.tar.gz SHA1 02dd8914e80acef2a662eab42b7ee5a3dc41248e
firebird-4.0.3.tar.gz SHA256 90b799043c83325479989b1f44116d1f0112f77c5def4bb452470bf7a0dcc138
firebird-4.0.3.tar.gz MD5 1d57b5ee362be4c0b2c3f28e78f69aaf
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
diff -u builds/install/arch-specific/linux/makeInstallImage.sh.in builds/install/arch-specific/linux/makeInstallImage.sh.in
--- builds/install/arch-specific/linux/makeInstallImage.sh.in 2023-08-11 11:55:02.848124743 +0200
+++ builds/install/arch-specific/linux/makeInstallImage.sh.in 2023-08-11 13:44:38.846348466 +0200
@@ -34,7 +34,7 @@
BuildRootDir=..
BuiltFBDir=Release/firebird # Where the just build fb exists.
TargetDir=buildroot # Where we want to build the install image
-SecurityDatabase=security4.fdb
+SecurityDatabase=security4.gbak
TomMathBuild="@TOMMATH_BUILD@"
TomCryptBuild="@TOMCRYPT_BUILD@"

@@ -183,6 +183,7 @@
copyIfExists $BuiltFBDir/bin/fbtracemgr ${TargetDir}@FB_BINDIR@
cp $BuiltFBDir/bin/isql ${TargetDir}@FB_BINDIR@/isql
cp $BuiltFBDir/bin/qli ${TargetDir}@FB_BINDIR@/qli
+ cp $BuiltFBDir/bin/build_file ${TargetDir}@FB_BINDIR@/build_file

chmod 0755 ${TargetDir}@FB_BINDIR@/*

@@ -239,6 +240,7 @@

#secureDB (access rights will be set at install time)
cp $BuiltFBDir/$SecurityDatabase ${TargetDir}@FB_SECDBDIR@
+ cp $BuiltFBDir/msg.gbak ${TargetDir}@FB_SECDBDIR@

#include (.h .pas files)
cp $BuiltFBDir/include/*.h ${TargetDir}@FB_INCDIR@
Loading