- New port: databases/firebird25-server

Firebird is a relational database offering many ANSI SQL-99 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.

Firebird is completely free of any registration, licensing or deployment
fees.  It may be deployed freely for use with any third-party software,
whether commercial or not.

WWW: http://sourceforge.net/projects/firebird/
WWW: http://www.firebirdsql.org/
This commit is contained in:
Jose Alonso Cardenas Marquez 2010-12-20 08:48:54 +00:00
parent 71996850bb
commit 889c999039
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=266628
11 changed files with 535 additions and 0 deletions

View file

@ -0,0 +1,226 @@
# New ports collection makefile for: firebird25-server
# Date created: 2010-12-20
# Whom: Alonso Cárdenas Márquez <acm@FreeBSD.org>
#
# $FreeBSD$
#
PORTNAME= firebird
PORTVERSION= 2.5.0
PORTREVISION?= 0
CATEGORIES?= databases
MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${PORTVERSION}-Release/
PKGNAMESUFFIX?= -server
DISTNAME= ${PORTNAME:S/f/F/}-${PORTVERSION}.26074-0
DIST_SUBDIR= ${PORTNAME}
MAINTAINER= acm@FreeBSD.org
COMMENT?= Firebird-2 relational database (server)
LIB_DEPENDS= icuuc:${PORTSDIR}/devel/icu
LATEST_LINK= ${PORTNAME}25${PKGNAMESUFFIX}
USE_BISON= build
USE_BZIP2= yes
USE_GMAKE= yes
GNU_CONFIGURE= yes
MAKE_JOBS_UNSAFE= yes
CONFIGURE_ARGS= --with-system-editline \
--with-system-icu \
--prefix=${LOCALSTATEDIR} \
--exec-prefix=${PREFIX} \
--with-fbconf=${CONFDIR} \
--with-fbglock=${LOCALSTATEDIR} \
--with-fbhelp=${LOCALSTATEDIR}/help \
--with-fbintl=${LIBEXECDIR}/intl \
--with-fblog=${LOCALSTATEDIR} \
--with-fbmsg=${DATADIR} \
--with-fbplugins=${LIBEXECDIR}/plugins \
--with-fbsbin=${PREFIX}/sbin \
--with-fbsecure-db=${LOCALSTATEDIR} \
--with-fbudf=${LIBEXECDIR}/UDF
CONFIGURE_ENV+= CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \
PTHREAD_CFLAGS="${PTHREAD_CFLAGS}" \
PTHREAD_LIBS="${PTHREAD_LIBS}"
CFLAGS+= -I${LOCALBASE}/include
LDFLAGS+= -L${LOCALBASE}/lib
LOCALSTATEDIR= /var/db/firebird
CONFDIR= ${PREFIX}/etc/firebird
LIBEXECDIR= ${PREFIX}/libexec/firebird
PLIST_SUB= FIREBIRD_VERSION=${PORTVERSION} \
LOCALSTATEDIR="var/db/firebird" CONFDIR="etc/firebird"
# Don't use ld for linking, use gcc
LD= ${CC}
# Don't strip binary files
STRIP=
ONLY_FOR_ARCHS= i386 amd64
CONFLICTS+= firebird-client-2.0* firebird-server-2.0* \
firebird-client-2.1* firebird-server-2.1*
INSTALL_FB= ${INSTALL} ${COPY} -g firebird
IPCRM_CMD= /usr/bin/ipcrm
IPCS_CMD= /usr/bin/ipcs
IPCCHECK!= ${IPCRM_CMD} -q 0 2>&1 || true
.if ${IPCCHECK:Mimplemented}
IGNORE= your system does not support sysvipc
.endif
.if !defined(CLIENT_ONLY)
# Server part stuff
LIB_DEPENDS+= fbembed.2:${PORTSDIR}/databases/firebird25-client
ALL_TARGET= firebird_embedded
USE_RC_SUBR= firebird
SUB_FILES= pkg-install pkg-message
UTIL_SBIN= fb_inet_server fb_lock_print fb_smp_server
UTIL_BIN= fbguard fbstat fbsvcmgr fbtracemgr gbak gdef gfix gsec gsplit \
nbackup
UDF_SO= ib_udf.so fbudf.so
UDF_SQL= src/extlib/ib_udf2.sql src/extlib/fbudf/fbudf.sql
.else
# Client part stuff
ALL_TARGET= firebird_basic libfbembed libfbclient embed_isql embed_gpre \
embed_gdef embed_qli extlib
USE_LDCONFIG= yes
CLIENT_BIN= gpre isql-fb qli
.if !defined(NOPORTDOCS)
PORTDOCS= *
FB_DOCS_FILES= WhatsNew README.* Firebird* ReleaseNotes.pdf ambiguity.txt \
ods11-index-structure.html
FB_DOCS_DIRS= sql.extensions license upgrade
.endif
.endif
MAKE_ENV+= FIREBIRD_TMP="${WRKDIR}" FIREBIRD_LOCK="${WRKDIR}"
post-extract:
@${RM} -rf ${WRKSRC}/extern/icu
post-patch:
${FIND} ${WRKSRC} -name "*.sh" -exec ${CHMOD} +x {} \+
${REINPLACE_CMD} -e \
's|/isql|/isql-fb|g' -e \
's|/gstat|/fbstat|g' ${WRKSRC}/builds/posix/make.defaults
.include <bsd.port.pre.mk>
.if ${ARCH} == "amd64"
CFLAGS+= -DAMD64
.endif
.if !defined(CLIENT_ONLY)
pre-su-install:
@${SETENV} PKG_PREFIX="${PREFIX}" ${SH} ${PKGINSTALL} ${PORTNAME} PRE-INSTALL
post-install:
@${SETENV} PKG_PREFIX="${PREFIX}" ${SH} ${PKGINSTALL} ${PORTNAME} POST-INSTALL
@${CAT} ${PKGMESSAGE}
.endif
.ifndef WITHOUT_IPC_CLEANUP
pre-build:
.ifndef PACKAGE_BUILDING
@if [ `${ID} -u` -eq 0 ]; then \
${ECHO_MSG} "==> Please do not build ${PORTNAME} as 'root' because this may cause conflicts with SysV semaphores of running services."; exit 1; fi
.endif
${MAKE} -C ${WRKSRC}/extern/btyacc
[ -f ${WRKDIR}/ipcs.pre.build ] || ${IPCS_CMD} -s | ${TAIL} -n +3 | \
${GREP} -F `${ID} -un` | ${CAT} > ${WRKDIR}/ipcs.pre.build
post-build:
${IPCS_CMD} -s | ${TAIL} -n +3 | ${GREP} -F `${ID} -un` | ${CAT} > ${WRKDIR}/ipcs.post.build
${DIFF} -n ${WRKDIR}/ipcs.pre.build ${WRKDIR}/ipcs.post.build | \
${TAIL} -n +2 | ${SED} -E 's/^s +([0-9]+).*$$/\/usr\/bin\/ipcrm -s \1/' > ${WRKDIR}/ipcrm.sh
${SH} ${WRKDIR}/ipcrm.sh
.endif
do-install:
.if !defined(CLIENT_ONLY)
${INSTALL_PROGRAM} ${UTIL_BIN:S!^!${WRKSRC}/gen/firebird/bin/!} ${PREFIX}/bin
${INSTALL_PROGRAM} ${UTIL_SBIN:S!^!${WRKSRC}/gen/firebird/bin/!} ${PREFIX}/sbin
@${MKDIR} ${CONFDIR}
${INSTALL_DATA} ${WRKSRC}/gen/install/misc/aliases.conf ${CONFDIR}/aliases.conf.sample
.if !exists(${CONFDIR}/aliases.conf)
${INSTALL_DATA} ${WRKSRC}/gen/install/misc/aliases.conf ${CONFDIR}/aliases.conf
.endif
${INSTALL_DATA} ${WRKSRC}/gen/install/misc/fbintl.conf ${CONFDIR}/fbintl.conf
${INSTALL_DATA} ${WRKSRC}/gen/install/misc/fbtrace.conf ${CONFDIR}/fbtrace.conf
${MKDIR} ${LIBEXECDIR}/udf ${LOCALSTATEDIR}/help ${LIBEXECDIR}/intl \
${LIBEXECDIR}/plugins
${CHOWN} -R firebird:firebird ${LOCALSTATEDIR}
${INSTALL_FB} -m 0555 ${UDF_SO:S!^!${WRKSRC}/gen/firebird/UDF/!} ${LIBEXECDIR}/udf
${INSTALL_FB} -m 0444 ${UDF_SQL:S!^!${WRKSRC}/!} ${LIBEXECDIR}/udf
${INSTALL_FB} -m 0555 ${WRKSRC}/gen/firebird/plugins/libfbtrace.so ${LIBEXECDIR}/plugins
.if !exists(${LOCALSTATEDIR}/security2.fdb)
${INSTALL_FB} -m 0660 -o firebird ${WRKSRC}/gen/firebird/security2.fdb ${LOCALSTATEDIR}/security2.fdb
.endif
${INSTALL_FB} -m 0660 -o firebird ${WRKSRC}/gen/firebird/security2.fdb ${LOCALSTATEDIR}/security2.fdb.sample
${INSTALL_FB} -m 0440 ${WRKSRC}/gen/firebird/help/help.fdb ${LOCALSTATEDIR}/help
${INSTALL_FB} -m 0555 ${WRKSRC}/gen/firebird/intl/libfbintl.so ${LIBEXECDIR}/intl/fbintl
.else
# defined CLIENT_ONLY
${INSTALL_PROGRAM} ${CLIENT_BIN:S!^!${WRKSRC}/gen/firebird/bin/!} ${PREFIX}/bin
${SED} -e "s=%%PREFIX%%=${PREFIX}=g" ${WRKSRC}/gen/install/misc/firebird.conf > ${WRKDIR}/firebird.conf
@${MKDIR} ${CONFDIR}
.if !exists(${CONFDIR}/firebird.conf)
${INSTALL_DATA} ${WRKDIR}/firebird.conf ${CONFDIR}
.endif
${INSTALL_DATA} ${WRKDIR}/firebird.conf ${CONFDIR}/firebird.conf.sample
${INSTALL_DATA} ${WRKSRC}/gen/firebird/lib/libib_util.so \
${WRKSRC}/gen/firebird/lib/libfbclient.so.${PORTVERSION} \
${WRKSRC}/gen/firebird/lib/libfbembed.so.${PORTVERSION} \
${PREFIX}/lib
${LN} -fs libfbclient.so.${PORTVERSION} ${PREFIX}/lib/libfbclient.so.2.5
${LN} -fs libfbclient.so.${PORTVERSION} ${PREFIX}/lib/libfbclient.so.2
${LN} -fs libfbclient.so.${PORTVERSION} ${PREFIX}/lib/libfbclient.so
${LN} -fs libfbembed.so.${PORTVERSION} ${PREFIX}/lib/libfbembed.so.2.5
${LN} -fs libfbembed.so.${PORTVERSION} ${PREFIX}/lib/libfbembed.so.2
${LN} -fs libfbembed.so.${PORTVERSION} ${PREFIX}/lib/libfbembed.so
${LN} -fs libfbembed.so.${PORTVERSION} ${PREFIX}/lib/libgds.so.2.5
${LN} -fs libfbembed.so.${PORTVERSION} ${PREFIX}/lib/libgds.so.2
${LN} -fs libfbembed.so.${PORTVERSION} ${PREFIX}/lib/libgds.so
@${MKDIR} ${PREFIX}/include
${INSTALL_DATA} ${WRKSRC}/gen/firebird/include/*.h ${PREFIX}/include
@${MKDIR} ${DATADIR}
${INSTALL_DATA} ${WRKSRC}/gen/firebird/*.msg ${DATADIR}
.if !defined(NOPORTDOCS)
@${ECHO_MSG} "===> Installing documentation for ${PKGNAME}"
@${MKDIR} ${FB_DOCS_DIRS:S!^!${DOCSDIR}/!}
@${INSTALL_DATA} ${FB_DOCS_FILES:S!^!${WRKSRC}/doc/!} ${DOCSDIR}
@${LN} -sf ${DOCSDIR}/README.user ${DOCSDIR}/README
@${INSTALL_DATA} ${WRKSRC}/doc/sql.extensions/* ${DOCSDIR}/sql.extensions
@${INSTALL_DATA} ${WRKSRC}/doc/license/* ${DOCSDIR}/license
@${INSTALL_DATA} ${WRKSRC}/src/misc/upgrade/v2/* ${DOCSDIR}/upgrade
.endif
.endif
.include <bsd.port.post.mk>

View file

@ -0,0 +1,2 @@
SHA256 (firebird/Firebird-2.5.0.26074-0.tar.bz2) = b9f1982c3c9a0571508d177f1ad7459a6e2d598fc07f0985bce491b93d497053
SIZE (firebird/Firebird-2.5.0.26074-0.tar.bz2) = 13579819

View file

@ -0,0 +1,62 @@
#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: firebird
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following line to /etc/rc.conf to enable Firebird Database:
#
# firebird_enable: Set it to "YES" to enable firebird.
# Default is "NO".
# firebird_flags: Set options to run fbguard.
# Default is "-daemon".
# firebird_pidfile: Set full path to pid file.
# Default is "/var/run/firebird.pid".
#
. /etc/rc.subr
name=firebird
rcvar=`set_rcvar`
load_rc_config $name
firebird_enable=${firebird_enable:-"NO"}
firebird_flags=${firebird_flags:-"-daemon"}
firebird_pidfile=${firebird_pidfile:-"/var/run/${name}.pid"}
firebird_user=firebird
command_args="${firebird_flags}"
command=%%PREFIX%%/bin/fbguard
pidfile=${firebird_pidfile}
start_precmd="start_precmd"
start_postcmd="start_postcmd"
stop_postcmd=stop_postcmd
reload_postcmd=reload_postcmd
start_precmd()
{
touch ${firebird_pidfile}
chown "${firebird_user}:wheel" ${firebird_pidfile} ||
err 1 "Cannot chown ${firebird_pidfile}"
}
start_postcmd()
{
pgrep -u ${firebird_user} fbguard > ${firebird_pidfile}
}
stop_postcmd()
{
rm -f ${pidfile}
}
reload_postcmd()
{
rm -f ${pidfile}
run_rc_command start
}
run_rc_command "$1"

View file

@ -0,0 +1,20 @@
--- builds/install/misc/firebird.conf.in Tue Aug 15 22:38:52 2006
+++ builds/install/misc/firebird.conf.in Tue Aug 15 22:39:24 2006
@@ -60,7 +60,7 @@
#
# Type: string
#
-#RootDirectory =
+#RootDirectory = /var/db/firebird
# ----------------------------
@@ -125,7 +125,7 @@
#
# Type: string (special format)
#
-#UdfAccess = Restrict UDF
+UdfAccess = Restrict %%PREFIX%%/libexec/firebird/udf
# ----------------------------

View file

@ -0,0 +1,31 @@
--- builds/posix/make.defaults 2010-09-08 03:41:23.000000000 -0500
+++ builds/posix/make.defaults 2010-12-18 20:25:29.000000000 -0500
@@ -127,7 +127,7 @@
CHMOD= chmod
CHMOD_6= chmod 666
CHMOD_7= chmod 777
-CHMOD_S7= chmod 06777
+CHMOD_S7= chmod 04555
MV= mv -f
TOUCH= touch
CP= cp
@@ -153,7 +153,7 @@
STATICEXE_LINK:= @CXX@ $(GLOB_OPTIONS)
LINK_LIBS = @LIBS@
-ICU_LIBS = -licuuc -licudata -licui18n
+ICU_LIBS = `icu-config --ldflags-libsonly` `icu-config --ldflags-searchpath`
STATICLINK_LIBS = @LIBS@
SO_LINK_LIBS = @LIBS@
@@ -230,10 +230,6 @@
endif
endif
-LIBICU_SO = $(LIB)/$(LIB_PREFIX)icuuc*.$(SHRLIB_FOREIGN_EXT) \
- $(LIB)/$(LIB_PREFIX)icudata*.$(SHRLIB_FOREIGN_EXT) \
- $(LIB)/$(LIB_PREFIX)icui18n*.$(SHRLIB_FOREIGN_EXT)
-
# Shared library name for usage inside of the UDF
IbUtilLibraryName = $(LIB_PREFIX)ib_util.$(SHRLIB_EXT)
LIBIBUTIL_SO = $(LIB)/$(IbUtilLibraryName)

View file

@ -0,0 +1,11 @@
--- src/jrd/isc_sync.cpp 2010-12-18 21:08:26.000000000 -0500
+++ src/jrd/isc_sync.cpp 2010-12-18 21:09:05.000000000 -0500
@@ -320,7 +320,7 @@
public:
const static int N_FILES = 8;
const static int N_SETS = 256;
-#ifdef DEV_BUILD
+#if defined(DEV_BUILD) || defined(FREEBSD)
const static int SEM_PER_SET = 4; // force multiple sets allocation
#else
const static int SEM_PER_SET = 31; // hard limit for some old systems, might set to 32

View file

@ -0,0 +1,71 @@
#!/bin/sh
# $FreeBSD: /tmp/pcvs/ports/databases/firebird25-server/files/pkg-install.in,v 1.1 2010-12-20 08:48:54 acm Exp $
PATH=/bin:/usr/bin:/usr/sbin
case $2 in
PRE-INSTALL)
if [ `id -u` -ne 0 ]; then
echo; echo "You must be root to run this step!"; echo; echo
exit 1
fi
nofbuid=0
fbUID=`id -u firebird 2>/dev/null`
if [ $? -ne 0 ]; then
fbUID=90
while [ ! -z `id -un $fbUID 2>/dev/null` ]
do
fbUID=$(($fbUID+1))
done
nofbuid=1
fi
fbGID=`pw groupshow firebird 2>/dev/null`
if [ $? -ne 0 ]; then
fbGID=90
while [ ! -z `id -gn $fbGID 2>/dev/null` ]
do
fbGID=$(($fbGID+1))
done
echo "firebird:*:$fbGID:" >> /etc/group
else
fbGID=`echo $fbGID | awk -F: '{print $3}'`
fi
echo "firebird user using uid $fbUID"
echo "firebird user using gid $fbGID"
if which -s pw; then
if [ $nofbuid -ne 0 ]; then
pw useradd firebird -u $fbUID -g $fbGID -h - -s /usr/sbin/nologin \
-d /nonexistent -c "Firebird Database Administrator"
fi
else
echo -n "unable to create user firebird - please create it manually,"
echo " before reinstalling this package."
exit 1
fi
;;
POST-INSTALL)
cd /var/db/firebird
# Lock files
for i in isc_init1 isc_lock1 isc_event1
do
FileName=$i.`hostname`
touch $FileName
chmod uga=rw $FileName
chown firebird:firebird $FileName
done
touch firebird.log
chown firebird:firebird firebird.log security2.fdb
;;
esac

View file

@ -0,0 +1,31 @@
###############################################################################
Firebird was installed.
1) Before start the server ensure that the following line exists in /etc/services:
gds_db 3050/tcp #InterBase Database Remote Protocol
2) If you use inetd then add the following line to /etc/inetd.conf
gds_db stream tcp nowait firebird %%PREFIX%%/bin/fb_inet_server fb_inet_server
And finally restart inetd.
3) If you want to use SuperClassic Server then you can add firebird_enable="YES"
to /etc/rc.conf file.
4) It is STRONGLY recommended that you change the SYSDBA
password with:
# gsec -user SYSDBA -pass masterkey
GSEC> modify SYSDBA -pw newpassword
GSEC> quit
before doing anything serious with Firebird.
5) See documentation in %%DOCSDIR%%/ for more information.
6) Enjoy it ;)
################################################################################

View file

@ -0,0 +1,12 @@
Firebird is a relational database offering many ANSI SQL-99 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.
Firebird is completely free of any registration, licensing or deployment
fees. It may be deployed freely for use with any third-party software,
whether commercial or not.
WWW: http://sourceforge.net/projects/firebird/
WWW: http://www.firebirdsql.org/

View file

@ -0,0 +1,41 @@
@comment $FreeBSD$
bin/fbguard
bin/fbstat
bin/fbsvcmgr
bin/fbtracemgr
bin/gbak
bin/gdef
bin/gfix
bin/gsec
bin/gsplit
bin/nbackup
sbin/fb_inet_server
sbin/fb_lock_print
sbin/fb_smp_server
libexec/firebird/udf/ib_udf.so
libexec/firebird/udf/fbudf.so
libexec/firebird/udf/ib_udf2.sql
libexec/firebird/udf/fbudf.sql
libexec/firebird/plugins/libfbtrace.so
libexec/firebird/intl/fbintl
@unexec (cmp -s %D/%%CONFDIR%%/aliases.conf %D/%%CONFDIR%%/aliases.conf.sample && rm -f %D/%%CONFDIR%%/aliases.conf) || true
%%CONFDIR%%/aliases.conf.sample
@exec [ -f %B/aliases.conf ] || cp %B/%f %B/aliases.conf
%%CONFDIR%%/fbintl.conf
%%CONFDIR%%/fbtrace.conf
@dirrmtry %%CONFDIR%%
@dirrm libexec/firebird/intl
@dirrm libexec/firebird/plugins
@dirrm libexec/firebird/udf
@dirrm libexec/firebird
@cwd /
@unexec (cmp -s %D/%%LOCALSTATEDIR%%/security2.fdb %D/%%LOCALSTATEDIR%%/security2.fdb.sample && rm -f %D/%%LOCALSTATEDIR%%/security2.fdb) || true
%%LOCALSTATEDIR%%/security2.fdb.sample
@exec [ -f %D/%%LOCALSTATEDIR%%/security2.fdb ] || cp %D/%F %D/%%LOCALSTATEDIR%%/security2.fdb
%%LOCALSTATEDIR%%/help/help.fdb
@unexec [ -s %D/%%LOCALSTATEDIR%%/firebird.log ] || rm -f %D/%%LOCALSTATEDIR%%/firebird.log
@rmtry %%LOCALSTATEDIR%%/isc_event1.`hostname`
@rmtry %%LOCALSTATEDIR%%/isc_init1.`hostname`
@rmtry %%LOCALSTATEDIR%%/isc_lock1.`hostname`
@dirrm %%LOCALSTATEDIR%%/help
@dirrmtry %%LOCALSTATEDIR%%

View file

@ -0,0 +1,28 @@
@comment $FreeBSD$
bin/gpre
bin/isql-fb
bin/qli
include/ib_util.h
include/ibase.h
include/iberror.h
include/perf.h
lib/libfbclient.so
lib/libfbclient.so.2
lib/libfbclient.so.2.5
lib/libfbclient.so.%%FIREBIRD_VERSION%%
lib/libfbembed.so
lib/libfbembed.so.2
lib/libfbembed.so.2.5
lib/libfbembed.so.%%FIREBIRD_VERSION%%
lib/libgds.so
lib/libgds.so.2
lib/libgds.so.2.5
lib/libib_util.so
@unexec if cmp -s %D/%%CONFDIR%%/firebird.conf %D/%%CONFDIR%%/firebird.conf.sample; then rm -f %D/%%CONFDIR%%/firebird.conf; fi
%%CONFDIR%%/firebird.conf.sample
@exec [ -f %B/firebird.conf ] || cp %B/%f %B/firebird.conf
@dirrmtry %%CONFDIR%%
%%DATADIR%%/de_DE.msg
%%DATADIR%%/firebird.msg
%%DATADIR%%/fr_FR.msg
@dirrm %%DATADIR%%