summaryrefslogtreecommitdiffstats
path: root/pki/base/tps/setup_package
diff options
context:
space:
mode:
Diffstat (limited to 'pki/base/tps/setup_package')
-rwxr-xr-xpki/base/tps/setup_package390
1 files changed, 390 insertions, 0 deletions
diff --git a/pki/base/tps/setup_package b/pki/base/tps/setup_package
new file mode 100755
index 000000000..32ff70985
--- /dev/null
+++ b/pki/base/tps/setup_package
@@ -0,0 +1,390 @@
+#!/bin/bash
+# --- BEGIN COPYRIGHT BLOCK ---
+# 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;
+# version 2.1 of the License.
+#
+# This library 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 License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301 USA
+#
+# Copyright (C) 2007 Red Hat, Inc.
+# All rights reserved.
+# --- END COPYRIGHT BLOCK ---
+
+###############################################################################
+## (1) Check command line arguments to see how many were passed in. ##
+###############################################################################
+
+if [ $# -eq 6 ]
+then
+ PKI_BUILD_PREFIX=$1
+ PKI_PRODUCT_NAME=$2
+ PKI_SUBSYSTEM_NAME=$3
+ VERSION=$4
+ RELEASE=$5
+ PKI_STAGING_PATH=$6
+else
+ echo
+ echo "Usage: $0"
+ echo " PKI_build_prefix"
+ echo " PKI_product_name"
+ echo " PKI_subsystem_name"
+ echo " version"
+ echo " release"
+ echo " PKI_staging_path"
+ echo
+
+ exit 255
+fi
+
+
+###############################################################################
+## (2) Specify variables used by this script. ##
+###############################################################################
+
+# specify generic helper functions
+usage() {
+ if [ $# -gt 0 ] ; then
+ echo
+ echo "$1"
+ fi
+ echo
+ echo "Usage: $0"
+ echo " PKI_build_prefix"
+ echo " PKI_product_name"
+ echo " PKI_subsystem_name"
+ echo " version"
+ echo " release"
+ echo " PKI_staging_path"
+ echo
+}
+
+# specify generic helper variables
+OS=`uname`
+ARCHITECTURE=""
+if [ "${OS}" = "Linux" ] ; then
+ if [ -e /etc/fedora-release ] ; then
+ USE_OPT_FORTITUDE="FALSE"
+ elif [ -e /etc/redhat-release ] ; then
+ RHEL_VERSION=`cat /etc/redhat-release | tr -d [:alpha:][:blank:] | cut -d \( -f 1 | awk -F. '{ print $1 }'`
+ if [ ${RHEL_VERSION} = "4" ]; then
+ USE_OPT_FORTITUDE="TRUE"
+ else
+ USE_OPT_FORTITUDE="FALSE"
+ fi
+ else
+ usage "ERROR: Only Fedora and Red Hat '${OS}' are supported!"
+ exit 255
+ fi
+ ARCHITECTURE=`uname -i`
+elif [ "${OS}" = "SunOS" ] ; then
+ USE_OPT_FORTITUDE="TRUE"
+ ARCHITECTURE=`uname -p`
+else
+ usage "ERROR: Unsupported operating system '${OS}'!"
+ exit 255
+fi
+
+# Since "rpmbuild" fails to process "%ifarch" macros inside the
+# "%install" section of a spec file, the actual hardware
+# architecture will be determined at this point in time.
+if [ "${ARCHITECTURE}" = "i386" ] ; then
+ LIB_DIR="lib"
+ WRAPPER_DIR="bin"
+elif [ "${ARCHITECTURE}" = "x86_64" ] ; then
+ LIB_DIR="lib64"
+ WRAPPER_DIR="bin"
+elif [ "${ARCHITECTURE}" = "ppc" ] ; then
+ LIB_DIR="lib"
+ PERL_DIR="/usr/bin/perl"
+ SCRIPTS_DIR="bin"
+ WRAPPER_DIR="bin"
+elif [ "${ARCHITECTURE}" = "ppc64" ] ; then
+ LIB_DIR="lib64"
+ PERL_DIR="/usr/bin/perl"
+ SCRIPTS_DIR="bin"
+ WRAPPER_DIR="bin"
+elif [ "${ARCHITECTURE}" = "s390x" ] ; then
+ LIB_DIR="lib"
+ PERL_DIR="/usr/bin/perl"
+ SCRIPTS_DIR="bin"
+ WRAPPER_DIR="bin"
+elif [ "${OS}" = "SunOS" ] &&
+ [ "${ARCHITECTURE}" = "sparc" ] ; then
+ # Note that "pkgbuild" successfully processes "%ifarch" macros
+ # inside the "%install" section of a spec file.
+ #
+ # LIB_DIR="lib"
+ # WRAPPER_DIR="bin"
+ #
+ # NOTE: ONLY support 64-bit sparcv9 on this architecture!
+ #
+ LIB_DIR="lib/sparcv9"
+ WRAPPER_DIR="bin"
+else
+ usage "ERROR: Unsupported architecture '${ARCHITECTURE}'!"
+ exit 255
+fi
+
+# break the VERSION number into its various components
+MAJOR_VERSION=`echo ${VERSION} | awk -F. '{ print $1 }'`
+MINOR_VERSION=`echo ${VERSION} | awk -F. '{ print $2 }'`
+PATCH_VERSION=`echo ${VERSION} | awk -F. '{ print $3 }'`
+
+PRODUCT_VERSION=${MAJOR_VERSION}.${MINOR_VERSION}
+
+
+# comply with standard FHS 2.3 binary locations (executables)
+PKI_EXECUTABLES=${PKI_BUILD_PREFIX}/usr/${LIB_DIR}/${PKI_PRODUCT_NAME}/${PKI_SUBSYSTEM_NAME}
+
+# comply with standard FHS 2.3 library locations
+SYSTEM_LIBRARIES=${PKI_BUILD_PREFIX}/usr/${LIB_DIR}
+
+# comply with standard Apache 2.0 module locations
+if [ "${USE_OPT_FORTITUDE}" = "TRUE" ] ; then
+ APACHE_MODULES=${PKI_BUILD_PREFIX}/opt/fortitude/modules.local
+else
+ APACHE_MODULES=${PKI_BUILD_PREFIX}/usr/${LIB_DIR}/httpd/modules
+fi
+
+# comply with standard JPackage 1.6.0 jar locations
+
+# comply with standard FHS 2.3 binary locations (wrappers)
+PKI_WRAPPERS=${PKI_BUILD_PREFIX}/usr/${WRAPPER_DIR}
+
+# comply with standard FHS 2.3 shared data locations (templates)
+PKI_SHARED_DATA=${PKI_BUILD_PREFIX}/usr/share/${PKI_PRODUCT_NAME}
+PKI_SUBSYSTEM_SHARED_DATA=${PKI_SHARED_DATA}/${PKI_SUBSYSTEM_NAME}
+PKI_SUBSYSTEM_SHARED_DOCROOT_DATA=${PKI_SHARED_DATA}/${PKI_SUBSYSTEM_NAME}/docroot
+PKI_SUBSYSTEM_SHARED_PERL_BASE=${PKI_SUBSYSTEM_SHARED_DATA}/lib/perl/PKI/Base
+PKI_SUBSYSTEM_SHARED_PERL_MODULES=${PKI_SUBSYSTEM_SHARED_DATA}/lib/perl/PKI/TPS
+PKI_SUBSYSTEM_SHARED_PERL_SERVICE=${PKI_SUBSYSTEM_SHARED_DATA}/lib/perl/PKI/Service
+PKI_SUBSYSTEM_SHARED_PERL_TEMPLATES=${PKI_SUBSYSTEM_SHARED_DATA}/lib/perl/Template
+
+# comply with standard FHS 2.3 start/stop script locations
+
+# comply with standard FHS 2.3 configuration file locations
+
+# comply with standard FHS 2.3 documentation locations
+PKI_DOCUMENTATION=${PKI_BUILD_PREFIX}/usr/share/doc/${PKI_PRODUCT_NAME}-${PKI_SUBSYSTEM_NAME}-${VERSION}
+
+# comply with standard FHS 2.3 log file locations
+
+# comply with default FHS 2.3 instance locations
+
+
+###############################################################################
+## (3) Create the appropriate subdirectories. ##
+###############################################################################
+
+##
+## System
+##
+
+mkdir -p ${PKI_WRAPPERS}
+
+
+##
+## Product
+##
+
+mkdir -p ${SYSTEM_LIBRARIES}
+mkdir -p ${APACHE_MODULES}
+
+
+##
+## Subsystem
+##
+
+mkdir -p ${PKI_DOCUMENTATION}
+mkdir -p ${PKI_EXECUTABLES}
+mkdir -p ${PKI_SHARED_DATA}
+mkdir -p ${PKI_SUBSYSTEM_SHARED_DATA}
+mkdir -p ${PKI_SUBSYSTEM_SHARED_DATA}/etc
+mkdir -p ${PKI_SUBSYSTEM_SHARED_DOCROOT_DATA}
+mkdir -p ${PKI_SUBSYSTEM_SHARED_PERL_BASE}
+mkdir -p ${PKI_SUBSYSTEM_SHARED_PERL_MODULES}
+mkdir -p ${PKI_SUBSYSTEM_SHARED_PERL_SERVICE}
+mkdir -p ${PKI_SUBSYSTEM_SHARED_PERL_TEMPLATES}
+
+
+##
+## Initial Instance
+##
+
+
+###############################################################################
+## (4) Unpack the package contents to the appropriate subdirectories. ##
+###############################################################################
+
+##
+## Executables
+##
+
+cp -p ${PKI_BUILD_PREFIX}/usr/libexec/apachectl* ${PKI_EXECUTABLES}
+cp -p ${PKI_BUILD_PREFIX}/usr/libexec/tpsclient* ${PKI_EXECUTABLES}
+
+
+##
+## Libraries
+##
+
+cp -p ${PKI_STAGING_PATH}/apache/modules/*.so ${APACHE_MODULES}
+
+
+##
+## Jars
+##
+
+
+##
+## Wrappers
+##
+
+
+##
+## Shared Data
+##
+
+cp -rp ${PKI_STAGING_PATH}/doc/LICENSE ${PKI_DOCUMENTATION}
+
+cp -rp ${PKI_STAGING_PATH}/templates* ${PKI_SHARED_DATA}
+
+cp -rp ${PKI_STAGING_PATH}/alias* ${PKI_SUBSYSTEM_SHARED_DATA}
+cp -rp ${PKI_STAGING_PATH}/applets* ${PKI_SUBSYSTEM_SHARED_DATA}
+cp -rp ${PKI_STAGING_PATH}/cgi-bin* ${PKI_SUBSYSTEM_SHARED_DATA}
+cp -rp ${PKI_STAGING_PATH}/conf* ${PKI_SUBSYSTEM_SHARED_DATA}
+cp -p ${PKI_STAGING_PATH}/docroot/index.cgi ${PKI_SUBSYSTEM_SHARED_DOCROOT_DATA}
+chmod 00755 ${PKI_SUBSYSTEM_SHARED_DOCROOT_DATA}/index.cgi
+cp -p ${PKI_STAGING_PATH}/docroot/index.html ${PKI_SUBSYSTEM_SHARED_DOCROOT_DATA}
+cp -rp ${PKI_STAGING_PATH}/docroot/demo* ${PKI_SUBSYSTEM_SHARED_DOCROOT_DATA}
+cp -rp ${PKI_STAGING_PATH}/docroot/home* ${PKI_SUBSYSTEM_SHARED_DOCROOT_DATA}
+cp -rp ${PKI_STAGING_PATH}/docroot/so* ${PKI_SUBSYSTEM_SHARED_DOCROOT_DATA}
+cp -rp ${PKI_STAGING_PATH}/docroot/sow* ${PKI_SUBSYSTEM_SHARED_DOCROOT_DATA}
+cp -rp ${PKI_STAGING_PATH}/docroot/tokendb* ${PKI_SUBSYSTEM_SHARED_DOCROOT_DATA}
+cp -rp ${PKI_STAGING_PATH}/docroot/tps* ${PKI_SUBSYSTEM_SHARED_DOCROOT_DATA}
+cp -rp ${PKI_BUILD_PREFIX}/etc/init.d* ${PKI_SUBSYSTEM_SHARED_DATA}/etc
+cp -rp ${PKI_STAGING_PATH}/logs* ${PKI_SUBSYSTEM_SHARED_DATA}
+
+cp -rp ${PKI_STAGING_PATH}/perl/base/* ${PKI_SUBSYSTEM_SHARED_PERL_BASE}
+chmod 00644 ${PKI_SUBSYSTEM_SHARED_PERL_BASE}/*.pm
+cp -rp ${PKI_STAGING_PATH}/perl/modules/* ${PKI_SUBSYSTEM_SHARED_PERL_MODULES}
+chmod 00644 ${PKI_SUBSYSTEM_SHARED_PERL_MODULES}/*.pm
+cp -rp ${PKI_STAGING_PATH}/perl/service/* ${PKI_SUBSYSTEM_SHARED_PERL_SERVICE}
+chmod 00644 ${PKI_SUBSYSTEM_SHARED_PERL_SERVICE}/*.pm
+cp -rp ${PKI_STAGING_PATH}/perl/templates/* ${PKI_SUBSYSTEM_SHARED_PERL_TEMPLATES}
+chmod 00644 ${PKI_SUBSYSTEM_SHARED_PERL_TEMPLATES}/*.pm
+cp -rp ${PKI_STAGING_PATH}/samples* ${PKI_SUBSYSTEM_SHARED_DATA}
+cp -rp ${PKI_STAGING_PATH}/scripts* ${PKI_SUBSYSTEM_SHARED_DATA}
+cp -rp ${PKI_STAGING_PATH}/setup* ${PKI_SUBSYSTEM_SHARED_DATA}
+
+
+###############################################################################
+## (5) Unpack the package contents to the initial instance directories. ##
+###############################################################################
+
+##
+## Start/Stop Script
+##
+
+
+##
+## Configuration
+##
+
+
+##
+## Logs
+##
+
+
+##
+## Default Instance
+##
+
+
+###############################################################################
+## (6) Rename the extracted contents following appropriate naming rules. ##
+###############################################################################
+
+# comply with standard Linux/UNIX shared library naming conventions
+
+# comply with standard JPackage 1.6.0 jar naming conventions
+
+# strip symbolic information from libraries
+cd ${SYSTEM_LIBRARIES} ;
+strip libldapauth.so ;
+strip libtokendb.so ;
+strip libtps.so
+
+# strip symbolic information from modules
+cd ${APACHE_MODULES} ;
+strip mod_tokendb.so ;
+strip mod_tps.so
+
+# strip symbolic information from executables
+cd ${PKI_EXECUTABLES} ;
+strip tpsclient
+
+
+###############################################################################
+## (7) Create a command wrapper for each specified command. ##
+###############################################################################
+
+COMMANDS="tpsclient"
+
+create_wrapper()
+{
+ PRODUCT=$1
+ SUBSYSTEM=$2
+ COMMAND=$3
+
+ TEMPLATE=pki_subsystem_command_wrapper
+
+ WRAPPER=${PKI_WRAPPERS}/${COMMAND}
+
+ sed -e "s|\[PKI_PRODUCT\]|${PRODUCT}|g" \
+ -e "s|\[PKI_SUBSYSTEM\]|${SUBSYSTEM}|g" \
+ -e "s|\[PKI_COMMAND\]|${COMMAND}|g" \
+ ${PKI_SHARED_DATA}/templates/${TEMPLATE} > ${WRAPPER} ;
+}
+
+
+for cmd in ${COMMANDS}
+do
+ create_wrapper ${PKI_PRODUCT_NAME} ${PKI_SUBSYSTEM_NAME} ${cmd}
+done
+
+
+rm -rf ${PKI_SHARED_DATA}/templates
+
+
+###############################################################################
+## (8) Create useful symbolic links as appropriate. ##
+###############################################################################
+
+# create legacy "tus" directory symbolic-link for backwards compatibility
+cd ${PKI_SUBSYSTEM_SHARED_DOCROOT_DATA}
+ln -s tokendb tus
+
+# create shared library sans version "linker-name" to protect this namespace
+
+# create jar sans version to be used by classpath
+
+# create assorted symbolic links to various file dependencies (Tomcat)
+
+
+###############################################################################
+## (9) Successfully exit from this setup script. ##
+###############################################################################
+
+exit 0
+