-
William Lupton authored
The license is taken from https://opensource.org/licenses/BSDplusPatent but that license has long lines, so it's been wrapped to lines with maximum length ~72 characters. (I did look for a "standard" line-wrapped version but didn't find one.)
William Lupton authoredThe license is taken from https://opensource.org/licenses/BSDplusPatent but that license has long lines, so it's been wrapped to lines with maximum length ~72 characters. (I did look for a "standard" line-wrapped version but didn't find one.)
release_compile.sh 8.53 KiB
# Broadband Forum IEEE 1905.1/1a stack
#
# Copyright (c) 2017, Broadband Forum
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# Subject to the terms and conditions of this license, each copyright
# holder and contributor hereby grants to those receiving rights under
# this license a perpetual, worldwide, non-exclusive, no-charge,
# royalty-free, irrevocable (except for failure to satisfy the
# conditions of this license) patent license to make, have made, use,
# offer to sell, sell, import, and otherwise transfer this software,
# where such license applies only to those patent claims, already
# acquired or hereafter acquired, licensable by such copyright holder or
# contributor that are necessarily infringed by:
#
# (a) their Contribution(s) (the licensed copyrights of copyright holders
# and non-copyrightable additions of contributors, in source or binary
# form) alone; or
#
# (b) combination of their Contribution(s) with the work of authorship to
# which such Contribution(s) was added by such copyright holder or
# contributor, if, at the time the Contribution is added, such addition
# causes such combination to be necessarily infringed. The patent
# license shall not apply to any other combinations which include the
# Contribution.
#
# Except as expressly stated above, no rights or licenses from any
# copyright holder or contributor is granted under this license, whether
# expressly, by implication, estoppel or otherwise.
#
# DISCLAIMER
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
# DAMAGE.
# This is a simple "packaging" utility that executes Make and installs the
# output binaries in a "deployment" folder.
#
# Fell free to customize this to your own development/testing environment
#
# Usage:
#
# ./release_compile.sh <type>
#
# ...where <type> can take any of the following values:
#
# - "cvs"
# The tools will be built and installed in "$RELEASE_FOLDER/<version_tag>",
# but only if that folder did not already existed (otherwise, it won't do
# anything)
#
# - "VersionXXX" (ex: "VersionA7", "VersionB13", ...)
# The tools will be built and installed in
# "$RELEASE_FOLDER/VersionXXX/<version_tag>", wiping a previous folder with
# the same name in case it existed.
#
# In both cases, "<version_tag>" is the value contained in the first line of
# file "version.txt" and it must have the following format:
#
# lowercase "i" + monotonically increasing number
#
# Examples: i145, i146, i147, ....
#
# The last line of output produced by this script will always contain two words:
# 1. The HASH of the current git commit
# 2. The path to the folder where the release has been installed.
#
set -e
RELEASE_FOLDER="/external_dir/fs-rd-server/releases/Ieee1905Tools";
CURRENT_GIT_COMMIT=`git show | head -1 | cut -d" " -f2`
function help_and_quit
{
echo "You must provide one (and only one) argument, wich must be either ";
echo "the string 'cvs' or a string starting with 'Version' (examples: ";
echo "'VersionA7', 'VersionB13', ...)"
echo ""
echo "$CURRENT_GIT_COMMIT <ERROR>"
exit -1;
}
# Check validity of input arguments
#####################################################
echo ""
if [[ $# -ne 1 ]]; then
help_and_quit;
fi
if [[ "$1" != "cvs" ]] && [[ "$1" != "CVS" ]] && ! [[ "$1" =~ "Version" ]]; then
help_and_quit;
fi
version_tag=`cat version.txt | head -1`
if ! [[ "$version_tag" =~ ^i[0-9+]+$ ]]; then
echo "Invalid version tag in file 'version.txt'";
echo "Open that file and make sure the first line contains a valid ";
echo "version tag, which looks like this: o+[number] (ex: 'o106')";
echo ""
echo "$CURRENT_GIT_COMMIT <ERROR>"
exit -1;
fi
# Check if the requested version is already installed
#####################################################
echo "*************************************************************************"
echo "Setup..."
echo "*************************************************************************"
if [[ "$1" == "cvs" ]] || [[ "$1" == "CVS" ]]; then
INSTALL_FOLDER=$RELEASE_FOLDER/$version_tag;
if [[ -d $INSTALL_FOLDER ]]; then
echo "The CVS version you are trying to generate is already installed "
echo "in the 'releases' folder ($INSTALL_FOLDER)"
echo "If you *really* want to regenerate it, first *manually* delete "
echo "that folder and then re-execute this script"
echo "Exiting..."
echo ""
echo "$CURRENT_GIT_COMMIT $INSTALL_FOLDER"
exit 0;
fi
else
INSTALL_FOLDER=$RELEASE_FOLDER/$1/$version_tag
if [[ -d $INSTALL_FOLDER ]]; then
echo "The destination folder where tools are going to be installed "
echo "already existed ($INSTALL_FOLDER)"
echo "We are going to wipe it out."
echo ""
rm -rf $INSTALL_FOLDER
fi
INSTALL_FOLDER_PARENT=$RELEASE_FOLDER/$1
if ! [[ -d $INSTALL_FOLDER_PARENT ]]; then
echo "Creating folder $INSTALL_FOLDER_PARENT ..."
mkdir $INSTALL_FOLDER_PARENT;
fi
fi
echo "Destination folder is: $INSTALL_FOLDER"
# Build Linux (X86 generic) tools
#####################################################
echo ""
echo "*************************************************************************"
echo "Building Linux (X86 generic) tools..."
echo "*************************************************************************"
PLATFORM=linux FLAVOUR=x86_generic make clean all
rm -rf linux_x86_generic
mkdir linux_x86_generic
cp output/al_entity linux_x86_generic
cp output/hle_entity linux_x86_generic
# Build Linux (ARM wrt1900acx) tools
#####################################################
echo ""
echo "*************************************************************************"
echo "Building Linux (ARM wrt1900acx) tools..."
echo "*************************************************************************"
PLATFORM=linux FLAVOUR=arm_wrt1900acx make clean all
rm -rf linux_arm_wrt1900acx
mkdir linux_arm_wrt1900acx
cp output/al_entity linux_arm_wrt1900acx
cp output/hle_entity linux_arm_wrt1900acx
# Build Linux (X86 Windows mingw cross-compilation) tools
#########################################################
echo ""
echo "*************************************************************************"
echo "Building Linux (X86 Windows mingw cross-compilation) tools..."
echo "*************************************************************************"
PLATFORM=linux FLAVOUR=x86_windows_mingw make clean all
rm -rf linux_x86_windows_mingw
mkdir linux_x86_windows_mingw
cp output/hle_entity linux_x86_windows_mingw/hle_entity.exe
# Install
#####################################################
echo ""
echo "*************************************************************************"
echo "Installing ..."
echo "*************************************************************************"
mkdir -p $INSTALL_FOLDER
echo "X86 generic binaries --> $INSTALL_FOLDER/linux_x86_generic/*"
mv linux_x86_generic $INSTALL_FOLDER
echo "ARM wrt1900acx binaries --> $INSTALL_FOLDER/linux_arm_wrt1900acx/*"
mv linux_arm_wrt1900acx $INSTALL_FOLDER
echo "X86 windows mingw binaries --> $INSTALL_FOLDER/linux_x86_windows_mingw/*"
mv linux_x86_windows_mingw $INSTALL_FOLDER
make clean &>/dev/null
git archive --format=tar.gz --prefix=ieee1905/ HEAD > ieee1905_src.tgz
echo "Source code --> $INSTALL_FOLDER/ieee1905_src.tgz"
mv ieee1905_src.tgz $INSTALL_FOLDER/
echo ""
echo $CURRENT_GIT_COMMIT $INSTALL_FOLDER