Blame makesdeb.sh

Packit 961e70
#!/bin/bash
Packit 961e70
#
Packit 961e70
#  This file is provided under a dual BSD/GPLv2 license.  When using or
Packit 961e70
#  redistributing this file, you may do so under either license.
Packit 961e70
#
Packit 961e70
#  GPL LICENSE SUMMARY
Packit 961e70
#
Packit 961e70
#  Copyright(c) 2017 Intel Corporation.
Packit 961e70
#
Packit 961e70
#  This program is free software; you can redistribute it and/or modify
Packit 961e70
#  it under the terms of version 2 of the GNU General Public License as
Packit 961e70
#  published by the Free Software Foundation.
Packit 961e70
#
Packit 961e70
#  This program is distributed in the hope that it will be useful, but
Packit 961e70
#  WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 961e70
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 961e70
#  General Public License for more details.
Packit 961e70
#
Packit 961e70
#  Contact Information:
Packit 961e70
#  Intel Corporation, www.intel.com
Packit 961e70
#
Packit 961e70
#  BSD LICENSE
Packit 961e70
#
Packit 961e70
#  Copyright(c) 2017 Intel Corporation.
Packit 961e70
#
Packit 961e70
#  Redistribution and use in source and binary forms, with or without
Packit 961e70
#  modification, are permitted provided that the following conditions
Packit 961e70
#  are met:
Packit 961e70
#
Packit 961e70
#    * Redistributions of source code must retain the above copyright
Packit 961e70
#      notice, this list of conditions and the following disclaimer.
Packit 961e70
#    * Redistributions in binary form must reproduce the above copyright
Packit 961e70
#      notice, this list of conditions and the following disclaimer in
Packit 961e70
#      the documentation and/or other materials provided with the
Packit 961e70
#      distribution.
Packit 961e70
#    * Neither the name of Intel Corporation nor the names of its
Packit 961e70
#      contributors may be used to endorse or promote products derived
Packit 961e70
#      from this software without specific prior written permission.
Packit 961e70
#
Packit 961e70
#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
Packit 961e70
#  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
Packit 961e70
#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
Packit 961e70
#  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
Packit 961e70
#  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
Packit 961e70
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
Packit 961e70
#  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
Packit 961e70
#  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
Packit 961e70
#  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
Packit 961e70
#  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Packit 961e70
#  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Packit 961e70
#
Packit 961e70
Packit 961e70
# Stop on error
Packit 961e70
set -e
Packit 961e70
Packit 961e70
BUILD_OPTS="gGbBAS"
Packit 961e70
BUILD_OPT=
Packit 961e70
DEB_NAME=libpsm2
Packit 961e70
Packit 961e70
# OUT_DIR is where the Makefile places its meta-data
Packit 961e70
OUT_DIR=build_release
Packit 961e70
Packit 961e70
# Set BUILD_DIR first, so user control can override the value
Packit 961e70
# This is where this script places deb(s) and uses its build meta-data.
Packit 961e70
# It can be set the same as OUT_DIR, and work just fine if desired.
Packit 961e70
BUILD_DIR=temp.$$
Packit 961e70
Packit 961e70
function literate()
Packit 961e70
{
Packit 961e70
    echo $(sed "s/\B/&$2/g" <<< "$1")
Packit 961e70
}
Packit 961e70
Packit 961e70
function usage()
Packit 961e70
{
Packit 961e70
    SCRIPT=${0##*/}
Packit 961e70
    echo "Usage: $SCRIPT [OPTIONS]"
Packit 961e70
    echo
Packit 961e70
    echo "Creates tar ball of source and source rpms by default."
Packit 961e70
    echo "Optionally generates binary rpm(s) "
Packit 961e70
    echo
Packit 961e70
    echo "     $(literate $BUILD_OPTS ',')"
Packit 961e70
    echo "           Optional, default is full build (source and binary)"
Packit 961e70
    echo "           Set single extension letter for dpkg-buildpackage argument"
Packit 961e70
    echo "     -r <name>"
Packit 961e70
    echo "           Optional, set the output deb name"
Packit 961e70
    echo "     -e <basename ext>"
Packit 961e70
    echo "           Optional, set a base name extension"
Packit 961e70
    echo "           This only appends an extra string onto the base DEB name"
Packit 961e70
    echo "           Does not affect supporting DEBs"
Packit 961e70
    echo "     -c"
Packit 961e70
    echo "           Optional, default is unset"
Packit 961e70
    echo "           Sets PSM_CUDA=1, creating -cuda based manifest and debs"
Packit 961e70
    echo "     -d <path>"
Packit 961e70
    echo "           Optionally sets output folder for dpkg-buildpackage to use"
Packit 961e70
    echo "     -h"
Packit 961e70
    echo "           Shows this screen"
Packit 961e70
    echo "     Examples:"
Packit 961e70
    echo "           $SCRIPT b"
Packit 961e70
    echo "           $SCRIPT s -c"
Packit 961e70
    echo "           $SCRIPT -"
Packit 961e70
    echo "           $SCRIPT -d ./temp"
Packit 961e70
    echo "           $SCRIPT b -c -d output"
Packit 961e70
    exit $1
Packit 961e70
}
Packit 961e70
Packit 961e70
while getopts "r:e:cd:h$BUILD_OPTS" OPT; do
Packit 961e70
    case $OPT in
Packit 961e70
        r)
