blob: f133e33767005fa85a875ad055090154d91db1e4 [file] [log] [blame]
#!/bin/bash
###############################################################################
# @@@ START COPYRIGHT @@@
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# @@@ END COPYRIGHT @@@
#
# File: genverhdr.ksh
# Description: Script to automate creation of files with version strings and values
#
# Created: 04 Apr 2007
# Language: bash
#
#
###############################################################################
# bash colorize
bldwht='\e[1;37m' # White
txtrst='\e[0m' # Text Reset
#---------
# usage()
#---------
function print_usage_line {
printf " ${bldwht}$1${txtrst}\n"
printf "$2" | fmt -w 70 | xargs -i printf " %s\n" "{}"
}
function usage {
printf "${bldwht}"
echo "genverhdr.ksh - a script to create a version string "
echo "Usage: genverhdr.ksh [-r] [-l label_string] [-e version_string]"
printf "${txtrst}"
echo
print_usage_line "-branch" "Specifies branch id in the version string."
print_usage_line "-build" "Specifies build id in the version string."
print_usage_line "-date" "Specifies date in the version string."
print_usage_line "-flavor" "Specifies build number in the version string."
print_usage_line "-funbranch" "Specifies branch id in the version string."
print_usage_line "-h" "print this usage message"
print_usage_line "-major" "Specifies major number in the version string."
print_usage_line "-minor" "Specifies minor number in the version string."
print_usage_line "-update" "Specifies update number in the version string."
print_usage_line "-prodver" "Specifies product version(open,Ent,EntAdv) in the version string."
}
#---------------
# writeVerHdr()
#---------------
function writeVerHdr {
umask 002
cat > $TMPFILE <<EOF
/******************************************************************************
*
* File: SCMBuildStr.h
* Description: Autogenerated header file with current build version string
* -- generated by genverhdr.ksh in build-scripts
* Language: C
*
*******************************************************************************/
#ifndef SCMBUILDSTR_H
#define SCMBUILDSTR_H 1
/* unused for now */
static const char * SCMBuildStr = "";
/* product version */
#define VERS_PV_MAJ $major
#define VERS_PV_MIN $minor
#define VERS_PV_UPD $update
/* build version */
#define VERS_BR $branch
#define VERS_BR2 $(echo $funbranch | sed -e "s:-:_dh_:g" -e "s:\.:_dt_:g" -e "s:\/:_sl_:g")
#define VERS_BR3 $(echo $funbranch | sed -e "s:_dh_.*::")
#define VERS_BV $flavor
#define VERS_SCMBV $build
#define VERS_SCMBV2 $(echo $build | sed -e "s:-:_dh_:g" -e "s:\.:_dt_:g" -e "s:\/:_sl_:g")
/* build date */
#define VERS_DT $buildDate
/*prodver*/
#define VERS_PRODVER $prodver
/*copyright*/
#define COPYRIGHT $copyright
#endif
EOF
cat > $TMPFILEJ <<EOF
Implementation-Version-2: Release $major.$minor.$update
Implementation-Version-3: Build $flavor
Implementation-Version-4: [$build]
Implementation-Version-5: branch $branch
Implementation-Version-6: date $buildDate
EOF
cat > $TMPFILEJ2 <<EOF
#!/bin/sh
VER_PROD=`echo \$TRAFODION_VER_PROD | sed 's/ /_/'`
echo "Implementation-Version-1: Version \$* \$VER_PROD"
cat \$TRAF_HOME/export/include/SCMBuildMan.mf
EOF
cat > $TMPFILEJ3 <<EOF
bldId=$branch
EOF
chmod +x $TMPFILEJ2
diff --brief --new-file $TMPFILE $hdrFile 2>&1 >/dev/null
dh=$?
diff --brief --new-file $TMPFILEJ $hdrFileJ 2>&1 >/dev/null
dj=$?
diff --brief --new-file $TMPFILEJ2 $hdrFileJ2 2>&1 >/dev/null
dj2=$?
diff --brief --new-file $TMPFILEJ3 $hdrFileJ3 2>&1 >/dev/null
dj3=$?
if [[ $dh -ne 0 || $dj -ne 0 || $dj2 -ne 0 || $dj3 -ne 0 ]]; then
echo "Creating file $hdrFile"
cp -f $TMPFILE $hdrFile
echo "Creating file $hdrFileJ"
cp -f $TMPFILEJ $hdrFileJ
echo "Creating file $hdrFileJ2"
cp -f $TMPFILEJ2 $hdrFileJ2
echo "Creating file $hdrFileJ3"
cp -f $TMPFILEJ3 $hdrFileJ3
fi
rm -f $TMPFILE $TMPFILEJ $TMPFILEJ2 $TMPFILEJ3
}
#------------
# Main body
#------------
# Define the name of the header file
typeset TMPFILE=$(mktemp /tmp/SCMBuildStr.XXX)
typeset TMPFILEJ=$(mktemp /tmp/SCMBuildStr.XXX)
typeset TMPFILEJ2=$(mktemp /tmp/SCMBuildStr.XXX)
typeset TMPFILEJ3=$(mktemp /tmp/buildId.XXX)
typeset hdrFile="../export/include/SCMBuildStr.h"
typeset hdrFileJ="../export/include/SCMBuildMan.mf"
typeset hdrFileJ2="../export/include/SCMBuildJava.sh"
typeset hdrFileJ3="../export/include/buildId"
# Input file
typeset VERFILE="../sqenvcom.sh"
# Parse the command options:
typeset branch=
typeset build=
typeset flavor=
typeset funbranch=
typeset buildDate=
typeset major=
typeset minor=
typeset update=
typeset prodver=
typeset copyright=
while [ $# -gt 0 ]; do
case $1 in
-branch|-br)
branch="${2}"
shift
;;
-build|-b)
build="${2}"
shift
;;
-date|-d)
buildDate="${2}"
shift
;;
-flavor|-f)
flavor="${2}"
shift
;;
-funbranch|-fb)
funbranch="${2}"
shift
;;
-major|-ma)
major="${2}"
shift
;;
-minor|-mi)
minor="${2}"
shift
;;
-update|-u)
update="${2}"
shift
;;
-prodver|-pv)
prodver="${2}"
shift
;;
-h|*)
usage
exit 1
;;
esac
shift
done
# Set some defaults
[ -z "$branch" ] && branch=BRANCH
[ -z "$build" ] && build=DEV
[ -z "$buildDate" ] && buildDate=$(date +%d%b%y)
[ -z "$flavor" ] && flavor=debug
[ -z "$funbranch" ] && funbranch=FUNBRANCH
VER_VARIABLES="TRAFODION_VER_MAJOR TRAFODION_VER_MINOR TRAFODION_VER_UPDATE"
if [[ -z "${major}${minor}${update}" ]]; then
for AVAR in $VER_VARIABLES ; do
if [[ -z "$( eval "echo \$$(eval "echo $AVAR")" )" ]]; then
echo "ERROR: Environment variable is null : $AVAR"
exit 1
fi
done
fi
[ -z "$major" ] && major="$( grep TRAFODION_VER_MAJOR= $VERFILE | cut -f2 -d=)"
[ -z "$minor" ] && minor="$( grep TRAFODION_VER_MINOR= $VERFILE | cut -f2 -d=)"
[ -z "$update" ] && update="$(grep TRAFODION_VER_UPDATE= $VERFILE | cut -f2 -d=)"
[ -z "$prodver" ] && prodver="$(grep TRAFODION_VER_PROD= $VERFILE | cut -f2 -d=| sed 's/ /_/' | sed 's/\"//g')"
[ -z "$copyright" ] && copyright=" Copyright (c) $(grep PRODUCT_COPYRIGHT_HEADER= $VERFILE | cut -f2 -d=)"
writeVerHdr