1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-23 00:43:28 +00:00

- Update to 1.5 RC8. [1] [2]

- Note that libgds.so is now symlinked to libfbembed.so rather
  than libfbclient.so. This restores Firebird 1.0.x shared library
  compatibility and fixes PHP build. [2]

PR:		ports/61276 [1], ports/61310 [2]
Submitted by:	Gleb Smirnoff <glebius@cell.sick.ru> [1],
		Chris Knight <chris@e-easy.com.au> (maintainer) [2]
Approved by:	nork (mentor)
This commit is contained in:
Alex Dupre 2004-01-13 16:11:11 +00:00
parent 78300b9f90
commit f18b6b0130
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=98080
50 changed files with 1695 additions and 605 deletions

View File

@ -6,11 +6,12 @@
#
PORTNAME= firebird
PORTVERSION= 1.5.r7
PORTVERSION= 1.5.r8
CATEGORIES= databases
MASTER_SITES= http://www.aims.net.au/chris/firebird/
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} \
http://www.aims.net.au/chris/firebird/
MASTER_SITE_SUBDIR=firebird
DISTNAME= firebird15-rc7
DISTNAME= firebird15-rc8
MAINTAINER= chris@e-easy.com.au
COMMENT= The open-source InterBase(tm) 6.0 spin-off (Classic version)
@ -26,7 +27,6 @@ USE_GCC= 3.3
LD= gcc
CONFLICTS= firebird-devel-*
NOPACKAGE= pkg-install not finished
WRKSRC= ${WRKDIR}/firebird15
INSTALLS_SHLIB= yes
@ -57,13 +57,21 @@ patch-libtool:
@${DO_NADA}
do-configure:
@(cd ${WRKSRC} && ${ENV} CC=${CC} CXX=${CXX} MAKE=${GMAKE} ./autogen.sh --prefix=${PREFIX}/firebird --with-lock-manager --with-editline)
@(cd ${WRKSRC} && ${SETENV} CC=${CC} CXX=${CXX} MAKE=${GMAKE} \
LIBTOOL=libtool13 LIBTOOLIZE=libtoolize13 ./autogen.sh \
--prefix=${PREFIX}/firebird --with-lock-manager --with-editline)
do-build:
@( \
${SED} 's|%%PREFIX%%|${PREFIX}|g' ${MSG_FILE} > ${PKGMESSAGE}; \
cd ${WRKSRC}; \
${ENV} CC=${CC} CXX=${CXX} ${GMAKE} all; \
${SETENV} CC=${CC} CXX=${CXX} ${GMAKE} all; \
)
post-install:
@( \
${INSTALL_DATA} ${FILESDIR}/RELNOTES ${PREFIX}/firebird; \
${CAT} ${PKGMESSAGE}; \
)
.include <bsd.port.post.mk>

View File

@ -1 +1 @@
MD5 (firebird15-rc7.tar.bz2) = f6a3a4afa1f2fdfde9a4348a618c4896
MD5 (firebird15-rc8.tar.bz2) = cb775b56c0b3067994ec78f15a9e757d

View File

@ -1,22 +1,8 @@
Firebird 1.0.2 FreeBSD Release Notes 05-Jan-2003
Firebird 1.5.0 FreeBSD Release Notes 11-Jan-2004
--------------------------------------
FB-T6.2.908 Firebird Final Release
FB-V1.5.0.4201 Firebird 1.5 Release Candidate 8
Welcome to the FreeBSD Firebird port! Users should note that there
was a package called `firebird-1.0.tgz' released in mid-August
2000. Unfortunately, that package was released before Firebird
version numbering conventions were established, so although the
version number would suggest that it is newer than the current
release, it is certainly not. Users of the August 1.0 package
should upgrade to 0.9_4 or later, which has fixed many bugs and
security problems, including the recently-discovered back door.
Firebird originally required a running copy of Firebird (or
InterBase) in order to build itself. This port uses a boot kit to
overcome that, so that it does not require itself to build.
Unfortunately, the side effect of this is that if you have a lock
manager running from an already-installed version of Firebird or
InterBase, this port will not build.
Welcome to the FreeBSD Firebird port!
Firebird is installed SUID with owner and group `firebird'.
This does affect where you can and cannot create databases when
@ -30,12 +16,12 @@ etc.) gives you the message "semget failed". One surefire way to
do this is to build and install the port. :) If this happens,
make sure that the lock manager is not running and its semaphores
have been removed. The former can be accomplished with 'ps ax
|grep gds' and 'kill'; the latter with 'ipcs -s' and 'ipcrm -s'.
|grep fb' and 'kill'; the latter with 'ipcs -s' and 'ipcrm -s'.
For example, after building and installing the port, you will
probably go through something like this:
# isql /usr/interbase/isc4.gdb
# isql /usr/local/firebird/security.fdb
Statement failed, SQLCODE = -902
operating system directive semget failed
@ -62,14 +48,47 @@ try stopping PostgreSQL:
/usr/local/etc/rc.d/pgsql.sh stop
and see if that helps.
and see if that helps. Alternatively, increase the value of SEMMNS
by 48 in your kernel configuration file. This can be found by getting
the current value with 'sysctl -a | grep semmns'. You can either add
this to your kernel config, or add the following line to /boot/loader.conf:
Super Server support has recently been added. However, there is
anecdotal evidence that it is not as reliable nor as scalable as the
Classic Server version. For this reason, I have not included a
start up method for Super Server. For those that are interested,
traversing to /usr/interbase/misc will find the startup scripts for
the various flavours of Linux.
kern.ipc.semmns=X
where is is the current value plus 48. If this doesn't resolve the issue,
try adding 48 again.
Please note that RC8 has changed the libgds.so symlink to point to
libfbembed.so. This has been done to resolve compatability issues with
older versions of Firebird. The FreeBSD port of RC7 had libgds.so
pointing to libfbclient.so. libfbclient.so is a remote access-only
shared library with threaded support, which requires target applications
to link with a threaded library such as libc_r.so, libkse.so or libthr.so.
Super Server support in Firebird 1.5 for FreeBSD is not currently
available due to the Firebird code using POSIX threads APIs not available
in FreeBSD 4.x or not yet complete in FreeBSD 5.x. This issue will become
more important once the scalability issues of Super Server have been
resolved.
This installation has already inserted the necessary line to
/etc/inetd.conf so that you can connect to Firebird across the network.
However you may need to add the remote host to /etc/hosts.equiv. For
example, to allow the local machine to make connections to Firebird
using TCP, the following command needs running:
echo localhost >> /etc/hosts.equiv
Please note that adding machines to /etc/hosts.equiv can reduce the
security of your system. If in doubt, try connecting to Firebird with
a username and password already defined in security.fdb. For example:
gsec
> add myuser -pass mypass
> quit
isql -u myuser -p mypass localhost:/usr/local/firebird/examples/employee.fdb
This should reduce the need for hosts defined in /etc/hosts.equiv.
Complete documentation for InterBase(tm) is available (free of
charge) from http://www.interbase.com/ in PDF format. While
@ -82,5 +101,8 @@ and InterBase can be found at the following:
http://www.interbase2000.org/
http://www.firebirdsql.org/
Please also see the doc directory in the Firebird package for
documentation specific to Firebird.
Chris Knight
<chris@aims.com.au>
<chris@aims.net.au>

View File

@ -1,26 +0,0 @@
--- autogen.sh.orig Fri Apr 18 04:41:28 2003
+++ autogen.sh Sun Aug 24 18:39:45 2003
@@ -20,7 +20,7 @@
;;
esac
-VER=`libtool --version|grep ' libtool)'|sed 's/.*) \([0-9][0-9.]*\) .*/\1/'`
+VER=`libtool13 --version|grep ' libtool)'|sed 's/.*) \([0-9][0-9.]*\) .*/\1/'`
case "$VER" in
0* | 1\.[0-2] | 1\.[0-2][a-z]* | \
1\.3\.[0-2] | 1\.3\.[0-2][a-z]* )
@@ -50,12 +50,12 @@
# Generate configure from configure.in
echo "Running libtoolize ..."
-LIBTOOL_M4=`libtoolize --copy --force --dry-run|grep 'You should add the contents of'|sed "s,^[^/]*\(/[^']*\).*$,\1,"`
+LIBTOOL_M4=`libtoolize13 --copy --force --dry-run|grep 'You should add the contents of'|sed "s,^[^/]*\(/[^']*\).*$,\1,"`
if test "x$LIBTOOL_M4" != "x"; then
rm -f aclocal.m4
cp $LIBTOOL_M4 aclocal.m4
fi
-libtoolize --copy --force || exit 1
+libtoolize13 --copy --force || exit 1
echo "Running autoconf ..."
autoconf || exit 1

View File

@ -1,49 +0,0 @@
--- src/common/classes/locks.h.orig Sun Aug 17 14:56:47 2003
+++ src/common/classes/locks.h Wed Nov 12 11:12:25 2003
@@ -77,7 +77,7 @@
/* Process-local spinlock. Used to manage memory heaps in threaded environment. */
// Pthreads version of the class
-#ifndef SOLARIS
+#if !defined(SOLARIS) && !defined(DARWIN) && !defined(FREEBSD)
class Spinlock {
private:
pthread_spinlock_t spinlock;
@@ -100,6 +100,7 @@
}
};
#else
+#ifdef SOLARIS
// Who knows why Solaris 2.6 have not THIS funny spins?
//The next code is not comlpeted but let me compile //Konstantin
class Spinlock {
@@ -123,6 +124,29 @@
system_call_failed::raise();
}
};
+#else // DARWIN and FREEBSD
+class Spinlock {
+private:
+ pthread_mutex_t mlock;
+public:
+ Spinlock() {
+ if (pthread_mutex_init(&mlock, 0))
+ system_call_failed::raise();
+ }
+ ~Spinlock() {
+ if (pthread_mutex_destroy(&mlock))
+ system_call_failed::raise();
+ }
+ void enter() {
+ if (pthread_mutex_lock(&mlock))
+ system_call_failed::raise();
+ }
+ void leave() {
+ if (pthread_mutex_unlock(&mlock))
+ system_call_failed::raise();
+ }
+};
+#endif
#endif
#endif

View File

