8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-23 19:23:03 +01:00
firebird-mirror/builds/install/arch-specific/linux/makeInstallImage.sh.in
Adriano dos Santos Fernandes f440a7d77c
Added tzdata directory to Linux install and allow to configure its default location in build time (#267)
* Added tzdata directory to Linux install and allow to configure its default location in build time.
2020-04-30 12:36:23 -03:00

324 lines
9.3 KiB
Bash

#!/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 <mark.odonohue@ludwig.edu.au>
# 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