#!/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 # fb_install_prefix=@prefix@ # Script to copy install files from the build/transport area # This script builds an image of the installed system into # the gen/buildroot directory. # Making an assumption that this program is being run in the gen directory BuildRootDir=.. BuiltFBDir=Release/firebird # Where the just build fb exists. TargetDir=buildroot # Where we want to build the install image SecurityDatabase=security4.fdb TomMathBuild="@TOMMATH_BUILD@" TomCryptBuild="@TOMCRYPT_BUILD@" #------------------------------------------------------------------------ # 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 echo "#!/bin/sh" >>$libTarget echo >>$libTarget for i in posixLibrary.sh linuxLibrary.sh do echo "# $i" >>$libTarget cat $libSdir/$i >>$libTarget echo "" >>$libTarget # avoid missing linefeed done cat $libSdir/$libScript >>$libTarget } #------------------------------------------------------------------------ # copyIfExists # Copy file if it exists # copyIfExists() { Files="" while [ ${#} -gt 1 ]; do Files="$Files ${1}" shift done NewDir=${1} for OldFile in $Files; do if [ -f $OldFile ]; then cp -df $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 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} mkdir -p $Dir chmod 0755 $Dir done } #------------------------------------------------------------------------ # ReadOnlyTree # Set correct rights to files in given subtree ReadOnlyTree() { Tree=$1 for i in `find ${Tree} -type d -print` do chmod 0755 $i done for i in `find ${Tree} -type f -print` do chmod 0644 $i done } #------------------------------------------------------------------------ # copyFiles # This function copies all the files for a distribution into a # directory heirachy mirroring the installation. copyFiles() { # The guts of the tranfer of files and other directories #cleanup if [ -d $TargetDir ] then chmod -R +xw $TargetDir rm -fr $TargetDir fi #directories makeDirs "@FB_BINDIR@ @FB_SBINDIR@ @FB_CONFDIR@ @FB_LIBDIR@ @FB_INCDIR@/firebird @FB_DOCDIR@/sql.extensions \ @FB_SAMPLEDIR@ @FB_SAMPLEDBDIR@ @FB_HELPDIR@ @FB_INTLDIR@ @FB_MISCDIR@ @FB_SECDBDIR@ @FB_MSGDIR@ @FB_LOGDIR@ \ @FB_GUARDDIR@ @FB_PLUGDIR@ @FB_TZDATADIR@" for i in udf; do makeDirs @FB_MISCDIR@/upgrade/$i done makeDirs /usr/include #bin cp $BuiltFBDir/bin/gbak ${TargetDir}@FB_BINDIR@/gbak 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 chmod 0755 ${TargetDir}@FB_BINDIR@/* #sbin cp -f $BuiltFBDir/bin/firebird ${TargetDir}@FB_SBINDIR@/firebird cp -f $BuiltFBDir/bin/fbguard ${TargetDir}@FB_SBINDIR@ copyIfExists $BuiltFBDir/bin/fb_lock_print ${TargetDir}@FB_SBINDIR@ addLibs $BuiltFBDir/bin changeServerMode.sh ${TargetDir}@FB_SBINDIR@ cp $BuiltFBDir/bin/registerDatabase.sh ${TargetDir}@FB_SBINDIR@ cp $BuiltFBDir/bin/fb_config ${TargetDir}@FB_SBINDIR@ addLibs $BuiltFBDir/bin FirebirdUninstall.sh ${TargetDir}@FB_SBINDIR@ chmod 0755 ${TargetDir}@FB_SBINDIR@/* chmod 0700 ${TargetDir}@FB_SBINDIR@/*.sh #install script addLibs $BuiltFBDir/bin install.sh $BuildRootDir/gen/install #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 makeDirs @FB_SAMPLEDBDIR@ cp $BuiltFBDir/examples/empbuild/*.fdb ${TargetDir}@FB_SAMPLEDBDIR@ ReadOnlyTree ${TargetDir}@FB_SAMPLEDIR@ chmod 0664 ${TargetDir}@FB_SAMPLEDBDIR@/*.fdb chmod 0755 ${TargetDir}@FB_SAMPLEDIR@/prebuilt/bin/* #plugins samples makeDirs ${TargetDir}@FB_SAMPLEDIR@/prebuilt cp $BuiltFBDir/plugins/*_example.so ${TargetDir}@FB_SAMPLEDIR@/prebuilt/plugins chmod 0644 ${TargetDir}@FB_SAMPLEDIR@/prebuilt/plugins/* fi #QLI help copyIfExists $BuiltFBDir/help/help.gbak ${TargetDir}@FB_HELPDIR@ cp $BuiltFBDir/help/help.fdb ${TargetDir}@FB_HELPDIR@ chmod 0444 ${TargetDir}@FB_HELPDIR@/*.fdb #message file cp $BuiltFBDir/*.msg ${TargetDir}@FB_MSGDIR@ chmod 0444 ${TargetDir}@FB_MSGDIR@/*.msg #secureDB (access rights will be set at install time) cp $BuiltFBDir/$SecurityDatabase ${TargetDir}@FB_SECDBDIR@ #include (.h .pas files) cp $BuiltFBDir/include/*.h ${TargetDir}@FB_INCDIR@ cp $BuildRootDir/src/include/firebird/*.h ${TargetDir}@FB_INCDIR@/firebird tar -C $BuildRootDir/src/include/firebird -cf - impl | tar -C ${TargetDir}@FB_INCDIR@/firebird -x cp $BuildRootDir/src/include/gen/Firebird.pas ${TargetDir}@FB_INCDIR@/firebird ReadOnlyTree ${TargetDir}@FB_INCDIR@ #lib cp -df $BuiltFBDir/lib/libfbclient.so* ${TargetDir}@FB_LIBDIR@ cp -f $BuiltFBDir/lib/libib_util.so ${TargetDir}@FB_LIBDIR@/libib_util.so if [ "$TomMathBuild" = "Y" ]; then makeDirs @FB_LIBDIR@/.tm cp -df $BuildRootDir/extern/libtommath/.libs/libtommath.so* ${TargetDir}@FB_LIBDIR@/.tm fi if [ "$TomCryptBuild" = "Y" ]; then makeDirs @FB_LIBDIR@/.tm cp -df $BuildRootDir/extern/libtomcrypt/.libs/libtomcrypt.so* ${TargetDir}@FB_LIBDIR@/.tm fi chmod 0755 ${TargetDir}@FB_LIBDIR@/*.so* #plugins (cd $BuiltFBDir/plugins;tar cf - --exclude='*_example.so' .) | (cd ${TargetDir}@FB_PLUGDIR@; tar xvf -) for file in `find ${TargetDir}@FB_PLUGDIR@ -name '*.so*' -print`; do chmod 0755 ${file} done makeDirs ${TargetDir}@FB_TZDATADIR@ cp $BuiltFBDir/tzdata/*.res ${TargetDir}@FB_TZDATADIR@ chmod 0444 ${TargetDir}@FB_TZDATADIR@/*.res #intl cp $BuiltFBDir/intl/libfbintl.so ${TargetDir}@FB_INTLDIR@/fbintl cp $BuiltFBDir/intl/fbintl.conf ${TargetDir}@FB_INTLDIR@ chmod 0755 ${TargetDir}@FB_INTLDIR@/fbintl chmod 0644 ${TargetDir}@FB_INTLDIR@/fbintl.conf # Note that the following items copy files from outside the build tree. # Copy the sql-declarations into the UDF-directory #doc cp $BuildRootDir/doc/*.pdf ${TargetDir}@FB_DOCDIR@ cp $BuildRootDir/doc/README.* ${TargetDir}@FB_DOCDIR@ cp $BuildRootDir/doc/sql.extensions/README* ${TargetDir}@FB_DOCDIR@/sql.extensions cp $BuildRootDir/*.md ${TargetDir}@FB_CONFDIR@ for i in `find ${TargetDir}@FB_MISCDIR@ -print`; do 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/v4.0/udf_replace* ${TargetDir}@FB_MISCDIR@/upgrade/udf cp $BuildRootDir/gen/install/misc/firebird.init.d.* ${TargetDir}@FB_MISCDIR@ cp $BuildRootDir/gen/install/misc/rc.config.firebird ${TargetDir}@FB_MISCDIR@ cp $BuildRootDir/gen/install/misc/firebird.service ${TargetDir}@FB_MISCDIR@ chmod -R go-rwx ${TargetDir}@FB_MISCDIR@ #conf cp $BuiltFBDir/firebird.conf ${TargetDir}@FB_CONFDIR@ cp $BuiltFBDir/databases.conf ${TargetDir}@FB_CONFDIR@ cp $BuiltFBDir/fbtrace.conf ${TargetDir}@FB_CONFDIR@ cp $BuiltFBDir/plugins.conf ${TargetDir}@FB_CONFDIR@ cp $BuiltFBDir/replication.conf ${TargetDir}@FB_CONFDIR@ chmod 0644 ${TargetDir}@FB_CONFDIR@/*.conf #license cp $BuildRootDir/builds/install/misc/*License.txt ${TargetDir}@FB_CONFDIR@ chmod 0444 ${TargetDir}@FB_CONFDIR@/*License.txt # link include files to /usr/include linkFiles "@FB_INCDIR@" "firebird iberror.h ibase.h ib_util.h" "${TargetDir}/usr/include" "${TargetDir}@FB_INCDIR@" } #=== MAIN ==================================================================== copyFiles