77576b7207
This update will retain support for CentOS-7/yum/mock-1.4 based builds. The build environment will be queried to discover which environment it is building in, and modify the commands we issue accordingly. In CentOS 8, DNF replaces both YUM and REPOQUERY. While DNF tries to be a transparent replacement of the old tools, there are also subtle changes to the supported arguments. I will provide independent mock.cfg.prototypes for centos7 vs centos8. Changes in generate-centos-repo.sh under stx-tools will be required to select the correct prototype. Add support for mock 2.6. Mock 2.6 is python 3, and it processes the 'root' and 'rootdir' arguments slightly differently. Also change the order of arguments to tar within default_build_srpm. The latest tar only honors '--exclude' if it precedes other arguments. Story: 2006729 Depends-On: https://review.opendev.org/762700 Signed-off-by: Scott Little <scott.little@windriver.com> Change-Id: I826be2051e535e6a4c08ad17124f453b04210668
115 lines
3.2 KiB
Bash
Executable File
115 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
|
|
#
|
|
# Copyright (c) 2018 Wind River Systems, Inc.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
#
|
|
# The following tries to choose the best mockchain-parallel-* implementation
|
|
# to use, based on the version of /usr/bin/mockchain
|
|
#
|
|
# We want to use a compatable API, and to use the same python version.
|
|
#
|
|
|
|
interpreter_path () {
|
|
local path=${1}
|
|
if [ ! -f ${path} ]; then
|
|
return 1
|
|
fi
|
|
readlink -f $(head -n 1 ${path} | sed 's/^#!//' | awk '{ print $1 }' )
|
|
}
|
|
|
|
get__version__ () {
|
|
local path=${1}
|
|
local var=""
|
|
if [ ! -f ${path} ]; then
|
|
return 1
|
|
fi
|
|
if file ${path} | grep -q 'Python script'; then
|
|
ver=$(grep __VERSION__= ${path} | cut -d '=' -f 2 | sed 's/"//g')
|
|
else
|
|
ver=$(${path} --version 2> /dev/null)
|
|
fi
|
|
echo $ver
|
|
}
|
|
|
|
VC_LESS_THAN=0
|
|
VC_EQUAL=1
|
|
VC_GREATER_THAN=2
|
|
ver_comp () {
|
|
local v1=${1}
|
|
local v2=${2}
|
|
local v_greater=""
|
|
|
|
if [ "${v1}" == "${v2}" ]; then
|
|
echo $VC_EQUAL
|
|
return
|
|
fi
|
|
|
|
v_greater=$((echo ${v1}; echo ${v2}) | sort -rV | head -n 1)
|
|
if [ "${v1}" == "${v_greater}" ]; then
|
|
echo $VC_GREATER_THAN
|
|
return
|
|
fi
|
|
|
|
echo $VC_LESS_THAN
|
|
}
|
|
|
|
MOCKCHAIN_PATH="/usr/bin/mockchain"
|
|
MOCKCHAIN_PARALLEL_PATH_ROOT="${MY_REPO}/build-tools/mockchain-parallel"
|
|
DEFAULT_MOCKCHAIN_PARALLEL_PATH="${MOCKCHAIN_PARALLEL_PATH_ROOT}-1.3.4"
|
|
|
|
MOCKCHAIN_INTERPRETER_PATH=$(interpreter_path ${MOCKCHAIN_PATH})
|
|
MOCKCHAIN_VER=$(get__version__ ${MOCKCHAIN_PATH})
|
|
if [ -z "${MOCKCHAIN_VER}" ]; then
|
|
MOCKCHAIN_VER=$(rpm -q --queryformat '%{VERSION}' mock)
|
|
if [ -z "${MOCKCHAIN_VER}" ]; then
|
|
echo "Error: Failed to determine version of '${MOCKCHAIN_PATH}'"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
BEST_VER=""
|
|
BEST_MOCKCHAIN_PARALLEL_PATH=""
|
|
|
|
for MOCKCHAIN_PARALLEL_PATH in $(ls -1 ${MOCKCHAIN_PARALLEL_PATH_ROOT}-*); do
|
|
MOCKCHAIN_PARALLEL_VER=$(get__version__ ${MOCKCHAIN_PARALLEL_PATH})
|
|
if [ -z "${MOCKCHAIN_PARALLEL_VER}" ]; then
|
|
echo "Warning: Failed to determine version of '${MOCKCHAIN_PARALLEL_PATH}'"
|
|
continue
|
|
fi
|
|
COMP=$(ver_comp "${MOCKCHAIN_VER}" "${MOCKCHAIN_PARALLEL_VER}")
|
|
echo $MOCKCHAIN_PARALLEL_PATH $MOCKCHAIN_PARALLEL_VER $COMP
|
|
if [ $COMP -eq $VC_EQUAL ]; then
|
|
BEST_VER=${MOCKCHAIN_PARALLEL_VER}
|
|
BEST_MOCKCHAIN_PARALLEL_PATH=${MOCKCHAIN_PARALLEL_PATH}
|
|
break
|
|
fi
|
|
if [ $COMP -gt $VC_EQUAL ]; then
|
|
if [ "${BEST_VER}" == "" ]; then
|
|
BEST_VER=${MOCKCHAIN_PARALLEL_VER}
|
|
BEST_MOCKCHAIN_PARALLEL_PATH=${MOCKCHAIN_PARALLEL_PATH}
|
|
continue
|
|
fi
|
|
|
|
COMP=$(ver_comp ${MOCKCHAIN_PARALLEL_VER} ${BEST_VER})
|
|
if [ $COMP -gt $VC_EQUAL ]; then
|
|
BEST_VER=${MOCKCHAIN_PARALLEL_VER}
|
|
BEST_MOCKCHAIN_PARALLEL_PATH=${MOCKCHAIN_PARALLEL_PATH}
|
|
fi
|
|
fi
|
|
done
|
|
|
|
MOCKCHAIN_PARALLEL_INTERPRETER_PATH=${BEST_MOCKCHAIN_PARALLEL_INTERPRETER_PATH}
|
|
MOCKCHAIN_PARALLEL_PATH=${BEST_MOCKCHAIN_PARALLEL_PATH}
|
|
|
|
if [ -z "${MOCKCHAIN_PARALLEL_PATH}" ]; then
|
|
MOCKCHAIN_PARALLEL_PATH="${DEFAULT_MOCKCHAIN_PARALLEL_PATH}"
|
|
fi
|
|
|
|
echo "PYTHONDONTWRITEBYTECODE=true exec ${MOCKCHAIN_PARALLEL_INTERPRETER_PATH} ${MOCKCHAIN_PARALLEL_PATH} $@"
|
|
PYTHONDONTWRITEBYTECODE=true exec ${MOCKCHAIN_PARALLEL_INTERPRETER_PATH} ${MOCKCHAIN_PARALLEL_PATH} "$@"
|