blob: 1fded4be29b42661d37fb76528118a0e43519e53 [file] [log] [blame]
#!/bin/bash
#
# 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.
#
export FULL_VERSION=$1
export VERSION=$(echo ${FULL_VERSION} | tr -d '"'"'[:alpha:]'"'"')
export DISTRIBUTION="trusty"
INSTALL_PREFIX="/usr/metron"
METRON_HOME="${INSTALL_PREFIX}/${FULL_VERSION}"
HOMEDIR="/root"
WORKDIR="${HOMEDIR}/target"
CONFIGDIR="${HOMEDIR}/debian"
DATE=`date '+%Y%m%d%H%M'`
PREPACKAGEDIR="${HOMEDIR}/prepackage"
# working directory
mkdir -p "${WORKDIR}"
cd "${WORKDIR}"
# for each metron tarball...
for TARBALL in metron*.tar.gz; do
export PACKAGE=`echo ${TARBALL} | awk -F"-${FULL_VERSION}-" '{print $1}'`
if [ "${PACKAGE}" = "metron-pcap-backend" ]; then
# work around for inconsistent naming of 'metron-pcap-backend' ...
#
# * the tarball is named 'metron-pcap-backend'
# * but the RPM is created as 'metron-pcap'
# * the mpack also expects the package to be named 'metron-pcap'
#
# ... rather than use the tarball name here, rewrite the name to be
# consistent with the RPMs and MPack
export PACKAGE="metron-pcap"
fi
export PACKAGE_WORKDIR="${WORKDIR}/${PACKAGE}_${FULL_VERSION}"
echo "Building package; name=${PACKAGE}, tarball=${TARBALL}"
# if the tarball does not exist, fail fast
if [ ! -f "${TARBALL}" ]; then
echo "ERROR: Missing ${TARBALL}"
exit 1
fi
# extract the package contents
mkdir -p ${PACKAGE_WORKDIR}/${METRON_HOME}
tar xf ${TARBALL} -C ${PACKAGE_WORKDIR}/${METRON_HOME}
rm -f ${TARBALL}
# create the config directory
PACKAGE_DEBIAN_DIR="${PACKAGE_WORKDIR}/DEBIAN"
mkdir ${PACKAGE_DEBIAN_DIR}
# all packages get the control files contained in `debian/metron`
for CFILE in ${CONFIGDIR}/metron/*; do
[ -e "$CFILE" ] || continue
CFILENAME=`basename "${CFILE}"`
DEST="${PACKAGE_DEBIAN_DIR}/${CFILENAME}"
# copy over the control file (allowing for variable substitution)
envsubst < ${CFILE} > ${DEST}
# strip comments from the control file
sed -i '/#[^!]*$/d' ${DEST}
done
# a package *may* have control files specific to it in `debian/$PACKAGE`
for CFILE in ${CONFIGDIR}/${PACKAGE}/*; do
[ -e "$CFILE" ] || continue
CFILENAME=`basename "${CFILE}"`
DEST="${PACKAGE_DEBIAN_DIR}/${CFILENAME}"
# copy over the control file (allowing for variable substitution)
envsubst < ${CFILE} > ${DEST}
# strip comments from the control file (don't delete shebangs!)
sed -i '/#[^!]*$/d' ${DEST}
# permissions must be 0755 for maintain scripts like preinst and postinst
chmod 0755 ${DEST}
done
# execute the prepackage script, if one exists for the package
if [ -f "${PREPACKAGEDIR}/${PACKAGE}" ]; then
source ${PREPACKAGEDIR}/${PACKAGE}
fi
# create the package
dpkg-deb --verbose --build ${PACKAGE_WORKDIR}
rm -rf ${PACKAGE_WORKDIR}
done