@ -0,0 +1,92 @@
--- src/install/arch-specific/freebsd/install.sh.in.orig Thu Nov 6 23:23:29 2003
+++ src/install/arch-specific/freebsd/install.sh.in Tue Jan 13 17:36:16 2004
@@ -59,7 +59,7 @@
if [ -d $InstallPrefix/firebird.old ]; then
rm -rf $InstallPrefix/firebird.old
fi
- mv $InstallFirebirdPrefix $InstallPrefix/firebird.old
+ cp -Rp $InstallFirebirdPrefix $InstallPrefix/firebird.old
fi
if [ `id -u` -ne 0 ]; then
@@ -162,7 +162,7 @@
#cp -r $BuiltFBDir/doc $DestDir
cp $BuiltFBDir/firebird.msg $DestDir/firebird.msg
-cp $BuiltFBDir/security.fdb $DestDir/security.fdb
+cp $BuiltFBDir/security.fdb $DestDir/security.fdb.sample
#cp $BuiltFBDir/include/gds.f $DestDir/include
@@ -190,19 +190,19 @@
cp $BuildRootDir/doc/WhatsNew $DestDir/WhatsNew
cp $BuildRootDir/doc/README.user $DestDir/README
-cp $BuiltFBDir/misc/firebird.conf $DestDir/firebird.conf
+cp $BuiltFBDir/misc/firebird.conf $DestDir/firebird.conf.sample
-echo "#" >> $DestDir/aliases.conf
-echo "# List of known database aliases" >> $DestDir/aliases.conf
-echo "# ------------------------------" >> $DestDir/aliases.conf
-echo "#" >> $DestDir/aliases.conf
-echo "# Examples:" >> $DestDir/aliases.conf
-echo "#" >> $DestDir/aliases.conf
-echo "# employee = /$FBRootDir/examples/employee.fdb" >> $DestDir/aliases.conf
-echo "#" >> $DestDir/aliases.conf
+echo "#" >> $DestDir/aliases.conf.sample
+echo "# List of known database aliases" >> $DestDir/aliases.conf.sample
+echo "# ------------------------------" >> $DestDir/aliases.conf.sample
+echo "#" >> $DestDir/aliases.conf.sample
+echo "# Examples:" >> $DestDir/aliases.conf.sample
+echo "#" >> $DestDir/aliases.conf.sample
+echo "# employee = $DestDir/examples/employee.fdb" >> $DestDir/aliases.conf.sample
+echo "#" >> $DestDir/aliases.conf.sample
-chown -R firebird:firebird $InstallFirebirdPrefix
+chown -R $fbUID:$fbGID $InstallFirebirdPrefix
chmod -R o= $InstallFirebirdPrefix
# Now fix up the mess.
@@ -235,8 +235,8 @@
chmod -R a=rx $InstallFirebirdPrefix/lib/*
cd $InstallFirebirdPrefix/lib
-ln -sf libfbclient.so libgds.so
-ln -sf libfbclient.so.1 libgds.so.1
+ln -sf libfbembed.so libgds.so
+ln -sf libfbembed.so.1 libgds.so.1
cd $InstallFirebirdPrefix/bin
for i in `ls`
@@ -265,19 +265,25 @@
FileName=$i.`hostname`
touch $FileName
chmod ug=rw,o= $FileName
- chown firebird:firebird $FileName
+ chown $fbUID:$fbGID $FileName
done
-touch firebird.log aliases.conf firebird.conf
-chown firebird:firebird firebird.log
+touch firebird.log
+chown $fbUID:$fbGID firebird.log
chmod ug=rw,o= firebird.log
-chmod a=r firebird.msg aliases.conf firebird.conf README
+chmod a=r firebird.msg README
+chown root:wheel *.sample
+chmod ug=r,o= *.sample
# make databases writable by firebird only
# local database connections are not a good idea
chmod ug=rw,o= examples/*.fdb
chmod ug=rw,o= help/*.fdb
-chmod ug=rw,o= security.fdb
+
+# install the samples if they don't exist
+[ -f aliases.conf ] || install -o $fbUID -g $fbGID -m 440 aliases.conf.sample aliases.conf
+[ -f firebird.conf ] || install -o $fbUID -g $fbGID -m 440 firebird.conf.sample firebird.conf
+[ -f security.fdb ] || install -o $fbUID -g $fbGID -m 660 security.fdb.sample security.fdb
# remove any existing gds service
cp /etc/services /etc/services.old

View File

@ -6,9 +6,6 @@ some very big players use it worldwide. Inprise has open-sourced
InterBase 6.0, and a lively bunch of folks has charged themselves
with seeing that it lives on through the Firebird project.
Note that as of Firebird 0.9_4, the locksmith back door has
been closed.
For more information on Firebird and InterBase, see:
WWW: http://sourceforge.net/projects/firebird/
@ -16,7 +13,3 @@ WWW: http://www.ibphoenix.com/
WWW: http://www.interbase2000.org/
WWW: http://www.interbase.com/
WWW: http://www.firebirdsql.org/
For more information on the locksmith back door, see:
WWW: https://www.kb.cert.org/vuls/id/247371

View File

@ -0,0 +1,171 @@
#!/bin/sh
# $FreeBSD$
PATH=/bin:/usr/bin:/usr/sbin
case $2 in
PRE-INSTALL)
if [ -d $PKG_PREFIX/firebird ]; then
if [ -d $PKG_PREFIX/firebird.old ]; then
rm -rf $PKG_PREFIX/firebird.old
fi
cp -Rp $PKG_PREFIX/firebird $PKG_PREFIX/firebird.old
fi
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 /bin/sh \
-d $PKG_PREFIX/firebird -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)
chown -R firebird:firebird $PKG_PREFIX/firebird
chmod -R o= $PKG_PREFIX/firebird
# Now fix up the mess.
# fix up directories
for i in `find $PKG_PREFIX/firebird -print`
do
FileName=$i
if [ -d $FileName ]; then
chmod u=rwx,go=rx $FileName
fi
done
# make lib ldconfig-compatible
chown -R root:wheel $PKG_PREFIX/firebird/lib
# make the following read-only
chmod -R a=r $PKG_PREFIX/firebird/WhatsNew
for i in `find $PKG_PREFIX/firebird/doc -type f -print`
do
chmod a=r $i
done
chmod -R a=r $PKG_PREFIX/firebird/examples/*
chmod -R a=r $PKG_PREFIX/firebird/include/*
chmod -R a=r $PKG_PREFIX/firebird/intl/*
#chmod -R a=r $PKG_PREFIX/firebird/misc/*
chmod -R ug=rx,o= $PKG_PREFIX/firebird/UDF/*
chmod -R ug=rx,o= $PKG_PREFIX/firebird/intl/fbintl
chmod -R a=rx $PKG_PREFIX/firebird/lib/*
cd $PKG_PREFIX/firebird/lib
ln -sf libfbembed.so libgds.so
ln -sf libfbembed.so.1 libgds.so.1
cd $PKG_PREFIX/firebird/bin
for i in `ls`
do
chmod ug=rx,o= $i
done
chmod a=rx isql qli
# SUID is needed for running server programs.
for i in fb_lock_mgr gds_drop fb_inet_server
do
if [ -f $i ]; then
chmod ug=rx,o= $i
chmod ug+s $i
fi
done
cd $PKG_PREFIX/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
chmod ug=rw,o= firebird.log
chmod a=r firebird.msg README
chown root:wheel *.sample
chmod ug=r,o= *.sample
# make databases writable by firebird only
# local database connections are not a good idea
chmod ug=rw,o= examples/*.fdb
chmod ug=rw,o= help/*.fdb
chmod ug=rw,o= security.fdb
chmod 440 aliases.conf firebird.conf
chmod 660 security.fdb
# remove any existing gds service
cp /etc/services /etc/services.old
cp /etc/inetd.conf /etc/inetd.conf.old
cat /etc/services |grep -v gds_db >/etc/services.new
cat /etc/inetd.conf |grep -v gds_db >/etc/inetd.conf.new
mv /etc/services.new /etc/services
mv /etc/inetd.conf.new /etc/inetd.conf
# add the gds service and restart inetd
cat >>/etc/services <<EOF
gds_db 3050/tcp #InterBase Database Remote Protocol
EOF
cat >>/etc/inetd.conf <<EOF
gds_db stream tcp nowait firebird $PKG_PREFIX/firebird/bin/fb_inet_server fb_inet_server
EOF
if [ -f /var/run/inetd.pid ]; then
kill -HUP `cat /var/run/inetd.pid`
fi
# shared lib startup script
if [ -d $PKG_PREFIX/etc/rc.d ]; then
(
echo "#!/bin/sh"; echo "[ -d $PKG_PREFIX/firebird/lib ] && /sbin/ldconfig -m $PKG_PREFIX/firebird/lib"
) > $PKG_PREFIX/etc/rc.d/000.firebird.sh
chmod a=rx $PKG_PREFIX/etc/rc.d/000.firebird.sh
fi
;;
esac

View File

@ -2,7 +2,7 @@
---------------------------------------------------------
Firebird is now installed. A symbolic link from
/usr/interbase -> %%PREFIX%%/firebird may be needed
for compatibility with existing programs that use
for compatibility with existing programs that use
Firebird.
The symbolic link can be created with:

View File

@ -1,11 +1,14 @@
etc/rc.d/000.firebird.sh
firebird/README
firebird/RELNOTES
firebird/UDF/fbudf.so
firebird/UDF/fbudf.sql
firebird/UDF/ib_udf.so
firebird/UDF/ib_udf.sql
firebird/WhatsNew
firebird/aliases.conf
@unexec if cmp -s %D/firebird/aliases.conf %D/firebird/aliases.conf.sample; then rm -f %D/firebird/aliases.conf; fi
firebird/aliases.conf.sample
@exec [ -f %B/aliases.conf ] || cp %B/%f %B/aliases.conf
firebird/bin/fb_inet_server
firebird/bin/fb_lock_mgr
firebird/bin/fb_lock_print
@ -86,8 +89,10 @@ firebird/examples/stat8.e
firebird/examples/stat9.e
firebird/examples/udf.sql
firebird/examples/udflib.c
firebird/firebird.conf
@unexec rm -f %D/firebird/firebird.log
@unexec if cmp -s %D/firebird/firebird.conf %D/firebird/firebird.conf.sample; then rm -f %D/firebird/firebird.conf; fi
firebird/firebird.conf.sample
@exec [ -f %B/firebird.conf ] || cp %B/%f %B/firebird.conf
@unexec [ -s %D/firebird/firebird.log ] || rm -f %D/firebird/firebird.log
firebird/firebird.msg
firebird/help/help.fdb
firebird/include/blr.h
@ -109,7 +114,9 @@ firebird/lib/libfbembed.so.1.5.0
firebird/lib/libgds.so
firebird/lib/libgds.so.1
firebird/lib/libib_util.so
firebird/security.fdb
@unexec if cmp -s %D/firebird/security.fdb %D/firebird/security.fdb.sample; then rm -f %D/firebird/security.fdb; fi
firebird/security.fdb.sample
@exec [ -f %B/security.fdb ] || cp %B/%f %B/security.fdb
@dirrm firebird/UDF
@dirrm firebird/bin
@dirrm firebird/doc/sql.extensions

View File

@ -6,11 +6,12 @@
#
PORTNAME= firebird
PORTVERSION= 1.5.r7
PORTVERSION= 1.5.r8
CATEGORIES= databases
MASTER_SITES= http://www.aims.net.au/chris/firebird/
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} \
http://www.aims.net.au/chris/firebird/
MASTER_SITE_SUBDIR=firebird
DISTNAME= firebird15-rc7
DISTNAME= firebird15-rc8
MAINTAINER= chris@e-easy.com.au
COMMENT= The open-source InterBase(tm) 6.0 spin-off (Classic version)
@ -26,7 +27,6 @@ USE_GCC= 3.3
LD= gcc
CONFLICTS= firebird-devel-*
NOPACKAGE= pkg-install not finished
WRKSRC= ${WRKDIR}/firebird15
INSTALLS_SHLIB= yes
@ -57,13 +57,21 @@ patch-libtool:
@${DO_NADA}
do-configure:
@(cd ${WRKSRC} && ${ENV} CC=${CC} CXX=${CXX} MAKE=${GMAKE} ./autogen.sh --prefix=${PREFIX}/firebird --with-lock-manager --with-editline)
@(cd ${WRKSRC} && ${SETENV} CC=${CC} CXX=${CXX} MAKE=${GMAKE} \
LIBTOOL=libtool13 LIBTOOLIZE=libtoolize13 ./autogen.sh \
--prefix=${PREFIX}/firebird --with-lock-manager --with-editline)
do-build:
@( \
${SED} 's|%%PREFIX%%|${PREFIX}|g' ${MSG_FILE} > ${PKGMESSAGE}; \
cd ${WRKSRC}; \
${ENV} CC=${CC} CXX=${CXX} ${GMAKE} all; \
${SETENV} CC=${CC} CXX=${CXX} ${GMAKE} all; \
)
post-install:
@( \
${INSTALL_DATA} ${FILESDIR}/RELNOTES ${PREFIX}/firebird; \
${CAT} ${PKGMESSAGE}; \
)
.include <bsd.port.post.mk>

View File

@ -1 +1 @@
MD5 (firebird15-rc7.tar.bz2) = f6a3a4afa1f2fdfde9a4348a618c4896
MD5 (firebird15-rc8.tar.bz2) = cb775b56c0b3067994ec78f15a9e757d

View File

@ -1,22 +1,8 @@
Firebird 1.0.2 FreeBSD Release Notes 05-Jan-2003
Firebird 1.5.0 FreeBSD Release Notes 11-Jan-2004
--------------------------------------
FB-T6.2.908 Firebird Final Release
FB-V1.5.0.4201 Firebird 1.5 Release Candidate 8
Welcome to the FreeBSD Firebird port! Users should note that there
was a package called `firebird-1.0.tgz' released in mid-August
2000. Unfortunately, that package was released before Firebird
version numbering conventions were established, so although the
version number would suggest that it is newer than the current
release, it is certainly not. Users of the August 1.0 package
should upgrade to 0.9_4 or later, which has fixed many bugs and
security problems, including the recently-discovered back door.
Firebird originally required a running copy of Firebird (or
InterBase) in order to build itself. This port uses a boot kit to
overcome that, so that it does not require itself to build.
Unfortunately, the side effect of this is that if you have a lock
manager running from an already-installed version of Firebird or
InterBase, this port will not build.
Welcome to the FreeBSD Firebird port!
Firebird is installed SUID with owner and group `firebird'.
This does affect where you can and cannot create databases when
@ -30,12 +16,12 @@ etc.) gives you the message "semget failed". One surefire way to
do this is to build and install the port. :) If this happens,
make sure that the lock manager is not running and its semaphores
have been removed. The former can be accomplished with 'ps ax
|grep gds' and 'kill'; the latter with 'ipcs -s' and 'ipcrm -s'.
|grep fb' and 'kill'; the latter with 'ipcs -s' and 'ipcrm -s'.
For example, after building and installing the port, you will
probably go through something like this:
# isql /usr/interbase/isc4.gdb
# isql /usr/local/firebird/security.fdb
Statement failed, SQLCODE = -902
operating system directive semget failed
@ -62,14 +48,47 @@ try stopping PostgreSQL:
/usr/local/etc/rc.d/pgsql.sh stop
and see if that helps.
and see if that helps. Alternatively, increase the value of SEMMNS
by 48 in your kernel configuration file. This can be found by getting
the current value with 'sysctl -a | grep semmns'. You can either add
this to your kernel config, or add the following line to /boot/loader.conf:
Super Server support has recently been added. However, there is
anecdotal evidence that it is not as reliable nor as scalable as the
Classic Server version. For this reason, I have not included a
start up method for Super Server. For those that are interested,
traversing to /usr/interbase/misc will find the startup scripts for
the various flavours of Linux.
kern.ipc.semmns=X
where is is the current value plus 48. If this doesn't resolve the issue,
try adding 48 again.
Please note that RC8 has changed the libgds.so symlink to point to
libfbembed.so. This has been done to resolve compatability issues with
older versions of Firebird. The FreeBSD port of RC7 had libgds.so
pointing to libfbclient.so. libfbclient.so is a remote access-only
shared library with threaded support, which requires target applications
to link with a threaded library such as libc_r.so, libkse.so or libthr.so.
Super Server support in Firebird 1.5 for FreeBSD is not currently
available due to the Firebird code using POSIX threads APIs not available
in FreeBSD 4.x or not yet complete in FreeBSD 5.x. This issue will become
more important once the scalability issues of Super Server have been
resolved.
This installation has already inserted the necessary line to
/etc/inetd.conf so that you can connect to Firebird across the network.
However you may need to add the remote host to /etc/hosts.equiv. For
example, to allow the local machine to make connections to Firebird
using TCP, the following command needs running:
echo localhost >> /etc/hosts.equiv
Please note that adding machines to /etc/hosts.equiv can reduce the
security of your system. If in doubt, try connecting to Firebird with
a username and password already defined in security.fdb. For example:
gsec
> add myuser -pass mypass
> quit
isql -u myuser -p mypass localhost:/usr/local/firebird/examples/employee.fdb
This should reduce the need for hosts defined in /etc/hosts.equiv.
Complete documentation for InterBase(tm) is available (free of
charge) from http://www.interbase.com/ in PDF format. While
@ -82,5 +101,8 @@ and InterBase can be found at the following:
http://www.interbase2000.org/
http://www.firebirdsql.org/
Please also see the doc directory in the Firebird package for
documentation specific to Firebird.
Chris Knight
<chris@aims.com.au>
<chris@aims.net.au>

View File

@ -1,26 +0,0 @@
--- autogen.sh.orig Fri Apr 18 04:41:28 2003
+++ autogen.sh Sun Aug 24 18:39:45 2003
@@ -20,7 +20,7 @@
;;
esac
-VER=`libtool --version|grep ' libtool)'|sed 's/.*) \([0-9][0-9.]*\) .*/\1/'`
+VER=`libtool13 --version|grep ' libtool)'|sed 's/.*) \([0-9][0-9.]*\) .*/\1/'`
case "$VER" in
0* | 1\.[0-2] | 1\.[0-2][a-z]* | \
1\.3\.[0-2] | 1\.3\.[0-2][a-z]* )
@@ -50,12 +50,12 @@
# Generate configure from configure.in
echo "Running libtoolize ..."
-LIBTOOL_M4=`libtoolize --copy --force --dry-run|grep 'You should add the contents of'|sed "s,^[^/]*\(/[^']*\).*$,\1,"`
+LIBTOOL_M4=`libtoolize13 --copy --force --dry-run|grep 'You should add the contents of'|sed "s,^[^/]*\(/[^']*\).*$,\1,"`
if test "x$LIBTOOL_M4" != "x"; then
rm -f aclocal.m4
cp $LIBTOOL_M4 aclocal.m4
fi
-libtoolize --copy --force || exit 1
+libtoolize13 --copy --force || exit 1
echo "Running autoconf ..."
autoconf || exit 1

