| #!/usr/bin/env sh |
| # Licensed 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. |
| # |
| # shellcheck shell=ash |
| trap 'exit_code=$?; [ $exit_code -ne 0 ] && echo "Error on line ${LINENO} of ${0}"; exit $exit_code' EXIT; |
| set -o errexit -o nounset -o pipefail; |
| |
| # By default all sub-projects are built. Supply a list of projects to build if |
| # only a subset is wanted. |
| |
| . build/functions.sh |
| |
| # make sure we start out in traffic_control dir |
| topscript='' TC_DIR='' |
| topscript="$(realpath "$0")" |
| TC_DIR="$(dirname "$(dirname "$topscript")")" |
| export TC_DIR |
| if [ -z "$TC_DIR" ] || ! cd "$TC_DIR"; then |
| echo "Could not cd TC_DIR ${TC_DIR}"; |
| exit 1; |
| fi; |
| |
| if [ $# -gt 0 ]; then |
| projects="$*" |
| else |
| # get all subdirs containing build/build_rpm.sh |
| projects_to_build='*/build/build_rpm.sh' |
| # Always build tarball when building everything.. |
| projects=tarball |
| for p in ${projects_to_build}; do |
| p="${p%%/*}" |
| if [ "$p" != "traffic_monitor_golang" ]; then |
| projects="${projects} ${p}" |
| fi |
| done |
| fi |
| |
| |
| badproj='' |
| goodproj='' |
| for p in ${projects}; do |
| if [ "$p" = tarball ]; then |
| if isInGitTree; then |
| echo "----- Building tarball ..." |
| checkEnvironment -e rpmbuild |
| tarball="$(createTarball "$TC_DIR")" |
| ls -l "$tarball" |
| else |
| echo "---- Skipping tarball creation" |
| fi |
| continue |
| fi |
| if [ "$p" = docs ]; then |
| if isInGitTree; then |
| echo "----- Building docs ..." |
| checkEnvironment -i python3,make, -e rpmbuild |
| ( cd docs |
| make html |
| ) |
| tarball=$(createDocsTarball "${TC_DIR}") |
| ls -l "$tarball" |
| else |
| echo "---- Skipping docs creation" |
| fi |
| continue |
| fi |
| # strip trailing / |
| p="${p%/}" |
| bldscript="${p}/build/build_rpm.sh" |
| if [ ! -x "$bldscript" ]; then |
| echo "$bldscript not found" |
| badproj="${badproj} ${p}" |
| continue |
| fi |
| |
| echo "----- Building $p ..." |
| if $bldscript; then |
| goodproj="${goodproj} ${p}" |
| else |
| echo "${p} failed: ${bldscript}" |
| badproj="${badproj} ${p}" |
| fi |
| done |
| |
| if [ "$(echo "${goodproj}" | wc -w)" -ne 0 ]; then |
| echo "The following subdirectories built successfully: " |
| for p in ${goodproj}; do |
| echo " $p" |
| done |
| echo "See $(pwd)/dist for newly built rpms." |
| fi |
| |
| if [ "$(echo "${badproj}" | wc -w)" -ne 0 ]; then |
| echo "The following subdirectories had errors: " |
| for p in ${badproj}; do |
| echo " $p" |
| done |
| exit 1 |
| fi |