summaryrefslogtreecommitdiffstats
path: root/ci/build.sh
diff options
context:
space:
mode:
Diffstat (limited to 'ci/build.sh')
-rwxr-xr-xci/build.sh269
1 files changed, 0 insertions, 269 deletions
diff --git a/ci/build.sh b/ci/build.sh
deleted file mode 100755
index 82049cdcd..000000000
--- a/ci/build.sh
+++ /dev/null
@@ -1,269 +0,0 @@
-#!/bin/bash
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-
-############################################################################
-# BEGIN of usage description
-#
-usage ()
-{
-cat | more << EOF
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-`basename $0`: Builds the Fuel@OPNFV stack
-
-usage: `basename $0` [-s spec-file] [-c cache-URI] [-l log-file] [-f flags]
- [output-directory]
-
-OPTIONS:
- -s spec-file (NOTE! DEPRECATED!)
- define the build-spec file, default ../build/config.mk. The script only
- verifies that the spec-file exists.
- -c cache base URI
- specifies the base URI to a build cache to be used/updated, supported
- methods are http://, ftp:// and file://
- -l log-file
- specifies the output log-file (stdout and stderr), if not specified
- logs are output to console as normal
- -v
- version tag to be applied to the build result
- -r
- alternative remote access method script/program. curl is default.
- -f flag[...]
- build flags:
- s: Do nothing, succeed
- f: Do nothing, fail
- D: Debug mode
- P: Clear the local cache before building. This flag is only
- valid if the "-c cache-URI" options has been specified and
- and the method in the cache-URI is file:// (local cache).
-
- -h help, prints this help text
-
- output-directory, specifies the directory for the output artifacts
- (.iso file). If no output-directory is specified, the current path
- when calling the script is used.
-
-
-Description:
-
-build.sh builds the opnfv .iso artifact.
-To reduce build time it uses build caches on a local or remote location. A
-cache is rebuilt and uploaded if either of the below conditions are met:
-1) The P(opulate) flag is set and the -c cache-base-URI is provided and set
- to the method file:// , if -c is
- not provided the cache will stay local.
-2) If a cache is invalidated by the make system - the exact logic is encoded
- in the cache.mk of the different parts of the build.
-3) A valid cache does not exist on the specified -c cache-base-URI.
-
-A cache has a blob (binary data) and a meta file in the format of:
- <SHA1>.blob
- <SHA1>.meta
-
-Logging is by default to console, but can be directed elsewhere with the -l
-option in which case both stdout and stderr is redirected to that destination.
-
-Built in unit testing of components is enabled by adding the t(est) flag.
-
-Return codes:
- - 0 Success!
- - 1-99 Unspecified build error
- - 100-199 Build system internal error (not build it self)
- - 101 Build system instance busy
- - 200 Build failure
-
-Examples:
- build -c http://opnfv.org/artifactory/fuel/cache \
- -d ~/jenkins/genesis/fuel/ci/output -f ti
-
-NOTE: At current the build scope is set to the git root of the repository, -d
- destination locations outside that scope will not work!
-EOF
-}
-#
-# END of usage description
-############################################################################
-
-############################################################################
-# BEGIN of function error_exit
-
-error_exit() {
- echo "$@" >&2
- exit 1
-}
-
-#
-# END of function error_exit
-############################################################################
-
-
-############################################################################
-# BEGIN of shorthand variables for internal use
-#
-SCRIPT_DIR=$(readlink -f $(dirname ${BASH_SOURCE[0]}))
-BUILD_BASE=$(readlink -e ${SCRIPT_DIR}/../build/)
-RESULT_DIR="${BUILD_BASE}/release"
-BUILD_SPEC="${BUILD_BASE}/config.mk"
-LOCAL_CACHE_ARCH_NAME="${LOCAL_CACHE_ARCH_NAME:-fuel-cache}"
-
-#
-# END of variables to customize
-############################################################################
-
-############################################################################
-# BEGIN of script assigned default variables
-#
-export CACHEBASE="file://$HOME/cache"
-export CACHETRANSPORT="curl --silent"
-CLEAR_CACHE=0
-MAKE_ARGS=""
-
-#
-# END of script assigned variables
-############################################################################
-
-build() {
- echo "CI build parameters:"
- echo "SCRIPT_DIR = $SCRIPT_DIR"
- echo "BUILD_BASE = $BUILD_BASE"
- echo "RESULT_DIR = $RESULT_DIR"
- echo "BUILD_SPEC = $BUILD_SPEC"
- echo "LOCAL_CACHE_ARCH_NAME = $LOCAL_CACHE_ARCH_NAME"
- echo "CLEAR_CACHE = $CLEAR_CACHE"
- echo "DEBUG = $DEBUG"
- echo "OUTPUT_DIR = $OUTPUT_DIR"
- echo "BUILD_LOG = $BUILD_LOG"
- echo "MAKE_ARGS = $MAKE_ARGS"
- echo "CACHEBASE = $CACHEBASE"
- echo "CACHETRANSPORT = $CACHETRANSPORT"
-
-
- if [ "$CLEAR_CACHE" -eq 1 ]; then
- echo $CACHEBASE | grep -q '^file://' $CACHE_BASE
- if [ $? -ne 0 ]; then
- error_exit "Can't clear a non-local cache!"
- else
- CACHEDIR=$(echo $CACHEBASE | sed 's;file://;;')
- echo "Clearing local cache at $CACHEDIR..."
- rm -rvf $CACHEDIR/*
- fi
- fi
-
- echo make ${MAKE_ARGS} cache
-
- cd ${BUILD_BASE}
- if make ${MAKE_ARGS} cache; then
- echo "Copying build result into $OUTPUT_DIR"
- sort ${BUILD_BASE}/gitinfo*.txt > ${OUTPUT_DIR}/gitinfo.txt
- cp ${RESULT_DIR}/*.iso ${OUTPUT_DIR}
- cp ${RESULT_DIR}/*.iso.txt ${OUTPUT_DIR}
- else
- error_exit "Build failed"
- fi
-}
-
-############################################################################
-# BEGIN of main
-#
-while getopts "s:c:l:v:f:r:f:h" OPTION
-do
- case $OPTION in
- s)
- BUILD_SPEC=${OPTARG}
- if [ ! -f ${BUILD_SPEC} ]; then
- echo "spec file does not exist: $BUILD_SPEC - exiting ...."
- exit 100
- fi
- ;;
- c)
- # This value is used by cache.sh
- export CACHEBASE=${OPTARG}
- ;;
- l)
- BUILD_LOG=$(readlink -f ${OPTARG})
- ;;
- v)
- MAKE_ARGS+="REVSTATE=${OPTARG}"
- ;;
- r)
- # This value is used by cache.sh
- export CACHETRANSPORT=${OPTARG}
- ;;
- h)
- usage
- rc=0
- exit $rc
- ;;
- f)
- BUILD_FLAGS=${OPTARG}
- for ((i=0; i<${#BUILD_FLAGS};i++)); do
- case ${BUILD_FLAGS:$i:1} in
- s)
- exit 0
- ;;
-
- f)
- exit 1
- ;;
-
- P)
- CLEAR_CACHE=1
- ;;
-
- D)
- DEBUG=1
- ;;
-
- *)
- error_exit "${BUILD_FLAGS:$i:1} is not a valid build flag - exiting ...."
- ;;
- esac
- done
- ;;
-
- *)
- echo "${OPTION} is not a valid argument"
- rc=100
- exit $rc
- ;;
- esac
-done
-
-# Get output directory
-shift $[$OPTIND - 1]
-case $# in
- 0)
- # No directory on command line
- OUTPUT_DIR=$(pwd)
- ;;
- 1)
- # Directory on command line
- OUTPUT_DIR=$(readlink -f $1)
- ;;
- *)
- error_exit "Too many arguments"
- ;;
-esac
-mkdir -p $OUTPUT_DIR || error_exit "Could not access output directory $OUTPUT_DIR"
-
-
-if [ -n "${BUILD_LOG}" ]; then
- touch ${BUILD_LOG} || error_exit "Could not write to log file ${BUILD_LOG}"
- build 2>&1 | tee ${BUILD_LOG}
-else
- build
-fi
-
-rc=$?
-exit $rc
-
-#
-# END of main
-############################################################################