From fc6d0f544999d47c67f5d4f525d43e7e1baeba7e Mon Sep 17 00:00:00 2001 From: Martin Borg Date: Tue, 13 Nov 2018 12:44:13 +0100 Subject: Add script to copy build artifacts into release structure copyrc.sh script locates build artifacts in a provided list of directories and copies them into a release structure as defined in RELEASE_CONTENT definition file. Change-Id: I3f2034d7dbfe06492f50ac6fd548fe5ba45988d2 Signed-off-by: Martin Borg --- release/RELEASE_CONTENT | 11 +++++++ release/copyrc.sh | 79 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 release/RELEASE_CONTENT create mode 100755 release/copyrc.sh (limited to 'release') diff --git a/release/RELEASE_CONTENT b/release/RELEASE_CONTENT new file mode 100644 index 0000000..3fb3799 --- /dev/null +++ b/release/RELEASE_CONTENT @@ -0,0 +1,11 @@ +# The release structure is defined here as: +# : + +# atom-c3000 images +tmp/deploy/images/atom-c3000/enea-nfv-access-edgelink-netconf-atom-c3000.hddimg:atom-c3000/enea-nfv-access-edgelink-netconf-atom-c3000.hddimg + +# xeon-d images +tmp/deploy/images/xeon-d/enea-nfv-access-edgelink-netconf-xeon-d.hddimg:xeon-d/enea-nfv-access-edgelink-netconf-xeon-d.hddimg + +# documentation +doc/book-enea-nfv-access-guide-intel/book-enea-nfv-access-guide-intel.pdf:Documentation/book-enea-nfv-access-guide-intel.pdf diff --git a/release/copyrc.sh b/release/copyrc.sh new file mode 100755 index 0000000..7e9616d --- /dev/null +++ b/release/copyrc.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +# This script locates build artifacts in a provided list of directories and copies +# them into a release structure as defined in a release content definition file. + +usage() { + cat <&2 + +Usage: + $(basename $0) [OPTIONS] -o ... + +OPTIONS: + -p Print the release structure without creating it + -r Set release definition file (default: RELEASE_CONTENT) + +EOF + exit +} + +RC_def="./RELEASE_CONTENT" + +while getopts "o:pr:" name; do + case $name in + o) RC_dir=$OPTARG ;; + r) RC_def=$OPTARG ;; + p) print=1 ;; + ?) usage ;; + esac +done + +if [ ! "$RC_dir" ] && [ ! "$print" ]; then + echo "ERROR: Output directory not set" + usage +fi + +if [ -d "$RC_dir" ]; then + echo "ERROR: Output directory $RC_dir already exists" + exit 1 +fi + +if [ ! -f "$RC_def" ]; then + echo "ERROR: release definition file '$RC_def' does not exist" + exit 1 +fi + +echo "Release definition: $RC_def" +echo -e "Output directory: $RC_dir\n" + +shift $(( OPTIND - 1 )) +builddirs=("$@") + +while read line; do + if [ -z "$line" ] || [[ $line = \#* ]]; then continue; fi + + IFS=: read -r srcfile dstfile _ <<< $line + + if [ ! -z "$print" ]; then + echo $RC_dir/$dstfile + continue + fi + + found=0 + for srcdir in ${builddirs[@]}; do + if [ -f "$srcdir/$srcfile" ]; then + found=1 + mkdir -p "$RC_dir/$(dirname "$dstfile")" + cp -Lpv $srcdir/$srcfile $RC_dir/$dstfile + break + fi + done + + if [ "$found" -eq "0" ]; then + echo "ERROR: File '$srcfile' not found" + exit 1 + fi + +done < $RC_def + +echo -e "\nDone, RC directory: $RC_dir" -- cgit v1.2.3-54-g00ecf