8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-23 15:23:02 +01:00
firebird-mirror/builds/install/arch-specific/darwin/changeMultiConnectMode
alexpeshkoff 88b8a40a04 1. Cleaned up most of SUPERSERVER usage.
SUPERSERVER has 4 different meanings in our code:
- this is milticlient server (replaced with Config::getMultiClientServer())
- use shared data cache (replaced with Config::getSharedCache())
- use shared metadata cache (replaced with macro SHARED_METADATA_CACHE)
- database are NOT shared between processes (replaced with getSharedDatabase())

2. Use fb_smp_server as both superclassic and classic binary on posix
(xinetd autodecection is done).

3. Small posix build cleanup.
2010-04-15 14:40:27 +00:00

173 lines
5.1 KiB
Bash

#!/bin/sh
#
# The contents of this file are subject to the Initial
# Developer's Public License Version 1.0 (the "License");
# you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
# http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_idpl.
#
# Software distributed under the License is distributed AS IS,
# WITHOUT WARRANTY OF ANY KIND, either express or implied.
# See the License for the specific language governing rights
# and limitations under the License.
#
# The Original Code was created by Paul Beach
# based on the original Posix script created by Alex Peshkov
# for the Firebird Open Source RDBMS project.
#
# Copyright (c) 2009 Paul Beach <pbeach@ibphoenix.com>
# Alex Peshkov <peshkov@mail.ru>
# and all contributors signed below.
#
# All Rights Reserved.
# Contributor(s): ______________________________________.
#
FB_FW=/Library/Frameworks/Firebird.framework/
FB_RES=@prefix@/Versions/A/Resources
cat <<EOF
There are now two ways to support multiple connections
to the Firebird Classic Server.
multiprocess (traditional and default) and multithreaded.
This script allows you to switch between the two modes.
Choose process for normal Classic, and thread for SuperClassic.
EOF
read -p "Option: Multi-(process|thread) " multianswer
case $multianswer in
process)
# Check mode...
if [ ! -f "$FB_FW/Versions/A/Resources/.SuperServer" ]; then
echo "You are already in Classic mode"
else
# Check if SuperClassic is running
echo "Check if SuperClassic is running"
if ps -axe | grep "fb_smp_server" | grep -v grep
then
echo "An instance of the Firebird SuperClassic Server seems to be running."
echo "Please exit all Firebird applications and shut down the server before continuing."
exit 1
fi
# Remove SuperClassic
echo "Removing SuperClassic"
rm -fr /Library/StartupItems/Firebird
rm $FB_FW/Versions/A/Resources/.SuperServer
# Install and Start Classic
echo "Install and start Classic"
#inetd
if [ -f /var/run/inetd.pid -a -d /etc/inetd.d ]; then
if [ -f /etc/inetd.conf ]; then
echo "gds_db stream tcp nowait root $FB_FW/Resources/bin/fb_smp_server fb_smp_server" > /etc/.fb.inetd.conf.entry
cat /etc/inetd.conf /etc/.fb.inetd.conf.entry > /etc/.firebird.temp.install.inetd.conf
mv /etc/.firebird.temp.install.inetd.conf /etc/inetd.conf
rm -f /etc/.fb.inetd.conf.entry
HUPNEEDED='y'
fi
fi
#xinetd
if [ -f /etc/xinet.d ]; then
cat > /etc/xinetd.d/firebird <<EOF
service gds_db
{
disable = no
socket_type = stream
wait = no
user = firebird
EOF
echo "server = $FB_FW/Resources/bin/fb_smp_server" >> /etc/xinetd.d/firebird
cat >> /etc/xinetd.d/firebird << EOF
groups = yes
}
EOF
HUPNEEDED='y'
fi
#launchd
cp $FB_FW/Resources/org.firebird.gds.plist /Library/LaunchDaemons/org.firebird.gds.plist
launchctl load /Library/LaunchDaemons/org.firebird.gds.plist
# Tell inetd/xinetd to reload their configuration files.
echo "hupneeded"
if [ "$HUPNEEDED" = 'y' ]; then
if [ -f /var/run/inetd.pid ]; then
kill -HUP `cat /var/run/inetd.pid`
fi
if [ -f /var/run/xinetd.pid ]; then
kill -HUP `cat /var/run/xinetd.pid`
fi
fi
fi
;;
thread)
if [ -f "$FB_FW/Versions/A/Resources/.SuperServer" ]; then
echo "You are already in SuperClassic mode"
else
# Check if Classic is running
echo "Check if Classic is running"
if ps -axe | grep "fb_smp_server" | grep -v grep
then
echo "An instance of the Firebird Classic Server seems to be running."
echo "Please exit all Firebird applications before continuing."
fi
# Remove the Classic installation
echo "Removing the Classic installation"
#inetd (old)
echo "inetd"
if [ -f /etc/inetd.conf ]; then
grep -s gds_db /etc/inetd.conf > /dev/null 2>&1
if test $? != 0 ; then
cat /etc/inetd.conf | grep -v gds_db > /etc/.firebird.temp.install.inetd.conf
mv /etc/.firebird.temp.install.inetd.conf /etc/inetd.conf
HUPNEEDED='y'
fi
fi
#xinetd (pre 10.5)
echo "xinetd"
if [ -f /etc/xinetd.d/firebird ]; then
rm /etc/xinetd.d/firebird
HUPNEEDED='y'
fi
# Tell inetd/xinetd to reload their configuration files.
echo "hupneeded"
if [ "$HUPNEEDED" = 'y' ]; then
if [ -f /var/run/inetd.pid ]; then
kill -HUP `cat /var/run/inetd.pid`
fi
if [ -f /var/run/xinetd.pid ]; then
kill -HUP `cat /var/run/xinetd.pid`
fi
fi
#launchd
echo "launchd"
if [ -f /Library/LaunchDaemons/org.firebird.gds.plist ]; then
launchctl unload /Library/LaunchDaemons/org.firebird.gds.plist
rm /Library/LaunchDaemons/org.firebird.gds.plist
fi
# Install and start SuperClassic
echo "install and start SuperClassic"
touch $FB_FW/Versions/A/Resources/.SuperServer
cp -r $FB_FW/Resources/FirebirdSS /Library/StartupItems/Firebird
if [ -f "$FB_FW/Versions/A/Resources/.SuperServer" ]; then
chmod u+xg+xo+x /Library/StartupItems/Firebird/Firebird
/Library/StartupItems/Firebird/Firebird start
fi
fi
;;
*)
echo "unknown option $multianswer chosen"
exit 1
;;
esac