mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-29 03:23:03 +01:00
9ed0e28b09
While MacOS people seems to be ok with fixed locations for applications and libraries, this complicates a lot the (post) build process, needing to change each id and rpaths in a very error prone process. Relocatable binaries makes this a lot easier, but unfortunately "restricted" (chmod +s, like firebird executable) programs cannot use @loader_path or @executable_path in its rpath. So the solution has to make internal libraries relocatable and make rpath of firebird fixed. Also, as the ecosystem seems to use fixed path, the id of fbclient.dylib has set to its fixed path. Also MacOS post build makefile has adjusted to allow creation of packages for the debug build. The MacOS build could still be improved with some scripts to build ICU (instead of done directly in the CI scripts, but I leave that for now) and copies its files to our lib path. However situation seems to be better than before in relation to ICU and TomMath. Note: Linux build is not working in GitHub Actions. It segfaults when running (exiting) utilities. I had this problem lot's of time in the past, maybe it's not completely fixed in v3.
161 lines
5.1 KiB
Bash
161 lines
5.1 KiB
Bash
#!/bin/sh
|
|
#
|
|
# Script args:
|
|
# $0: full path to script
|
|
# $1: full path to top level package dir, no trailing slash
|
|
# $2: full path to installed location
|
|
# $3: ????? Path to install Volume????
|
|
# $4: ?????
|
|
|
|
# MacOS Notes
|
|
# 10.7 Lion
|
|
# 10.8 Mountain Lion
|
|
# 10.9 Mavericks - Clang not gcc
|
|
# 10.10 Yosemite - No longer uses StartupItems
|
|
# 10.11 El Capitan - Old installer deprecated -pkgbuild
|
|
|
|
OSVERSION=`sw_vers -productVersion | awk -F '.' '{print $2}'`
|
|
echo "OSVersion =" $OSVERSION
|
|
|
|
FB_FW="/Library/Frameworks/Firebird.framework"
|
|
FB_RES="$FB_FW/Versions/A/Resources"
|
|
|
|
# Now create the firebird group
|
|
echo "Create the Firebird group 10.7+"
|
|
if dscl localhost -read /Local/Default/Groups/firebird 2&>1 /dev/null; then
|
|
echo "Group Found"
|
|
else
|
|
gid=501
|
|
dscl localhost -search /Local/Default/Groups PrimaryGroupID $gid | grep $gid
|
|
while [ "$?" = "0" ]; do
|
|
let "gid =$gid+1"
|
|
dscl localhost -search /Local/Default/Groups PrimaryGroupID $gid | grep $gid
|
|
done
|
|
dscl localhost -create /Local/Default/Groups/firebird
|
|
dscl localhost -create /Local/Default/Groups/firebird Password "*"
|
|
dscl localhost -create /Local/Default/Groups/firebird PrimaryGroupID $gid
|
|
dscl localhost -create /Local/Default/Groups/firebird RecordName firebird
|
|
fi
|
|
|
|
|
|
# Now create the firebird user
|
|
echo "Create the Firebird user 10.7+"
|
|
if dscl localhost -read /Local/Default/Users/firebird 2&>1 /dev/null; then
|
|
echo "User Found"
|
|
else
|
|
ugid=501
|
|
dscl localhost -search /Local/Default/Users UniqueID $ugid | grep $ugid
|
|
while [ "$?" = "0" ]; do
|
|
let "ugid=$ugid+1"
|
|
dscl localhost -search /Local/Default/Users UniqueID $ugid | grep $ugid
|
|
done
|
|
echo "create the firebird user 10.7+"
|
|
dscl localhost -create /Local/Default/Users/firebird
|
|
dscl localhost -create /Local/Default/Users/firebird NFSHomeDirectory /Library/Frameworks/firebird.framework
|
|
dscl localhost -create /Local/Default/Users/firebird Password "*"
|
|
dscl localhost -create /Local/Default/Users/firebird UserShell /bin/tcsh
|
|
dscl localhost -create /Local/Default/Users/firebird RecordName firebird
|
|
dscl localhost -create /Local/Default/Users/firebird PrimaryGroupID $gid
|
|
dscl localhost -create /Local/Default/Users/firebird UniqueID $ugid
|
|
dscl localhost -create /Local/Default/Users/firebird RealName "Firebird Database"
|
|
fi
|
|
|
|
# Shutdown any existing servers
|
|
echo "Shutdown any existing servers"
|
|
if [ -x /sbin/service ]; then
|
|
service firebird stop
|
|
fi
|
|
|
|
# Install the framework
|
|
echo "Install the framework"
|
|
chown -R firebird:firebird "$FB_FW"
|
|
|
|
# set the permissions correctly
|
|
echo "Set the permissions correctly"
|
|
chmod 777 "$FB_FW/Resources/"
|
|
chmod 660 "$FB_FW/Resources/security3.fdb"
|
|
chmod 444 "$FB_FW/Resources/help/help.fdb"
|
|
chmod a+s "$FB_FW/Resources/bin/firebird"
|
|
|
|
# Remove all older traces of Classic first
|
|
echo "Remove all older traces of Classic first"
|
|
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
|
|
|
|
if [ -f /etc/xinetd.d/firebird ]; then
|
|
rm /etc/xinetd.d/firebird
|
|
HUPNEEDED='y'
|
|
fi
|
|
|
|
# Make sure hosts.equiv files are set correctly
|
|
echo "Make sure hosts.equiv files are set correctly"
|
|
|
|
cp /etc/hosts.equiv /etc/hosts.equiv.fbsave
|
|
if grep -x "localhost" /etc/hosts.equiv > /dev/null; then
|
|
echo -n
|
|
else
|
|
echo "localhost" >> /etc/hosts.equiv
|
|
fi
|
|
if grep -x "localhost.localdomain" /etc/hosts.equiv > /dev/null; then
|
|
echo -n
|
|
else
|
|
echo "localhost.localdomain" >> /etc/hosts.equiv
|
|
fi
|
|
|
|
# Install the saved security2 database, if any
|
|
echo "Install the saved security2 database"
|
|
if test -f /tmp/fb-security-database-update2fdb; then
|
|
mv -f /tmp/fb-security-database-update2.fdb "$FB_RES/security2.fdb"
|
|
fi
|
|
# Install the saved security database, if any
|
|
echo "Install the saved security database"
|
|
if test -f /tmp/fb-security-database-update3.fdb; then
|
|
mv -f /tmp/fb-security-database-update3.fdb "$FB_RES/security3.fdb"
|
|
rm -f /tmp/fb-security-database-update3.fdb
|
|
fi
|
|
|
|
#Install the saved aliases.conf, if any
|
|
echo "Install the saved aliases.conf file"
|
|
if test -f /tmp/fb-aliases.conf; then
|
|
mv -f /tmp/fb-aliases.conf "$FB_RES/English.lproj/var/aliases.conf"
|
|
fi
|
|
|
|
#Install the saved databases.conf, if any
|
|
echo "Install the saved databases.conf file"
|
|
if test -f /tmp/fb-databases.conf; then
|
|
mv -f /tmp/fb-databases.conf "$FB_RES/databases.conf"
|
|
fi
|
|
|
|
#Install the saved UDF libraries, if any
|
|
echo "Install the saved UDF libraries"
|
|
cp /tmp/UDF_Save/*.* $FB_RES/UDF/
|
|
|
|
rm -fr /tmp/UDF_save
|
|
|
|
# Test for saved security database
|
|
if test -f "$FB_FW/Versions/A/Resources/security2.fdb"; then
|
|
echo "Legacy 2.x Security database has been preserved"
|
|
fi
|
|
|
|
if test -f "$FB_FW/Versions/A/Resources/security3.fdb"; then
|
|
echo "Security database has been preserved"
|
|
fi
|
|
|
|
# Initilise the security database with default user
|
|
echo "Add SYSDBA and password"
|
|
$FB_FW/Versions/A/Resources/bin/gsec -add sysdba -pw masterkey -user sysdba
|
|
rm -fr /tmp/firebird
|
|
|
|
# And last but not least, start the Server
|
|
echo "Start the Server via launchctl"
|
|
|
|
cp $FB_FW/Resources/org.firebird.gds.plist /Library/LaunchDaemons/org.firebird.gds.plist
|
|
launchctl load /Library/LaunchDaemons/org.firebird.gds.plist
|
|
|