Packit 961e70
            DEB_NAME=$OPTARG
Packit 961e70
            ;;
Packit 961e70
        e)
Packit 961e70
            BASE_EXT=$OPTARG
Packit 961e70
            ;;
Packit 961e70
        c)
Packit 961e70
            export PSM_CUDA=1
Packit 961e70
            DEB_EXT="-cuda"
Packit 961e70
            ;;
Packit 961e70
        d)
Packit 961e70
            BUILD_DIR=$OPTARG
Packit 961e70
            ;;
Packit 961e70
        h)
Packit 961e70
            usage 0
Packit 961e70
            ;;
Packit 961e70
        \?)
Packit 961e70
            usage 1
Packit 961e70
            ;;
Packit 961e70
        *)
Packit 961e70
            BUILD_OPT=-$OPT
Packit 961e70
            ;;
Packit 961e70
    esac
Packit 961e70
done
Packit 961e70
Packit 961e70
# Remove parsed options
Packit 961e70
shift $((OPTIND-1))
Packit 961e70
Packit 961e70
# Check if we have any non-option parameters
Packit 961e70
test ! $# -eq 0 && usage
Packit 961e70
Packit 961e70
# Generic cleanup, build, and tmp folder creation
Packit 961e70
make distclean OUTDIR=$OUT_DIR
Packit 961e70
Packit 961e70
make RPM_NAME=$DEB_NAME RPM_NAME_BASEEXT=$BASE_EXT dist OUTDIR=$OUT_DIR
Packit 961e70
Packit 961e70
# Prepare build area
Packit 961e70
mkdir -p $BUILD_DIR/{build,binary,sources,dists}
Packit 961e70
Packit 961e70
# Differnet paths based on DEB_EXT
Packit 961e70
cp $OUT_DIR/$DEB_NAME-*.tar.gz $BUILD_DIR/dists/
Packit 961e70
Packit 961e70
FILE_BASE=$(basename $BUILD_DIR/dists/$DEB_NAME-*.tar.gz .tar.gz)
Packit 961e70
VERSION=${FILE_BASE##$DEB_NAME-}
Packit 961e70
Packit 961e70
echo Building $DEB_NAME version $VERSION...
Packit 961e70
Packit 961e70
tar xzf $BUILD_DIR/dists/$DEB_NAME-$VERSION.tar.gz -C $BUILD_DIR/build
Packit 961e70
Packit 961e70
(cd $BUILD_DIR/build/$DEB_NAME-$VERSION
Packit 961e70
Packit 961e70
# Annotate changelog
Packit 961e70
mv debian/changelog.in debian/changelog
Packit 961e70
debchange --newversion=$VERSION "Bump up version to $VERSION"
Packit 961e70
Packit 961e70
# Build package
Packit 961e70
dpkg-buildpackage $BUILD_OPT -us -uc -tc)
Packit 961e70
Packit 961e70
mv $BUILD_DIR/build/$DEB_NAME*{.tar.xz,.dsc,.changes} $BUILD_DIR/sources/
Packit 961e70
mv $BUILD_DIR/build/$DEB_NAME*{.deb,.ddeb} $BUILD_DIR/binary/
Packit 961e70
Packit 961e70
echo "The deb package(s) is (are) in $BUILD_DIR/binary/$(ls $BUILD_DIR/binary)"