libreccm-legacy/tools/misc/build-all.sh

790 lines
24 KiB
Bash
Executable File

#!/bin/sh
#
# Build everything!
[ -z "$BUNDLETEMPLATE" ] && BUNDLETEMPLATE="`pwd`/tools/bundle/TEMPLATE"
[ -z "$BUNDLEDIR" ] && BUNDLEDIR="ccm-ldn-aplaws/ccm-ldn-aplaws"
[ -z "$BUNDLES" ] && BUNDLES="standard complete demo devel"
set -e
#set -v
#set -x
PACKAGE_ARG=0
BUILD_ARG=0
DOCS_ARG=0
NO_JAVADOC_ARG=0
export AUTO_BUILD_ROOT=/var/tmp/$USER-auto-build-root
rm -rf $AUTO_BUILD_ROOT && mkdir $AUTO_BUILD_ROOT;
function display_usage() {
cat <<EOF
Usage: $0 [OPTIONS] APPS-FILE
Options:
-? Display this usage message
-p Run packaging step
-b Run application build step
-d Run documentation build step
-j Don't build javadoc (app-doc.rpm)
-r [name] Restart application build from app [name]
EOF
exit 1
}
# Generate skeleton project.xml.
# We will generate the <ccm:prebuilt> block by expanding
# the <ccm:dependencies> for each required CCM app in turn.
# The actual expansion work will be done by a perl script.
# However we must deal with the relation="eq,gt,ge,lt,le" as well.
# This is where life gets interesting. This shell function will
# use:
# 1. the output of the perl script, which looks like:
# ccm-core -> version="6.1.1" relation="ge"
# ccm-forum -> version="1.4.2"
# 2. local rpm database
# to find out which RPM packages (installed in scratch RPM
# database, and which have been built during the execution of
# this very script) can satisfy the dependencies listed.
function write_project_xml() {
rm -f project.xml
cat > project.xml <<EOF
<?xml version="1.0" encoding="ISO-8859-1"?>
<ccm:project name="$CCM_APP"
prettyName="Red Hat Web Application Framework"
ccmVersion="6.1"
versionFrom="$CCM_APP"
xmlns:ccm="http://ccm.redhat.com/ccm-project">
<ccm:build>
<ccm:application name="$CCM_APP" prettyName="Red Hat Web Application Framework" buildOrder="1"/>
</ccm:build>
<ccm:prebuilt>
EOF
# Here's how we deal with eq,lt,le,gt,ge relations:
#
# [eq]: - easiest, we look for the exact match
#
# [ge]: we compose the list which is made up from
# installed version(s) of the required packages and the required
# version.
#
# An example:
# <ccm:requires name="ccm-core" version="6.1.2" relation="ge"/>
# Now suppose that we have following ccm-core available in our local rpm db:
# ccm-core-6.1.1
# ccm-core-6.1.3
#
# We now construct a list of versions:
#
# 6.1.1
# 6.1.3
# 6.1.2.-1
#
# First two are installed ones, the last is one mentioned in Requires:
# We call that one the 'tagged' version.
# We append '.-1' b/c we're just about to sort numerically that list, which
# will put the tagged version before the 6.1.2, if such exists. Sorting is
# performed numerically with field delimiter being period (.), so the sorted
# list looks like:
#
# 6.1.1
# 6.1.2.-1
# 6.1.3
#
# We now grep this list for the tagged version (6.1.2.-1), and take the first line *below*
# the match. In the case 6.1.2 was available, it will yield a match, since it will be
# the first one below the tag 6.1.2.-1. However, in our example, the match is '6.1.3'.
# In case there are no lines after the tagged version, dependencies can't be met.
#
# [le]: similar to [ge], except that the tagged version carries the .001 suffix.
# We proceed with composing the list and sorting it as above, but we take the first
# line *above* the tagged version. If no line exists above the tagged version,
# dependencies can't be met.
#
# [gt,lt]: similar to [ge,le] respectively, except that we do no funky suffixes to
# the tagged version. Every time we sort, we use '-u' to supress duplicate lines.
# We then grep for the tagged version and take the first one below or above it,
# respectively.
$BUILD_HOME/tools/misc/expand-dependencies $BUILD_HOME $CCM_APP |
while read app_dep
do
echo -n "Processing dependency: $app_dep"
app_name=$(expr match "$app_dep" '\([^ ]*\) *->')
app_version=$(expr match "$app_dep" '.*version="\([^"]*\)"')
app_relation=$(expr match "$app_dep" '.*relation="\([^"]*\)"')
if [ "$app_relation" = "" ]
then
app_relation=eq
fi
app_tagged_version="$app_version"
# Mangle the tagged version
case $app_relation in
le) app_tagged_version="${app_version}.001";;
ge) app_tagged_version="${app_version}.-1";;
esac
output=$(rpm $RPM_ARGS -q --queryformat '%{VERSION}\n' $app_name | grep -v 'is not installed')
sortedoutput=$(echo -e "$output\n$app_tagged_version")
sortedoutput=$(echo "$sortedoutput" | sort -u -n -t. -k1,1 -k2,2 -k3,3 -k4,4 -k5,5)
# echo -e "output: \n$output"
# echo -e "sortedoutput: \n$sortedoutput"
case $app_relation in
eq) match=$(echo "$output" | grep -F -x "$app_version") ;;
le|lt) match=$(echo "$sortedoutput" | grep -B1 -F -x "$app_tagged_version" | head --lines=-1) ;;
ge|gt) match=$(echo "$sortedoutput" | grep -A1 -F -x "$app_tagged_version" | tail --lines=+2) ;;
esac
if [ "$(echo "$match" | sed 's/ //g')" = "" ]
then
echo " ... unsatisfied!"
if [ "$output" != "" ]
then
echo " Found only: $output, check $APPS_FILE and $CCM_APP/$CCM_APP/application.xml"
else
echo
echo -n " Application $app_name not built at all"
if echo " ${APPS} " | grep -F " ${app_name} " > /dev/null
then
:
else
echo -n ", please add it to $APPS_FILE"
fi
echo
echo " Restart the build process with '-r $app_name'"
echo
fi
exit 1
fi
echo " ... found '$match'"
echo "<ccm:application name=\"$app_name\" version=\"$match\"/>" >> project.xml
done
if [ "$?" == 1 ]
then
exit 1
fi
cat >> project.xml << EOF2
</ccm:prebuilt>
</ccm:project>
EOF2
}
# Gets svn revision for app whose tree starts in current dir.
function get_svn_revision {
SVN_REVISION=""
revision=$(svn info . | grep -i '^last changed rev' | cut '-d ' -f4)
ccm_app=$(pwd | sed 's!.*/!!')
if [ -z "$revision" ]; then
echo "Could not find the most recent svn revision number for $ccm_app"
exit 1
fi
# Woo hoo, we have revision number now!
echo "Found the svn revision number for $ccm_app: $revision"
SVN_REVISION=".r$revision"
}
# Bails out if uncommitted svn changes found in current dir
function check_svn_clean {
echo "Running 'svn status' in $(pwd)"
svnstatus=$(svn st | grep -v '^\?')
if [ -n "$svnstatus" ]; then
echo "$svnstatus"
echo "Uncommited changes exist. Bailing out."
exit 1
fi
}
function check_svn_tagged {
SVN_REVISION=
if [ -n "$SVN_TAGGED" ]; then
check_svn_clean && get_svn_revision
fi
export SVN_REVISION
}
while getopts r:qpdbvj opt; do
case $opt in
r) RESTART_FROM=$OPTARG;;
p) PACKAGE_ARG=1;;
d) DOCS_ARG=1;;
b) BUILD_ARG=1;;
j) export CCM_BUILD_NO_DOCS=1;;
q) export CCM_DIST_NOZIPS=1;;
v) set -v;;
[?]) display_usage
esac
done
if [ $PACKAGE_ARG == 1 -o $BUILD_ARG == 1 -o $DOCS_ARG == 1 ]; then
DO_BUILD=0
DO_DOCS=0
DO_PACKAGE=0
if [ $PACKAGE_ARG == 1 ]; then
DO_PACKAGE=1
fi
if [ $DOCS_ARG == 1 ]; then
DO_DOCS=1
fi
if [ $BUILD_ARG == 1 ]; then
DO_BUILD=1
fi
else
DO_BUILD=1
DO_DOCS=1
DO_PACKAGE=1
fi
echo "Building apps: $DO_BUILD"
echo "Building docs: $DO_DOCS"
echo "Building ISOs: $DO_PACKAGE"
echo "Skipping Javadoc RPMs: ${CCM_BUILD_NO_DOCS:-0}"
shift $(($OPTIND-1))
APPS_FILE=$1
if [ -z $APPS_FILE ]; then
display_usage
fi
if [ ! -e $APPS_FILE ]; then
echo "$APPS_FILE doesn't exist"
display_usage
fi
# get rid of newlines
apps=$(echo $(cat $APPS_FILE))
APPS=""
# First, reorder the supplied list of apps in proper dependency order
app_build_order=$(grep ccm:requires */*/application.xml | sed 's!^\(ccm-[^/]*\)/.*name="\([^"]*\)".*!\2 \1!' | tsort)
for app in $app_build_order
do
if echo " ${apps} " | grep -F " ${app} " > /dev/null
then
APPS="$APPS $app"
fi
done
for app in $apps
do
if ! echo " ${APPS} " | grep -F " ${app} " > /dev/null
then
echo "Could not read $app/*/application.xml."
echo "Make sure to include a copy or symbolic link of this application in the build area."
exit 1
fi
done
BUILD_APPS=""
BOOTSTRAP=1
for app in $APPS
do
if [ "x$RESTART_FOUND" = "x1" -o "x$RESTART_FROM" = "x$app" ]; then
RESTART_FOUND=1;
BOOTSTRAP=0
BUILD_APPS="$BUILD_APPS $app";
fi
done
if [ -z "$BUILD_APPS" ]; then
BUILD_APPS=$APPS
fi
if [ ! -z $RESTART_FROM ] && [ -z $RESTART_FOUND ] && [ $DO_BUILD = 1 ]; then
echo "$RESTART_FROM not found in app list";
display_usage
fi
echo "Processing apps: $apps"
echo "Building apps in order: $BUILD_APPS"
BUILD_HOME=`pwd`
VIRTUAL_ROOT=$BUILD_HOME/root
if [ -f $BUILD_HOME/rpm ]
then
RPM="$BUILD_HOME/rpm"
else
RPM="$(which rpm)"
fi
RPM_DB=$VIRTUAL_ROOT/rpmdb
RPM_ARGS="--dbpath $RPM_DB"
HOMETOPDIR="$(echo ~/rpm)"
HOMERPMDIR="$HOMETOPDIR/RPMS/noarch"
HOMESRPMDIR="$HOMETOPDIR/SRPMS"
HOMEBUILDDIR="$HOMETOPDIR/BUILD"
PATH=$VIRTUAL_ROOT/usr/bin:$PATH
RUNTIME_DOCS="core/developer-guide"
RUNTIME_DOCS="$RUNTIME_DOCS core/install-guide"
RUNTIME_DOCS="$RUNTIME_DOCS cms/developer-guide"
RUNTIME_DOCS="$RUNTIME_DOCS cms/deployment-guide"
RUNTIME_DOCS="$RUNTIME_DOCS cms/admin-guide"
APLAWS_DOCS="aplaws/quick-start"
APLAWS_DOCS="$APLAWS_DOCS aplaws/admin-guide"
APLAWS_DOCS="$APLAWS_DOCS themes"
ALL_DOCS="$RUNTIME_DOCS $APLAWS_DOCS"
ALL_DOCS="$ALL_DOCS aplaws/config-reference/complete"
ALL_DOCS="$ALL_DOCS aplaws/config-reference/standard"
ALL_DOCS="$ALL_DOCS aplaws/config-reference/demo"
ALL_DOCS="$ALL_DOCS aplaws/config-reference/devel"
set_application_properties() {
APP=$1
if [ ! -e $APP/project.xml ]; then
echo "project.xml doesn't exist";
exit 1;
fi
VERSION_FROM=`grep "versionFrom=\".*\"" $APP/project.xml | sed 's/.*versionFrom="\(.*\)"/\1/'`
if [ -z $VERSION_FROM ]; then
echo "versionFrom not found";
fi
if [ ! -e $APP/$VERSION_FROM/application.xml ]; then
echo "application.xml doesn't exist for $VERSION_FROM";
exit 1
fi
cat $APP/$VERSION_FROM/application.xml | awk 'BEGIN { inTag = 0; } /<ccm:application/ { inTag=1; } inTag==1 { print $0; } inTag==1 && />/ { inTag = 0; }' > application.xml.frag
APP_VERSION=`grep 'version=\"[^"]*\"' application.xml.frag | sed 's/.*version="\([^\"]*\)".*/\1/'`
RELEASE=`grep 'release=\"[^"]*\"' application.xml.frag | sed 's/.*release="\([^\"]*\)".*/\1/'`
if [ -n "$SVN_TAGGED" ]; then
cd $APP/$APP
get_svn_revision
cd ../..
RELEASE="${RELEASE}${SVN_REVISION}"
fi
APP_NAME=`grep 'name=\"[^"]*\"' application.xml.frag | sed 's/.*name="\([^\"]*\)".*/\1/'`
rm application.xml.frag
}
if [ $DO_BUILD = 1 -a $BOOTSTRAP = 1 ]; then
echo "Starting build"
rm -rf $VIRTUAL_ROOT
mkdir $VIRTUAL_ROOT
mkdir $VIRTUAL_ROOT/rpmdb
# (20041108 Seb)
# This directory must exist because 'rpm -i' of httpunit and friends will fail.
# In a real world, this dir would have been already created by the packages httpunit at ali depend on.
mkdir -p $VIRTUAL_ROOT/usr/share/java
mkdir -p $VIRTUAL_ROOT/etc/ccm
mkdir -p $VIRTUAL_ROOT/etc/profile.d
mkdir -p $VIRTUAL_ROOT/usr/share/ccm-tools
mkdir -p $VIRTUAL_ROOT/usr/share/doc
mkdir -p $VIRTUAL_ROOT/usr/bin
mkdir -p $VIRTUAL_ROOT/var/cache
mkdir -p $VIRTUAL_ROOT/var/lib/ccm
mkdir -p $VIRTUAL_ROOT/var/lib/ccm-devel
mkdir -p $VIRTUAL_ROOT/var/log
mkdir -p $VIRTUAL_ROOT/var/opt/ccm/data
$RPM $RPM_ARGS --initdb
cat > fake.spec <<EOF
Name: fake
Version: 2.0.0
Release: 1
BuildArchitectures: noarch
Summary: fake depends
License: None
Group: Fake
Provides: /bin/bash
Provides: /bin/sh
Provides: /usr/bin/perl
Provides: /bin/tar
Provides: /usr/bin/md5sum
Provides: /usr/bin/locate
Provides: /usr/bin/rpmbuild
Provides: /usr/bin/unzip
Provides: /usr/bin/zip
Provides: tomcat4
Provides: resin
Provides: perl(File::Path)
Provides: perl(Getopt::Long)
Provides: perl(Sys::Hostname)
Provides: perl(strict)
Provides: perl(Exporter)
Provides: perl(vars)
Provides: perl(Cwd)
Provides: perl(File::Basename)
Provides: perl(File::Spec)
Provides: perl(File::Copy)
Provides: perl(File::Find)
Provides: perl(File::stat)
Provides: perl(POSIX)
Provides: perl(Carp)
Provides: perl(lib)
Provides: perl
Provides: ant = 0:1.6.2
Provides: ant-nodeps = 0:1.6.2
Provides: ant-contrib = 0:0.6
%description
Fake
%files
EOF
rpmbuild --define="_topdir $HOMETOPDIR" -ba fake.spec
$RPM $RPM_ARGS -ivh --noscripts $HOMERPMDIR/fake-2.0.0-1.noarch.rpm
export RPM_DIR=$HOMETOPDIR
# Build the build tools
for i in ccm-java httpunit junit junitperf servlet
do
(
set -e
cd tools/rpms/$i
check_svn_tagged
./rollingbuild.sh
TOOLS_NAME=`grep 'Name:' *.spec | sed -e 's/Name://' | sed -e 's/ //g'`
TOOLS_VERSION=`grep 'Version:' *.spec | sed -e 's/Version://' | sed -e 's/ //g'`
TOOLS_RELEASE=`grep 'Release:' *.spec | sed -e 's/Release://' | sed -e 's/ //g'`
$RPM $RPM_ARGS -ivh --noscripts --relocate /usr=$VIRTUAL_ROOT/usr --relocate /etc=$VIRTUAL_ROOT/etc $HOMERPMDIR/$TOOLS_NAME-$TOOLS_VERSION-$TOOLS_RELEASE.noarch.rpm
) || exit $?
done
(
set -e
cd tools/tools
check_svn_tagged
TOOLS_VERSION=`grep 'VERSION=' configure.in | sed -e 's/VERSION=//'`
TOOLS_RELEASE="`grep 'RELEASE=' configure.in | sed -e 's/RELEASE=//'`${SVN_REVISION}"
ccm_tools_home="$HOMEBUILDDIR/ccm-tools-$TOOLS_VERSION"
CCM_TOOLS_HOME="$ccm_tools_home" ./rollingbuild.sh
$RPM $RPM_ARGS -ivh --noscripts --relocate /usr=$VIRTUAL_ROOT/usr --relocate /etc=$VIRTUAL_ROOT/etc --relocate /var=$VIRTUAL_ROOT/var $HOMERPMDIR/ccm-tools-$TOOLS_VERSION-$TOOLS_RELEASE.noarch.rpm
) || exit $?
. $VIRTUAL_ROOT/etc/profile.d/ccm-tools.sh
(
set -e
cd tools/devel
check_svn_tagged
CCM_TOOLS_HOME=$VIRTUAL_ROOT/usr/share/ccm-tools ./rollingbuild.sh
DEVEL_VERSION=`grep 'VERSION=' configure.in | sed -e 's/VERSION=//'`
DEVEL_RELEASE="`grep 'RELEASE=' configure.in | sed -e 's/RELEASE=//'`${SVN_REVISION}"
$RPM $RPM_ARGS -ivh --noscripts --relocate /usr=$VIRTUAL_ROOT/usr --relocate /etc=$VIRTUAL_ROOT/etc --relocate /var=$VIRTUAL_ROOT/var $HOMERPMDIR/ccm-devel-$DEVEL_VERSION-$DEVEL_RELEASE.noarch.rpm
) || exit $?
. $VIRTUAL_ROOT/etc/profile.d/ccm-devel.sh
(
set -e
cd tools/scripts
check_svn_tagged
CCM_TOOLS_HOME=$VIRTUAL_ROOT/usr/share/ccm-tools ./rollingbuild.sh
SCRIPTS_VERSION=`grep 'VERSION=' configure.in | sed -e 's/VERSION=//'`
SCRIPTS_RELEASE="`grep 'RELEASE=' configure.in | sed -e 's/RELEASE=//'`${SVN_REVISION}"
$RPM $RPM_ARGS -ivh --noscripts --relocate /usr=$VIRTUAL_ROOT/usr --relocate /etc=$VIRTUAL_ROOT/etc $HOMERPMDIR/ccm-scripts-$SCRIPTS_VERSION-$SCRIPTS_RELEASE.noarch.rpm
) || exit $?
. $VIRTUAL_ROOT/etc/profile.d/ccm-scripts.sh
(
set -e
cd tools/bundle
check_svn_tagged
./rollingbuild.sh
BUNDLE_VERSION=`grep 'VERSION=' configure.in | sed -e 's/VERSION=//'`
BUNDLE_RELEASE="`grep 'RELEASE=' configure.in | sed -e 's/RELEASE=//'`${SVN_REVISION}"
$RPM $RPM_ARGS -ivh --noscripts --relocate /usr=$VIRTUAL_ROOT/usr $HOMERPMDIR/ccm-tools-bundle-$BUNDLE_VERSION-$BUNDLE_RELEASE.noarch.rpm
) || exit $?
fi
if [ $DO_BUILD = 1 ]; then
. $VIRTUAL_ROOT/etc/profile.d/ccm-tools.sh
. $VIRTUAL_ROOT/etc/profile.d/ccm-devel.sh
. $VIRTUAL_ROOT/etc/profile.d/ccm-scripts.sh
# This is somewhat lame-ish way, but we really need
# ant-contrib package installed.
# The build system needs ant-contrib.jar (<if> task).
# It is no longer present in the ccm-devel, so the appropriate
# RPM must be installed beforehand.
if rpm -q ant-contrib | grep 'not installed'
then
echo "Please install ant-contrib RPM, the build system depends on it."
exit 1
else
for file in $(rpm -ql ant-contrib)
do
if [ -f $file ]
then
dir=$VIRTUAL_ROOT${file%/*}
mkdir -p $dir
cp -f $file $dir
fi
done
fi
export CCM_RPM_DIR=$HOMETOPDIR
export CCM_RPMBUILD_FLAGS="$RPM_ARGS"
export CLASSPATH="$CLASSPATH:$VIRTUAL_ROOT/usr/share/java/ccm-servlet-2.3.jar"
for i in $BUILD_APPS
do
export CCM_APP=$i
(
set -e
cd $i
echo "BUILDING $i in directory `pwd`"
write_project_xml
export CCM_APPS=$i
rm -rf rollingbuild build MANIFEST MANIFEST.SKIP
cd $CCM_APP
check_svn_tagged
cd ..
if [ "x$AUTO_BUILD_COUNTER" != "x" ]; then
CCM_BUILD_COUNTER=$AUTO_BUILD_COUNTER
export CCM_BUILD_COUNTER
fi
CCM_SHARED_LIB_DIST_DIR=$VIRTUAL_ROOT/usr/share/java CCM_CONFIG_LIB_DIR=$VIRTUAL_ROOT/usr/share/java CCM_TOOLS_HOME=$VIRTUAL_ROOT/usr/share/ccm-tools CCM_SCRIPTS_HOME=$VIRTUAL_ROOT/usr/share/ccm-scripts CCM_CONFIG_HOME=$VIRTUAL_ROOT/usr/share/ccm-devel $VIRTUAL_ROOT/usr/share/ccm-scripts/bin/build.sh
) || exit $?
(
set -e
set_application_properties $i
$RPM $RPM_ARGS --replacefiles --replacepkgs --relocate /usr=$VIRTUAL_ROOT/usr --relocate /etc=$VIRTUAL_ROOT/etc -Uvh $HOMERPMDIR/$APP_NAME-$APP_VERSION-$RELEASE.noarch.rpm
) || exit $?
done
for BUNDLE in $BUNDLES
do
(
set -e
cd $BUNDLEDIR/bundles/$BUNDLE
check_svn_tagged
$BUNDLETEMPLATE/rollingbuild.sh
) || exit $?
done
fi
# Documentation build
if [ $DO_DOCS == 1 ]; then
for DOC in $ALL_DOCS
do
(
set -e
cd doc/$DOC
make
make zip
)
done
fi
# End of package build process
if [ $DO_PACKAGE == 1 ]; then
# Start of packaging proces
rm -rf dist
mkdir dist
# The distribution for runtime
mkdir dist/runtime
mkdir dist/runtime/RPMS
mkdir dist/runtime/SRPMS
mkdir dist/runtime/ZIPS
mkdir dist/runtime/doc
mkdir dist/bundles
(
set -e
BUNDLE_RADIX=`rpm -q --specfile tools/bundle/ccm-tools-bundle.spec`
TOOLS_RADIX=`rpm -q --specfile tools/tools/ccm-tools.spec`
DEVEL_RADIX=`rpm -q --specfile tools/devel/ccm-devel.spec`
SCRIPTS_RADIX=`rpm -q --specfile tools/scripts/ccm-scripts.spec`
JUNIT_RADIX=`rpm -q --specfile tools/rpms/junit/junit.spec`
JUNITPERF_RADIX=`rpm -q --specfile tools/rpms/junitperf/junitperf.spec`
HTTPUNIT_RADIX=`rpm -q --specfile tools/rpms/httpunit/httpunit.spec`
CCM_JAVA_RADIX=`rpm -q --specfile tools/rpms/ccm-java/ccm-java.spec`
SERVLET_RADIX=`rpm -q --specfile tools/rpms/servlet/servlet.spec`
tools_chop=${TOOLS_RADIX%-*}
TOOLS_VERSION=${tools_chop##*-}
devel_chop=${DEVEL_RADIX%-*}
DEVEL_VERSION=${devel_chop##*-}
scripts_chop=${SCRIPTS_RADIX%-*}
SCRIPTS_VERSION=${scripts_chop##*-}
for radix in $BUNDLE_RADIX $TOOLS_RADIX $DEVEL_RADIX $SCRIPTS_RADIX $JUNIT_RADIX $JUNITPERF_RADIX $HTTPUNIT_RADIX $CCM_JAVA_RADIX $SERVLET_RADIX
do
cp ${HOMERPMDIR}/${radix}.noarch.rpm ${BUILD_HOME}/dist/runtime/RPMS
if [ -f ${HOMESRPMDIR}/${radix}.src.rpm ]
then
cp ${HOMESRPMDIR}/${radix}.src.rpm ${BUILD_HOME}/dist/runtime/SRPMS
fi
done
if [ "x$CCM_DIST_NOZIPS" != "x1" ]; then
cp tools/tools/ccm-tools-$TOOLS_VERSION.zip $BUILD_HOME/dist/runtime/ZIPS
cp tools/tools/ccm-tools-servlet-tomcat-$TOOLS_VERSION.zip $BUILD_HOME/dist/runtime/ZIPS
cp tools/tools/ccm-tools-servlet-resin-$TOOLS_VERSION.zip $BUILD_HOME/dist/runtime/ZIPS
cp tools/devel/ccm-devel-$DEVEL_VERSION.zip $BUILD_HOME/dist/runtime/ZIPS
cp tools/scripts/ccm-scripts-$SCRIPTS_VERSION.zip $BUILD_HOME/dist/runtime/ZIPS
fi
)
for DOC in $RUNTIME_DOCS
do
(
set -e
cd doc/$DOC
DOC_VERSION=`grep 'Version: ' *.spec | sed -e 's/Version://' | sed -e 's/ //g'`
DOC_RELEASE=`grep 'Release: ' *.spec | sed -e 's/Release://' | sed -e 's/ //g'`
DOC_NAME=`grep 'Name: ' *.spec | sed -e 's/Name://' | sed -e 's/ //g'`
cp $DOC_NAME-$DOC_VERSION-$DOC_RELEASE.ps $BUILD_HOME/dist/runtime/doc
cp $DOC_NAME-$DOC_VERSION-$DOC_RELEASE.pdf $BUILD_HOME/dist/runtime/doc
cp $DOC_NAME-$DOC_VERSION.tbz $BUILD_HOME/dist/runtime/doc
cp $DOC_NAME-$DOC_VERSION.zip $BUILD_HOME/dist/runtime/doc
cp -a $DOC_NAME-$DOC_VERSION $BUILD_HOME/dist/runtime/doc
cp $HOMERPMDIR/$DOC_NAME-$DOC_VERSION-$DOC_RELEASE.noarch.rpm $BUILD_HOME/dist/runtime/RPMS
)
done
(
set -e
cd dist
mkisofs -r -J -v -o ccm-runtime.iso runtime/
)
# Now the per-bundle distributions
for BUNDLE in $BUNDLES
do
mkdir -p dist/bundles/$BUNDLE/RPMS
mkdir -p dist/bundles/$BUNDLE/SRPMS
mkdir -p dist/bundles/$BUNDLE/ZIPS
mkdir -p dist/bundles/$BUNDLE/doc
for i in `cat $BUNDLEDIR/bundles/$BUNDLE/cfg/applications.cfg | grep -v '#' | grep -v '^\s*$'`
do
echo "$BUNDLE -> $i"
APP=`ls */*/src/$i.load | sed -e 's/\/.*$//'`
set_application_properties $APP
# Copy binary, documentation & source RPMs
cp $HOMERPMDIR/$APP_NAME-$APP_VERSION-$RELEASE.noarch.rpm $BUILD_HOME/dist/bundles/$BUNDLE/RPMS
cp $HOMERPMDIR/$APP_NAME-doc-$APP_VERSION-$RELEASE.noarch.rpm $BUILD_HOME/dist/bundles/$BUNDLE/RPMS
cp $HOMESRPMDIR/$APP_NAME-$APP_VERSION-$RELEASE.src.rpm $BUILD_HOME/dist/bundles/$BUNDLE/SRPMS
# Copy binary ZIP
if [ "x$CCM_DIST_NOZIPS" != "x1" ]; then
cp $BUILD_HOME/$APP/rollingbuild/dist/zips/$APP_NAME-$APP_VERSION-$RELEASE-bin.zip $BUILD_HOME/dist/bundles/$BUNDLE/ZIPS
fi
done
(
set -e
cd $BUNDLEDIR/bundles/$BUNDLE
check_svn_tagged
BUNDLE_VERSION=`grep 'VERSION=' bundle.in | sed -e 's/VERSION=//'`
BUNDLE_RELEASE="`grep 'RELEASE=' bundle.in | sed -e 's/RELEASE=//'`${SVN_REVISION}"
cp $HOMERPMDIR/ccm-bundle-aplaws-plus-$BUNDLE-$BUNDLE_VERSION-$BUNDLE_RELEASE.noarch.rpm $BUILD_HOME/dist/bundles/$BUNDLE/RPMS
cp $HOMESRPMDIR/ccm-bundle-aplaws-plus-$BUNDLE-$BUNDLE_VERSION-$BUNDLE_RELEASE.src.rpm $BUILD_HOME/dist/bundles/$BUNDLE/SRPMS
)
(
set -e
cd doc/aplaws/config-reference/$BUNDLE
DOC_VERSION=`grep 'Version: ' *.spec | sed -e 's/Version://' | sed -e 's/ //g'`
DOC_RELEASE=`grep 'Release: ' *.spec | sed -e 's/Release://' | sed -e 's/ //g'`
DOC_NAME=`grep 'Name: ' *.spec | sed -e 's/Name://' | sed -e 's/ //g'`
cp $DOC_NAME-$DOC_VERSION-$DOC_RELEASE.ps $BUILD_HOME/dist/bundles/$BUNDLE/doc
cp $DOC_NAME-$DOC_VERSION-$DOC_RELEASE.pdf $BUILD_HOME/dist/bundles/$BUNDLE/doc
cp $DOC_NAME-$DOC_VERSION.tbz $BUILD_HOME/dist/bundles/$BUNDLE/doc
cp $DOC_NAME-$DOC_VERSION.zip $BUILD_HOME/dist/bundles/$BUNDLE/doc
cp -a $DOC_NAME-$DOC_VERSION $BUILD_HOME/dist/bundles/$BUNDLE/doc
cp $HOMERPMDIR/$DOC_NAME-$DOC_VERSION-$DOC_RELEASE.noarch.rpm $BUILD_HOME/dist/bundles/$BUNDLE/RPMS
)
echo "APLAWS $APLAWS_DOCS"
for DOC in $APLAWS_DOCS
do
(
set -e
cd doc/$DOC
DOC_VERSION=`grep 'Version: ' *.spec | sed -e 's/Version://' | sed -e 's/ //g'`
DOC_RELEASE=`grep 'Release: ' *.spec | sed -e 's/Release://' | sed -e 's/ //g'`
DOC_NAME=`grep 'Name: ' *.spec | sed -e 's/Name://' | sed -e 's/ //g'`
cp $DOC_NAME-$DOC_VERSION-$DOC_RELEASE.ps $BUILD_HOME/dist/bundles/$BUNDLE/doc
cp $DOC_NAME-$DOC_VERSION-$DOC_RELEASE.pdf $BUILD_HOME/dist/bundles/$BUNDLE/doc
cp $DOC_NAME-$DOC_VERSION.tbz $BUILD_HOME/dist/bundles/$BUNDLE/doc
cp $DOC_NAME-$DOC_VERSION.zip $BUILD_HOME/dist/bundles/$BUNDLE/doc
cp -a $DOC_NAME-$DOC_VERSION $BUILD_HOME/dist/bundles/$BUNDLE/doc
cp $HOMERPMDIR/$DOC_NAME-$DOC_VERSION-$DOC_RELEASE.noarch.rpm $BUILD_HOME/dist/bundles/$BUNDLE/RPMS
)
done
(
cd dist/bundles
mkisofs -r -J -v -o ccm-aplaws-$BUNDLE.iso $BUNDLE
)
done
fi
# End of packaging