View File

@ -1,49 +0,0 @@
--- src/common/classes/locks.h.orig Sun Aug 17 14:56:47 2003
+++ src/common/classes/locks.h Wed Nov 12 11:12:25 2003
@@ -77,7 +77,7 @@
/* Process-local spinlock. Used to manage memory heaps in threaded environment. */
// Pthreads version of the class
-#ifndef SOLARIS
+#if !defined(SOLARIS) && !defined(DARWIN) && !defined(FREEBSD)
class Spinlock {
private:
pthread_spinlock_t spinlock;
@@ -100,6 +100,7 @@
}
};
#else
+#ifdef SOLARIS
// Who knows why Solaris 2.6 have not THIS funny spins?
//The next code is not comlpeted but let me compile //Konstantin
class Spinlock {
@@ -123,6 +124,29 @@
system_call_failed::raise();
}
};
+#else // DARWIN and FREEBSD
+class Spinlock {
+private:
+ pthread_mutex_t mlock;
+public:
+ Spinlock() {
+ if (pthread_mutex_init(&mlock, 0))
+ system_call_failed::raise();
+ }
+ ~Spinlock() {
+ if (pthread_mutex_destroy(&mlock))
+ system_call_failed::raise();
+ }
+ void enter() {
+ if (pthread_mutex_lock(&mlock))
+ system_call_failed::raise();
+ }
+ void leave() {
+ if (pthread_mutex_unlock(&mlock))
+ system_call_failed::raise();
+ }
+};
+#endif
#endif
#endif

View File

