diff options
author | mharmsen <mharmsen@c9f7a03b-bd48-0410-a16d-cbbf54688b0b> | 2008-11-28 21:10:42 +0000 |
---|---|---|
committer | mharmsen <mharmsen@c9f7a03b-bd48-0410-a16d-cbbf54688b0b> | 2008-11-28 21:10:42 +0000 |
commit | fe389a989ca983779e0abd34018c61f805deeea4 (patch) | |
tree | fa47907f4c6a544bd4e0e0df982542ea742a12fc /pki/dogtag/util | |
parent | d13a26663e2c1986b3b596766db9f4b9cce3f2d6 (diff) | |
download | pki-fe389a989ca983779e0abd34018c61f805deeea4.tar.gz pki-fe389a989ca983779e0abd34018c61f805deeea4.tar.xz pki-fe389a989ca983779e0abd34018c61f805deeea4.zip |
Bugzilla Bug #445402: Rename 'linux' to 'dogtag'.
git-svn-id: svn+ssh://svn.fedorahosted.org/svn/pki/trunk@148 c9f7a03b-bd48-0410-a16d-cbbf54688b0b
Diffstat (limited to 'pki/dogtag/util')
-rwxr-xr-x | pki/dogtag/util/build_linux | 38 | ||||
-rwxr-xr-x | pki/dogtag/util/config-ext/build_linux_pki | 318 | ||||
-rw-r--r-- | pki/dogtag/util/config/product.xml | 305 | ||||
-rw-r--r-- | pki/dogtag/util/config/release.xml | 86 | ||||
-rw-r--r-- | pki/dogtag/util/pki-util.spec | 299 |
5 files changed, 1046 insertions, 0 deletions
diff --git a/pki/dogtag/util/build_linux b/pki/dogtag/util/build_linux new file mode 100755 index 000000000..4a33825cd --- /dev/null +++ b/pki/dogtag/util/build_linux @@ -0,0 +1,38 @@ +#!/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 of this +# shell script prior to executing it so that all +# of its output is written to this directory +cd `dirname $0` + +# Retrieve the directory name housing this component +PWD=`pwd` + +# Set Linux component-specific environment variables +LINUX_BUILD_SCRIPT=`basename $0` +export LINUX_BUILD_SCRIPT +LINUX_COMPONENT=`basename ${PWD}` +export LINUX_COMPONENT +LINUX_SPECFILE="pki-util.spec" +export LINUX_SPECFILE + +# Invoke the shared Linux PKI build script +config-ext/build_linux_pki $@ + diff --git a/pki/dogtag/util/config-ext/build_linux_pki b/pki/dogtag/util/config-ext/build_linux_pki new file mode 100755 index 000000000..d9ea91e8c --- /dev/null +++ b/pki/dogtag/util/config-ext/build_linux_pki @@ -0,0 +1,318 @@ +#!/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 "LINUX" 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_LINUX_DIR=linux +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 [ "${LINUX_BUILD_SCRIPT}" == "" ]; then + printf "ERROR: The 'LINUX_BUILD_SCRIPT' environment variable is undefined!\n" + PKI_ABORT_SCRIPT="true" +fi +if [ "${LINUX_COMPONENT}" == "" ]; then + printf "ERROR: The 'LINUX_COMPONENT' environment variable is undefined!\n" + PKI_ABORT_SCRIPT="true" +fi +if [ "${LINUX_SPECFILE}" == "" ]; then + printf "ERROR: The 'LINUX_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. - '${LINUX_BUILD_SCRIPT}')\n" + printf "which defines ALL environment variables prefixed by 'LINUX'!\n" + exit 255 +fi + +# Compute remaining variables by assigning their values from the specfile +PKI_SOURCE_CODE_URL="https://pki-svn.fedora.redhat.com/svn/pki/trunk/${PKI_DIR}/${PKI_SRC_DIR}/${LINUX_COMPONENT}" +PKI_PRODUCT_UI_PREFIX=`grep " base_ui_prefix" ${LINUX_SPECFILE} | awk '{ print $3; }'` +PKI_PRODUCT_PREFIX=`grep " base_prefix" ${LINUX_SPECFILE} | awk '{ print $3; }'` +PKI_PRODUCT=`grep " base_component" ${LINUX_SPECFILE} | awk '{ print $3; }'` +if [ "${PKI_PRODUCT_UI_PREFIX}" != "" ]; then + PKI_PRODUCT_BUILD_XML="${PKI_BUILD_XML}" + PKI_PRODUCT_NAME="${PKI_PRODUCT_PREFIX}-${PKI_PRODUCT}" + PKI_PRODUCT_SOURCE_PATH="${PKI_DIR}/${PKI_LINUX_DIR}/${LINUX_COMPONENT}" +elif [ "${PKI_PRODUCT_PREFIX}" != "" ]; then + PKI_PRODUCT_BUILD_XML="${PKI_BASEDIR}/${PKI_DIR}/${PKI_SRC_DIR}/${LINUX_COMPONENT}/${PKI_BUILD_XML}" + PKI_PRODUCT_NAME="${PKI_PRODUCT_PREFIX}-${PKI_PRODUCT}" + PKI_PRODUCT_SOURCE_PATH="${PKI_DIR}/${PKI_SRC_DIR}/${LINUX_COMPONENT}" +else + PKI_PRODUCT_BUILD_XML="${PKI_BASEDIR}/${PKI_DIR}/${PKI_SRC_DIR}/${LINUX_COMPONENT}/${PKI_BUILD_XML}" + PKI_PRODUCT_NAME="${PKI_PRODUCT}" + PKI_PRODUCT_SOURCE_PATH="${PKI_DIR}/${PKI_SRC_DIR}/${LINUX_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 '${LINUX_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: ${LINUX_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" ${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 '${LINUX_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 ${LINUX_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 + +ant -f config/release.xml -Dbasedir=. -Dspecfile=\${SPECFILE} -Dtarget=\${BUILD_TARGET} \${RELEASE_TARGET} + +END_OF_SCRIPT +chmod 00755 ${PKI_RELEASE_ROOT}/${PKI_RELEASE_SCRIPT} + +cd ${PKI_RELEASE_ROOT} +./${PKI_RELEASE_SCRIPT} ${BUILD_TARGET} + diff --git a/pki/dogtag/util/config/product.xml b/pki/dogtag/util/config/product.xml new file mode 100644 index 000000000..33caf48ed --- /dev/null +++ b/pki/dogtag/util/config/product.xml @@ -0,0 +1,305 @@ +<!-- ### 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. + + Copyright (C) 2007 Red Hat, Inc. + All rights reserved. + ### END COPYRIGHT BLOCK ### --> +<project name="product.xml" default="main" basedir="."> + + <!-- Set up properties based upon the user's default Ant configuration --> + <property file=".ant.properties"/> + <property file="${user.home}/.ant.properties"/> + <property environment="env"/> + + + <!-- Check for required properties passed-in via the build scripts --> + <fail message="The '-Dspecfile=SPECFILE' property MUST always be specified!" + unless="specfile"/> + + + <!-- Set up optional properties passed-in via the build scripts --> + <property name="basedir" value=""/> + <property name="dirsec" value=""/> + <property name="target" value=""/> + + + <!-- Set up properties obtained from the spec file --> + <exec executable="perl" + failonerror="true" + outputproperty="Name"> + <arg value="-ne"/> + <arg value="print $1 if /%define base_product\s+(.*)/"/> + <arg value="${specfile}"/> + </exec> + + <exec executable="perl" + failonerror="true" + outputproperty="spec.product.ui.prefix"> + <arg value="-ne"/> + <arg value="print $1 if /%define base_ui_prefix\s+(\S+)/"/> + <arg value="${specfile}"/> + </exec> + + <exec executable="perl" + failonerror="true" + outputproperty="product.prefix"> + <arg value="-ne"/> + <arg value="print $1 if /%define base_prefix\s+(\S+)/"/> + <arg value="${specfile}"/> + </exec> + + <exec executable="perl" + failonerror="true" + outputproperty="product"> + <arg value="-ne"/> + <arg value="print $1 if /%define base_component\s+(\S+)/"/> + <arg value="${specfile}"/> + </exec> + + <!-- if "spec.product.ui.prefix" is "" or "linux", --> + <!-- set "product.ui.prefix" to ""; otherwise --> + <!-- set "product.ui.prefix" to "spec.product.ui.prefix" --> + <condition property="product.ui.prefix" + value="" + else="${spec.product.ui.prefix}"> + <or> + <equals arg1="${spec.product.ui.prefix}" + arg2=""/> + <equals arg1="${spec.product.ui.prefix}" + arg2="linux"/> + </or> + </condition> + + <!-- "product.name" is of the form "x-y-z" --> + <condition property="product.name" + value="${product.ui.prefix}-${product.prefix}-${product}"> + <not> + <equals arg1="${product.ui.prefix}" + arg2=""/> + </not> + </condition> + + <!-- "product.name" is of the form "x-y" --> + <condition property="product.name" + value="${product.prefix}-${product}"> + <and> + <equals arg1="${product.ui.prefix}" + arg2=""/> + <not> + <equals arg1="${product.prefix}" + arg2=""/> + </not> + </and> + </condition> + + <!-- "product.name" is of the form "x" --> + <condition property="product.name" + value="${product}"> + <and> + <equals arg1="${product.ui.prefix}" + arg2=""/> + <equals arg1="${product.prefix}" + arg2=""/> + </and> + </condition> + + <exec executable="perl" + failonerror="true" + outputproperty="version"> + <arg value="-ne"/> + <arg value="print $1 if /%define base_version\s+(\S+)/"/> + <arg value="${specfile}"/> + </exec> + + + <!-- Set up architecture-dependent properties --> + <exec executable="uname" + failonerror="true" + outputproperty="arch"> + <arg line="-i"/> + </exec> + + <!-- Set up architecture-independent properties --> + <property name="jar.home" value="/usr/share/java"/> + <property name="pki-jar.home" value="${jar.home}/${product.prefix}"/> + <property name="jni-jar.home" value="/usr/lib/java"/> + + <!-- Set up properties that control various build options --> + <property name="debug" value="true"/> + <property name="chmod.fail" value="true"/> + <property name="chmod.maxparallel" value="250"/> + <property name="deprecation" value="false"/> + <property name="optimize" value="true"/> + + + <!-- Set up properties related to the source tree --> + <property name="docs.dir" value="docs"/> + <property name="lib.dir" value="lib"/> + <property name="src.dir" value="src"/> + <property name="test.dir" value="test"/> + <property name="etc.dir" value="${src.dir}/etc"/> + <property name="script.dir" value="${src.dir}/script"/> + + + <!-- Set up properties for the release area --> + <property name="release.root" value="."/> + + + <!-- Set up properties for the build area --> + <property name="build.dir" value="build"/> + <property name="bootstrap.dir" value="bootstrap"/> + <property name="build.jars" value="${build.dir}/jars"/> + <property name="build.classes" value="${build.dir}/classes"/> + <property name="build.lib" value="${build.dir}/lib"/> + <property name="build.javadocs" value="${build.dir}/javadocs"/> + <property name="build.tests" value="${build.dir}/testcases"/> + <property name="build.tests.javadocs" value="${build.dir}/javadocs.test/"/> + <property name="manifest.tmp" value="${build.dir}/optional.manifest"/> + + + <!-- Set up properties for the distribution area --> + <property name="dist.name" value="${product.name}-${version}"/> + <property name="dist.base" value="dist"/> + <property name="dist.base.source" value="${dist.base}/source"/> + <property name="dist.base.binaries" value="${dist.base}/binary"/> + <property name="dist.dir" value="dist"/> + <property name="dist.bin" value="${dist.dir}/bin"/> + <property name="dist.lib" value="${dist.dir}/lib"/> + <property name="dist.docs" value="${dist.dir}/docs"/> + <property name="dist.etc" value="${dist.dir}/etc"/> + <property name="src.dist.name" value="${product.name}-${version}"/> + <property name="src.dist.dir" value="dist-src"/> + <property name="src.dist.src" value="${src.dist.dir}/src"/> + <property name="src.dist.docs" value="${src.dist.dir}/docs"/> + <property name="src.dist.lib" value="${src.dist.dir}/lib"/> + + + <!-- Set up properties for log messages --> + <property name="begin.clean.log.message" + value="Removing '${product.name}' component directories ..."/> + <property name="empty.clean.log.message" + value="Nothing to do!"/> + <property name="end.clean.log.message" + value="Completed removing '${product.name}' component directories."/> + <property name="begin.download.log.message" + value="Downloading '${product.name}' dependent components ..."/> + <property name="empty.download.log.message" + value="Nothing to do!"/> + <property name="end.download.log.message" + value="Completed downloading '${product.name}' dependent components."/> + <property name="begin.compile.java.log.message" + value="Compiling '${product.name}' java code from '${src.dir}' into '${build.classes}' ..."/> + <property name="empty.compile.java.log.message" + value="Nothing to do!"/> + <property name="end.compile.java.log.message" + value="Completed compiling '${product.name}' java code from '${src.dir}' into '${build.classes}'."/> + <property name="begin.build.jars.log.message" + value="Generating '${product.name}' jar files ..."/> + <property name="empty.build.jars.log.message" + value="Nothing to do!"/> + <property name="end.build.jars.log.message" + value="Completed generating '${product.name}' jar files."/> + <property name="begin.build.jni.headers.log.message" + value="Generating '${product.name}' java header files ..."/> + <property name="empty.build.jni.headers.log.message" + value="Nothing to do!"/> + <property name="end.build.jni.headers.log.message" + value="Completed generating '${product.name}' java header files."/> + <property name="notify.build.log.message" + value="Built classes, jars, and jni headers for the '${product.name}' component."/> + <property name="begin.compile.junit.tests.log.message" + value="Compiling '${product.name}' junit tests from '${test.dir}' into '${build.tests}' ..."/> + <property name="empty.compile.junit.tests.log.message" + value="Nothing to do!"/> + <property name="end.compile.junit.tests.log.message" + value="Completed compiling '${product.name}' junit tests from '${test.dir}' into '${build.tests}'."/> + <property name="begin.run.junit.tests.log.message" + value="Executing '${product.name}' tests ..."/> + <property name="empty.run.junit.tests.log.message" + value="Nothing to do!"/> + <property name="end.run.junit.tests.log.message" + value="Completed executing '${product.name}' tests."/> + <property name="notify.verify.log.message" + value="Verified the '${product.name}' component."/> + <property name="begin.clean.javadocs.log.message" + value="Removing '${product.name}' javadocs directory ..."/> + <property name="empty.clean.javadocs.log.message" + value="Nothing to do!"/> + <property name="end.clean.javadocs.log.message" + value="Completed removing '${product.name}' javadocs directory."/> + <property name="begin.compose.javadocs.log.message" + value="Composing '${product.name}' javadocs ..."/> + <property name="empty.compose.javadocs.log.message" + value="Nothing to do!"/> + <property name="end.compose.javadocs.log.message" + value="Completed composing '${product.name}' javadocs."/> + <property name="notify.document.log.message" + value="Documented '${product.name}' javadocs."/> + <property name="begin.distribute.binaries.log.message" + value="Creating '${product.name}' binary distributions ..."/> + <property name="begin.binary.wrappers.log.message" + value=" Creating '${product.name}' binary wrappers ..."/> + <property name="empty.binary.wrappers.log.message" + value=" Nothing to do!"/> + <property name="end.binary.wrappers.log.message" + value=" Completed creating '${product.name}' binary wrappers."/> + <property name="begin.binary.zip.log.message" + value=" Creating '${product.name}' binary zip files ..."/> + <property name="empty.binary.zip.log.message" + value=" Nothing to do!"/> + <property name="end.binary.zip.log.message" + value=" Completed creating '${product.name}' binary zip files."/> + <property name="begin.binary.tar.log.message" + value=" Creating '${product.name}' binary tar files ..."/> + <property name="empty.binary.tar.log.message" + value=" Nothing to do!"/> + <property name="end.binary.tar.log.message" + value=" Completed creating '${product.name}' binary tar files."/> + <property name="begin.binary.gtar.log.message" + value=" Creating '${product.name}' binary gzip files ..."/> + <property name="empty.binary.gtar.log.message" + value=" Nothing to do!"/> + <property name="end.binary.gtar.log.message" + value=" Completed creating '${product.name}' binary gzip files."/> + <property name="end.distribute.binaries.log.message" + value="Completed creating '${product.name}' binary distributions."/> + <property name="begin.distribute.source.log.message" + value="Creating '${product.name}' source distributions ..."/> + <property name="begin.source.zip.log.message" + value=" Creating '${product.name}' source zip files ..."/> + <property name="empty.source.zip.log.message" + value=" Nothing to do!"/> + <property name="end.source.zip.log.message" + value=" Completed creating '${product.name}' source zip files."/> + <property name="begin.source.tar.log.message" + value=" Creating '${product.name}' source tar files ..."/> + <property name="empty.source.tar.log.message" + value=" Nothing to do!"/> + <property name="end.source.tar.log.message" + value=" Completed creating '${product.name}' source tar files."/> + <property name="begin.source.gtar.log.message" + value=" Creating '${product.name}' source gzip files ..."/> + <property name="empty.source.gtar.log.message" + value=" Nothing to do!"/> + <property name="end.source.gtar.log.message" + value=" Completed creating '${product.name}' source gzip files."/> + <property name="end.distribute.source.log.message" + value="Completed creating '${product.name}' source distributions."/> + <property name="notify.distribute.log.message" + value="Distributed '${product.name}' distribution packages."/> + <property name="notify.main.log.message" + value="Built, verified, documented, and distributed a fresh '${product.name}' component."/> + +</project> + diff --git a/pki/dogtag/util/config/release.xml b/pki/dogtag/util/config/release.xml new file mode 100644 index 000000000..fc43aaeb7 --- /dev/null +++ b/pki/dogtag/util/config/release.xml @@ -0,0 +1,86 @@ +<!-- ### 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. + + Copyright (C) 2007 Red Hat, Inc. + All rights reserved. + ### END COPYRIGHT BLOCK ### --> +<project name="release.xml" default="main" basedir="${basedir}"> + + <echo message="Importing shared properties ..."/> + <import file="product.xml"/> + <import file="product-ext.xml" optional="true"/> + <import file="release-ext.xml" optional="true"/> + <echo message="Completed importing shared properties."/> + + + <target name="local" + depends="" + description="--> Generate this target locally"> + <echo message="Generating the '${product.name}' target locally ..."/> + <exec executable="ant" dir="${release.root}"> + <arg value="-Dspecfile=${product.name}.spec"/> + <arg value="-Ddirsec=${dirsec}"/> + <arg value="${target}"/> + </exec> + <echo message="Completed generating the '${product.name}' target locally."/> + </target> + + + <target name="main" + depends="" + description="--> Generate component RPMS and SRPMS"> + <echo message="Generating '${product.name}' RPMS and SRPMS ..."/> + + <exec executable="pwd" + failonerror="true" + outputproperty="top.dir"/> + <echo message="Established the '${top.dir}' top-level directory."/> + + <echo message="Creating the '${product.name}' source distribution ..."/> + <exec executable="ant" + dir="${release.root}"> + <arg value="-Dspecfile=${product.name}.spec"/> + <arg value="-Ddirsec=${dirsec}"/> + <arg value="distribute_source"/> + </exec> + <echo message="Completed creating the '${product.name}' source distribution."/> + + <echo message="Creating '${product.name}' RPM directories ..."/> + <mkdir dir="${release.root}/dist/rpmpkg"/> + <mkdir dir="${release.root}/dist/rpmpkg/SOURCES"/> + <mkdir dir="${release.root}/dist/rpmpkg/RPMS"/> + <mkdir dir="${release.root}/dist/rpmpkg/SRPMS"/> + <mkdir dir="${release.root}/dist/rpmpkg/SPECS"/> + <mkdir dir="${release.root}/dist/rpmpkg/BUILD"/> + <echo message="Completed creating '${product.name}' RPM directories."/> + + <echo message="Building '${product.name}' RPMS and SRPMS ..."/> + <exec executable="rpmbuild" + dir="${release.root}"> + <arg value="--define"/> + <arg value="_topdir ${top.dir}/${release.root}/dist/rpmpkg"/> + <arg value="-ta"/> + <arg value="${top.dir}/${release.root}/dist/source/${product.name}-${version}.tar.gz"/> + </exec> + <echo message="Completed building '${product.name}' RPMS and SRPMS."/> + + <echo message="Removing various '${product.name}' RPM directories and files ..."/> + <delete dir="${release.root}/dist/rpmpkg/BUILD"/> + <echo message="Completed removing various '${product.name}' RPM directories and files."/> + + <echo message="Completed generating '${product.name}' RPMS and SRPMS."/> + </target> + +</project> + diff --git a/pki/dogtag/util/pki-util.spec b/pki/dogtag/util/pki-util.spec new file mode 100644 index 000000000..ee1568b58 --- /dev/null +++ b/pki/dogtag/util/pki-util.spec @@ -0,0 +1,299 @@ +# 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 + +############################################################################### +### D E F I N I T I O N S ### +############################################################################### + +## Entity Definitions +%define base_entity Dogtag +%define base_prefix pki + +## Product Definitions +%define base_system Certificate System +%define base_product PKI Utility Framework +%define base_component util +%define base_pki %{base_entity} %{base_system} + +## Package Header Definitions +%define base_name %{base_prefix}-%{base_component} +%define base_version 1.0.0 +%define base_release 7 +%define base_group System Environment/Base +%define base_vendor Red Hat, Inc. +%define base_license GPLv2 with exceptions +%define base_packager %{base_vendor} <http://bugzilla.redhat.com/bugzilla> +%define base_summary %{base_pki} - %{base_product} +%define base_url http://pki-svn.fedora.redhat.com/wiki/PKI_Documentation + +## Subpackage Header Definitions +%define javadoc_summary %{base_summary} Javadocs +%define javadoc_group Development/Documentation + +## Helper Definitions +%define pki_jdk java-devel >= 1.6.0 +%define pki_ca %{base_entity} Certificate Authority +%define pki_drm %{base_entity} Data Recovery Manager +%define pki_ds Fedora Directory Server +%define pki_ocsp %{base_entity} Online Certificate Status Protocol Manager +%define pki_ra %{base_entity} Registration Authority +%define pki_tks %{base_entity} Token Key Service +%define pki_tps %{base_entity} Token Processing System + +## Don't build the debug packages +%define debug_package %{nil} + + +##===================## +## Linux Definitions ## +##===================## +%ifos Linux +## Bugzilla Bug #246173: The following section is necessary due to +## Bugzilla Bug #232224 and is related to using the IBM JDK with a +## specific version of glibc on specific platforms on specific architectures +#%ifarch x86_64 +#export LD_PRELOAD=/usr/lib/jvm/java-1.5.0-ibm-1.5.0.3.x86_64/jre/bin/libj9vm23.so:/usr/lib/jvm/java-1.5.0-ibm-1.5.0.3.x86_64/jre/bin/libj9thr23.so:/usr/lib/jvm/java-1.5.0-ibm-1.5.0.3.x86_64/jre/bin/libjsig.so +#%endif + +## A distribution model is required on certain Linux operating systems! +## +## check for a pre-defined distribution model +%define undefined_distro %(test "%{dist}" = "" && echo 1 || echo 0) +%if %{undefined_distro} +%define is_fedora %(test -e /etc/fedora-release && echo 1 || echo 0) +%if %{is_fedora} +## define a default distribution model on Fedora Linux +%define dist_prefix .fc +%define dist_version %(echo `rpm -qf --qf='%{VERSION}' /etc/fedora-release` | tr -d [A-Za-z]) +%define dist %{dist_prefix}%{dist_version} +%define openjdk %(test %{dist_version} -ge 9 && echo 1 || echo 0) +%if %{openjdk} +## redefine the JDK used to build on Fedora 9 Linux +%define pki_jdk java-devel >= 1.6.0 +%endif +%define openjdk %(test %{dist_version} -eq 8 && echo 1 || echo 0) +%if %{openjdk} +## redefine the JDK used to build on Fedora 8 Linux +%define pki_jdk java-devel >= 1.7.0 +%endif +%else +%define is_redhat %(test -e /etc/redhat-release && echo 1 || echo 0) +%if %{is_redhat} +## define a default distribution model on Red Hat Linux +%define dist_prefix .el +%define dist_version %(echo `rpm -qf --qf='%{VERSION}' /etc/redhat-release` | tr -d [A-Za-z]) +%define dist %{dist_prefix}%{dist_version} +%endif +%endif +%endif +%endif + + + +############################################################################### +### P A C K A G E H E A D E R ### +############################################################################### + +Name: %{base_name} +Version: %{base_version} +Release: %{base_release}%{?dist} +Summary: %{base_summary} +Vendor: %{base_vendor} +URL: %{base_url} +License: %{base_license} +Packager: %{base_packager} +Group: %{base_group} + + +## Without AutoReqProv: no, rpmbuild finds all sorts of crazy +## dependencies that we don't care about, and refuses to install +AutoReqProv: no + +BuildArch: noarch +BuildRoot: %{_builddir}/%{base_name}-root + + +## NOTE: This spec file may require a specific JDK, "gcc", and/or "gcc-c++" +## packages as well as the "rpm" and "rpm-build" packages. +## +## Technically, "ant" should not need to be in "BuildRequires" since +## it is the Java equivalent of "make" (and/or "Autotools"). +## +BuildRequires: ant >= 1.6.2, %{pki_jdk}, jpackage-utils >= 1.6.0, jss >= 4.2.4, ldapjdk >= 4.17, osutil >= 1.0.0 + +## Without Requires something, rpmbuild will abort! +Requires: jpackage-utils >= 1.6.0, jss >= 4.2.4, ldapjdk >= 4.17 + + +## This package is non-relocatable! +#Prefix: + +Source0: %{base_name}-%{base_version}.tar.gz + +## This package currently contains no patches! +#Patch0: + + +%description +%{base_pki} is an enterprise software system designed +to manage enterprise Public Key Infrastructure (PKI) deployments. + +The %{base_entity} %{base_product} is required by the following four +%{base_entity} PKI subsystems: + + the %{pki_ca}, + the %{pki_drm}, + the %{pki_ocsp}, and + the %{pki_tks}. + + + +############################################################################### +### S U B P A C K A G E H E A D E R ### +############################################################################### + +%package javadoc +Summary: %{javadoc_summary} +Group: %{javadoc_group} + + +## Subpackages should always use package = version-release +Requires: %{base_name} = %{version}-%{release} + + +%description javadoc +%{javadoc_summary} + +This documentation pertains exclusively to version %{version} of +the %{base_entity} %{base_product}. + + + +############################################################################### +### P R E P A R A T I O N & S E T U P ### +############################################################################### + +## On Linux systems, prep and setup expect there to be a Source file +## in the /usr/src/redhat/SOURCES directory - it will be unpacked +## in the _builddir (not BuildRoot) +%prep + + +%setup -q + + +## This package currently contains no patches! +#%patch0 +# patches + + + +############################################################################### +### B U I L D P R O C E S S ### +############################################################################### + +%build +ant -Dspecfile=%{base_name}.spec + + + +############################################################################### +### I N S T A L L A T I O N P R O C E S S ### +############################################################################### + +%install +cd dist/binary +unzip %{name}-%{version}.zip -d ${RPM_BUILD_ROOT} +cd ${RPM_BUILD_ROOT}/usr/share/java/%{base_prefix} +mv cmsutil.jar cmsutil-%{version}.jar +mv nsutil.jar nsutil-%{version}.jar +ln -s cmsutil-%{version}.jar cmsutil.jar +ln -s nsutil-%{version}.jar nsutil.jar + + + +############################################################################### +### C L E A N U P P R O C E S S ### +############################################################################### + +%clean +rm -rf ${RPM_BUILD_ROOT} + + + +############################################################################### +### P R E & P O S T I N S T A L L / U N I N S T A L L S C R I P T S ### +############################################################################### + +## This package currently contains no pre-installation process! +#%pre + + +## This package currently contains no post-installation process! +#%post + + +## This package currently contains no pre-uninstallation process! +#%preun + + +## This package currently contains no post-uninstallation process! +#%postun + + + +############################################################################### +### I N V E N T O R Y O F F I L E S A N D D I R E C T O R I E S ### +############################################################################### + +%files +%attr(-,root,root) %{_datadir}/doc/%{base_name}-%{base_version}/* +%attr(-,root,root) %{_datadir}/java/%{base_prefix} + + +%files javadoc +%defattr(0644,root,root,0755) +%dir %{_javadocdir}/%{name}-%{version} +%{_javadocdir}/%{name}-%{version}/* + + + +############################################################################### +### C H A N G E L O G ### +############################################################################### + +%changelog +* Sat Nov 22 2008 Matthew Harmsen <mharmsen@redhat.com> 1.0.0-7 +- Bugzilla Bug #472305 - "equality" tests in all spec files need to be fixed +- Bumped "java" and "java-devel" 1.4.2 and 1.5.0 dependencies to 1.6.0 +- Changed "java-sdk" to "java-devel" for consistency +* Fri Oct 9 2008 Ade Lee <alee@redhat.com> 1.0.0-6 +- Fix for bug #223361: Security Domain in LDAP +* Tue Sep 16 2008 Christina Fu <cfu@redhat.com> 1.0.0-5 +- Fix for bug #462488: IPAddress in SubjAltNameExt incorrectly padded with extra bytes in cert +* Wed Aug 13 2008 Ade Lee <alee@redhat.com> 1.0.0-4 +- Fix for bug #458317: certitificate policy extensions not displayed in PrettyPrintCert +* Wed Jun 25 2008 Andrew Wnuk <awnuk@redhat.com> 1.0.0-3 +- Fix for bug #443687. +* Mon Jun 9 2008 Matthew Harmsen <mharmsen@redhat.com> 1.0.0-2 +- Bugzilla Bug #450345: Port Dogtag 1.0.0 to + Fedora 9 (32-bit i386 & 64-bit x86_64). +* Tue Feb 19 2008 PKI Team <pki-devel@redhat.com> 1.0.0-1 +- Initial open source version based upon proprietary + Red Hat Certificate System (RHCS) 7.3. + |