-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
vitkabele
wants to merge
15
commits into
SynoCommunity:master
Choose a base branch
from
vitkabele:firebird
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+2,539
−0
Open
Add FirebirdSQL server #5837
Changes from all commits
Commits
Show all changes
15 commits
Select commit
Hold shift + click to select a range
80a50e7
Add native/libtool (#5837)
vitkabele 651fcbf
Add cross/firebird (#5837)
vitkabele c108b23
Add spk/firebird (#5837)
vitkabele 62172ff
High-quality logo
mreid-tt a3a2a0c
[firebird] Define PKG_DIST_FILE variable in cross/firebird/Makefile (…
vitkabele edd5643
[firebird] Remove BETA and redundant include from spk/firebird/Makefi…
vitkabele e5ef0f7
[firebird] Update input type in install wizard
vitkabele f6cc627
[firebird] Remove shebang and move SYSDBA.password to PKGVAR (#5837)
vitkabele 585124d
[firebird] Remove useless and obsolete files from PLIST (#5837)
vitkabele 18969c8
[firebird] Define security database location as $SYNOPKG_PKGVAR
vitkabele 9bcf340
[firebird] Explain what is SYSDBA user in the install_uifile (#5837)
vitkabele fe8628c
[firebird] The service-setup now sets sysdba password more carefully …
vitkabele 4e39aeb
Don't use install_log in service-setup.sh script
vitkabele 808b003
Do not even build the binaries not added to the plist
vitkabele 48123ab
[firebird] Move config files to $SYNOPKG_PKGVAR
vitkabele File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
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 | ||
SYNOPKG_PKGDEST = /var/packages/$(PKG_NAME)/target | ||
|
||
ADDITIONAL_CFLAGS = '-DFB_PREFIX="\"$(SYNOPKG_PKGDEST)\""' \ | ||
'-DFB_SECDBDIR="\"$(SYNOPKG_PKGVAR)\""' \ | ||
'-DFB_GUARDDIR="\"$(SYNOPKG_PKGVAR)\""' \ | ||
'-DFB_CONFDIR="\"$(SYNOPKG_PKGVAR)\""' \ | ||
'-DFB_SBINDIR="\"$(SYNOPKG_PKGDEST)/bin\""' \ | ||
'-DFB_BINDIR="\"$(SYNOPKG_PKGDEST)/bin\""' \ | ||
'-DFB_DOCDIR="\"$(SYNOPKG_PKGDEST)/doc\""' \ | ||
'-DFB_HELPDIR="\"$(SYNOPKG_PKGDEST)/help\""' \ | ||
'-DFB_SAMPLEDIR="\"$(SYNOPKG_PKGDEST)/examples\""' \ | ||
'-DFB_PLUGDIR="\"$(SYNOPKG_PKGDEST)/plugins\""' \ | ||
'-DFB_SAMPLEDBDIR="\"$(SYNOPKG_PKGDEST)/examples/empbuild\""' \ | ||
'-DFB_TZDATADIR="\"$(SYNOPKG_PKGDEST)\""' \ | ||
'-DFB_MISCDIR="\"$(SYNOPKG_PKGDEST)/misc\""' \ | ||
'-DFB_MSGDIR="\"$(SYNOPKG_PKGDEST)\""' \ | ||
'-DFB_INCDIR="\"$(SYNOPKG_PKGDEST)/include\""' \ | ||
'-DFB_INTLDIR="\"$(SYNOPKG_PKGDEST)/intl\""' \ | ||
'-DFB_LIBDIR="\"$(SYNOPKG_PKGDEST)/lib\""' \ | ||
'-DFB_LOGDIR="\"$(SYNOPKG_PKGVAR)\""' | ||
|
||
# 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 $(ADDITIONAL_CFLAGS) | ||
|
||
# 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) \ | ||
--with-fbconf=$(INSTALL_PREFIX)/var | ||
|
||
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) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
rsc:var/IDPLicense.txt | ||
rsc:var/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:var/databases.conf | ||
rsc:var/fbtrace.conf | ||
rsc:var/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:var/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:var/replication.conf |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
28 changes: 28 additions & 0 deletions
28
cross/firebird/patches/0001-install-gbak-files-and-build_file.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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@ |
21 changes: 21 additions & 0 deletions
21
cross/firebird/patches/0002-do-not-build-qli-gpre-examples.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
--- builds/posix/Makefile.in.1 2023-08-18 21:59:51.408045740 +0200 | ||
+++ builds/posix/Makefile.in 2023-08-18 22:03:41.578508436 +0200 | ||
@@ -348,9 +348,7 @@ cross2: | ||
$(MAKE) engine | ||
$(MAKE) fbintl | ||
$(MAKE) utilities | ||
- $(MAKE) $(GPRE) | ||
$(MAKE) plugins | ||
- $(MAKE) -f Makefile.plugins_examples | ||
$(MAKE) cross_rest | ||
|
||
|
||
@@ -660,7 +658,7 @@ GBAK_FILES := $(subst Native,$(TARGET),$ | ||
|
||
rest: qli message_file tzdata | ||
|
||
-cross_rest: qli gbak_files | ||
+cross_rest: gbak_files | ||
$(MAKE) $(BUILD_FILE) | ||
|
||
qli: $(QLI) |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a missunderstanding
SYNOPKG_*
variables are for installer only (i.e. service-setup.sh), not for building packagesfor Makefiles you have to use the Makefile Variables as documented in the wiki
like
STAGING_INSTALL_PREFIX
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If FirebirdSQL follows the known rules, you only have to define
FB_PREFIX
and other subfolders are defaulted to ${FB_PREFIX}/bin, ${FB_PREFIX}/lib, ...}you should only require the variables
INSTALL_PREFIX
INSTALL_PREFIX_VAR
normally you do not define such FB_* variables as compiler flags but as configure options.
the configure arg
--prefix=$(INSTALL_PREFIX)
should make the definition ofADDITIONAL_CFLAGS += FB_PREFIX=$(INSTALL_PREFIX)
obsolete.NB:
the spksrc framework is designed to use
/usr(local/{packagename}
as prefix when building a package with the cross Makefile and to use/var/packages/{packagename}/target
as prefix when building the package in the spk folder.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As I understand, the
STAGING_INSTALL_PREFIX
is the location where the files should be copied to be found by the PLIST magic. What I need here is actually the runtime location of the files, because Firebird compiles this information in the binary. If not set properly, it does not find the configuration etc.This works to a certain extent. With this setup, configuration files are located in
$FB_PREFIX
, where the installer does not find them. Even if I move them later to$FB_PREFIX/var
, the Firebird itself won't find them during startup and crashes.This is true, but the Firebird's build process is non-standard at least. The server is built in two phases, first some native part is built, this is then used to pre-process certain files and then the actual cross toolchain is used to build the binary.
In this process, the
--with-fbprefix
and similar configure option have only limited usability, because the value from them does not reach the cross phase for the reason you mention in your next comment. The file that should be generated withautoconf
is not generated, which is the destination location of the discussed variables.There is a cli option for firebird server to change the firebird root on startup, but this unfortunately breaks other things. Please see my related question in firebird-support mailing list.
TL;DR The build process cannot handle when install prefix and actual runtime prefix is different. This is the purpose of this
-DFB_*
fun.