@ -0,0 +1,92 @@
--- src/install/arch-specific/freebsd/install.sh.in.orig Thu Nov 6 23:23:29 2003
+++ src/install/arch-specific/freebsd/install.sh.in Tue Jan 13 17:36:16 2004
@@ -59,7 +59,7 @@
if [ -d $InstallPrefix/firebird.old ]; then
rm -rf $InstallPrefix/firebird.old
fi
- mv $InstallFirebirdPrefix $InstallPrefix/firebird.old
+ cp -Rp $InstallFirebirdPrefix $InstallPrefix/firebird.old
fi
if [ `id -u` -ne 0 ]; then
@@ -162,7 +162,7 @@
#cp -r $BuiltFBDir/doc $DestDir
cp $BuiltFBDir/firebird.msg $DestDir/firebird.msg
-cp $BuiltFBDir/security.fdb $DestDir/security.fdb
+cp $BuiltFBDir/security.fdb $DestDir/security.fdb.sample
#cp $BuiltFBDir/include/gds.f $DestDir/include
@@ -190,19 +190,19 @@
cp $BuildRootDir/doc/WhatsNew $DestDir/WhatsNew
cp $BuildRootDir/doc/README.user $DestDir/README
-cp $BuiltFBDir/misc/firebird.conf $DestDir/firebird.conf
+cp $BuiltFBDir/misc/firebird.conf $DestDir/firebird.conf.sample
-echo "#" >> $DestDir/aliases.conf
-echo "# List of known database aliases" >> $DestDir/aliases.conf
-echo "# ------------------------------" >> $DestDir/aliases.conf
-echo "#" >> $DestDir/aliases.conf
-echo "# Examples:" >> $DestDir/aliases.conf
-echo "#" >> $DestDir/aliases.conf
-echo "# employee = /$FBRootDir/examples/employee.fdb" >> $DestDir/aliases.conf
-echo "#" >> $DestDir/aliases.conf
+echo "#" >> $DestDir/aliases.conf.sample
+echo "# List of known database aliases" >> $DestDir/aliases.conf.sample
+echo "# ------------------------------" >> $DestDir/aliases.conf.sample
+echo "#" >> $DestDir/aliases.conf.sample
+echo "# Examples:" >> $DestDir/aliases.conf.sample
+echo "#" >> $DestDir/aliases.conf.sample
+echo "# employee = $DestDir/examples/employee.fdb" >> $DestDir/aliases.conf.sample
+echo "#" >> $DestDir/aliases.conf.sample
-chown -R firebird:firebird $InstallFirebirdPrefix
+chown -R $fbUID:$fbGID $InstallFirebirdPrefix
chmod -R o= $InstallFirebirdPrefix
# Now fix up the mess.
@@ -235,8 +235,8 @@
chmod -R a=rx $InstallFirebirdPrefix/lib/*
cd $InstallFirebirdPrefix/lib
-ln -sf libfbclient.so libgds.so
-ln -sf libfbclient.so.1 libgds.so.1
+ln -sf libfbembed.so libgds.so
+ln -sf libfbembed.so.1 libgds.so.1
cd $InstallFirebirdPrefix/bin
for i in `ls`
@@ -265,19 +265,25 @@
FileName=$i.`hostname`
touch $FileName
chmod ug=rw,o= $FileName
- chown firebird:firebird $FileName
+ chown $fbUID:$fbGID $FileName
done
-touch firebird.log aliases.conf firebird.conf
-chown firebird:firebird firebird.log
+touch firebird.log
+chown $fbUID:$fbGID firebird.log
chmod ug=rw,o= firebird.log
-chmod a=r firebird.msg aliases.conf firebird.conf README
+chmod a=r firebird.msg README
+chown root:wheel *.sample
+chmod ug=r,o= *.sample
# make databases writable by firebird only
# local database connections are not a good idea
chmod ug=rw,o= examples/*.fdb
chmod ug=rw,o= help/*.fdb
-chmod ug=rw,o= security.fdb
+
+# install the samples if they don't exist
+[ -f aliases.conf ] || install -o $fbUID -g $fbGID -m 440 aliases.conf.sample aliases.conf
+[ -f firebird.conf ] || install -o $fbUID -g $fbGID -m 440 firebird.conf.sample firebird.conf
+[ -f security.fdb ] || install -o $fbUID -g $fbGID -m 660 security.fdb.sample security.fdb
# remove any existing gds service
cp /etc/services /etc/services.old

View File

@ -6,9 +6,6 @@ some very big players use it worldwide. Inprise has open-sourced
InterBase 6.0, and a lively bunch of folks has charged themselves
with seeing that it lives on through the Firebird project.
Note that as of Firebird 0.9_4, the locksmith back door has
been closed.
For more information on Firebird and InterBase, see:
WWW: http://sourceforge.net/projects/firebird/
@ -16,7 +13,3 @@ WWW: http://www.ibphoenix.com/
WWW: http://www.interbase2000.org/
WWW: http://www.interbase.com/
WWW: http://www.firebirdsql.org/
For more information on the locksmith back door, see:
WWW: https://www.kb.cert.org/vuls/id/247371

View File

@ -0,0 +1,171 @@
#!/bin/sh
# $FreeBSD$
PATH=/bin:/usr/bin:/usr/sbin
case $2 in
PRE-INSTALL)
if [ -d $PKG_PREFIX/firebird ]; then
if [ -d $PKG_PREFIX/firebird.old ]; then
rm -rf $PKG_PREFIX/firebird.old
fi
cp -Rp $PKG_PREFIX/firebird $PKG_PREFIX/firebird.old
fi
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 /bin/sh \
-d $PKG_PREFIX/firebird -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)
chown -R firebird:firebird $PKG_PREFIX/firebird
chmod -R o= $PKG_PREFIX/firebird
# Now fix up the mess.
# fix up directories
for i in `find $PKG_PREFIX/firebird -print`
do
FileName=$i
if [ -d $FileName ]; then
chmod u=rwx,go=rx $FileName
fi
done
# make lib ldconfig-compatible
chown -R root:wheel $PKG_PREFIX/firebird/lib
# make the following read-only
chmod -R a=r $PKG_PREFIX/firebird/WhatsNew
for i in `find $PKG_PREFIX/firebird/doc -type f -print`
do
chmod a=r $i
done
chmod -R a=r $PKG_PREFIX/firebird/examples/*
chmod -R a=r $PKG_PREFIX/firebird/include/*
chmod -R a=r $PKG_PREFIX/firebird/intl/*
#chmod -R a=r $PKG_PREFIX/firebird/misc/*
chmod -R ug=rx,o= $PKG_PREFIX/firebird/UDF/*
chmod -R ug=rx,o= $PKG_PREFIX/firebird/intl/fbintl
chmod -R a=rx $PKG_PREFIX/firebird/lib/*
cd $PKG_PREFIX/firebird/lib
ln -sf libfbembed.so libgds.so
ln -sf libfbembed.so.1 libgds.so.1
cd $PKG_PREFIX/firebird/bin
for i in `ls`
do
chmod ug=rx,o= $i
done
chmod a=rx isql qli
# SUID is needed for running server programs.
for i in fb_lock_mgr gds_drop fb_inet_server
do
if [ -f $i ]; then
chmod ug=rx,o= $i
chmod ug+s $i
fi
done
cd $PKG_PREFIX/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
chmod ug=rw,o= firebird.log
chmod a=r firebird.msg README
chown root:wheel *.sample
chmod ug=r,o= *.sample
# make databases writable by firebird only
# local database connections are not a good idea
chmod ug=rw,o= examples/*.fdb
chmod ug=rw,o= help/*.fdb
chmod ug=rw,o= security.fdb
chmod 440 aliases.conf firebird.conf
chmod 660 security.fdb
# remove any existing gds service
cp /etc/services /etc/services.old
cp /etc/inetd.conf /etc/inetd.conf.old
cat /etc/services |grep -v gds_db >/etc/services.new
cat /etc/inetd.conf |grep -v gds_db >/etc/inetd.conf.new
mv /etc/services.new /etc/services
mv /etc/inetd.conf.new /etc/inetd.conf
# add the gds service and restart inetd
cat >>/etc/services <<EOF
gds_db 3050/tcp #InterBase Database Remote Protocol
EOF
cat >>/etc/inetd.conf <<EOF
gds_db stream tcp nowait firebird $PKG_PREFIX/firebird/bin/fb_inet_server fb_inet_server
EOF
if [ -f /var/run/inetd.pid ]; then
kill -HUP `cat /var/run/inetd.pid`
fi
# shared lib startup script
if [ -d $PKG_PREFIX/etc/rc.d ]; then
(
echo "#!/bin/sh"; echo "[ -d $PKG_PREFIX/firebird/lib ] && /sbin/ldconfig -m $PKG_PREFIX/firebird/lib"
) > $PKG_PREFIX/etc/rc.d/000.firebird.sh
chmod a=rx $PKG_PREFIX/etc/rc.d/000.firebird.sh
fi
;;
esac

View File

@ -2,7 +2,7 @@
---------------------------------------------------------
Firebird is now installed. A symbolic link from
/usr/interbase -> %%PREFIX%%/firebird may be needed
for compatibility with existing programs that use
for compatibility with existing programs that use
Firebird.
The symbolic link can be created with:

View File

@ -1,11 +1,14 @@
etc/rc.d/000.firebird.sh
firebird/README
firebird/RELNOTES
firebird/UDF/fbudf.so
firebird/UDF/fbudf.sql
firebird/UDF/ib_udf.so
firebird/UDF/ib_udf.sql
firebird/WhatsNew
firebird/aliases.conf
@unexec if cmp -s %D/firebird/aliases.conf %D/firebird/aliases.conf.sample; then rm -f %D/firebird/aliases.conf; fi
firebird/aliases.conf.sample
@exec [ -f %B/aliases.conf ] || cp %B/%f %B/aliases.conf
firebird/bin/fb_inet_server
firebird/bin/fb_lock_mgr
firebird/bin/fb_lock_print
@ -86,8 +89,10 @@ firebird/examples/stat8.e
firebird/examples/stat9.e
firebird/examples/udf.sql
firebird/examples/udflib.c
firebird/firebird.conf
@unexec rm -f %D/firebird/firebird.log
@unexec if cmp -s %D/firebird/firebird.conf %D/firebird/firebird.conf.sample; then rm -f %D/firebird/firebird.conf; fi
firebird/firebird.conf.sample
@exec [ -f %B/firebird.conf ] || cp %B/%f %B/firebird.conf
@unexec [ -s %D/firebird/firebird.log ] || rm -f %D/firebird/firebird.log
firebird/firebird.msg
firebird/help/help.fdb
firebird/include/blr.h
@ -109,7 +114,9 @@ firebird/lib/libfbembed.so.1.5.0
firebird/lib/libgds.so
firebird/lib/libgds.so.1
firebird/lib/libib_util.so
firebird/security.fdb
@unexec if cmp -s %D/firebird/security.fdb %D/firebird/security.fdb.sample; then rm -f %D/firebird/security.fdb; fi
firebird/security.fdb.sample
@exec [ -f %B/security.fdb ] || cp %B/%f %B/security.fdb
@dirrm firebird/UDF
@dirrm firebird/bin
@dirrm firebird/doc/sql.extensions

View File

@ -6,11 +6,12 @@
#
PORTNAME= firebird
PORTVERSION= 1.5.r7
PORTVERSION= 1.5.r8
CATEGORIES= databases
MASTER_SITES= http://www.aims.net.au/chris/firebird/
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} \
http://www.aims.net.au/chris/firebird/
MASTER_SITE_SUBDIR=firebird
DISTNAME= firebird15-rc7
DISTNAME= firebird15-rc8
MAINTAINER= chris@e-easy.com.au
COMMENT= The open-source InterBase(tm) 6.0 spin-off (Classic version)
@ -26,7 +27,6 @@ USE_GCC= 3.3
LD= gcc
CONFLICTS= firebird-devel-*
NOPACKAGE= pkg-install not finished
WRKSRC= ${WRKDIR}/firebird15
INSTALLS_SHLIB= yes
@ -57,13 +57,21 @@ patch-libtool:
@${DO_NADA}
do-configure:
@(cd ${WRKSRC} && ${ENV} CC=${CC} CXX=${CXX} MAKE=${GMAKE} ./autogen.sh --prefix=${PREFIX}/firebird --with-lock-manager --with-editline)
@(cd ${WRKSRC} && ${SETENV} CC=${CC} CXX=${CXX} MAKE=${GMAKE} \
LIBTOOL=libtool13 LIBTOOLIZE=libtoolize13 ./autogen.sh \
--prefix=${PREFIX}/firebird --with-lock-manager --with-editline)
do-build:
@( \
${SED} 's|%%PREFIX%%|${PREFIX}|g' ${MSG_FILE} > ${PKGMESSAGE}; \
cd ${WRKSRC}; \
${ENV} CC=${CC} CXX=${CXX} ${GMAKE} all; \
${SETENV} CC=${CC} CXX=${CXX} ${GMAKE} all; \
)
post-install:
@( \
${INSTALL_DATA} ${FILESDIR}/RELNOTES ${PREFIX}/firebird; \
${CAT} ${PKGMESSAGE}; \
)
.include <bsd.port.post.mk>

View File

@ -1 +1 @@
MD5 (firebird15-rc7.tar.bz2) = f6a3a4afa1f2fdfde9a4348a618c4896
MD5 (firebird15-rc8.tar.bz2) = cb775b56c0b3067994ec78f15a9e757d

View File

@ -1,22 +1,8 @@
Firebird 1.0.2 FreeBSD Release Notes 05-Jan-2003
Firebird 1.5.0 FreeBSD Release Notes 11-Jan-2004
--------------------------------------
FB-T6.2.908 Firebird Final Release
FB-V1.5.0.4201 Firebird 1.5 Release Candidate 8
Welcome to the FreeBSD Firebird port! Users should note that there
was a package called `firebird-1.0.tgz' released in mid-August
2000. Unfortunately, that package was released before Firebird
version numbering conventions were established, so although the
version number would suggest that it is newer than the current
release, it is certainly not. Users of the August 1.0 package
should upgrade to 0.9_4 or later, which has fixed many bugs and
security problems, including the recently-discovered back door.
Firebird originally required a running copy of Firebird (or
InterBase) in order to build itself. This port uses a boot kit to
overcome that, so that it does not require itself to build.
Unfortunately, the side effect of this is that if you have a lock
manager running from an already-installed version of Firebird or
InterBase, this port will not build.
Welcome to the FreeBSD Firebird port!
Firebird is installed SUID with owner and group `firebird'.
This does affect where you can and cannot create databases when
@ -30,12 +16,12 @@ etc.) gives you the message "semget failed". One surefire way to
do this is to build and install the port. :) If this happens,
make sure that the lock manager is not running and its semaphores
have been removed. The former can be accomplished with 'ps ax
|grep gds' and 'kill'; the latter with 'ipcs -s' and 'ipcrm -s'.
|grep fb' and 'kill'; the latter with 'ipcs -s' and 'ipcrm -s'.
For example, after building and installing the port, you will
probably go through something like this:
# isql /usr/interbase/isc4.gdb
# isql /usr/local/firebird/security.fdb
Statement failed, SQLCODE = -902
operating system directive semget failed
@ -62,14 +48,47 @@ try stopping PostgreSQL:
/usr/local/etc/rc.d/pgsql.sh stop
and see if that helps.
and see if that helps. Alternatively, increase the value of SEMMNS
by 48 in your kernel configuration file. This can be found by getting
the current value with 'sysctl -a | grep semmns'. You can either add
this to your kernel config, or add the following line to /boot/loader.conf:
Super Server support has recently been added. However, there is
anecdotal evidence that it is not as reliable nor as scalable as the
Classic Server version. For this reason, I have not included a
start up method for Super Server. For those that are interested,
traversing to /usr/interbase/misc will find the startup scripts for
the various flavours of Linux.
kern.ipc.semmns=X
where is is the current value plus 48. If this doesn't resolve the issue,
try adding 48 again.
Please note that RC8 has changed the libgds.so symlink to point to
libfbembed.so. This has been done to resolve compatability issues with
older versions of Firebird. The FreeBSD port of RC7 had libgds.so
pointing to libfbclient.so. libfbclient.so is a remote access-only
shared library with threaded support, which requires target applications
to link with a threaded library such as libc_r.so, libkse.so or libthr.so.
Super Server support in Firebird 1.5 for FreeBSD is not currently
available due to the Firebird code using POSIX threads APIs not available
in FreeBSD 4.x or not yet complete in FreeBSD 5.x. This issue will become
more important once the scalability issues of Super Server have been
resolved.
This installation has already inserted the necessary line to
/etc/inetd.conf so that you can connect to Firebird across the network.
However you may need to add the remote host to /etc/hosts.equiv. For
example, to allow the local machine to make connections to Firebird
using TCP, the following command needs running:
echo localhost >> /etc/hosts.equiv
Please note that adding machines to /etc/hosts.equiv can reduce the
security of your system. If in doubt, try connecting to Firebird with
a username and password already defined in security.fdb. For example:
gsec
> add myuser -pass mypass
> quit
isql -u myuser -p mypass localhost:/usr/local/firebird/examples/employee.fdb
This should reduce the need for hosts defined in /etc/hosts.equiv.
Complete documentation for InterBase(tm) is available (free of
charge) from http://www.interbase.com/ in PDF format. While
@ -82,5 +101,8 @@ and InterBase can be found at the following:
http://www.interbase2000.org/
http://www.firebirdsql.org/
Please also see the doc directory in the Firebird package for
documentation specific to Firebird.
Chris Knight
<chris@aims.com.au>
<chris@aims.net.au>

View File

@ -1,26 +0,0 @@
--- autogen.sh.orig Fri Apr 18 04:41:28 2003
+++ autogen.sh Sun Aug 24 18:39:45 2003
@@ -20,7 +20,7 @@
;;
esac
-VER=`libtool --version|grep ' libtool)'|sed 's/.*) \([0-9][0-9.]*\) .*/\1/'`
+VER=`libtool13 --version|grep ' libtool)'|sed 's/.*) \([0-9][0-9.]*\) .*/\1/'`
case "$VER" in
0* | 1\.[0-2] | 1\.[0-2][a-z]* | \
1\.3\.[0-2] | 1\.3\.[0-2][a-z]* )
@@ -50,12 +50,12 @@
# Generate configure from configure.in
echo "Running libtoolize ..."
-LIBTOOL_M4=`libtoolize --copy --force --dry-run|grep 'You should add the contents of'|sed "s,^[^/]*\(/[^']*\).*$,\1,"`
+LIBTOOL_M4=`libtoolize13 --copy --force --dry-run|grep 'You should add the contents of'|sed "s,^[^/]*\(/[^']*\).*$,\1,"`
if test "x$LIBTOOL_M4" != "x"; then
rm -f aclocal.m4
cp $LIBTOOL_M4 aclocal.m4
fi
-libtoolize --copy --force || exit 1
+libtoolize13 --copy --force || exit 1
echo "Running autoconf ..."
autoconf || exit 1

View File

@ -1,49 +0,0 @@
--- src/common/classes/locks.h.orig Sun Aug 17 14:56:47 2003
+++ src/common/classes/locks.h Wed Nov 12 11:12:25 2003
@@ -77,7 +77,7 @@
/* Process-local spinlock. Used to manage memory heaps in threaded environment. */
// Pthreads version of the class
-#ifndef SOLARIS
+#if !defined(SOLARIS) && !defined(DARWIN) && !defined(FREEBSD)
class Spinlock {
private:
pthread_spinlock_t spinlock;
@@ -100,6 +100,7 @@
}
};
#else
+#ifdef SOLARIS
// Who knows why Solaris 2.6 have not THIS funny spins?
//The next code is not comlpeted but let me compile //Konstantin
class Spinlock {
@@ -123,6 +124,29 @@
system_call_failed::raise();
}
};
+#else // DARWIN and FREEBSD
+class Spinlock {
+private:
+ pthread_mutex_t mlock;
+public:
+ Spinlock() {
+ if (pthread_mutex_init(&mlock, 0))
+ system_call_failed::raise();
+ }
+ ~Spinlock() {
+ if (pthread_mutex_destroy(&mlock))
+ system_call_failed::raise();
+ }
+ void enter() {
+ if (pthread_mutex_lock(&mlock))
+ system_call_failed::raise();
+ }
+ void leave() {
+ if (pthread_mutex_unlock(&mlock))
+ system_call_failed::raise();
+ }
+};
+#endif
#endif
#endif

View File

