| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
- #!/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 <[email protected]>
- # 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
- LIB=`objdump -p $libSdir/firebird|grep NEEDED|grep tomcrypt|awk '{print $2;}'`
- [ "$LIB" ] && echo "export LIBTOMCRYPT=$LIB" >>$libTarget
- LIB=`objdump -p $libSdir/isql|grep NEEDED|egrep "(curses|termcap|tinfo)"|awk '{print $2;}'`
- [ "$LIB" ] && echo "export LIBCURSES=$LIB" >>$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
- #plugins samples
- makeDirs ${TargetDir}@FB_SAMPLEDIR@/prebuilt
- cp $BuiltFBDir/plugins/*fbSample* ${TargetDir}@FB_SAMPLEDIR@/prebuilt/plugins
- cp $BuiltFBDir/bin/*fbSample* ${TargetDir}@FB_SAMPLEDIR@/prebuilt/bin
- chmod 0644 ${TargetDir}@FB_SAMPLEDIR@/prebuilt/plugins/*
- # exec bit for sample binaries
- chmod 0755 ${TargetDir}@FB_SAMPLEDIR@/prebuilt/bin/*
- 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='*fbSample*' .) | (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
|