summaryrefslogtreecommitdiffstats
path: root/pki/dogtag/config-ext/build_dogtag_pki
diff options
context:
space:
mode:
Diffstat (limited to 'pki/dogtag/config-ext/build_dogtag_pki')
-rwxr-xr-xpki/dogtag/config-ext/build_dogtag_pki322
1 files changed, 322 insertions, 0 deletions
diff --git a/pki/dogtag/config-ext/build_dogtag_pki b/pki/dogtag/config-ext/build_dogtag_pki
new file mode 100755
index 000000000..75647a7ad
--- /dev/null
+++ b/pki/dogtag/config-ext/build_dogtag_pki
@@ -0,0 +1,322 @@
+#!/bin/bash
+# BEGIN COPYRIGHT BLOCK
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# (C) 2007 Red Hat, Inc.
+# All rights reserved.
+# END COPYRIGHT BLOCK
+
+# Always switch into the base directory above this
+# shared shell script prior to executing it so that
+# all of its output is written to this directory
+cd `dirname $0`/..
+
+# Set pre-defined variables
+#
+# NOTE: Variables prefixed with "DOGTAG" are defined in the invoking script.
+# Variables prefixed with "PKI" are defined in this shared script.
+# Variables containing no prefix are reserved for the generated script.
+#
+PKI_ABORT_SCRIPT="false"
+PKI_BASEDIR="../../.."
+PKI_BUILD_XML=build.xml
+PKI_DIR=pki
+PKI_DOGTAG_DIR=dogtag
+PKI_RELEASE_DIR=release
+PKI_RELEASE_SCRIPT=release
+PKI_SHARED_SCRIPT=`basename $0`
+PKI_SRC_DIR=base
+
+# Check the values of the passed-in environment variables
+if [ "${DOGTAG_BUILD_SCRIPT}" == "" ]; then
+ printf "ERROR: The 'DOGTAG_BUILD_SCRIPT' environment variable is undefined!\n"
+ PKI_ABORT_SCRIPT="true"
+fi
+if [ "${DOGTAG_COMPONENT}" == "" ]; then
+ printf "ERROR: The 'DOGTAG_COMPONENT' environment variable is undefined!\n"
+ PKI_ABORT_SCRIPT="true"
+fi
+if [ "${DOGTAG_SPECFILE}" == "" ]; then
+ printf "ERROR: The 'DOGTAG_SPECFILE' environment variable is undefined!\n"
+ PKI_ABORT_SCRIPT="true"
+fi
+if [ "${PKI_ABORT_SCRIPT}" == "true" ]; then
+ printf "\n"
+ printf "The '${PKI_SHARED_SCRIPT}' shared build script MUST be invoked by "
+ printf "a\nPKI component-specific build script (e. g. - '${DOGTAG_BUILD_SCRIPT}')\n"
+ printf "which defines ALL environment variables prefixed by 'DOGTAG'!\n"
+ exit 255
+fi
+
+# Compute remaining variables by assigning their values from the specfile
+PKI_SOURCE_CODE_URL="https://pki.fedoraproject.org/svn/pki/trunk/${PKI_DIR}/${PKI_SRC_DIR}/${DOGTAG_COMPONENT}"
+if [ "${PKI_PRODUCT_UI_FLAVOR_PREFIX}" != "" ]; then
+ PKI_PRODUCT_BUILD_XML="${PKI_BUILD_XML}"
+ PKI_PRODUCT_NAME="${PKI_PRODUCT_UI_FLAVOR_PREFIX}-${PKI_PRODUCT_PREFIX}-${PKI_PRODUCT}"
+ PKI_PRODUCT_SOURCE_PATH="${PKI_DIR}/${PKI_DOGTAG_DIR}/${DOGTAG_COMPONENT}"
+elif [ "${PKI_PRODUCT_PREFIX}" != "" ]; then
+ PKI_PRODUCT_BUILD_XML="${PKI_BASEDIR}/${PKI_DIR}/${PKI_SRC_DIR}/${DOGTAG_COMPONENT}/${PKI_BUILD_XML}"
+ PKI_PRODUCT_NAME="${PKI_PRODUCT_PREFIX}-${PKI_PRODUCT}"
+ PKI_PRODUCT_SOURCE_PATH="${PKI_DIR}/${PKI_SRC_DIR}/${DOGTAG_COMPONENT}"
+else
+ PKI_PRODUCT_BUILD_XML="${PKI_BASEDIR}/${PKI_DIR}/${PKI_SRC_DIR}/${DOGTAG_COMPONENT}/${PKI_BUILD_XML}"
+ PKI_PRODUCT_NAME="${PKI_PRODUCT}"
+ PKI_PRODUCT_SOURCE_PATH="${PKI_DIR}/${PKI_SRC_DIR}/${DOGTAG_COMPONENT}"
+fi
+PKI_RELEASE_ROOT="${PKI_BASEDIR}/${PKI_RELEASE_DIR}/${PKI_PRODUCT_SOURCE_PATH}"
+PKI_SOURCE_CODE_LOCAL_REPOSITORY="`pwd`/${PKI_BASEDIR}/${PKI_PRODUCT_SOURCE_PATH}"
+
+# Always check that local source code for this PKI component is available
+if [ ! -d "${PKI_SOURCE_CODE_LOCAL_REPOSITORY}" ]; then
+ printf "Please checkout the '${DOGTAG_COMPONENT}' source code from:\n\n"
+ printf " '${PKI_SOURCE_CODE_URL}'\n\n"
+ printf "to:\n\n"
+ printf " '${PKI_SOURCE_CODE_LOCAL_REPOSITORY}'\n\n"
+ exit 255
+fi
+
+# Define awk scripts
+check_targets='
+BEGIN {
+ success = "false";
+}
+
+{
+ while( getline < FILENAME > 0 ) {
+ if( substr( $0, 0, 80 ) ~ "target name" ) {
+ start = substr( $0,
+ match( $0, "\"" ) + 1 );
+ target = substr( start,
+ start,
+ match( start, "\"" ) - 1 );
+ if( build_target == target ) {
+ success = "true";
+ }
+ }
+ }
+}
+
+END {
+ printf( "%s", success );
+}'
+
+display_targets='{
+ while( getline < FILENAME > 0 ) {
+ if( substr( $0, 0, 80 ) ~ "target name" ) {
+ start = substr( $0,
+ match( $0, "\"" ) + 1 );
+ target = substr( start,
+ start,
+ match( start, "\"" ) - 1 );
+ }
+ if( substr( $0, 0, 80 ) ~ "description" ) {
+ start = substr( $0,
+ match( $0, "\"" ) + 1 );
+ description[target] = substr( start,
+ start,
+ match( start, "\"" ) - 1 );
+ printf( "'%20s' %s\n", target, description[target] );
+ }
+ }
+}'
+
+# Provide a usage function
+usage() {
+ if [ $# -gt 0 ] ; then
+ echo
+ echo "$1"
+ fi
+ echo
+ echo "Usage: ${DOGTAG_BUILD_SCRIPT} [target]"
+ echo
+ echo " where [target] is one of the optional values:"
+ echo
+ echo " help --> display '${PKI_PRODUCT_NAME}' usage statement"
+ echo " refresh --> fetch latest '${PKI_PRODUCT_NAME}.spec' file"
+ awk "$display_targets" ${PKI_PRODUCT_BUILD_XML}
+ echo
+ exit 255
+}
+
+# Verify that the appropriate number of
+# command-line parameters have been entered
+# and that a valid target has been specified
+if [ $# -eq 0 ] ; then
+ RELEASE_TARGET=main
+ BUILD_TARGET=""
+elif [ $# -eq 1 ] ; then
+ if [ "$1" == "help" ]; then
+ usage
+ else
+ SUCCESS=`awk -v build_target=$1 "$check_targets" ${PKI_PRODUCT_BUILD_XML}`
+ if [ "${SUCCESS}" == "false" ]; then
+ usage "ERROR: Invalid target '$1' specified for '${PKI_PRODUCT_NAME}'!"
+ else
+ RELEASE_TARGET=local
+ BUILD_TARGET="$1"
+ fi
+ fi
+elif [ $# -gt 1 ] ; then
+ usage "ERROR: Too many parameters specified for '${PKI_PRODUCT_NAME}'!"
+fi
+
+# This script may ONLY be run on Linux!
+PKI_OS=`uname`
+if [ "${PKI_OS}" != "Linux" ]; then
+ printf "The '${DOGTAG_BUILD_SCRIPT}' script is ONLY executable on a 'Linux' machine!\n"
+ exit 255
+fi
+
+# Always start with a new release root directory
+rm -rf ${PKI_RELEASE_ROOT}
+mkdir -p ${PKI_RELEASE_ROOT}
+
+# Copy the source code to the release root
+cd ${PKI_BASEDIR}
+find ${PKI_PRODUCT_SOURCE_PATH} -name .svn -prune -o -name *.swp -prune -o -print | cpio -pdum ${PKI_RELEASE_DIR} > /dev/null 2>&1
+cd - > /dev/null 2>&1
+
+# Remove unused files
+rm -rf ${PKI_RELEASE_ROOT}/build_*
+rm -rf ${PKI_RELEASE_ROOT}/*.spec
+if [ -d ${PKI_RELEASE_ROOT}/config-ext ]; then
+ rm -rf ${PKI_RELEASE_ROOT}/config-ext
+fi
+
+# Create the default spec file
+cp ${DOGTAG_SPECFILE} ${PKI_RELEASE_ROOT}/${PKI_PRODUCT_NAME}.spec
+
+# Use bash-specific syntax to create the default build script
+cat >> ${PKI_RELEASE_ROOT}/${PKI_RELEASE_SCRIPT} << END_OF_SCRIPT
+#!/bin/bash
+
+#####################################################################
+### DO NOT EDIT! This script has been automatically generated! ###
+#####################################################################
+
+# Always switch into the base directory of this
+# shell script prior to executing it so that all
+# of its output is written to this directory
+cd \`dirname \$0\`
+
+# Set pre-defined variables
+BUILD_SCRIPT=\`basename \$0\`
+BUILD_XML=${PKI_BUILD_XML}
+SPECFILE=${PKI_PRODUCT_NAME}.spec
+
+# Define awk scripts
+check_targets='
+BEGIN {
+ success = "false";
+}
+
+{
+ while( getline < FILENAME > 0 ) {
+ if( substr( \$0, 0, 80 ) ~ "target name" ) {
+ start = substr( \$0,
+ match( \$0, "\"" ) + 1 );
+ target = substr( start,
+ start,
+ match( start, "\"" ) - 1 );
+ if( build_target == target ) {
+ success = "true";
+ }
+ }
+ }
+}
+
+END {
+ printf( "%s", success );
+}'
+
+display_targets='{
+ while( getline < FILENAME > 0 ) {
+ if( substr( \$0, 0, 80 ) ~ "target name" ) {
+ start = substr( \$0,
+ match( \$0, "\"" ) + 1 );
+ target = substr( start,
+ start,
+ match( start, "\"" ) - 1 );
+ }
+ if( substr( \$0, 0, 80 ) ~ "description" ) {
+ start = substr( \$0,
+ match( \$0, "\"" ) + 1 );
+ description[target] = substr( start,
+ start,
+ match( start, "\"" ) - 1 );
+ printf( "'%20s' %s\n", target, description[target] );
+ }
+ }
+}'
+
+# Provide a usage function
+usage() {
+ if [ \$# -gt 0 ] ; then
+ echo
+ echo "\$1"
+ fi
+ echo
+ echo "Usage: \${BUILD_SCRIPT} [target]"
+ echo
+ echo " where [target] is one of the optional values:"
+ echo
+ echo " help --> display '${PKI_PRODUCT_NAME}' usage statement"
+ awk "\$display_targets" \${BUILD_XML}
+ echo
+ exit 255
+}
+
+# Verify that the appropriate number of
+# command-line parameters have been entered
+# and that a valid target has been specified
+if [ \$# -eq 0 ] ; then
+ RELEASE_TARGET=main
+ BUILD_TARGET=main
+elif [ \$# -eq 1 ] ; then
+ if [ "\$1" == "help" ]; then
+ usage
+ else
+ SUCCESS=\`awk -v build_target=\$1 "\$check_targets" \${BUILD_XML}\`
+ if [ "\${SUCCESS}" == "false" ]; then
+ usage "ERROR: Invalid target '\$1' specified for '${PKI_PRODUCT_NAME}'!"
+ else
+ RELEASE_TARGET=local
+ BUILD_TARGET="\$1"
+ fi
+ fi
+elif [ \$# -gt 1 ] ; then
+ usage "ERROR: Too many parameters specified for '${PKI_PRODUCT_NAME}'!"
+fi
+
+# This script may ONLY be run on Linux!
+OS=\`uname\`
+if [ "\${OS}" != "Linux" ]; then
+ printf "The '\${BUILD_SCRIPT}' script is ONLY executable on a 'Linux' machine!\n"
+ exit 255
+fi
+
+if [ -f /etc/fedora-release ]; then
+ # Script is being executed on Fedora
+ ant -f config/release.xml -Drhel=0 -Dproduct.ui.flavor.prefix=\${PKI_PRODUCT_UI_FLAVOR_PREFIX} -Dproduct.prefix=\${PKI_PRODUCT_PREFIX} -Dproduct=\${PKI_PRODUCT} -Dversion=\${PKI_VERSION} -Dbasedir=. -Dspecfile=\${SPECFILE} -Dtarget=\${BUILD_TARGET} \${RELEASE_TARGET}
+elif [ -f /etc/redhat-release ]; then
+ # Script is being executed on RHEL
+ ant -f config/release.xml -Drhel=1 -Dproduct.ui.flavor.prefix=\${PKI_PRODUCT_UI_FLAVOR_PREFIX} -Dproduct.prefix=\${PKI_PRODUCT_PREFIX} -Dproduct=\${PKI_PRODUCT} -Dversion=\${PKI_VERSION} -Dbasedir=. -Dspecfile=\${SPECFILE} -Dtarget=\${BUILD_TARGET} \${RELEASE_TARGET}
+fi
+
+END_OF_SCRIPT
+chmod 00755 ${PKI_RELEASE_ROOT}/${PKI_RELEASE_SCRIPT}
+
+cd ${PKI_RELEASE_ROOT}
+./${PKI_RELEASE_SCRIPT} ${BUILD_TARGET}
+