@ -0,0 +1,92 @@
--- src/install/arch-specific/freebsd/install.sh.in.orig Thu Nov 6 23:23:29 2003
+++ src/install/arch-specific/freebsd/install.sh.in Tue Jan 13 17:36:16 2004
@@ -59,7 +59,7 @@
if [ -d $InstallPrefix/firebird.old ]; then
rm -rf $InstallPrefix/firebird.old
fi
- mv $InstallFirebirdPrefix $InstallPrefix/firebird.old
+ cp -Rp $InstallFirebirdPrefix $InstallPrefix/firebird.old
fi
if [ `id -u` -ne 0 ]; then
@@ -162,7 +162,7 @@
#cp -r $BuiltFBDir/doc $DestDir
cp $BuiltFBDir/firebird.msg $DestDir/firebird.msg
-cp $BuiltFBDir/security.fdb $DestDir/security.fdb
+cp $BuiltFBDir/security.fdb $DestDir/security.fdb.sample
#cp $BuiltFBDir/include/gds.f $DestDir/include
@@ -190,19 +190,19 @@
cp $BuildRootDir/doc/WhatsNew $DestDir/WhatsNew
cp $BuildRootDir/doc/README.user $DestDir/README
-cp $BuiltFBDir/misc/firebird.conf $DestDir/firebird.conf
+cp $BuiltFBDir/misc/firebird.conf $DestDir/firebird.conf.sample
-echo "#" >> $DestDir/aliases.conf
-echo "# List of known database aliases" >> $DestDir/aliases.conf
-echo "# ------------------------------" >> $DestDir/aliases.conf
-echo "#" >> $DestDir/aliases.conf
-echo "# Examples:" >> $DestDir/aliases.conf
-echo "#" >> $DestDir/aliases.conf
-echo "# employee = /$FBRootDir/examples/employee.fdb" >> $DestDir/aliases.conf
-echo "#" >> $DestDir/aliases.conf
+echo "#" >> $DestDir/aliases.conf.sample
+echo "# List of known database aliases" >> $DestDir/aliases.conf.sample
+echo "# ------------------------------" >> $DestDir/aliases.conf.sample
+echo "#" >> $DestDir/aliases.conf.sample
+echo "# Examples:" >> $DestDir/aliases.conf.sample
+echo "#" >> $DestDir/aliases.conf.sample
+echo "# employee = $DestDir/examples/employee.fdb" >> $DestDir/aliases.conf.sample
+echo "#" >> $DestDir/aliases.conf.sample
-chown -R firebird:firebird $InstallFirebirdPrefix
+chown -R $fbUID:$fbGID $InstallFirebirdPrefix
chmod -R o= $InstallFirebirdPrefix
# Now fix up the mess.
@@ -235,8 +235,8 @@
chmod -R a=rx $InstallFirebirdPrefix/lib/*
cd $InstallFirebirdPrefix/lib
-ln -sf libfbclient.so libgds.so
-ln -sf libfbclient.so.1 libgds.so.1
+ln -sf libfbembed.so libgds.so
+ln -sf libfbembed.so.1 libgds.so.1
cd $InstallFirebirdPrefix/bin
for i in `ls`
@@ -265,19 +265,25 @@
FileName=$i.`hostname`
touch $FileName
chmod ug=rw,o= $FileName
- chown firebird:firebird $FileName
+ chown $fbUID:$fbGID $FileName
done
-touch firebird.log aliases.conf firebird.conf
-chown firebird:firebird firebird.log
+touch firebird.log
+chown $fbUID:$fbGID firebird.log
chmod ug=rw,o= firebird.log
-chmod a=r firebird.msg aliases.conf firebird.conf README
+chmod a=r firebird.msg README
+chown root:wheel *.sample
+chmod ug=r,o= *.sample
# make databases writable by firebird only
# local database connections are not a good idea
chmod ug=rw,o= examples/*.fdb
chmod ug=rw,o= help/*.fdb
-chmod ug=rw,o= security.fdb
+
+# install the samples if they don't exist
+[ -f aliases.conf ] || install -o $fbUID -g $fbGID -m 440 aliases.conf.sample aliases.conf
+[ -f firebird.conf ] || install -o $fbUID -g $fbGID -m 440 firebird.conf.sample firebird.conf
+[ -f security.fdb ] || install -o $fbUID -g $fbGID -m 660 security.fdb.sample security.fdb
# remove any existing gds service
cp /etc/services /etc/services.old

View File

@ -6,9 +6,6 @@ some very big players use it worldwide. Inprise has open-sourced
InterBase 6.0, and a lively bunch of folks has charged themselves
with seeing that it lives on through the Firebird project.
Note that as of Firebird 0.9_4, the locksmith back door has
been closed.
For more information on Firebird and InterBase, see:
WWW: http://sourceforge.net/projects/firebird/
@ -16,7 +13,3 @@ WWW: http://www.ibphoenix.com/
WWW: http://www.interbase2000.org/
WWW: http://www.interbase.com/
WWW: http://www.firebirdsql.org/
For more information on the locksmith back door, see:
WWW: https://www.kb.cert.org/vuls/id/247371

View File

@ -0,0 +1,171 @@
#!/bin/sh
# $FreeBSD$
PATH=/bin:/usr/bin:/usr/sbin
case $2 in
PRE-INSTALL)
if [ -d $PKG_PREFIX/firebird ]; then
if [ -d $PKG_PREFIX/firebird.old ]; then
rm -rf $PKG_PREFIX/firebird.old
fi
cp -Rp $PKG_PREFIX/firebird $PKG_PREFIX/firebird.old
fi
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 /bin/sh \
-d $PKG_PREFIX/firebird -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)
chown -R firebird:firebird $PKG_PREFIX/firebird
chmod -R o= $PKG_PREFIX/firebird
# Now fix up the mess.
# fix up directories
for i in `find $PKG_PREFIX/firebird -print`
do
FileName=$i
if [ -d $FileName ]; then
chmod u=rwx,go=rx $FileName
fi
done
# make lib ldconfig-compatible
chown -R root:wheel $PKG_PREFIX/firebird/lib
# make the following read-only
chmod -R a=r $PKG_PREFIX/firebird/WhatsNew
for i in `find $PKG_PREFIX/firebird/doc -type f -print`
do
chmod a=r $i
done
chmod -R a=r $PKG_PREFIX/firebird/examples/*
chmod -R a=r $PKG_PREFIX/firebird/include/*
chmod -R a=r $PKG_PREFIX/firebird/intl/*
#chmod -R a=r $PKG_PREFIX/firebird/misc/*
chmod -R ug=rx,o= $PKG_PREFIX/firebird/UDF/*
chmod -R ug=rx,o= $PKG_PREFIX/firebird/intl/fbintl
chmod -R a=rx $PKG_PREFIX/firebird/lib/*
cd $PKG_PREFIX/firebird/lib
ln -sf libfbembed.so libgds.so
ln -sf libfbembed.so.1 libgds.so.1
cd $PKG_PREFIX/firebird/bin
for i in `ls`
do
chmod ug=rx,o= $i
done
chmod a=rx isql qli
# SUID is needed for running server programs.
for i in fb_lock_mgr gds_drop fb_inet_server
do
if [ -f $i ]; then
chmod ug=rx,o= $i
chmod ug+s $i
fi
done
cd $PKG_PREFIX/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
chmod ug=rw,o= firebird.log
chmod a=r firebird.msg README
chown root:wheel *.sample
chmod ug=r,o= *.sample
# make databases writable by firebird only
# local database connections are not a good idea
chmod ug=rw,o= examples/*.fdb
chmod ug=rw,o= help/*.fdb
chmod ug=rw,o= security.fdb
chmod 440 aliases.conf firebird.conf
chmod 660 security.fdb
# remove any existing gds service
cp /etc/services /etc/services.old
cp /etc/inetd.conf /etc/inetd.conf.old
cat /etc/services |grep -v gds_db >/etc/services.new
cat /etc/inetd.conf |grep -v gds_db >/etc/inetd.conf.new
mv /etc/services.new /etc/services
mv /etc/inetd.conf.new /etc/inetd.conf
# add the gds service and restart inetd
cat >>/etc/services <<EOF
gds_db 3050/tcp #InterBase Database Remote Protocol
EOF
cat >>/etc/inetd.conf <<EOF
gds_db stream tcp nowait firebird $PKG_PREFIX/firebird/bin/fb_inet_server fb_inet_server
EOF
if [ -f /var/run/inetd.pid ]; then
kill -HUP `cat /var/run/inetd.pid`
fi
# shared lib startup script
if [ -d $PKG_PREFIX/etc/rc.d ]; then
(
echo "#!/bin/sh"; echo "[ -d $PKG_PREFIX/firebird/lib ] && /sbin/ldconfig -m $PKG_PREFIX/firebird/lib"
) > $PKG_PREFIX/etc/rc.d/000.firebird.sh
chmod a=rx $PKG_PREFIX/etc/rc.d/000.firebird.sh
fi
;;
esac

View File

@ -2,7 +2,7 @@
---------------------------------------------------------
Firebird is now installed. A symbolic link from
/usr/interbase -> %%PREFIX%%/firebird may be needed
for compatibility with existing programs that use
for compatibility with existing programs that use
Firebird.
The symbolic link can be created with:

View File

@ -1,11 +1,14 @@
etc/rc.d/000.firebird.sh
firebird/README
firebird/RELNOTES
firebird/UDF/fbudf.so
firebird/UDF/fbudf.sql
firebird/UDF/ib_udf.so
firebird/UDF/ib_udf.sql
firebird/WhatsNew
firebird/aliases.conf
@unexec if cmp -s %D/firebird/aliases.conf %D/firebird/aliases.conf.sample; then rm -f %D/firebird/aliases.conf; fi
firebird/aliases.conf.sample
@exec [ -f %B/aliases.conf ] || cp %B/%f %B/aliases.conf
firebird/bin/fb_inet_server
firebird/bin/fb_lock_mgr
firebird/bin/fb_lock_print
@ -86,8 +89,10 @@ firebird/examples/stat8.e
firebird/examples/stat9.e
firebird/examples/udf.sql
firebird/examples/udflib.c
firebird/firebird.conf
@unexec rm -f %D/firebird/firebird.log
@unexec if cmp -s %D/firebird/firebird.conf %D/firebird/firebird.conf.sample; then rm -f %D/firebird/firebird.conf; fi
firebird/firebird.conf.sample
@exec [ -f %B/firebird.conf ] || cp %B/%f %B/firebird.conf
@unexec [ -s %D/firebird/firebird.log ] || rm -f %D/firebird/firebird.log
firebird/firebird.msg
firebird/help/help.fdb
firebird/include/blr.h
@ -109,7 +114,9 @@ firebird/lib/libfbembed.so.1.5.0
firebird/lib/libgds.so
firebird/lib/libgds.so.1
firebird/lib/libib_util.so
firebird/security.fdb
@unexec if cmp -s %D/firebird/security.fdb %D/firebird/security.fdb.sample; then rm -f %D/firebird/security.fdb; fi
firebird/security.fdb.sample
@exec [ -f %B/security.fdb ] || cp %B/%f %B/security.fdb
@dirrm firebird/UDF
@dirrm firebird/bin
@dirrm firebird/doc/sql.extensions

View File

@ -6,11 +6,12 @@
#
PORTNAME= firebird
PORTVERSION= 1.5.r7
PORTVERSION= 1.5.r8
CATEGORIES= databases
MASTER_SITES= http://www.aims.net.au/chris/firebird/
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} \
http://www.aims.net.au/chris/firebird/
MASTER_SITE_SUBDIR=firebird
DISTNAME= firebird15-rc7
DISTNAME= firebird15-rc8
MAINTAINER= chris@e-easy.com.au
COMMENT= The open-source InterBase(tm) 6.0 spin-off (Classic version)
@ -26,7 +27,6 @@ USE_GCC= 3.3
LD= gcc
CONFLICTS= firebird-devel-*
NOPACKAGE= pkg-install not finished
WRKSRC= ${WRKDIR}/firebird15
INSTALLS_SHLIB= yes
@ -57,13 +57,21 @@ patch-libtool:
@${DO_NADA}
do-configure:
@(cd ${WRKSRC} && ${ENV} CC=${CC} CXX=${CXX} MAKE=${GMAKE} ./autogen.sh --prefix=${PREFIX}/firebird --with-lock-manager --with-editline)
@(cd ${WRKSRC} && ${SETENV} CC=${CC} CXX=${CXX} MAKE=${GMAKE} \
LIBTOOL=libtool13 LIBTOOLIZE=libtoolize13 ./autogen.sh \
--prefix=${PREFIX}/firebird --with-lock-manager --with-editline)
do-build:
@( \
${SED} 's|%%PREFIX%%|${PREFIX}|g' ${MSG_FILE} > ${PKGMESSAGE}; \
cd ${WRKSRC}; \
${ENV} CC=${CC} CXX=${CXX} ${GMAKE} all; \
${SETENV} CC=${CC} CXX=${CXX} ${GMAKE} all; \
)
post-install:
@( \
${INSTALL_DATA} ${FILESDIR}/RELNOTES ${PREFIX}/firebird; \
${CAT} ${PKGMESSAGE}; \
)
.include <bsd.port.post.mk>

View File

@ -1 +1 @@
MD5 (firebird15-rc7.tar.bz2) = f6a3a4afa1f2fdfde9a4348a618c4896
MD5 (firebird15-rc8.tar.bz2) = cb775b56c0b3067994ec78f15a9e757d

View File

@ -1,22 +1,8 @@
Firebird 1.0.2 FreeBSD Release Notes 05-Jan-2003
Firebird 1.5.0 FreeBSD Release Notes 11-Jan-2004
--------------------------------------
FB-T6.2.908 Firebird Final Release
FB-V1.5.0.4201 Firebird 1.5 Release Candidate 8
Welcome to the FreeBSD Firebird port! Users should note that there
was a package called `firebird-1.0.tgz' released in mid-August
2000. Unfortunately, that package was released before Firebird
version numbering conventions were established, so although the
version number would suggest that it is newer than the current
release, it is certainly not. Users of the August 1.0 package
should upgrade to 0.9_4 or later, which has fixed many bugs and
security problems, including the recently-discovered back door.
Firebird originally required a running copy of Firebird (or
InterBase) in order to build itself. This port uses a boot kit to
overcome that, so that it does not require itself to build.
Unfortunately, the side effect of this is that if you have a lock
manager running from an already-installed version of Firebird or
InterBase, this port will not build.
Welcome to the FreeBSD Firebird port!
Firebird is installed SUID with owner and group `firebird'.
This does affect where you can and cannot create databases when
@ -30,12 +16,12 @@ etc.) gives you the message "semget failed". One surefire way to
do this is to build and install the port. :) If this happens,
make sure that the lock manager is not running and its semaphores
have been removed. The former can be accomplished with 'ps ax
|grep gds' and 'kill'; the latter with 'ipcs -s' and 'ipcrm -s'.
|grep fb' and 'kill'; the latter with 'ipcs -s' and 'ipcrm -s'.
For example, after building and installing the port, you will
probably go through something like this:
# isql /usr/interbase/isc4.gdb
# isql /usr/local/firebird/security.fdb
Statement failed, SQLCODE = -902
operating system directive semget failed
@ -62,14 +48,47 @@ try stopping PostgreSQL:
/usr/local/etc/rc.d/pgsql.sh stop
and see if that helps.
and see if that helps. Alternatively, increase the value of SEMMNS
by 48 in your kernel configuration file. This can be found by getting
the current value with 'sysctl -a | grep semmns'. You can either add
this to your kernel config, or add the following line to /boot/loader.conf:
Super Server support has recently been added. However, there is
anecdotal evidence that it is not as reliable nor as scalable as the
Classic Server version. For this reason, I have not included a
start up method for Super Server. For those that are interested,
traversing to /usr/interbase/misc will find the startup scripts for
the various flavours of Linux.
kern.ipc.semmns=X
where is is the current value plus 48. If this doesn't resolve the issue,
try adding 48 again.
Please note that RC8 has changed the libgds.so symlink to point to
libfbembed.so. This has been done to resolve compatability issues with
older versions of Firebird. The FreeBSD port of RC7 had libgds.so
pointing to libfbclient.so. libfbclient.so is a remote access-only
shared library with threaded support, which requires target applications
to link with a threaded library such as libc_r.so, libkse.so or libthr.so.
Super Server support in Firebird 1.5 for FreeBSD is not currently
available due to the Firebird code using POSIX threads APIs not available
in FreeBSD 4.x or not yet complete in FreeBSD 5.x. This issue will become
more important once the scalability issues of Super Server have been
resolved.
This installation has already inserted the necessary line to
/etc/inetd.conf so that you can connect to Firebird across the network.
However you may need to add the remote host to /etc/hosts.equiv. For
example, to allow the local machine to make connections to Firebird
using TCP, the following command needs running:
echo localhost >> /etc/hosts.equiv
Please note that adding machines to /etc/hosts.equiv can reduce the
security of your system. If in doubt, try connecting to Firebird with
a username and password already defined in security.fdb. For example:
gsec
> add myuser -pass mypass
> quit
isql -u myuser -p mypass localhost:/usr/local/firebird/examples/employee.fdb
This should reduce the need for hosts defined in /etc/hosts.equiv.
Complete documentation for InterBase(tm) is available (free of
charge) from http://www.interbase.com/ in PDF format. While
@ -82,5 +101,8 @@ and InterBase can be found at the following:
http://www.interbase2000.org/
http://www.firebirdsql.org/
Please also see the doc directory in the Firebird package for
documentation specific to Firebird.
Chris Knight
<chris@aims.com.au>
<chris@aims.net.au>

View File

@ -1,26 +0,0 @@
--- autogen.sh.orig Fri Apr 18 04:41:28 2003
+++ autogen.sh Sun Aug 24 18:39:45 2003
@@ -20,7 +20,7 @@
;;
esac
-VER=`libtool --version|grep ' libtool)'|sed 's/.*) \([0-9][0-9.]*\) .*/\1/'`
+VER=`libtool13 --version|grep ' libtool)'|sed 's/.*) \([0-9][0-9.]*\) .*/\1/'`
case "$VER" in
0* | 1\.[0-2] | 1\.[0-2][a-z]* | \
1\.3\.[0-2] | 1\.3\.[0-2][a-z]* )
@@ -50,12 +50,12 @@
# Generate configure from configure.in
echo "Running libtoolize ..."
-LIBTOOL_M4=`libtoolize --copy --force --dry-run|grep 'You should add the contents of'|sed "s,^[^/]*\(/[^']*\).*$,\1,"`
+LIBTOOL_M4=`libtoolize13 --copy --force --dry-run|grep 'You should add the contents of'|sed "s,^[^/]*\(/[^']*\).*$,\1,"`
if test "x$LIBTOOL_M4" != "x"; then
rm -f aclocal.m4
cp $LIBTOOL_M4 aclocal.m4
fi
-libtoolize --copy --force || exit 1
+libtoolize13 --copy --force || exit 1
echo "Running autoconf ..."
autoconf || exit 1

