forked from SynoCommunity/spksrc
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add cross/firebird (SynoCommunity#5837)
Build FirebirdSQL database The build works for x64 and aarch64 architecture and DSM 7.0 and 7.1 - Use configure --with-cross-build as used by firebird build itself
- Loading branch information
Showing
10 changed files
with
2,334 additions
and
0 deletions.
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,121 @@ | ||
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_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 | ||
|
||
# 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 | ||
|
||
# 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) | ||
|
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,50 @@ | ||
rsc:CHANGELOG.md | ||
rsc:IDPLicense.txt | ||
rsc:IPLicense.txt | ||
rsc:README.md | ||
rsc:bin/changeServerMode.sh | ||
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/gpre | ||
bin:bin/gsec | ||
bin:bin/gsplit | ||
bin:bin/gstat | ||
bin:bin/isql | ||
bin:bin/nbackup | ||
bin:bin/qli | ||
rsc:bin/registerDatabase.sh | ||
rsc:databases.conf | ||
rsc:fbtrace.conf | ||
rsc:firebird.conf | ||
rsc:security4.gbak | ||
rsc:msg.gbak | ||
rsc:help/help.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:misc/rc.config.firebird | ||
rsc:misc/upgrade/udf/udf_replace.sql | ||
rsc:misc/upgrade/udf/udf_replace.txt | ||
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 |
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 @@ | ||
v4.0.3.tar.gz SHA1 02dd8914e80acef2a662eab42b7ee5a3dc41248e | ||
v4.0.3.tar.gz SHA256 90b799043c83325479989b1f44116d1f0112f77c5def4bb452470bf7a0dcc138 | ||
v4.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@ |
Oops, something went wrong.