diff --git a/builds/install/arch-specific/freebsd/freebsdLibrary.sh.in b/builds/install/arch-specific/freebsd/freebsdLibrary.sh.in new file mode 100644 index 0000000000..d35949b872 --- /dev/null +++ b/builds/install/arch-specific/freebsd/freebsdLibrary.sh.in @@ -0,0 +1,233 @@ +#!/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 Mark O'Donohue +# for the Firebird Open Source RDBMS project. +# +# Copyright (c) Mark O'Donohue +# and all contributors signed below. +# +# All Rights Reserved. +# Contributor(s): ______________________________________. +# Alex Peshkoff +# + +RunUser=firebird +export RunUser +RunGroup=firebird +export RunGroup +PidDir=/var/run/firebird +export PidDir + +#------------------------------------------------------------------------ +# Get correct options & misc. + +psOptions=aww +export psOptions +mktOptions=-q +export mktOptions +tarOptions=z +export tarOptions +tarExt=tar.gz +export tarExt + +#------------------------------------------------------------------------ +# Add new user and group + +addFirebirdUser() { + +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 @FB_CONFDIR@ -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 + +} + + +#------------------------------------------------------------------------ +# print location of init script + +getInitScriptLocation() { + if [ -f /etc/rc.d/init.d/*firebird* ] + then + echo -n /etc/rc.d/init.d/*firebird* + elif [ -f /etc/rc.d/*firebird* ] + then + echo -n /etc/rc.d/*firebird* + elif [ -f /etc/init.d/*firebird* ] + then + echo -n /etc/init.d/*firebird* + fi +} + + +#------------------------------------------------------------------------ +# stop super server if it is running + +stopSuperServerIfRunning() { + checkString=`ps -af | egrep "\b(fbserver|fbguard|fb_smp_server)\b" |grep -v grep` + + if [ ! -z "$checkString" ] + then + init_d=`getInitScriptLocation` + + if [ -x "$init_d" ] + then + i=1 + while [ $i -le 20 ] + do + $init_d stop + sleep 1 + checkString=`ps -eaf | egrep "\b(fbserver|fbguard|fb_smp_server)\b" |grep -v grep` + if [ -z "$checkString" ] + then + return + fi + i=$((i+1)) + done + fi + fi +} + +#------------------------------------------------------------------------ +# Generate new sysdba password - this routine is used only in the +# rpm file not in the install script. + +generateNewDBAPassword() { + # openssl generates random data. + openssl /dev/null 2&>/dev/null + if [ $? -eq 0 ] + then + # We generate 20 random chars, strip any '/''s and get the first 8 + NewPasswd=`openssl rand -base64 20 | tr -d '/' | cut -c1-8` + fi + + # mkpasswd is a bit of a hassle, but check to see if it's there + if [ -z "$NewPasswd" ] + then + if [ -f /usr/bin/mkpasswd ] + then + NewPasswd=`/usr/bin/mkpasswd -l 8` + fi + fi + + # On some systems the mkpasswd program doesn't appear and on others + # there is another mkpasswd which does a different operation. So if + # the specific one isn't available then keep the original password. + if [ -z "$NewPasswd" ] + then + NewPasswd="masterkey" + fi + + writeNewPassword $NewPasswd +} + +#------------------------------------------------------------------------ +# change init.d RunUser + +changeInitRunUser() { + NewUser=$1 + + InitFile=`getInitScriptLocation` + if [ -f "$InitFile" ] + then + editFile "$InitFile" FBRunUser "FBRunUser=$NewUser" + chmod u=rwx,g=rx,o= "$InitFile" + fi +} + + +#------------------------------------------------------------------------ +# installInitdScript +# Everbody stores this one in a seperate location, so there is a bit of +# running around to actually get it for each packager. +# Update rcX.d with Firebird initd entries +# initd script for SuSE >= 7.2 is a part of RPM package + +installInitdScript() { + Arch=$1 + if [ "$Arch" != super ]; then + return 0 + fi + +# dummy for a while + return 1 +} + + +#------------------------------------------------------------------------ +# start init.d service + +startService() { + Arch=$1 + if [ "$Arch" != super ]; then + return 0 + fi + + InitFile=`getInitScriptLocation` + if [ -f "$InitFile" ] + then + "$InitFile" start + + checkString=`ps -af | egrep "\b(fbserver|fb_smp_server)\b" |grep -v grep` + if [ -z "$checkString" ] + then + # server didn't start - possible reason bad shell /bin/false for user "firebird" + echo + echo Fixing firebird\'s shell to /bin/sh + echo + pw usermod firebird -s /bin/sh + "$InitFile" start + fi + fi +} + +#------------------------------------------------------------------------ +# If we have right systems remove the service autostart stuff. + +removeServiceAutostart() { + # dummy for a while + return 1 +} diff --git a/builds/install/arch-specific/freebsd/install.sh.in b/builds/install/arch-specific/freebsd/install.sh.in index 146415da81..bf9dea2ed9 100755 --- a/builds/install/arch-specific/freebsd/install.sh.in +++ b/builds/install/arch-specific/freebsd/install.sh.in @@ -1,38 +1,68 @@ #!/bin/sh # -# This library is part of the FirebirdSQL project +# 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. # -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# You may obtain a copy of the Licence at -# http://www.gnu.org/licences/lgpl.html +# 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. # -# As a special exception this file can also be included in modules -# with other source code as long as that source code has been -# released under an Open Source Initiative certificed licence. -# More information about OSI certification can be found at: -# http://www.opensource.org +# The Original Code was created by Mark O'Donohue +# for the Firebird Open Source RDBMS project. # -# This module is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public Licence for more details. -# -# This module was created by members of the firebird development -# team. All individual contributions remain the Copyright (C) of -# those individuals and all rights are reserved. Contributors to -# this file are either listed below or can be obtained from a CVS -# history command. -# -# Created by: Chris Knight -# -# Contributor(s): +# Copyright (c) Mark O'Donohue +# and Chris Knight +# and all contributors signed below. # +# All Rights Reserved. +# Contributor(s): ______________________________________. +# Alex Peshkoff # -# Install script for FirebirdSQL database engine +# Script to copy install files from the build/transport area + + +# This script builds an image of the installed system into +# the gen/buildroot directory. + +if [ "`whoami`" != "root" ]; then + echo 'You must be root to install' + exit 1 +fi + +# Making an assumption that this program is being run in the gen directory +BuildRootDir=.. +BuiltFBDir=./firebird # Where the just build fb exists. +TargetDir= # Install in real FS +SecurityDatabase=security2.fdb + + +#------------------------------------------------------------------------ +# addLibs +# Add required libraries in the beginning of script. +# Place it to target directory. + +addLibs() { + libSdir=$1 + libScript=$2 + libTdir=$3 + libTarget=$libTdir/$libScript + + rm -f $libTarget + touch $libTarget + for i in posixLibrary.sh @FIREBIRD_ARCH_TYPE@Library.sh freebsdLibrary.sh + do + echo "# $i" >>$libTarget + cat $libSdir/$i >>$libTarget + echo "" >>$libTarget # avoid missing linefeed + done + cat $libSdir/$libScript >>$libTarget +} + #------------------------------------------------------------------------ # copyIfExists @@ -40,31 +70,319 @@ # copyIfExists() { - OldFile=$1 - NewFile=$2 + Files="" + while [ ${#} -gt 1 ]; do + Files="$Files ${1}" + shift + done + NewDir=${1} - if [ -f $OldFile ] - then - cp $OldFile $NewFile - fi + for OldFile in $Files; do + if [ -f $OldFile ]; then + cp -Rf $OldFile $NewDir + fi + done +} + + +#------------------------------------------------------------------------ +# linkFiles +# This function creates soft links + +linkFiles() { + From=$1 + Files=$2 + To=$3 + Check=$4 + + if [ "$To" = "$Check" ]; then + return 0 + fi + + for file in $Files; do + rm -f $To/$file + ln -s $From/$file $To/$file + done +} + + +#------------------------------------------------------------------------ +# makeDirs +# Make paths, passed as a list in 1st arg + +makeDirs() { + Dirs=$1 + for d in $Dirs; do + Dir=${TargetDir}${d} + if [ ! -d $Dir ]; then + rm -f $Dir + mkdir -p $Dir + chown root:wheel $Dir + chmod 0755 $Dir + fi + done +} + + +#------------------------------------------------------------------------ +# copyFiles +# This function copies all the files into the installation directory(ies). + +copyFiles() { +# The guts of the tranfer of files and other directories + + #directories + makeDirs "@FB_BINDIR@ @FB_SBINDIR@ @FB_CONFDIR@ @FB_LIBDIR@ @FB_INCDIR@ @FB_DOCDIR@/sql.extensions @FB_UDFDIR@ @FB_SAMPLEDIR@ \ + @FB_SAMPLEDBDIR@ @FB_HELPDIR@ @FB_INTLDIR@ @FB_MISCDIR@ @FB_SECDBDIR@ @FB_MSGDIR@ @FB_LOGDIR@ @FB_GUARDDIR@ @FB_PLUGDIR@" + + for i in ib_udf metadata security; do + makeDirs @FB_MISCDIR@/upgrade/$i + done + + makeDirs @libdir@ + makeDirs /usr/include + + #bin + cp $BuiltFBDir/bin/gbak ${TargetDir}@FB_BINDIR@/gbak + cp $BuiltFBDir/bin/gdef ${TargetDir}@FB_BINDIR@/gdef + cp $BuiltFBDir/bin/gfix ${TargetDir}@FB_BINDIR@/gfix + cp $BuiltFBDir/bin/gpre ${TargetDir}@FB_BINDIR@/gpre + cp $BuiltFBDir/bin/gsec ${TargetDir}@FB_BINDIR@/gsec + cp $BuiltFBDir/bin/nbackup ${TargetDir}@FB_BINDIR@/nbackup + copyIfExists $BuiltFBDir/bin/gsplit ${TargetDir}@FB_BINDIR@ + cp $BuiltFBDir/bin/gstat ${TargetDir}@FB_BINDIR@/gstat + copyIfExists $BuiltFBDir/bin/fbsvcmgr ${TargetDir}@FB_BINDIR@ + copyIfExists $BuiltFBDir/bin/fbtracemgr ${TargetDir}@FB_BINDIR@ + cp $BuiltFBDir/bin/isql ${TargetDir}@FB_BINDIR@/isql + cp $BuiltFBDir/bin/qli ${TargetDir}@FB_BINDIR@/qli + + chown root:wheel ${TargetDir}@FB_BINDIR@/* + chmod 0755 ${TargetDir}@FB_BINDIR@/* + + #sbin + copyIfExists $BuiltFBDir/bin/fb_inet_server ${TargetDir}@FB_SBINDIR@ + copyIfExists $BuiltFBDir/bin/fb_smp_server ${TargetDir}@FB_SBINDIR@ + copyIfExists $BuiltFBDir/bin/fbserver ${TargetDir}@FB_SBINDIR@ + cp -f $BuiltFBDir/bin/fbguard ${TargetDir}@FB_SBINDIR@ + copyIfExists $BuiltFBDir/bin/fb_lock_print ${TargetDir}@FB_SBINDIR@ + copyIfExists $BuiltFBDir/bin/fbmgr.bin ${TargetDir}@FB_SBINDIR@ + + addLibs $BuildRootDir/gen/firebird/bin changeRunUser.sh ${TargetDir}@FB_SBINDIR@ + addLibs $BuildRootDir/gen/firebird/bin restoreRootRunUser.sh ${TargetDir}@FB_SBINDIR@ + addLibs $BuildRootDir/gen/firebird/bin changeDBAPassword.sh ${TargetDir}@FB_SBINDIR@ + addLibs $BuildRootDir/gen/firebird/bin changeMultiConnectMode.sh ${TargetDir}@FB_SBINDIR@ + addLibs $BuiltFBDir/bin changeGdsLibraryCompatibleLink.sh ${TargetDir}@FB_SBINDIR@ + cp $BuiltFBDir/bin/createAliasDB.sh ${TargetDir}@FB_SBINDIR@ + cp $BuiltFBDir/bin/fb_config ${TargetDir}@FB_SBINDIR@ + + chown root:wheel ${TargetDir}@FB_SBINDIR@/* + chmod 0755 ${TargetDir}@FB_SBINDIR@/* + chmod 0700 ${TargetDir}@FB_SBINDIR@/*.sh + + #install scripts + addLibs $BuildRootDir/gen/firebird/bin tarMainInstall.sh $BuildRootDir/gen/install/scripts + addLibs $BuildRootDir/gen/firebird/bin tarinstall.sh $BuildRootDir/gen/install/scripts + addLibs $BuildRootDir/gen/firebird/bin preinstall.sh $BuildRootDir/gen/install/scripts + addLibs $BuildRootDir/gen/firebird/bin postinstall.sh $BuildRootDir/gen/install/scripts + addLibs $BuildRootDir/gen/firebird/bin preuninstall.sh $BuildRootDir/gen/install/scripts + addLibs $BuildRootDir/gen/firebird/bin postuninstall.sh $BuildRootDir/gen/install/scripts + addLibs $BuildRootDir/gen/firebird/bin taruninstall.sh $BuildRootDir/gen/install/scripts + addLibs $BuildRootDir/gen/firebird/bin tarMainUninstall.sh $BuildRootDir/gen/install/scripts + + #examples - copy only if we have them + exampleFiles=`find $BuiltFBDir/examples/README -type f -print` + if [ -z "$exampleFiles" ]; then + echo "Example files have not been built!" + else + (cd $BuiltFBDir/examples; tar cf - .) | (cd ${TargetDir}@FB_SAMPLEDIR@; tar xf -) + rm -rf ${TargetDir}@FB_SAMPLEDIR@/empbuild + + for i in `find ${TargetDir}@FB_SAMPLEDIR@ -type d -print` + do + chown root:wheel $i + chmod 0555 $i + done + for i in `find ${TargetDir}@FB_SAMPLEDIR@ -type f -print` + do + chown root:wheel $i + chmod 0444 $i + done + + makeDirs @FB_SAMPLEDBDIR@ + cp $BuiltFBDir/examples/empbuild/*.fdb ${TargetDir}@FB_SAMPLEDBDIR@ + + chown root:wheel ${TargetDir}@FB_SAMPLEDBDIR@/*.fdb + chmod 0444 ${TargetDir}@FB_SAMPLEDBDIR@/*.fdb + fi + + #QLI help + copyIfExists $BuiltFBDir/help/help.gbak ${TargetDir}@FB_HELPDIR@ + cp $BuiltFBDir/help/help.fdb ${TargetDir}@FB_HELPDIR@ + + chown root:wheel ${TargetDir}@FB_HELPDIR@/*.fdb + chmod 0444 ${TargetDir}@FB_HELPDIR@/*.fdb + + #message file + cp $BuiltFBDir/*.msg ${TargetDir}@FB_MSGDIR@ + + chown root:wheel ${TargetDir}@FB_MSGDIR@/*.msg + chmod 0444 ${TargetDir}@FB_MSGDIR@/*.msg + + #secureDB (access rights will be set at install time) + cp $BuiltFBDir/$SecurityDatabase ${TargetDir}@FB_SECDBDIR@ + + #.h files + cp $BuiltFBDir/include/*.h ${TargetDir}@FB_INCDIR@ + + chown root:wheel ${TargetDir}@FB_INCDIR@/*.h + chmod 0444 ${TargetDir}@FB_INCDIR@/*.h + + #lib + copyIfExists $BuiltFBDir/lib/libfbembed.so* ${TargetDir}@FB_LIBDIR@ + cp -f $BuiltFBDir/lib/libfbclient.so* ${TargetDir}@FB_LIBDIR@ + cp -f $BuiltFBDir/lib/libib_util.so ${TargetDir}@FB_LIBDIR@/libib_util.so + copyIfExists $BuiltFBDir/lib/libicu*.so* ${TargetDir}@FB_LIBDIR@ + + chown root:wheel ${TargetDir}@FB_LIBDIR@/*.so* + chmod 0755 ${TargetDir}@FB_LIBDIR@/*.so* + + #plugins + cp -f $BuiltFBDir/plugins/* ${TargetDir}@FB_PLUGDIR@ + + chown root:wheel ${TargetDir}@FB_PLUGDIR@/*.so* + chmod 0755 ${TargetDir}@FB_PLUGDIR@/*.so* + + #intl + cp $BuiltFBDir/intl/libfbintl.so ${TargetDir}@FB_INTLDIR@/fbintl + cp $BuiltFBDir/intl/fbintl.conf ${TargetDir}@FB_INTLDIR@ + + chown root:wheel ${TargetDir}@FB_INTLDIR@/fbintl* + chmod 0755 ${TargetDir}@FB_INTLDIR@/fbintl + chmod 0644 ${TargetDir}@FB_INTLDIR@/fbintl.conf + + #UDF + cp $BuiltFBDir/UDF/ib_udf.so ${TargetDir}@FB_UDFDIR@ + cp $BuiltFBDir/UDF/fbudf.so ${TargetDir}@FB_UDFDIR@ +# Note that the following items copy files from outside the build tree. +# Copy the sql-declarations into the UDF-directory + cp $BuildRootDir/src/extlib/ib_udf.sql ${TargetDir}@FB_UDFDIR@ + cp $BuildRootDir/src/extlib/ib_udf2.sql ${TargetDir}@FB_UDFDIR@ + cp $BuildRootDir/src/extlib/fbudf/fbudf.sql ${TargetDir}@FB_UDFDIR@ + + chown root:wheel ${TargetDir}@FB_UDFDIR@/*.so ${TargetDir}@FB_UDFDIR@/*.sql + chmod 0755 ${TargetDir}@FB_UDFDIR@/*.so + chmod 0644 ${TargetDir}@FB_UDFDIR@/*.sql + + #doc + cp $BuildRootDir/doc/README.* ${TargetDir}@FB_DOCDIR@ + cp $BuildRootDir/doc/sql.extensions/README* ${TargetDir}@FB_DOCDIR@/sql.extensions + cp $BuildRootDir/doc/WhatsNew ${TargetDir}@FB_CONFDIR@/WhatsNew + cp $BuildRootDir/doc/README.user ${TargetDir}@FB_CONFDIR@/README + + chown -R root:wheel ${TargetDir}@FB_MISCDIR@ + for i in `find ${TargetDir}@FB_MISCDIR@ -print`; do + chown root:wheel $i + if [ -d $i ]; then + chmod 0755 $i + else + chmod 0644 $i + fi + done + + #misc + cp $BuildRootDir/src/misc/intl.sql ${TargetDir}@FB_MISCDIR@ + cp $BuildRootDir/src/misc/upgrade/v2/ib_udf* ${TargetDir}@FB_MISCDIR@/upgrade/ib_udf + cp $BuildRootDir/src/misc/upgrade/v2/security_database* ${TargetDir}@FB_MISCDIR@/upgrade/security + cp $BuildRootDir/src/misc/upgrade/v2.1/metadata_charset* ${TargetDir}@FB_MISCDIR@/upgrade/metadata + + chown -R root:wheel ${TargetDir}@FB_MISCDIR@ + chmod -R go-rwx ${TargetDir}@FB_MISCDIR@ + + #conf + cp $BuiltFBDir/firebird.conf ${TargetDir}@FB_CONFDIR@ + cp $BuiltFBDir/aliases.conf ${TargetDir}@FB_CONFDIR@ + cp $BuiltFBDir/fbtrace.conf ${TargetDir}@FB_CONFDIR@ + + chown root:wheel ${TargetDir}@FB_CONFDIR@/*.conf + chmod 0644 ${TargetDir}@FB_CONFDIR@/*.conf + +# Create links from @libdir@ to install area. + origDir=`pwd` + cd $BuiltFBDir/lib + Libraries=`echo libfb*.so* libib_util.so` + cd $origDir + linkFiles "@FB_LIBDIR@" "$Libraries" "${TargetDir}@libdir@" "${TargetDir}@FB_LIBDIR@" + +# link include files to /usr/include + linkFiles "@FB_INCDIR@" "iberror.h ibase.h ib_util.h" "${TargetDir}/usr/include" "${TargetDir}@FB_INCDIR@" } -InstallFirebirdPrefix=@prefix@ -InstallPrefix=${InstallFirebirdPrefix%/firebird} -if [ -d $InstallFirebirdPrefix ]; then - if [ -d $InstallPrefix/firebird.old ]; then - rm -rf $InstallPrefix/firebird.old +#------------------------------------------------------------------------ +# For security reasons most files in firebird installation are +# root-owned and world-readable(executable) only (including firebird). + +# For some files RunUser and RunGroup (firebird) +# must have write access - lock and log for example. + +MakeFileFirebirdWritable() { + FileName=$1 + chown $RunUser:$RunGroup $FileName + + if [ "$RunUser" = "root" ] + # In that case we must open databases, locks, etc. to the world... + # That's a pity, but required if root RunUser choosen. + then + chmod a=rw $FileName + else + # This is good secure setting + chmod ug=rw,o= $FileName fi - cp -Rp $InstallFirebirdPrefix $InstallPrefix/firebird.old -fi +} -if [ `id -u` -ne 0 ]; then - echo; echo "You must be root to run this step!"; echo; echo - exit 1 -fi +#------------------------------------------------------------------------ +# fixFilePermissions +# Change the permissions to restrict access to server programs to +# firebird group only. This is MUCH better from a safety point of +# view than installing as root user, even if it requires a little +# more work. + +fixFilePermissions() { + # Lock files + cd @FB_GUARDDIR@ + for FileName in fb_guard + do + touch $FileName + MakeFileFirebirdWritable $FileName + done + + # Log file + cd @FB_LOGDIR@ + touch firebird.log + MakeFileFirebirdWritable firebird.log + + # Security database + cd @FB_SECDBDIR@ + MakeFileFirebirdWritable $SecurityDatabase + + # make examples DB(s) writable + for i in `find @FB_SAMPLEDBDIR@ -name '*.fdb' -print` + do + MakeFileFirebirdWritable $i + done + + cd @FB_HELPDIR@ + chmod a=r help.fdb +} + + +#=== MAIN ==================================================================== + +copyFiles + +# add firebird user nofbuid=0 fbUID=`id -u firebird 2>/dev/null` if [ $? -ne 0 ]; then @@ -94,7 +412,7 @@ 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 $InstallFirebirdPrefix -c "Firebird Database Administrator" + -d @FB_CONFDIR@ -c "Firebird Database Administrator" fi else echo -n "unable to create user firebird - please create it manually," @@ -102,184 +420,7 @@ else exit 1 fi -# Making an assumption that this program is being run in the gen directory -BuildRootDir=.. -BuiltFBDir=./firebird # Where the just build fb exists. -DestDir=$InstallFirebirdPrefix - -# The guts of the tranfer of files and other directories - -mkdir -p $DestDir -mkdir $DestDir/bin -mkdir $DestDir/examples -mkdir $DestDir/help -mkdir $DestDir/include -mkdir $DestDir/intl -mkdir $DestDir/lib -mkdir $DestDir/doc -mkdir $DestDir/doc/sql.extensions -mkdir $DestDir/UDF -#mkdir $DestDir/misc - -cp -f $BuiltFBDir/bin/fb_inet_server $DestDir/bin/fb_inet_server -cp $BuiltFBDir/bin/gbak $DestDir/bin/gbak -cp $BuiltFBDir/bin/gds_drop $DestDir/bin/gds_drop -copyIfExists $BuiltFBDir/bin/fb_lock_mgr $DestDir/bin/fb_lock_mgr -copyIfExists $BuiltFBDir/bin/fb_lock_print $DestDir/bin/fb_lock_print -copyIfExists $BuiltFBDir/bin/gds_pipe $DestDir/bin/gds_pipe -cp $BuiltFBDir/bin/gfix $DestDir/bin/gfix -cp $BuiltFBDir/bin/gpre $DestDir/bin/gpre -cp $BuiltFBDir/bin/gsec $DestDir/bin/gsec -copyIfExists $BuiltFBDir/bin/gsplit $DestDir/bin/gsplit -cp $BuiltFBDir/bin/gstat $DestDir/bin/gstat -copyIfExists $BuiltFBDir/bin/isc4.gbak $DestDir/bin/isc4.gbk -cp $BuiltFBDir/bin/isql $DestDir/bin/isql -cp $BuiltFBDir/bin/qli $DestDir/bin/qli - -#cp $BuiltFBDir/bin/CSchangeRunUser.sh $DestDir/bin -#cp $BuiltFBDir/bin/CSrestoreRootRunUser.sh $DestDir/bin -#cp $BuiltFBDir/bin/changeDBAPassword.sh $DestDir/bin - -# Copy examples only if we have them - -exampleFiles=`find $BuiltFBDir/examples/v5 -type f -print` -if [ -z "$exampleFiles" ]; then - echo "Example files have not been built!" -else - for i in $exampleFiles - do - cp $i $DestDir/examples - done -fi - -copyIfExists $BuiltFBDir/help/help.gbak $DestDir/help -cp $BuiltFBDir/help/help.fdb $DestDir/help - -#cp -r $BuildSrcDir/doc $DestDir -#cp -r $BuiltFBDir/doc $DestDir - -cp $BuiltFBDir/firebird.msg $DestDir/firebird.msg -cp $BuiltFBDir/security2.fdb $DestDir/security2.fdb.sample - - -#cp $BuiltFBDir/include/gds.f $DestDir/include -cp $BuiltFBDir/include/*.h $DestDir/include - -cp -Rf $BuiltFBDir/lib/libfbembed.so* $DestDir/lib -cp -Rf $BuiltFBDir/lib/libfbclient.so* $DestDir/lib - -#cp -f $BuiltFBDir/lib/gds.a /usr/lib/libgds.a -cp -f $BuiltFBDir/lib/libib_util.so $DestDir/lib/libib_util.so - -cp $BuiltFBDir/intl/libfbintl.so $DestDir/intl/fbintl -cp $BuiltFBDir/UDF/ib_udf.so $DestDir/UDF/ -cp $BuiltFBDir/UDF/fbudf.so $DestDir/UDF/ - -# Copy the sql-declarations into the UDF-directory -cp $BuildRootDir/src/extlib/ib_udf.sql $DestDir/UDF/ -cp $BuildRootDir/src/extlib/fbudf/fbudf.sql $DestDir/UDF/ - -# Note that this copies files from outside the build tree. -#cp $BuildRootDir/doc/*.pdf $DestDir/doc -cp $BuildRootDir/doc/README.* $DestDir/doc -cp $BuildRootDir/doc/sql.extensions/* $DestDir/doc/sql.extensions -cp $BuildRootDir/doc/WhatsNew $DestDir/WhatsNew -cp $BuildRootDir/doc/README.user $DestDir/README - -cp $BuiltFBDir/misc/firebird.conf $DestDir/firebird.conf.sample - -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 -chmod -R o= $InstallFirebirdPrefix - -# Now fix up the mess. - -# fix up directories -for i in `find $InstallFirebirdPrefix -print` -do - FileName=$i - if [ -d $FileName ]; then - chmod u=rwx,go=rx $FileName - fi -done - -# make lib ldconfig-compatible -chown -R root:wheel $InstallFirebirdPrefix/lib - -# make the following read-only -chmod -R a=r $InstallFirebirdPrefix/WhatsNew -for i in `find $InstallFirebirdPrefix/doc -type f -print` -do - chmod a=r $i -done -#chmod -R a=r $InstallFirebirdPrefix/examples/* -chmod -R a=r $InstallFirebirdPrefix/include/* -chmod -R a=r $InstallFirebirdPrefix/intl/* -#chmod -R a=r $InstallFirebirdPrefix/misc/* - -chmod -R ug=rx,o= $InstallFirebirdPrefix/UDF/* -chmod -R ug=rx,o= $InstallFirebirdPrefix/intl/fbintl -chmod -R a=rx $InstallFirebirdPrefix/lib/* - -#cd $InstallFirebirdPrefix/lib -#ln -sf libfbembed.so libgds.so -#ln -sf libfbembed.so.2 libgds.so.2 - -cd $InstallFirebirdPrefix/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 $InstallFirebirdPrefix - -# Lock files - -for i in fb_guard -do - FileName=$i - touch $FileName - chmod ug=rw,o= $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 - -# install the samples if they don't exist -[ -f aliases.conf ] || install -o firebird -g firebird -m 440 aliases.conf.sample aliases.conf -[ -f firebird.conf ] || install -o firebird -g firebird -m 440 firebird.conf.sample firebird.conf -[ -f security2.fdb ] || install -o firebird -g firebird -m 660 security2.fdb.sample security2.fdb +fixFilePermissions # remove any existing gds service cp /etc/services /etc/services.old @@ -294,17 +435,17 @@ cat >>/etc/services <>/etc/inetd.conf < $InstallPrefix/etc/rc.d/000.firebird.sh - chmod a=rx $InstallPrefix/etc/rc.d/000.firebird.sh + echo "#!/bin/sh"; echo "[ -d @FB_LIBDIR@ ] && /sbin/ldconfig -m @FB_LIBDIR@" + ) > /etc/rc.d/000.firebird.sh + chmod a=rx /etc/rc.d/000.firebird.sh fi diff --git a/configure.in b/configure.in index b63e29e221..cc7eaec682 100644 --- a/configure.in +++ b/configure.in @@ -1235,7 +1235,19 @@ gen/firebird/bin/posixLibrary.sh:builds/install/misc/posixLibrary.sh.in gen/firebird/bin/classicLibrary.sh:builds/install/misc/classicLibrary.sh.in gen/firebird/bin/superLibrary.sh:builds/install/misc/superLibrary.sh.in gen/firebird/bin/changeRunUser.sh:builds/install/misc/changeRunUser.sh.in -gen/firebird/bin/restoreRootRunUser.sh:builds/install/misc/restoreRootRunUser.sh.in], +gen/firebird/bin/restoreRootRunUser.sh:builds/install/misc/restoreRootRunUser.sh.in +gen/firebird/bin/tarMainInstall.sh:builds/install/misc/tarMainInstall.sh.in +gen/firebird/bin/tarinstall.sh:builds/install/misc/tarinstall.sh.in +gen/firebird/bin/preinstall.sh:builds/install/misc/preinstall.sh.in +gen/firebird/bin/postinstall.sh:builds/install/misc/postinstall.sh.in +gen/firebird/bin/preuninstall.sh:builds/install/misc/preuninstall.sh.in +gen/firebird/bin/postuninstall.sh:builds/install/misc/postuninstall.sh.in +gen/firebird/bin/taruninstall.sh:builds/install/misc/taruninstall.sh.in +gen/firebird/bin/tarMainUninstall.sh:builds/install/misc/tarMainUninstall.sh.in +gen/firebird/bin/changeDBAPassword.sh:builds/install/misc/changeDBAPassword.sh.in +gen/firebird/bin/changeMultiConnectMode.sh:builds/install/misc/changeMultiConnectMode.sh.in +gen/firebird/bin/changeGdsLibraryCompatibleLink.sh:builds/install/misc/changeGdsLibraryCompatibleLink.sh.in +gen/firebird/bin/createAliasDB.sh:builds/install/misc/createAliasDB.sh.in], [chmod a+x gen/install/scripts/*.sh gen/install/*sh 2>/dev/null]) dnl: Platform Specific Files @@ -1252,14 +1264,6 @@ case "$PLATFORM" in AC_CONFIG_FILES([gen/install/makeInstallImage.sh:builds/install/arch-specific/linux/misc/makeInstallImage.sh.in gen/install/scripts/rpmheader.txt:${INSTALL_SRC_DIR}/rpmheader.txt.in gen/install/scripts/rpmfiles.txt:${INSTALL_SRC_DIR}/rpmfiles.txt.in - gen/firebird/bin/tarMainInstall.sh:builds/install/arch-specific/linux/misc/tarMainInstall.sh.in - gen/firebird/bin/tarinstall.sh:builds/install/arch-specific/linux/misc/tarinstall.sh.in - gen/firebird/bin/preinstall.sh:builds/install/arch-specific/linux/misc/preinstall.sh.in - gen/firebird/bin/postinstall.sh:builds/install/arch-specific/linux/misc/postinstall.sh.in - gen/firebird/bin/preuninstall.sh:builds/install/arch-specific/linux/misc/preuninstall.sh.in - gen/firebird/bin/postuninstall.sh:builds/install/arch-specific/linux/misc/postuninstall.sh.in - gen/firebird/bin/taruninstall.sh:builds/install/arch-specific/linux/misc/taruninstall.sh.in - gen/firebird/bin/tarMainUninstall.sh:builds/install/arch-specific/linux/misc/tarMainUninstall.sh.in gen/install/misc/firebird.xinetd:builds/install/arch-specific/linux/misc/firebird.xinetd.in gen/install/misc/firebird.init.d.generic:builds/install/arch-specific/linux/misc/firebird.init.d.generic.in gen/install/misc/firebird.init.d.mandrake:builds/install/arch-specific/linux/misc/firebird.init.d.mandrake.in @@ -1268,10 +1272,6 @@ case "$PLATFORM" in gen/install/misc/firebird.init.d.gentoo:builds/install/arch-specific/linux/misc/firebird.init.d.gentoo.in gen/install/misc/firebird.init.d.slackware:builds/install/arch-specific/linux/misc/firebird.init.d.slackware.in gen/install/misc/rc.config.firebird:builds/install/arch-specific/linux/misc/rc.config.firebird.in - gen/firebird/bin/changeDBAPassword.sh:builds/install/misc/changeDBAPassword.sh.in - gen/firebird/bin/changeMultiConnectMode.sh:builds/install/misc/changeMultiConnectMode.sh.in - gen/firebird/bin/changeGdsLibraryCompatibleLink.sh:builds/install/misc/changeGdsLibraryCompatibleLink.sh.in - gen/firebird/bin/createAliasDB.sh:builds/install/misc/createAliasDB.sh.in gen/firebird/bin/linuxLibrary.sh:builds/install/arch-specific/linux/misc/linuxLibrary.sh.in] ,[chmod a+x gen/install/scripts/*.sh gen/install/*sh 2>/dev/null]) ;; @@ -1320,8 +1320,9 @@ case "$PLATFORM" in [chmod a+x gen/install/scripts/*.sh gen/install/*.sh 2>/dev/null]) ;; FREEBSD) - AC_CONFIG_FILES([gen/install/install.sh:builds/install/arch-specific/freebsd/install.sh.in] - ,[chmod a+x gen/install/install.sh 2>/dev/null]) + AC_CONFIG_FILES([gen/install/install.sh:builds/install/arch-specific/freebsd/install.sh.in + gen/firebird/bin/freebsdLibrary.sh:builds/install/arch-specific/freebsd/freebsdLibrary.sh.in] + ,[chmod a+x gen/install/*.sh gen/firebird/bin/*sh 2>/dev/null]) ;;