View File

@ -1,49 +0,0 @@
--- src/common/classes/locks.h.orig Sun Aug 17 14:56:47 2003
+++ src/common/classes/locks.h Wed Nov 12 11:12:25 2003
@@ -77,7 +77,7 @@
/* Process-local spinlock. Used to manage memory heaps in threaded environment. */
// Pthreads version of the class
-#ifndef SOLARIS
+#if !defined(SOLARIS) && !defined(DARWIN) && !defined(FREEBSD)
class Spinlock {
private:
pthread_spinlock_t spinlock;
@@ -100,6 +100,7 @@
}
};
#else
+#ifdef SOLARIS
// Who knows why Solaris 2.6 have not THIS funny spins?
//The next code is not comlpeted but let me compile //Konstantin
class Spinlock {
@@ -123,6 +124,29 @@
system_call_failed::raise();
}
};
+#else // DARWIN and FREEBSD
+class Spinlock {
+private:
+ pthread_mutex_t mlock;
+public:
+ Spinlock() {
+ if (pthread_mutex_init(&mlock, 0))
+ system_call_failed::raise();
+ }
+ ~Spinlock() {
+ if (pthread_mutex_destroy(&mlock))
+ system_call_failed::raise();
+ }
+ void enter() {
+ if (pthread_mutex_lock(&mlock))
+ system_call_failed::raise();
+ }
+ void leave() {
+ if (pthread_mutex_unlock(&mlock))
+ system_call_failed::raise();
+ }
+};
+#endif
#endif
#endif

View File

