root/build-tools/build-wheels/get-stx-wheels.sh
Don Penney 6c0cfedcaf Migrate pike/master to stable/dev build streams
The use of pike/master naming when building StarlingX docker images
does not properly reflect the differences in how images are built,
resulting in some confusion for developers. Partly to address this,
and to allow for independence between images, this is being migrated
to use stable/dev build streams.

The stable build stream uses a base image (ie. stx-centos) that has
software repo configuration that points to StarlingX build output as a
source for software package installation. Images that use an upstream
repo as the main project code would generally use a stable branch for
this build stream, as well. For example, once Openstack Stein is
released, the stable builds for StarlingX Openstack services will be
updated to build from a stable/stein branch.

The dev build stream uses only upstream sources for software
installation, with images building from upstream master branches,
generally.

The stx-libvirt image, for example, is built solely from StarlingX
build output, and is therefore built in the stable build stream.

An image lineup for the stx-openstack application could therefore be a
mixture of stable and dev build stream images. The "stable"
application lineup (once we have Stein) would be all stable build
stream images, while the "dev" lineup would be dev build stream images
plus stable images for any that are stable-only (such as stx-libvirt).

To roll out these changes without impacting designers or builds, the
pike/master builds will still be supported for a short period.

This update provides the tool and base configuration changes to
support the introduction of the stable/dev build streams.

Change-Id: Ib5dc9a7c1d8c37368d073e28d83eeb883766ee3f
Story: 2005248
Task: 30098
Signed-off-by: Don Penney <don.penney@windriver.com>
2019-03-19 14:33:22 -04:00

142 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
#
# Copyright (c) 2018 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
# This utility retrieves StarlingX python wheels
# from the build output
#
# Required env vars
if [ -z "${MY_WORKSPACE}" -o -z "${MY_REPO}" ]; then
echo "Environment not setup for builds" >&2
exit 1
fi
SUPPORTED_OS_ARGS=('centos')
OS=centos
BUILD_STREAM=stable
function usage {
cat >&2 <<EOF
Usage:
$(basename $0) [ --os <os> ] [ --stream <stable|dev> ]
Options:
--os: Specify base OS (eg. centos)
--stream: Openstack release (default: stable)
EOF
}
OPTS=$(getopt -o h -l help,os:,release:,stream: -- "$@")
if [ $? -ne 0 ]; then
usage
exit 1
fi
eval set -- "${OPTS}"
while true; do
case $1 in
--)
# End of getopt arguments
shift
break
;;
--os)
OS=$2
shift 2
;;
--stream)
BUILD_STREAM=$2
shift 2
;;
--release) # Temporarily keep --release support as an alias for --stream
BUILD_STREAM=$2
shift 2
;;
-h | --help )
usage
exit 1
;;
*)
usage
exit 1
;;
esac
done
# Validate the OS option
VALID_OS=1
for supported_os in ${SUPPORTED_OS_ARGS[@]}; do
if [ "$OS" = "${supported_os}" ]; then
VALID_OS=0
break
fi
done
if [ ${VALID_OS} -ne 0 ]; then
echo "Unsupported OS specified: ${OS}" >&2
echo "Supported OS options: ${SUPPORTED_OS_ARGS[@]}" >&2
exit 1
fi
source ${MY_REPO}/build-tools/git-utils.sh
function get_wheels_files {
find ${GIT_LIST} -maxdepth 1 -name "${OS}_${BUILD_STREAM}_wheels.inc"
}
declare -a WHEELS_FILES=($(get_wheels_files))
if [ ${#WHEELS_FILES[@]} -eq 0 ]; then
echo "Could not find ${OS} wheels.inc files" >&2
exit 1
fi
BUILD_OUTPUT_PATH=${MY_WORKSPACE}/std/build-wheels-${OS}-${BUILD_STREAM}/stx
if [ -d ${BUILD_OUTPUT_PATH} ]; then
# Wipe out the existing dir to ensure there are no stale files
rm -rf ${BUILD_OUTPUT_PATH}
fi
mkdir -p ${BUILD_OUTPUT_PATH}
cd ${BUILD_OUTPUT_PATH}
# Extract the wheels
declare -a FAILED
for wheel in $(sed -e 's/#.*//' ${WHEELS_FILES[@]} | sort -u); do
case $OS in
centos)
# Bash globbing does not handle [^\-] well,
# so use grep instead
wheelfile=$(ls ${MY_WORKSPACE}/std/rpmbuild/RPMS/${wheel}-* | grep -- '[^\-]*-[^\-]*.rpm')
if [ ! -f "${wheelfile}" ]; then
echo "Could not find ${wheel}" >&2
FAILED+=($wheel)
continue
fi
echo Extracting ${wheelfile}
rpm2cpio ${wheelfile} | cpio -vidu
if [ ${PIPESTATUS[0]} -ne 0 -o ${PIPESTATUS[1]} -ne 0 ]; then
echo "Failed to extract content of ${wheelfile}" >&2
FAILED+=($wheel)
fi
;;
esac
done
if [ ${#FAILED[@]} -gt 0 ]; then
echo "Failed to find or extract one or more wheel packages:" >&2
for wheel in ${FAILED[@]}; do
echo "${wheel}" >&2
done
exit 1
fi
exit 0