8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-29 03:23:03 +01:00
firebird-mirror/builds/install/arch-specific/darwin/install-script
Adriano dos Santos Fernandes 9ed0e28b09 Add Travis MacOS build, GitHub Actions MacOS/Windows build and adjust MacOS build to be (almost) relocatable.
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.
2019-11-26 13:11:55 -03:00

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