@ -0,0 +1,92 @@
--- src/install/arch-specific/freebsd/install.sh.in.orig Thu Nov 6 23:23:29 2003
+++ src/install/arch-specific/freebsd/install.sh.in Tue Jan 13 17:36:16 2004
@@ -59,7 +59,7 @@
if [ -d $InstallPrefix/firebird.old ]; then
rm -rf $InstallPrefix/firebird.old
fi
- mv $InstallFirebirdPrefix $InstallPrefix/firebird.old
+ cp -Rp $InstallFirebirdPrefix $InstallPrefix/firebird.old
fi
if [ `id -u` -ne 0 ]; then
@@ -162,7 +162,7 @@
#cp -r $BuiltFBDir/doc $DestDir
cp $BuiltFBDir/firebird.msg $DestDir/firebird.msg
-cp $BuiltFBDir/security.fdb $DestDir/security.fdb
+cp $BuiltFBDir/security.fdb $DestDir/security.fdb.sample
#cp $BuiltFBDir/include/gds.f $DestDir/include
@@ -190,19 +190,19 @@
cp $BuildRootDir/doc/WhatsNew $DestDir/WhatsNew
cp $BuildRootDir/doc/README.user $DestDir/README
-cp $BuiltFBDir/misc/firebird.conf $DestDir/firebird.conf
+cp $BuiltFBDir/misc/firebird.conf $DestDir/firebird.conf.sample
-echo "#" >> $DestDir/aliases.conf
-echo "# List of known database aliases" >> $DestDir/aliases.conf
-echo "# ------------------------------" >> $DestDir/aliases.conf
-echo "#" >> $DestDir/aliases.conf
-echo "# Examples:" >> $DestDir/aliases.conf
-echo "#" >> $DestDir/aliases.conf
-echo "# employee = /$FBRootDir/examples/employee.fdb" >> $DestDir/aliases.conf
-echo "#" >> $DestDir/aliases.conf
+echo "#" >> $DestDir/aliases.conf.sample
+echo "# List of known database aliases" >> $DestDir/aliases.conf.sample
+echo "# ------------------------------" >> $DestDir/aliases.conf.sample
+echo "#" >> $DestDir/aliases.conf.sample
+echo "# Examples:" >> $DestDir/aliases.conf.sample
+echo "#" >> $DestDir/aliases.conf.sample
+echo "# employee = $DestDir/examples/employee.fdb" >> $DestDir/aliases.conf.sample
+echo "#" >> $DestDir/aliases.conf.sample
-chown -R firebird:firebird $InstallFirebirdPrefix
+chown -R $fbUID:$fbGID $InstallFirebirdPrefix
chmod -R o= $InstallFirebirdPrefix
# Now fix up the mess.
@@ -235,8 +235,8 @@
chmod -R a=rx $InstallFirebirdPrefix/lib/*
cd $InstallFirebirdPrefix/lib
-ln -sf libfbclient.so libgds.so
-ln -sf libfbclient.so.1 libgds.so.1
+ln -sf libfbembed.so libgds.so
+ln -sf libfbembed.so.1 libgds.so.1
cd $InstallFirebirdPrefix/bin
for i in `ls`
@@ -265,19 +265,25 @@
FileName=$i.`hostname`
touch $FileName
chmod ug=rw,o= $FileName
- chown firebird:firebird $FileName
+ chown $fbUID:$fbGID $FileName
done
-touch firebird.log aliases.conf firebird.conf
-chown firebird:firebird firebird.log
+touch firebird.log
+chown $fbUID:$fbGID firebird.log
chmod ug=rw,o= firebird.log
-chmod a=r firebird.msg aliases.conf firebird.conf README
+chmod a=r firebird.msg README
+chown root:wheel *.sample
+chmod ug=r,o= *.sample
# make databases writable by firebird only
# local database connections are not a good idea
chmod ug=rw,o= examples/*.fdb
chmod ug=rw,o= help/*.fdb
-chmod ug=rw,o= security.fdb
+
+# install the samples if they don't exist
+[ -f aliases.conf ] || install -o $fbUID -g $fbGID -m 440 aliases.conf.sample aliases.conf
+[ -f firebird.conf ] || install -o $fbUID -g $fbGID -m 440 firebird.conf.sample firebird.conf
+[ -f security.fdb ] || install -o $fbUID -g $fbGID -m 660 security.fdb.sample security.fdb
# remove any existing gds service
cp /etc/services /etc/services.old

View File

@ -6,9 +6,6 @@ some very big players use it worldwide. Inprise has open-sourced
InterBase 6.0, and a lively bunch of folks has charged themselves
with seeing that it lives on through the Firebird project.
Note that as of Firebird 0.9_4, the locksmith back door has
been closed.
For more information on Firebird and InterBase, see:
WWW: http://sourceforge.net/projects/firebird/
@ -16,7 +13,3 @@ WWW: http://www.ibphoenix.com/
WWW: http://www.interbase2000.org/
WWW: http://www.interbase.com/
WWW: http://www.firebirdsql.org/
For more information on the locksmith back door, see:
WWW: https://www.kb.cert.org/vuls/id/247371

View File

@ -0,0 +1,171 @@
#!/bin/sh
# $FreeBSD$
PATH=/bin:/usr/bin:/usr/sbin
case $2 in
PRE-INSTALL)
if [ -d $PKG_PREFIX/firebird ]; then
if [ -d $PKG_PREFIX/firebird.old ]; then
rm -rf $PKG_PREFIX/firebird.old
fi
cp -Rp $PKG_PREFIX/firebird $PKG_PREFIX/firebird.old
fi
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 /bin/sh \
-d $PKG_PREFIX/firebird -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)
chown -R firebird:firebird $PKG_PREFIX/firebird
chmod -R o= $PKG_PREFIX/firebird
# Now fix up the mess.
# fix up directories
for i in `find $PKG_PREFIX/firebird -print`
do
FileName=$i
if [ -d $FileName ]; then
chmod u=rwx,go=rx $FileName
fi
done
# make lib ldconfig-compatible
chown -R root:wheel $PKG_PREFIX/firebird/lib
# make the following read-only
chmod -R a=r $PKG_PREFIX/firebird/WhatsNew
for i in `find $PKG_PREFIX/firebird/doc -type f -print`
do
chmod a=r $i
done
chmod -R a=r $PKG_PREFIX/firebird/examples/*
chmod -R a=r $PKG_PREFIX/firebird/include/*
chmod -R a=r $PKG_PREFIX/firebird/intl/*
#chmod -R a=r $PKG_PREFIX/firebird/misc/*
chmod -R ug=rx,o= $PKG_PREFIX/firebird/UDF/*
chmod -R ug=rx,o= $PKG_PREFIX/firebird/intl/fbintl
chmod -R a=rx $PKG_PREFIX/firebird/lib/*
cd $PKG_PREFIX/firebird/lib
ln -sf libfbembed.so libgds.so
ln -sf libfbembed.so.1 libgds.so.1
cd $PKG_PREFIX/firebird/bin
for i in `ls`
do
chmod ug=rx,o= $i
done
chmod a=rx isql qli
# SUID is needed for running server programs.
for i in fb_lock_mgr gds_drop fb_inet_server
do
if [ -f $i ]; then
chmod ug=rx,o= $i
chmod ug+s $i
fi
done
cd $PKG_PREFIX/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
chmod ug=rw,o= firebird.log
chmod a=r firebird.msg README
chown root:wheel *.sample
chmod ug=r,o= *.sample
# make databases writable by firebird only
# local database connections are not a good idea
chmod ug=rw,o= examples/*.fdb
chmod ug=rw,o= help/*.fdb
chmod ug=rw,o= security.fdb
chmod 440 aliases.conf firebird.conf
chmod 660 security.fdb
# remove any existing gds service
cp /etc/services /etc/services.old
cp /etc/inetd.conf /etc/inetd.conf.old
cat /etc/services |grep -v gds_db >/etc/services.new
cat /etc/inetd.conf |grep -v gds_db >/etc/inetd.conf.new
mv /etc/services.new /etc/services
mv /etc/inetd.conf.new /etc/inetd.conf
# add the gds service and restart inetd
cat >>/etc/services <<EOF
gds_db 3050/tcp #InterBase Database Remote Protocol
EOF
cat >>/etc/inetd.conf <<EOF
gds_db stream tcp nowait firebird $PKG_PREFIX/firebird/bin/fb_inet_server fb_inet_server
EOF
if [ -f /var/run/inetd.pid ]; then
kill -HUP `cat /var/run/inetd.pid`
fi
# shared lib startup script
if [ -d $PKG_PREFIX/etc/rc.d ]; then
(
echo "#!/bin/sh"; echo "[ -d $PKG_PREFIX/firebird/lib ] && /sbin/ldconfig -m $PKG_PREFIX/firebird/lib"
) > $PKG_PREFIX/etc/rc.d/000.firebird.sh
chmod a=rx $PKG_PREFIX/etc/rc.d/000.firebird.sh
fi
;;
esac

View File

@ -2,7 +2,7 @@
---------------------------------------------------------
Firebird is now installed. A symbolic link from
/usr/interbase -> %%PREFIX%%/firebird may be needed
for compatibility with existing programs that use
for compatibility with existing programs that use
Firebird.
The symbolic link can be created with:

View File

@ -1,11 +1,14 @@
etc/rc.d/000.firebird.sh
firebird/README
firebird/RELNOTES
firebird/UDF/fbudf.so
firebird/UDF/fbudf.sql
firebird/UDF/ib_udf.so
firebird/UDF/ib_udf.sql
firebird/WhatsNew
firebird/aliases.conf
@unexec if cmp -s %D/firebird/aliases.conf %D/firebird/aliases.conf.sample; then rm -f %D/firebird/aliases.conf; fi
firebird/aliases.conf.sample
@exec [ -f %B/aliases.conf ] || cp %B/%f %B/aliases.conf
firebird/bin/fb_inet_server
firebird/bin/fb_lock_mgr
firebird/bin/fb_lock_print
@ -86,8 +89,10 @@ firebird/examples/stat8.e
firebird/examples/stat9.e
firebird/examples/udf.sql
firebird/examples/udflib.c
firebird/firebird.conf
@unexec rm -f %D/firebird/firebird.log
@unexec if cmp -s %D/firebird/firebird.conf %D/firebird/firebird.conf.sample; then rm -f %D/firebird/firebird.conf; fi
firebird/firebird.conf.sample
@exec [ -f %B/firebird.conf ] || cp %B/%f %B/firebird.conf
@unexec [ -s %D/firebird/firebird.log ] || rm -f %D/firebird/firebird.log
firebird/firebird.msg
firebird/help/help.fdb
firebird/include/blr.h
@ -109,7 +114,9 @@ firebird/lib/libfbembed.so.1.5.0
firebird/lib/libgds.so
firebird/lib/libgds.so.1
firebird/lib/libib_util.so
firebird/security.fdb
@unexec if cmp -s %D/firebird/security.fdb %D/firebird/security.fdb.sample; then rm -f %D/firebird/security.fdb; fi
firebird/security.fdb.sample
@exec [ -f %B/security.fdb ] || cp %B/%f %B/security.fdb
@dirrm firebird/UDF
@dirrm firebird/bin
@dirrm firebird/doc/sql.extensions

View File

@ -6,11 +6,12 @@
#
PORTNAME= firebird
PORTVERSION= 1.5.r7
PORTVERSION= 1.5.r8
CATEGORIES= databases
MASTER_SITES= http://www.aims.net.au/chris/firebird/
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} \
http://www.aims.net.au/chris/firebird/
MASTER_SITE_SUBDIR=firebird
DISTNAME= firebird15-rc7
DISTNAME= firebird15-rc8
MAINTAINER= chris@e-easy.com.au
COMMENT= The open-source InterBase(tm) 6.0 spin-off (Classic version)
@ -26,7 +27,6 @@ USE_GCC= 3.3
LD= gcc
CONFLICTS= firebird-devel-*
NOPACKAGE= pkg-install not finished
WRKSRC= ${WRKDIR}/firebird15
INSTALLS_SHLIB= yes
@ -57,13 +57,21 @@ patch-libtool:
@${DO_NADA}
do-configure:
@(cd ${WRKSRC} && ${ENV} CC=${CC} CXX=${CXX} MAKE=${GMAKE} ./autogen.sh --prefix=${PREFIX}/firebird --with-lock-manager --with-editline)
@(cd ${WRKSRC} && ${SETENV} CC=${CC} CXX=${CXX} MAKE=${GMAKE} \
LIBTOOL=libtool13 LIBTOOLIZE=libtoolize13 ./autogen.sh \
--prefix=${PREFIX}/firebird --with-lock-manager --with-editline)
do-build:
@( \
${SED} 's|%%PREFIX%%|${PREFIX}|g' ${MSG_FILE} > ${PKGMESSAGE}; \
cd ${WRKSRC}; \
${ENV} CC=${CC} CXX=${CXX} ${GMAKE} all; \
${SETENV} CC=${CC} CXX=${CXX} ${GMAKE} all; \
)
post-install:
@( \
${INSTALL_DATA} ${FILESDIR}/RELNOTES ${PREFIX}/firebird; \
${CAT} ${PKGMESSAGE}; \
)
.include <bsd.port.post.mk>

View File

@ -1 +1 @@
MD5 (firebird15-rc7.tar.bz2) = f6a3a4afa1f2fdfde9a4348a618c4896
MD5 (firebird15-rc8.tar.bz2) = cb775b56c0b3067994ec78f15a9e757d

View File

@ -1,22 +1,8 @@
Firebird 1.0.2 FreeBSD Release Notes 05-Jan-2003
Firebird 1.5.0 FreeBSD Release Notes 11-Jan-2004
--------------------------------------
FB-T6.2.908 Firebird Final Release
FB-V1.5.0.4201 Firebird 1.5 Release Candidate 8
Welcome to the FreeBSD Firebird port! Users should note that there
was a package called `firebird-1.0.tgz' released in mid-August
2000. Unfortunately, that package was released before Firebird
version numbering conventions were established, so although the
version number would suggest that it is newer than the current
release, it is certainly not. Users of the August 1.0 package
should upgrade to 0.9_4 or later, which has fixed many bugs and
security problems, including the recently-discovered back door.
Firebird originally required a running copy of Firebird (or
InterBase) in order to build itself. This port uses a boot kit to
overcome that, so that it does not require itself to build.
Unfortunately, the side effect of this is that if you have a lock
manager running from an already-installed version of Firebird or
InterBase, this port will not build.
Welcome to the FreeBSD Firebird port!
Firebird is installed SUID with owner and group `firebird'.
This does affect where you can and cannot create databases when
@ -30,12 +16,12 @@ etc.) gives you the message "semget failed". One surefire way to
do this is to build and install the port. :) If this happens,
make sure that the lock manager is not running and its semaphores
have been removed. The former can be accomplished with 'ps ax
|grep gds' and 'kill'; the latter with 'ipcs -s' and 'ipcrm -s'.
|grep fb' and 'kill'; the latter with 'ipcs -s' and 'ipcrm -s'.
For example, after building and installing the port, you will
probably go through something like this:
# isql /usr/interbase/isc4.gdb
# isql /usr/local/firebird/security.fdb
Statement failed, SQLCODE = -902
operating system directive semget failed
@ -62,14 +48,47 @@ try stopping PostgreSQL:
/usr/local/etc/rc.d/pgsql.sh stop
and see if that helps.
and see if that helps. Alternatively, increase the value of SEMMNS
by 48 in your kernel configuration file. This can be found by getting
the current value with 'sysctl -a | grep semmns'. You can either add
this to your kernel config, or add the following line to /boot/loader.conf:
Super Server support has recently been added. However, there is
anecdotal evidence that it is not as reliable nor as scalable as the
Classic Server version. For this reason, I have not included a
start up method for Super Server. For those that are interested,
traversing to /usr/interbase/misc will find the startup scripts for
the various flavours of Linux.
kern.ipc.semmns=X
where is is the current value plus 48. If this doesn't resolve the issue,
try adding 48 again.
Please note that RC8 has changed the libgds.so symlink to point to
libfbembed.so. This has been done to resolve compatability issues with
older versions of Firebird. The FreeBSD port of RC7 had libgds.so
pointing to libfbclient.so. libfbclient.so is a remote access-only
shared library with threaded support, which requires target applications
to link with a threaded library such as libc_r.so, libkse.so or libthr.so.
Super Server support in Firebird 1.5 for FreeBSD is not currently
available due to the Firebird code using POSIX threads APIs not available
in FreeBSD 4.x or not yet complete in FreeBSD 5.x. This issue will become
more important once the scalability issues of Super Server have been
resolved.
This installation has already inserted the necessary line to
/etc/inetd.conf so that you can connect to Firebird across the network.
However you may need to add the remote host to /etc/hosts.equiv. For
example, to allow the local machine to make connections to Firebird
using TCP, the following command needs running:
echo localhost >> /etc/hosts.equiv
Please note that adding machines to /etc/hosts.equiv can reduce the
security of your system. If in doubt, try connecting to Firebird with
a username and password already defined in security.fdb. For example:
gsec
> add myuser -pass mypass
> quit
isql -u myuser -p mypass localhost:/usr/local/firebird/examples/employee.fdb
This should reduce the need for hosts defined in /etc/hosts.equiv.
Complete documentation for InterBase(tm) is available (free of
charge) from http://www.interbase.com/ in PDF format. While
@ -82,5 +101,8 @@ and InterBase can be found at the following:
http://www.interbase2000.org/
http://www.firebirdsql.org/
Please also see the doc directory in the Firebird package for
documentation specific to Firebird.
Chris Knight
<chris@aims.com.au>
<chris@aims.net.au>

View File

@ -1,26 +0,0 @@
--- autogen.sh.orig Fri Apr 18 04:41:28 2003
+++ autogen.sh Sun Aug 24 18:39:45 2003
@@ -20,7 +20,7 @@
;;
esac
-VER=`libtool --version|grep ' libtool)'|sed 's/.*) \([0-9][0-9.]*\) .*/\1/'`
+VER=`libtool13 --version|grep ' libtool)'|sed 's/.*) \([0-9][0-9.]*\) .*/\1/'`
case "$VER" in
0* | 1\.[0-2] | 1\.[0-2][a-z]* | \
1\.3\.[0-2] | 1\.3\.[0-2][a-z]* )
@@ -50,12 +50,12 @@
# Generate configure from configure.in
echo "Running libtoolize ..."
-LIBTOOL_M4=`libtoolize --copy --force --dry-run|grep 'You should add the contents of'|sed "s,^[^/]*\(/[^']*\).*$,\1,"`
+LIBTOOL_M4=`libtoolize13 --copy --force --dry-run|grep 'You should add the contents of'|sed "s,^[^/]*\(/[^']*\).*$,\1,"`
if test "x$LIBTOOL_M4" != "x"; then
rm -f aclocal.m4
cp $LIBTOOL_M4 aclocal.m4
fi
-libtoolize --copy --force || exit 1
+libtoolize13 --copy --force || exit 1
echo "Running autoconf ..."
autoconf || exit 1

View File

@ -1,49 +0,0 @@
--- src/common/classes/locks.h.orig Sun Aug 17 14:56:47 2003
+++ src/common/classes/locks.h Wed Nov 12 11:12:25 2003
@@ -77,7 +77,7 @@
/* Process-local spinlock. Used to manage memory heaps in threaded environment. */
// Pthreads version of the class
-#ifndef SOLARIS
+#if !defined(SOLARIS) && !defined(DARWIN) && !defined(FREEBSD)
class Spinlock {
private:
pthread_spinlock_t spinlock;
@@ -100,6 +100,7 @@
}
};
#else
+#ifdef SOLARIS
// Who knows why Solaris 2.6 have not THIS funny spins?
//The next code is not comlpeted but let me compile //Konstantin
class Spinlock {
@@ -123,6 +124,29 @@
system_call_failed::raise();
}
};
+#else // DARWIN and FREEBSD
+class Spinlock {
+private:
+ pthread_mutex_t mlock;
+public:
+ Spinlock() {
+ if (pthread_mutex_init(&mlock, 0))
+ system_call_failed::raise();
+ }
+ ~Spinlock() {
+ if (pthread_mutex_destroy(&mlock))
+ system_call_failed::raise();
+ }
+ void enter() {
+ if (pthread_mutex_lock(&mlock))
+ system_call_failed::raise();
+ }
+ void leave() {
+ if (pthread_mutex_unlock(&mlock))
+ system_call_failed::raise();
+ }
+};
+#endif
#endif
#endif

View File

@ -0,0 +1,92 @@
--- src/install/arch-specific/freebsd/install.sh.in.orig Thu Nov 6 23:23:29 2003
+++ src/install/arch-specific/freebsd/install.sh.in Tue Jan 13 17:36:16 2004
@@ -59,7 +59,7 @@
if [ -d $InstallPrefix/firebird.old ]; then
rm -rf $InstallPrefix/firebird.old
fi
- mv $InstallFirebirdPrefix $InstallPrefix/firebird.old
+ cp -Rp $InstallFirebirdPrefix $InstallPrefix/firebird.old
fi
if [ `id -u` -ne 0 ]; then
@@ -162,7 +162,7 @@
#cp -r $BuiltFBDir/doc $DestDir
cp $BuiltFBDir/firebird.msg $DestDir/firebird.msg
-cp $BuiltFBDir/security.fdb $DestDir/security.fdb
+cp $BuiltFBDir/security.fdb $DestDir/security.fdb.sample
#cp $BuiltFBDir/include/gds.f $DestDir/include
@@ -190,19 +190,19 @@
cp $BuildRootDir/doc/WhatsNew $DestDir/WhatsNew
cp $BuildRootDir/doc/README.user $DestDir/README
-cp $BuiltFBDir/misc/firebird.conf $DestDir/firebird.conf
+cp $BuiltFBDir/misc/firebird.conf $DestDir/firebird.conf.sample
-echo "#" >> $DestDir/aliases.conf
-echo "# List of known database aliases" >> $DestDir/aliases.conf
-echo "# ------------------------------" >> $DestDir/aliases.conf
-echo "#" >> $DestDir/aliases.conf
-echo "# Examples:" >> $DestDir/aliases.conf
-echo "#" >> $DestDir/aliases.conf
-echo "# employee = /$FBRootDir/examples/employee.fdb" >> $DestDir/aliases.conf
-echo "#" >> $DestDir/aliases.conf
+echo "#" >> $DestDir/aliases.conf.sample
+echo "# List of known database aliases" >> $DestDir/aliases.conf.sample
+echo "# ------------------------------" >> $DestDir/aliases.conf.sample
+echo "#" >> $DestDir/aliases.conf.sample
+echo "# Examples:" >> $DestDir/aliases.conf.sample
+echo "#" >> $DestDir/aliases.conf.sample
+echo "# employee = $DestDir/examples/employee.fdb" >> $DestDir/aliases.conf.sample
+echo "#" >> $DestDir/aliases.conf.sample
-chown -R firebird:firebird $InstallFirebirdPrefix
+chown -R $fbUID:$fbGID $InstallFirebirdPrefix
chmod -R o= $InstallFirebirdPrefix
# Now fix up the mess.
@@ -235,8 +235,8 @@
chmod -R a=rx $InstallFirebirdPrefix/lib/*
cd $InstallFirebirdPrefix/lib
-ln -sf libfbclient.so libgds.so
-ln -sf libfbclient.so.1 libgds.so.1
+ln -sf libfbembed.so libgds.so
+ln -sf libfbembed.so.1 libgds.so.1
cd $InstallFirebirdPrefix/bin
for i in `ls`
@@ -265,19 +265,25 @@
FileName=$i.`hostname`
touch $FileName
chmod ug=rw,o= $FileName
- chown firebird:firebird $FileName
+ chown $fbUID:$fbGID $FileName
done
-touch firebird.log aliases.conf firebird.conf
-chown firebird:firebird firebird.log
+touch firebird.log
+chown $fbUID:$fbGID firebird.log
chmod ug=rw,o= firebird.log
-chmod a=r firebird.msg aliases.conf firebird.conf README
+chmod a=r firebird.msg README
+chown root:wheel *.sample
+chmod ug=r,o= *.sample
# make databases writable by firebird only
# local database connections are not a good idea
chmod ug=rw,o= examples/*.fdb
chmod ug=rw,o= help/*.fdb
-chmod ug=rw,o= security.fdb
+
+# install the samples if they don't exist
+[ -f aliases.conf ] || install -o $fbUID -g $fbGID -m 440 aliases.conf.sample aliases.conf
+[ -f firebird.conf ] || install -o $fbUID -g $fbGID -m 440 firebird.conf.sample firebird.conf
+[ -f security.fdb ] || install -o $fbUID -g $fbGID -m 660 security.fdb.sample security.fdb
# remove any existing gds service
cp /etc/services /etc/services.old

View File

@ -6,9 +6,6 @@ some very big players use it worldwide. Inprise has open-sourced
InterBase 6.0, and a lively bunch of folks has charged themselves
with seeing that it lives on through the Firebird project.
Note that as of Firebird 0.9_4, the locksmith back door has
been closed.
For more information on Firebird and InterBase, see:
WWW: http://sourceforge.net/projects/firebird/
@ -16,7 +13,3 @@ WWW: http://www.ibphoenix.com/
WWW: http://www.interbase2000.org/
WWW: http://www.interbase.com/
WWW: http://www.firebirdsql.org/
For more information on the locksmith back door, see:
WWW: https://www.kb.cert.org/vuls/id/247371

View File

@ -0,0 +1,171 @@
#!/bin/sh
# $FreeBSD$
PATH=/bin:/usr/bin:/usr/sbin
case $2 in
PRE-INSTALL)
if [ -d $PKG_PREFIX/firebird ]; then
if [ -d $PKG_PREFIX/firebird.old ]; then
rm -rf $PKG_PREFIX/firebird.old
fi
cp -Rp $PKG_PREFIX/firebird $PKG_PREFIX/firebird.old
fi
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 /bin/sh \
-d $PKG_PREFIX/firebird -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)
chown -R firebird:firebird $PKG_PREFIX/firebird
chmod -R o= $PKG_PREFIX/firebird
# Now fix up the mess.
# fix up directories
for i in `find $PKG_PREFIX/firebird -print`
do
FileName=$i
if [ -d $FileName ]; then
chmod u=rwx,go=rx $FileName
fi
done
# make lib ldconfig-compatible
chown -R root:wheel $PKG_PREFIX/firebird/lib
# make the following read-only
chmod -R a=r $PKG_PREFIX/firebird/WhatsNew
for i in `find $PKG_PREFIX/firebird/doc -type f -print`
do
chmod a=r $i
done
chmod -R a=r $PKG_PREFIX/firebird/examples/*
chmod -R a=r $PKG_PREFIX/firebird/include/*
chmod -R a=r $PKG_PREFIX/firebird/intl/*
#chmod -R a=r $PKG_PREFIX/firebird/misc/*
chmod -R ug=rx,o= $PKG_PREFIX/firebird/UDF/*
chmod -R ug=rx,o= $PKG_PREFIX/firebird/intl/fbintl
chmod -R a=rx $PKG_PREFIX/firebird/lib/*
cd $PKG_PREFIX/firebird/lib
ln -sf libfbembed.so libgds.so
ln -sf libfbembed.so.1 libgds.so.1
cd $PKG_PREFIX/firebird/bin
for i in `ls`
do
chmod ug=rx,o= $i
done
chmod a=rx isql qli
# SUID is needed for running server programs.
for i in fb_lock_mgr gds_drop fb_inet_server
do
if [ -f $i ]; then
chmod ug=rx,o= $i
chmod ug+s $i
fi
done
cd $PKG_PREFIX/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
chmod ug=rw,o= firebird.log
chmod a=r firebird.msg README
chown root:wheel *.sample
chmod ug=r,o= *.sample
# make databases writable by firebird only
# local database connections are not a good idea
chmod ug=rw,o= examples/*.fdb
chmod ug=rw,o= help/*.fdb
chmod ug=rw,o= security.fdb
chmod 440 aliases.conf firebird.conf
chmod 660 security.fdb
# remove any existing gds service
cp /etc/services /etc/services.old
cp /etc/inetd.conf /etc/inetd.conf.old
cat /etc/services |grep -v gds_db >/etc/services.new
cat /etc/inetd.conf |grep -v gds_db >/etc/inetd.conf.new
mv /etc/services.new /etc/services
mv /etc/inetd.conf.new /etc/inetd.conf
# add the gds service and restart inetd
cat >>/etc/services <<EOF
gds_db 3050/tcp #InterBase Database Remote Protocol
EOF
cat >>/etc/inetd.conf <<EOF
gds_db stream tcp nowait firebird $PKG_PREFIX/firebird/bin/fb_inet_server fb_inet_server
EOF
if [ -f /var/run/inetd.pid ]; then
kill -HUP `cat /var/run/inetd.pid`
fi
# shared lib startup script
if [ -d $PKG_PREFIX/etc/rc.d ]; then
(
echo "#!/bin/sh"; echo "[ -d $PKG_PREFIX/firebird/lib ] && /sbin/ldconfig -m $PKG_PREFIX/firebird/lib"
) > $PKG_PREFIX/etc/rc.d/000.firebird.sh
chmod a=rx $PKG_PREFIX/etc/rc.d/000.firebird.sh
fi
;;
esac

View File

@ -2,7 +2,7 @@
---------------------------------------------------------
Firebird is now installed. A symbolic link from
/usr/interbase -> %%PREFIX%%/firebird may be needed
for compatibility with existing programs that use
for compatibility with existing programs that use
Firebird.
The symbolic link can be created with:

View File

@ -1,11 +1,14 @@
etc/rc.d/000.firebird.sh
firebird/README
firebird/RELNOTES
firebird/UDF/fbudf.so
firebird/UDF/fbudf.sql
firebird/UDF/ib_udf.so
firebird/UDF/ib_udf.sql
firebird/WhatsNew
firebird/aliases.conf
@unexec if cmp -s %D/firebird/aliases.conf %D/firebird/aliases.conf.sample; then rm -f %D/firebird/aliases.conf; fi
firebird/aliases.conf.sample
@exec [ -f %B/aliases.conf ] || cp %B/%f %B/aliases.conf
firebird/bin/fb_inet_server
firebird/bin/fb_lock_mgr
firebird/bin/fb_lock_print
@ -86,8 +89,10 @@ firebird/examples/stat8.e
firebird/examples/stat9.e
firebird/examples/udf.sql
firebird/examples/udflib.c
firebird/firebird.conf
@unexec rm -f %D/firebird/firebird.log
@unexec if cmp -s %D/firebird/firebird.conf %D/firebird/firebird.conf.sample; then rm -f %D/firebird/firebird.conf; fi
firebird/firebird.conf.sample
@exec [ -f %B/firebird.conf ] || cp %B/%f %B/firebird.conf
@unexec [ -s %D/firebird/firebird.log ] || rm -f %D/firebird/firebird.log
firebird/firebird.msg
firebird/help/help.fdb
firebird/include/blr.h
@ -109,7 +114,9 @@ firebird/lib/libfbembed.so.1.5.0
firebird/lib/libgds.so
firebird/lib/libgds.so.1
firebird/lib/libib_util.so
firebird/security.fdb
@unexec if cmp -s %D/firebird/security.fdb %D/firebird/security.fdb.sample; then rm -f %D/firebird/security.fdb; fi
firebird/security.fdb.sample
@exec [ -f %B/security.fdb ] || cp %B/%f %B/security.fdb
@dirrm firebird/UDF
@dirrm firebird/bin
@dirrm firebird/doc/sql.extensions