Add support CentOS-8/dnf/mock-2.6 based builds

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
This commit is contained in:
Scott Little 2020-10-28 14:12:13 -04:00
parent 09c66cd0d7
commit 77576b7207
20 changed files with 2075 additions and 400 deletions

View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (c) 2018-2019 Wind River Systems, Inc. # Copyright (c) 2018-2020 Wind River Systems, Inc.
# #
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
# #
@ -18,6 +18,10 @@ BUILD_ISO_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}" )" )"
source "${BUILD_ISO_DIR}/image-utils.sh" source "${BUILD_ISO_DIR}/image-utils.sh"
source "${BUILD_ISO_DIR}/git-utils.sh" source "${BUILD_ISO_DIR}/git-utils.sh"
# Set REPOQUERY, REPOQUERY_SUB_COMMAND, REPOQUERY_RESOLVE and
# REPOQUERY_WHATPROVIDES_DELIM for our build environment.
source "${BUILD_ISO_DIR}/pkg-manager-utils.sh"
usage () { usage () {
echo "" echo ""
echo "Usage: " echo "Usage: "
@ -40,8 +44,8 @@ usage () {
MY_YUM_CONF="" MY_YUM_CONF=""
STD_REPO_ID="local-std" STD_REPO_ID="local-std"
RT_REPO_ID="local-rt" RT_REPO_ID="local-rt"
LOWER_LAYER_STD_REPO_ID="StxCentos7Distro" LOWER_LAYER_STD_REPO_ID=""
LOWER_LAYER_RT_REPO_ID="StxCentos7Distro-rt" LOWER_LAYER_RT_REPO_ID=""
NPROCS=$(nproc) NPROCS=$(nproc)
@ -77,13 +81,13 @@ function install_pkg_list {
\cd $OUTPUT_DIST_DIR/isolinux/Packages \cd $OUTPUT_DIST_DIR/isolinux/Packages
$INTERNAL_REPO_ROOT/build-tools/build_iso/cgts_deps.sh --deps=$PKGLIST $INTERNAL_REPO_ROOT/build-tools/build_iso/cgts_deps.sh --deps=$PKGLIST
if [ $? -ne 0 ] if [ $? -ne 0 ]
then then
echo "Could not install dependencies" echo "Could not install dependencies"
exit 1 exit 1
fi fi
# clean up # clean up
echo "Removing local-std yum repo $CGCS_REPO_DIR/repodata" echo "Removing local-std yum repo $CGCS_REPO_DIR/repodata"
echo "Removing local-rt yum repo $CGCS_RT_REPO_DIR/repodata" echo "Removing local-rt yum repo $CGCS_RT_REPO_DIR/repodata"
@ -111,7 +115,7 @@ function make_report {
for PKGLIST in $PKGLISTFILES; do for PKGLIST in $PKGLISTFILES; do
while read PKG; do while read PKG; do
PKG=`echo $PKG | sed "s/#.*//"`; PKG=`echo $PKG | sed "s/#.*//"`;
if [ "${PKG}x" != "x" ]; then if [ "${PKG}x" != "x" ]; then
echo $PKG >> $REPORT_FILE echo $PKG >> $REPORT_FILE
fi fi
done < $PKGLIST done < $PKGLIST
@ -127,7 +131,7 @@ function make_report {
echo "-----------------" >> $REPORT_FILE echo "-----------------" >> $REPORT_FILE
echo " WARNINGS " >> $REPORT_FILE echo " WARNINGS " >> $REPORT_FILE
echo "-----------------" >> $REPORT_FILE echo "-----------------" >> $REPORT_FILE
# Note that the warnings file may have multiple lines for the same # Note that the warnings file may have multiple lines for the same
# missing dependency. A sort | uniq solves this so we don't duplicate # missing dependency. A sort | uniq solves this so we don't duplicate
# warnings # warnings
@ -158,13 +162,17 @@ function init_vars {
exit 1 exit 1
fi fi
# LOWER_LAYER_STD_REPO_ID should be something like StxCentos7Distro or StxCentos8Distro
LOWER_LAYER_STD_REPO_ID=$(grep '\[StxCentos.*Distro\]' ${MY_YUM_CONF} | sed -e 's/^\[//' -e 's/\].*//')
LOWER_LAYER_RT_REPO_ID=$(grep '\[StxCentos.*Distro-rt\]' ${MY_YUM_CONF} | sed -e 's/^\[//' -e 's/\].*//')
DISTRO_REPO_DIR=$(for d in $(grep baseurl $MY_YUM_CONF | grep file: | awk -F : '{print $2}' | sed 's:///:/:g'); do if [ -d $d/images ]; then echo $d ;fi; done) DISTRO_REPO_DIR=$(for d in $(grep baseurl $MY_YUM_CONF | grep file: | awk -F : '{print $2}' | sed 's:///:/:g'); do if [ -d $d/images ]; then echo $d ;fi; done)
##################################### #####################################
# Output definitons # Output definitons
# where to put stuff (curent dir unless MY_WORKSPACE defined) # where to put stuff (curent dir unless MY_WORKSPACE defined)
OUTPUT_DIR="$PWD/export" OUTPUT_DIR="$PWD/export"
if [ ! -z "$MY_WORKSPACE" ] && [ -d "$MY_WORKSPACE" ] ; then if [ ! -z "$MY_WORKSPACE" ] && [ -d "$MY_WORKSPACE" ] ; then
OUTPUT_DIR="$MY_WORKSPACE/export" OUTPUT_DIR="$MY_WORKSPACE/export"
CGCS_REPO_DIR="$MY_WORKSPACE/std/rpmbuild/RPMS" CGCS_REPO_DIR="$MY_WORKSPACE/std/rpmbuild/RPMS"
@ -316,7 +324,7 @@ function init_output_dir {
date +%s.%N > $OUTPUT_DIST_DIR/isolinux/.discinfo date +%s.%N > $OUTPUT_DIST_DIR/isolinux/.discinfo
echo $PLATFORM_RELEASE >> $OUTPUT_DIST_DIR/isolinux/.discinfo echo $PLATFORM_RELEASE >> $OUTPUT_DIST_DIR/isolinux/.discinfo
echo "x86_64" >> $OUTPUT_DIST_DIR/isolinux/.discinfo echo "x86_64" >> $OUTPUT_DIST_DIR/isolinux/.discinfo
\cp -L -ru $DISTRO_REPO_DIR/isolinux/* $OUTPUT_DIST_DIR/isolinux/ \cp -L -ru $DISTRO_REPO_DIR/isolinux/* $OUTPUT_DIST_DIR/isolinux/
\cp -L -ru $DISTRO_REPO_DIR/images/pxeboot $OUTPUT_DIST_DIR/isolinux/images/ \cp -L -ru $DISTRO_REPO_DIR/images/pxeboot $OUTPUT_DIST_DIR/isolinux/images/
@ -342,7 +350,7 @@ function init_output_dir {
perl -p -i -e "s/device=sda/device=${DEVICE}/g" $OUTPUT_DIST_DIR/isolinux/isolinux.cfg perl -p -i -e "s/device=sda/device=${DEVICE}/g" $OUTPUT_DIST_DIR/isolinux/isolinux.cfg
fi fi
# Copy UEFI files # Copy UEFI files
\cp -L -ru $DISTRO_REPO_DIR/EFI/* $OUTPUT_DIST_DIR/isolinux/EFI/ \cp -L -ru $DISTRO_REPO_DIR/EFI/* $OUTPUT_DIST_DIR/isolinux/EFI/
\cp -L "$BSP_FILES_PATH/grub.cfg" "$OUTPUT_DIST_DIR/isolinux/EFI/BOOT/grub.cfg" \cp -L "$BSP_FILES_PATH/grub.cfg" "$OUTPUT_DIST_DIR/isolinux/EFI/BOOT/grub.cfg"
\cp -L "$BSP_FILES_PATH/pxeboot_grub.cfg" "$OUTPUT_DIST_DIR/isolinux/pxeboot/pxeboot_grub.cfg" \cp -L "$BSP_FILES_PATH/pxeboot_grub.cfg" "$OUTPUT_DIST_DIR/isolinux/pxeboot/pxeboot_grub.cfg"
@ -472,7 +480,7 @@ function final_touches {
# create the repo # create the repo
\cd $OUTPUT_DIST_DIR/isolinux \cd $OUTPUT_DIST_DIR/isolinux
$CREATEREPO -q -g ../comps.xml . $CREATEREPO -q -g ../comps.xml .
# build the ISO # build the ISO
printf "Building image $OUTPUT_FILE\n" printf "Building image $OUTPUT_FILE\n"
\cd $OUTPUT_DIST_DIR \cd $OUTPUT_DIST_DIR
@ -485,7 +493,7 @@ function final_touches {
-eltorito-alt-boot \ -eltorito-alt-boot \
-e images/efiboot.img \ -e images/efiboot.img \
-no-emul-boot \ -no-emul-boot \
isolinux/ isolinux/
isohybrid --uefi $OUTPUT_FILE isohybrid --uefi $OUTPUT_FILE
implantisomd5 $OUTPUT_FILE implantisomd5 $OUTPUT_FILE
@ -495,7 +503,7 @@ function final_touches {
function extract_pkg_from_local_repo { function extract_pkg_from_local_repo {
local pkgname=$1 local pkgname=$1
local yum_conf=$2 local pkg_mgr_conf=$2
shift 2 shift 2
local repoid="" local repoid=""
@ -505,7 +513,14 @@ function extract_pkg_from_local_repo {
repoid_arg+=" --repoid=${repoid}" repoid_arg+=" --repoid=${repoid}"
done done
local pkgfile=$(TMPDIR=$TMP_DIR repoquery --config=${yum_conf} ${repoid_arg} --location -q ${pkgname}) echo "TMPDIR=$TMP_DIR"\
"${REPOQUERY} --config=${pkg_mgr_conf} ${repoid_arg}"\
"${REPOQUERY_SUB_COMMAND} --location"\
"--arch=noarch,x86_64 -q ${pkgname}"
local pkgfile=$(TMPDIR=$TMP_DIR \
${REPOQUERY} --config=${pkg_mgr_conf} ${repoid_arg} \
${REPOQUERY_SUB_COMMAND} --location \
--arch=noarch,x86_64 -q ${pkgname})
if [ -z "${pkgfile}" ]; then if [ -z "${pkgfile}" ]; then
echo "Could not find package $pkgname in $@" echo "Could not find package $pkgname in $@"
exit 1 exit 1
@ -605,7 +620,7 @@ EOM
echo "Error: Could not copy all files from installer" echo "Error: Could not copy all files from installer"
exit 1 exit 1
fi fi
\cp --preserve=all www/pages/feed/rel-*/LiveOS/squashfs.img $OUTPUT_DIST_DIR/isolinux/LiveOS \cp --preserve=all www/pages/feed/rel-*/LiveOS/squashfs.img $OUTPUT_DIST_DIR/isolinux/LiveOS
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "Error: Could not copy squashfs from LiveOS" echo "Error: Could not copy squashfs from LiveOS"

View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (c) 2018 Wind River Systems, Inc. # Copyright (c) 2018-2020 Wind River Systems, Inc.
# #
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
# #
@ -15,6 +15,10 @@
BUILD_PKGS_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}" )" )" BUILD_PKGS_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}" )" )"
# Set REPOQUERY and REPOQUERY_SUB_COMMAND for our build environment.
source "${BUILD_PKGS_DIR}/pkg-manager-utils.sh"
usage () { usage () {
echo "" echo ""
echo "Usage: " echo "Usage: "
@ -75,11 +79,15 @@ make_cache_current_rpms () {
if [ -d $MY_WORKSPACE/$build_type/rpmbuild/$rpm_type/repodata ]; then if [ -d $MY_WORKSPACE/$build_type/rpmbuild/$rpm_type/repodata ]; then
current=$MY_WORKSPACE/$build_type/rpmbuild/$rpm_type/ current=$MY_WORKSPACE/$build_type/rpmbuild/$rpm_type/
repoquery \ ${REPOQUERY} \
--repofrompath=$build_type-$rpm_type,$current \ --repofrompath=$build_type-$rpm_type,$current \
--repoid=$build_type-$rpm_type --arch=noarch,src,x86_64 -a \ --repoid=$build_type-$rpm_type --arch=noarch,src,x86_64 \
${REPOQUERY_SUB_COMMAND} \
--all \
--qf "%-10{repoid} %-40{name} %-10{version} %-10{release}" \ --qf "%-10{repoid} %-40{name} %-10{version} %-10{release}" \
>> ${FILE} >> ${FILE}
\rm -rf $TMP_DIR/yum-$USER-*
fi fi
done; done;
done; done;

View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (c) 2018 Wind River Systems, Inc. # Copyright (c) 2018-2020 Wind River Systems, Inc.
# #
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
# #
@ -15,7 +15,7 @@
# The location of packages to be built is # The location of packages to be built is
# $MY_WORKSPACE/<build-type>/rpmbuild/SRPMS. # $MY_WORKSPACE/<build-type>/rpmbuild/SRPMS.
# #
# The build order is a derived from the BuildRequires in the # The build order is a derived from the BuildRequires in the
# spec files in the src.rpms. Note that the BuildRequires sometimes # spec files in the src.rpms. Note that the BuildRequires sometimes
# create dependency loops, so no correct order can be computed. In these # create dependency loops, so no correct order can be computed. In these
# cases we add a retry loop. As long as one new package builds, we # cases we add a retry loop. As long as one new package builds, we
@ -24,9 +24,12 @@
# messages go by! # messages go by!
# #
export ME=$(basename "$0") export ME=$(basename "$0")
CMDLINE="$ME $@" CMDLINE="$ME $@"
BUILD_RPMS_PARALLEL_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}" )" )"
# Set PKG_MANAGER for our build environment.
source "${BUILD_RPMS_PARALLEL_DIR}/pkg-manager-utils.sh"
# Build for distribution. Currently 'centos' is only supported value. # Build for distribution. Currently 'centos' is only supported value.
@ -43,22 +46,22 @@ MAX_MEM_PER_WORKER=11
# Note: tmpfs is typically 2.5 gb when compiling many small jobs # Note: tmpfs is typically 2.5 gb when compiling many small jobs
MIN_MEM_PER_WORKER=3 MIN_MEM_PER_WORKER=3
# Maximum number of disk based parallel build environments # Maximum number of disk based parallel build environments
MAX_DISK_BASED_WORKERS=2 MAX_DISK_BASED_WORKERS=2
# Minimum space in gb for each disk based parallel build environment # Minimum space in gb for each disk based parallel build environment
MIN_DISK_PER_WORKER=20 MIN_DISK_PER_WORKER=20
# How many srpms to build before we add another parallel build environment # How many srpms to build before we add another parallel build environment
MIN_TASKS_PER_CORE=3 MIN_TASKS_PER_CORE=3
# Max number of new concurrent builds to allow for # Max number of new concurrent builds to allow for
MAX_SHARE_FACTOR=4 MAX_SHARE_FACTOR=4
# Always leave at least MEMORY_RESERVE gb of available mem for the system # Always leave at least MEMORY_RESERVE gb of available mem for the system
MEMORY_RESERVE=1 MEMORY_RESERVE=1
# These two values will be reassigned in the 'compute_resources' subroutine # These two values will be reassigned in the 'compute_resources' subroutine
MOCKCHAIN_RESOURCE_ALLOCATION="" MOCKCHAIN_RESOURCE_ALLOCATION=""
MAX_WORKERS=$ABSOLUTE_MAX_WORKERS MAX_WORKERS=$ABSOLUTE_MAX_WORKERS
@ -164,7 +167,7 @@ create-no-clean-list () {
local install_groups="" local install_groups=""
local install_packages="" local install_packages=""
local p local p
for p in $(grep "config_opts\['chroot_setup_cmd'\]" $MY_BUILD_CFG | tail -n1 | cut -d '=' -f 2 | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' -e "s/^'//" -e "s/'$//" -e 's/^install //'); do for p in $(grep "config_opts\['chroot_setup_cmd'\]" $MY_BUILD_CFG | tail -n1 | cut -d '=' -f 2 | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' -e "s/^'//" -e "s/'$//" -e 's/^install //'); do
if [[ $p == @* ]] ; then if [[ $p == @* ]] ; then
install_groups=$(join_by ' ' $install_groups $(echo $p | cut -c 2-)) install_groups=$(join_by ' ' $install_groups $(echo $p | cut -c 2-))
@ -172,37 +175,44 @@ create-no-clean-list () {
install_packages=$(join_by ' ' $install_packages $p) install_packages=$(join_by ' ' $install_packages $p)
fi fi
done done
local noclean_last_list_len=0 local noclean_last_list_len=0
local noclean_list="" local noclean_list=""
local tmp_list="" local tmp_list=""
local g local g
for g in $install_groups; do for g in $install_groups; do
tmp_list=$(yum -c $MY_YUM_CONF groupinfo $g 2>> /dev/null | awk 'f;/Mandatory Packages:/{f=1}' | cut -c 5-) # Find mandatory packages in the group.
# Discard anything before (and including) 'Mandatory Packages:'
# and anything after (and including) 'Optional Packages:'.
# Also discard leading spaces or '+' characters.
tmp_list=$(${PKG_MANAGER} -c $MY_YUM_CONF groupinfo $g 2>> /dev/null \
| awk 'f;/Mandatory Packages:/{f=1}' \
| sed -n '/Optional Packages:/q;p' \
| sed 's#[ +]*##')
noclean_list=$(join_by ' ' $noclean_list $tmp_list) noclean_list=$(join_by ' ' $noclean_list $tmp_list)
done done
noclean_list=$(join_by ' ' $noclean_list $install_packages) noclean_list=$(join_by ' ' $noclean_list $install_packages)
noclean_list=$(echo $noclean_list | tr ' ' '\n' | sort --uniq) noclean_list=$(echo $noclean_list | tr ' ' '\n' | sort --uniq)
noclean_list_len=$(echo $noclean_list | wc -w) noclean_list_len=$(echo $noclean_list | wc -w)
while [ $noclean_list_len -gt $noclean_last_list_len ]; do while [ $noclean_list_len -gt $noclean_last_list_len ]; do
noclean_last_list_len=$noclean_list_len noclean_last_list_len=$noclean_list_len
noclean_list=$( (yum -c $MY_YUM_CONF deplist $noclean_list 2>> /dev/null | grep provider: | awk '{ print $2 }' | awk -F . '{ print $1 }'; for p in $noclean_list; do echo $p; done) | sort --uniq) noclean_list=$( (${PKG_MANAGER} -c $MY_YUM_CONF deplist $noclean_list 2>> /dev/null | grep provider: | awk '{ print $2 }' | awk -F . '{ print $1 }'; for p in $noclean_list; do echo $p; done) | sort --uniq)
noclean_list_len=$(echo $noclean_list | wc -w) noclean_list_len=$(echo $noclean_list | wc -w)
done done
echo $noclean_list > $NO_CLEAN_LIST_FILE echo $noclean_list > $NO_CLEAN_LIST_FILE
fi fi
cat $NO_CLEAN_LIST_FILE cat $NO_CLEAN_LIST_FILE
} }
str_lst_contains() { str_lst_contains() {
TARGET="$1" TARGET="$1"
LST="$2" LST="$2"
if [[ $LST =~ (^|[[:space:]])$TARGET($|[[:space:]]) ]] ; then if [[ $LST =~ (^|[[:space:]])$TARGET($|[[:space:]]) ]] ; then
return 0 return 0
else else
return 1 return 1
@ -214,7 +224,7 @@ compute_resources () {
local b local b
echo "" echo ""
for f in $@; do for f in $@; do
b=$(basename $f) b=$(basename $f)
if [ -f $SOURCES_DIR/$b/BIG ] || [ ]; then if [ -f $SOURCES_DIR/$b/BIG ] || [ ]; then
weight=$((weight+MIN_TASKS_PER_CORE)) weight=$((weight+MIN_TASKS_PER_CORE))
@ -232,7 +242,7 @@ compute_resources () {
local cpus=$(number_of_cpus) local cpus=$(number_of_cpus)
local num_users=$(sqrt $users) local num_users=$(sqrt $users)
local num_build=$(number_of_builds_in_progress) local num_build=$(number_of_builds_in_progress)
num_build=$((num_build+1)) num_build=$((num_build+1))
echo "compute_resources: total: cpus=$cpus, mem=$mem, disk=$disk, weight=$weight, num_build=$num_build" echo "compute_resources: total: cpus=$cpus, mem=$mem, disk=$disk, weight=$weight, num_build=$num_build"
# What fraction of the machine will we use # What fraction of the machine will we use
@ -311,7 +321,9 @@ create_lst () {
recreate_repodata () { recreate_repodata () {
local DIR=${1} local DIR=${1}
(cd $DIR (
mkdir -p $DIR
cd $DIR
if [ -f repodata/*comps*xml ]; then if [ -f repodata/*comps*xml ]; then
\mv repodata/*comps*xml comps.xml \mv repodata/*comps*xml comps.xml
fi fi
@ -402,11 +414,11 @@ union () {
echo $b echo $b
fi fi
done done
} }
# #
# returns 0 if element is in the array # returns 0 if element is in the array
# #
# e.g. contains ARRAY $SEEKING && echo "$SEEKING is in 'ARRAY'" # e.g. contains ARRAY $SEEKING && echo "$SEEKING is in 'ARRAY'"
# #
contains () { contains () {
@ -453,7 +465,7 @@ build_order_recursive () {
needs=( $(grep "^$target;" "$SRPM_DIRECT_REQUIRES_FILE" | sed "s/$target;//" | sed 's/,/ /g') ) needs=( $(grep "^$target;" "$SRPM_DIRECT_REQUIRES_FILE" | sed "s/$target;//" | sed 's/,/ /g') )
needs_list=( $(intersection needs remainder_list) ) needs_list=( $(intersection needs remainder_list) )
for((idx=0;idx<${#needs_list[@]};idx++)); do for((idx=0;idx<${#needs_list[@]};idx++)); do
build_order_recursive ${needs_list[idx]} build_order_recursive ${needs_list[idx]}
done done
echo $target echo $target
break break
@ -503,7 +515,7 @@ build_order () {
UNORDERED_LIST=( ${original_list[@]} ) UNORDERED_LIST=( ${original_list[@]} )
while [ ${#UNORDERED_LIST[@]} -gt 0 ]; do while [ ${#UNORDERED_LIST[@]} -gt 0 ]; do
element=${UNORDERED_LIST[0]} element=${UNORDERED_LIST[0]}
build_order_recursive $element build_order_recursive $element
done done
fi fi
} }
@ -621,7 +633,7 @@ umount_mock_root_as_tmpfs () {
return 0 return 0
fi fi
mock_tmpfs_umount $mount_dir &> /dev/null mock_tmpfs_umount $mount_dir &> /dev/null
rc=$? rc=$?
if [ $rc -ne 0 ]; then if [ $rc -ne 0 ]; then
echo "FAILED: mock_tmpfs_umount $mount_dir" echo "FAILED: mock_tmpfs_umount $mount_dir"
@ -652,7 +664,7 @@ kill_descendents ()
recursive_promote_children="" recursive_promote_children=""
recursive_children=$(pgrep -P $kill_pid) recursive_children=$(pgrep -P $kill_pid)
fi fi
if [ $iteration -eq 0 ]; then if [ $iteration -eq 0 ]; then
other_children=$(for relevant_child in $relevant_other_children; do pgrep -P $kill_pid $relevant_child; done) other_children=$(for relevant_child in $relevant_other_children; do pgrep -P $kill_pid $relevant_child; done)
if [ "$other_children" != "" ]; then if [ "$other_children" != "" ]; then
@ -667,7 +679,7 @@ kill_descendents ()
fi fi
for pid in $recursive_children; do for pid in $recursive_children; do
kill_descendents "$pid" $kill_all $need_stop $((iteration + 1)) kill_descendents "$pid" $kill_all $need_stop $((iteration + 1))
done done
for pid in $recursive_promote_children; do for pid in $recursive_promote_children; do
kill_descendents "$pid" 1 1 $((iteration + 1)) kill_descendents "$pid" 1 1 $((iteration + 1))
@ -946,11 +958,11 @@ mock_clean_cfg () {
echo "==================================" echo "=================================="
mock_clean_cache_cfg $CFG mock_clean_cache_cfg $CFG
echo "==================================" echo "=================================="
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --scrub=all" echo "$MOCK --root $CFG --configdir $(dirname $CFG) --scrub=all"
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --scrub=all trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --scrub=all
echo "==================================" echo "=================================="
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --clean" echo "$MOCK --root $CFG --configdir $(dirname $CFG) --clean"
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --clean trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --clean
### Note: this sometimes leaves behind a $MY_WORKSPACE/cache/mock/yum_cache/yumcache.lock ### Note: this sometimes leaves behind a $MY_WORKSPACE/cache/mock/yum_cache/yumcache.lock
echo "==================================" echo "=================================="
mock_clean_cache_all_cfg $CFG mock_clean_cache_all_cfg $CFG
@ -1034,10 +1046,10 @@ mock_partial_clean_cfg () {
local RPMS_CLEAN_LIST="" local RPMS_CLEAN_LIST=""
local NEED_FULL_MOCK_CLEAN=0 local NEED_FULL_MOCK_CLEAN=0
for r in $RPMS_LIST; do for r in $RPMS_LIST; do
if ! str_lst_contains $r "$NO_CLEAN_LIST" ; then if ! str_lst_contains $r "$NO_CLEAN_LIST" ; then
RPMS_CLEAN_LIST=$(join_by ' ' $RPMS_CLEAN_LIST $r) RPMS_CLEAN_LIST=$(join_by ' ' $RPMS_CLEAN_LIST $r)
else else
echo "Can't remove '$r' from mock environment without a wipe"; echo "Can't remove '$r' from mock environment without a wipe";
NEED_FULL_MOCK_CLEAN=1 NEED_FULL_MOCK_CLEAN=1
fi fi
done done
@ -1050,19 +1062,19 @@ mock_partial_clean_cfg () {
# Intent of following is for $RPMS_LIST to be expand now while the remaining $ varaibles are for bash inside mock to expand # Intent of following is for $RPMS_LIST to be expand now while the remaining $ varaibles are for bash inside mock to expand
echo "Try to uninstall from the mock environment these packages: $RPMS_CLEAN_LIST" echo "Try to uninstall from the mock environment these packages: $RPMS_CLEAN_LIST"
CMD='LST="'$RPMS_CLEAN_LIST'"; CMD='LST="'$RPMS_CLEAN_LIST'";
DELETE_LIST=""; DELETE_LIST="";
for r in $LST; do for r in $LST; do
FOUND=$(rpm -q $r) ; FOUND=$(rpm -q $r) ;
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
DELETE_LIST="$DELETE_LIST $FOUND"; DELETE_LIST="$DELETE_LIST $FOUND";
fi; fi;
done; done;
echo "uninstalling these packages: $DELETE_LIST"; echo "uninstalling these packages: $DELETE_LIST";
if [ "$DELETE_LIST" != "" ]; then if [ "$DELETE_LIST" != "" ]; then
rpm -e --nodeps $DELETE_LIST; rpm -e --nodeps $DELETE_LIST;
fi' fi'
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --chroot bash -c $CMD" &> $TMP echo "$MOCK --root $CFG --configdir $(dirname $CFG) --chroot bash -c $CMD" &> $TMP
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --chroot "bash -c '$CMD'" &>> $TMP trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --chroot "bash -c '$CMD'" &>> $TMP
RC=$? RC=$?
if [ $RC -ne 0 ]; then if [ $RC -ne 0 ]; then
cat $TMP cat $TMP
@ -1112,8 +1124,8 @@ mock_clean_cache_cfg () {
clean_yum_cache_cfg $CFG clean_yum_cache_cfg $CFG
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --scrub=root-cache --scrub=yum-cache --scrub=cache" &> $TMP echo "$MOCK --root $CFG --configdir $(dirname $CFG) --scrub=root-cache --scrub=yum-cache --scrub=cache" &> $TMP
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --scrub=root-cache --scrub=yum-cache --scrub=cache &>> $TMP trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --scrub=root-cache --scrub=yum-cache --scrub=cache &>> $TMP
RC=$? RC=$?
if [ $RC -ne 0 ]; then if [ $RC -ne 0 ]; then
cat $TMP cat $TMP
@ -1141,8 +1153,8 @@ mock_clean_cache_all_cfg () {
echo "==================================" echo "=================================="
clean_yum_cache_cfg $CFG clean_yum_cache_cfg $CFG
echo "==================================" echo "=================================="
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --scrub=all" echo "$MOCK --root $CFG --configdir $(dirname $CFG) --scrub=all"
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --scrub=all trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --scrub=all
echo "==================================" echo "=================================="
} }
@ -1169,9 +1181,16 @@ mock_clean_metadata_cfg () {
return 1 return 1
fi fi
CMD=$((cat $CFG; grep config_opts\\[\'yum.conf\'\\\] $CFG | sed 's#\\n#\n#g') | grep '^[[]' | grep -v main | sed 's/[][]//g' | sed 's#^#yum --enablerepo=#' | sed 's#$# clean metadata#' | sort -u | tr '\n' ';') CMD=$((cat $CFG; \
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --chroot bash -c $CMD" &> $TMP grep config_opts\\[\'yum.conf\'\\\] $CFG | \
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --chroot "bash -c '($CMD)'" &>>$TMP sed 's#\\n#\n#g') | \
grep '^[[]' | \
grep -v main | \
sed -e 's/[][]//g' -e "s#^#${PKG_MANAGER} --enablerepo=#" -e 's#$# clean metadata#' | \
sort -u | \
tr '\n' ';')
echo "$MOCK --root $CFG --configdir $(dirname $CFG) --chroot bash -c $CMD" &> $TMP
trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --chroot "bash -c '($CMD)'" &>>$TMP
RC=$? RC=$?
if [ $RC -ne 0 ]; then if [ $RC -ne 0 ]; then
cat $TMP cat $TMP
@ -1228,7 +1247,7 @@ update_cgcs_repo () {
if [ "x$NEW_UNTRACKED" != "x" ]; then if [ "x$NEW_UNTRACKED" != "x" ]; then
NEED_REBUILD=1 NEED_REBUILD=1
fi fi
if [ $NEED_REBUILD -eq 1 ]; then if [ $NEED_REBUILD -eq 1 ]; then
NEED_MOCK_CLEAN=1 NEED_MOCK_CLEAN=1
echo "" echo ""
@ -1274,7 +1293,7 @@ mock_clean_mounts_dir () {
fi fi
fi fi
if [ $RC -eq 1 ]; then if [ $RC -eq 1 ]; then
echo "ERROR: Directory '$MOUNT' is already mounted and will cause a build failure within mock." echo "ERROR: Directory '$MOUNT' is already mounted and will cause a build failure within mock."
echo "Ask your system administrator to umount '$MOUNT'." echo "Ask your system administrator to umount '$MOUNT'."
exit 1 exit 1
fi fi
@ -1319,7 +1338,7 @@ clean_yum_cache_cfg () {
local YUM_CACHE_MOUNT=$(readlink -f "$ROOT_DIR/root/var/cache/yum") local YUM_CACHE_MOUNT=$(readlink -f "$ROOT_DIR/root/var/cache/yum")
local YUM_CACHE_LOCK="$CACHE_DIR/mock/yum_cache/yumcache.lock" local YUM_CACHE_LOCK="$CACHE_DIR/mock/yum_cache/yumcache.lock"
# echo "clean_yum_cache YUM_CACHE_MOUNT='$YUM_CACHE_MOUNT' YUM_CACHE_LOCK='$YUM_CACHE_LOCK'" # echo "clean_yum_cache YUM_CACHE_MOUNT='$YUM_CACHE_MOUNT' YUM_CACHE_LOCK='$YUM_CACHE_LOCK'"
if [ "$YUM_CACHE_MOUNT" != "" ]; then if [ "$YUM_CACHE_MOUNT" != "" ]; then
mock_clean_mounts_dir "$YUM_CACHE_MOUNT" mock_clean_mounts_dir "$YUM_CACHE_MOUNT"
fi fi
@ -1358,8 +1377,8 @@ mock_update_cfg () {
echo "${FUNCNAME[0]}: $CFG" echo "${FUNCNAME[0]}: $CFG"
echo "==================================" echo "=================================="
set_mock_symlinks $CFG set_mock_symlinks $CFG
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --update" echo "$MOCK --root $CFG --configdir $(dirname $CFG) --update"
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --update trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --update
echo "==================================" echo "=================================="
} }
@ -1368,8 +1387,8 @@ mock_init_cfg () {
echo "${FUNCNAME[0]}: $CFG" echo "${FUNCNAME[0]}: $CFG"
echo "==================================" echo "=================================="
set_mock_symlinks $CFG set_mock_symlinks $CFG
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --init" echo "$MOCK --root $CFG --configdir $(dirname $CFG) --init"
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --init trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --init
echo "==================================" echo "=================================="
} }
@ -1388,14 +1407,14 @@ mock_update_or_init_cfg () {
if [ -d $ROOT_DIR/root ]; then if [ -d $ROOT_DIR/root ]; then
echo "Updating the mock environment" echo "Updating the mock environment"
set_mock_symlinks $CFG set_mock_symlinks $CFG
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --update" echo "$MOCK --root $CFG --configdir $(dirname $CFG) --update"
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --update &> $TMP trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --update &> $TMP
RC=$? RC=$?
else else
echo "Init the mock environment" echo "Init the mock environment"
set_mock_symlinks $CFG set_mock_symlinks $CFG
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --init" echo "$MOCK --root $CFG --configdir $(dirname $CFG) --init"
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --init &> $TMP trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --init &> $TMP
RC=$? RC=$?
fi fi
if [ $RC -ne 0 ]; then if [ $RC -ne 0 ]; then
@ -1411,7 +1430,7 @@ mock_update_or_init () {
local PREFIX=$(echo $SUB_CFG | rev | cut -d . -f 2 | rev) local PREFIX=$(echo $SUB_CFG | rev | cut -d . -f 2 | rev)
( mock_update_or_init_cfg $SUB_CFG 2>&1 | sed "s#^#${PREFIX}: #" ; exit ${PIPESTATUS[0]} ) & ( mock_update_or_init_cfg $SUB_CFG 2>&1 | sed "s#^#${PREFIX}: #" ; exit ${PIPESTATUS[0]} ) &
done done
wait wait
echo "${FUNCNAME[0]}: out" echo "${FUNCNAME[0]}: out"
} }
@ -1429,12 +1448,12 @@ NO_DESCENDANTS=0
NO_REQUIRED=0 NO_REQUIRED=0
NO_AUTOCLEAN=0 NO_AUTOCLEAN=0
NO_BUILD_INFO=0 NO_BUILD_INFO=0
HELP=0 HELP=0
CLEAN_FLAG=0 CLEAN_FLAG=0
FORMAL_FLAG=0 FORMAL_FLAG=0
CAREFUL=0 CAREFUL=0
DEP_TEST_FLAG=0 DEP_TEST_FLAG=0
# read the options # read the options
TEMP=$(getopt -o h --long parallel,std,rt,installer,containers,no-required,no-descendants,no-autoclean,no-build-info,dep-test,clean,tmpfs-clean,formal,careful,help,layer: -n "$ME" -- "$@") TEMP=$(getopt -o h --long parallel,std,rt,installer,containers,no-required,no-descendants,no-autoclean,no-build-info,dep-test,clean,tmpfs-clean,formal,careful,help,layer: -n "$ME" -- "$@")
@ -1470,7 +1489,7 @@ while true ; do
--) shift ; break ;; --) shift ; break ;;
*) echo "Internal error!" ; exit 1 ;; *) echo "Internal error!" ; exit 1 ;;
esac esac
done done
# Reset variables # Reset variables
if [ -n "$MY_WORKSPACE" ]; then if [ -n "$MY_WORKSPACE" ]; then
@ -1729,7 +1748,7 @@ clean_list () {
echo "rm -rf $d" echo "rm -rf $d"
\rm -rf "$d" 2>> /dev/null \rm -rf "$d" 2>> /dev/null
done done
else else
rs=$(rpm_get_srpm $r) rs=$(rpm_get_srpm $r)
if [[ "$rs" != "$sn"-[0-9]* ]]; then if [[ "$rs" != "$sn"-[0-9]* ]]; then
@ -1742,7 +1761,7 @@ clean_list () {
fi fi
done done
done done
TARGET=$(rpm -qp --qf '%{NAME}-%{VERSION}\n' "$s") TARGET=$(rpm -qp --qf '%{NAME}-%{VERSION}\n' "$s")
if [ $CLEAN_FLAG -eq 1 ]; then if [ $CLEAN_FLAG -eq 1 ]; then
@ -1782,7 +1801,7 @@ clean_list () {
\rm -f -v $RESULT_DIR/mockchain.log 2>> /dev/null \rm -f -v $RESULT_DIR/mockchain.log 2>> /dev/null
mock_clean mock_clean
else else
# If dependency test # If dependency test
if [ $DEP_TEST_FLAG -eq 1 ]; then if [ $DEP_TEST_FLAG -eq 1 ]; then
mock_clean mock_clean
@ -2045,7 +2064,7 @@ if [ $CLEAN_FLAG -eq 0 ] && [ $NO_DESCENDANTS -eq 0 ] && [ -f $SRPM_DIRECT_DESCE
done done
# For non-std build, and if non specific build targets are named, then search all # For non-std build, and if non specific build targets are named, then search all
# packages that we might build and check if they require a package that DID build # packages that we might build and check if they require a package that DID build
# in the std build. If so build the package as a secondary target, even though the # in the std build. If so build the package as a secondary target, even though the
# primary target was from a different build_type. # primary target was from a different build_type.
if [ "$BUILD_TYPE" != "std" ] && [ $ALL -eq 1 ] && [ -f $SRPM_TO_RPM_MAP_FILE ] && [ -f $SRPM_RPM_DIRECT_REQUIRES_FILE ]; then if [ "$BUILD_TYPE" != "std" ] && [ $ALL -eq 1 ] && [ -f $SRPM_TO_RPM_MAP_FILE ] && [ -f $SRPM_RPM_DIRECT_REQUIRES_FILE ]; then
@ -2105,7 +2124,7 @@ if [ $CLEAN_FLAG -eq 0 ] && [ $NO_DESCENDANTS -eq 0 ] && [ -f $SRPM_DIRECT_DESCE
done done
fi fi
# If the kernel or kernel-rt packages where absent from the primary build targets, but # If the kernel or kernel-rt packages where absent from the primary build targets, but
# added as a secondary target, then make sure all out-of-tree kernel modules are also # added as a secondary target, then make sure all out-of-tree kernel modules are also
# added. # added.
for n in kernel kernel-rt; do for n in kernel kernel-rt; do
@ -2234,9 +2253,9 @@ echo "SRPMS_LIST = $SRPMS_LIST"
echo "RPMS_LIST = $RPMS_LIST" echo "RPMS_LIST = $RPMS_LIST"
echo echo
if [ $CLEAN_FLAG -eq 0 ]; then if [ $CLEAN_FLAG -eq 0 ]; then
# pre-create these directories as $USER, # pre-create these directories as $USER,
# else mock will create them as root and fails to clean them. # else mock will create them as root and fails to clean them.
# Note: keep these in sync with mockchain-parallel! # Note: keep these in sync with mockchain-parallel!
for i in $(seq 0 $((MAX_WORKERS-1))); do for i in $(seq 0 $((MAX_WORKERS-1))); do
@ -2299,15 +2318,28 @@ mock_clean_metadata
echo echo
echo "Building" echo "Building"
recreate_repodata $BUILD_BASE/results/$BUILD_ENVIRONMENT_DIR
CMD_PREFIX="" CMD_PREFIX=""
if [ -x /bin/ionice ]; then if [ -x /bin/ionice ]; then
CMD_PREFIX="nice -n 20 ionice -c Idle /bin/ionice " CMD_PREFIX="nice -n 20 ionice -c Idle /bin/ionice "
fi fi
CMD_OPTIONS="-m --no-clean -m --no-cleanup-after" REAL_MOCKCHAIN=0
if [ $CAREFUL -eq 1 ]; then MOCK_PASSTHROUGH="-m"
CMD_OPTIONS="-m --no-cleanup-after" MOCKCHAIN="mockchain-parallel"
CHAIN_OPTION=""
if file $(which mockchain) | grep -q 'Python script'; then
REAL_MOCKCHAIN=1
fi fi
CMD_OPTIONS="$MOCK_PASSTHROUGH --no-clean $MOCK_PASSTHROUGH --no-cleanup-after"
if [ $CAREFUL -eq 1 ]; then
CMD_OPTIONS="$MOCK_PASSTHROUGH --no-cleanup-after"
fi
CMD_OPTIONS+=" --log=$MOCKCHAIN_LOG"
echo "CAREFUL=$CAREFUL" echo "CAREFUL=$CAREFUL"
# Sets WORKERS and MOCKCHAIN_RESOURCE_ALLOCATION # Sets WORKERS and MOCKCHAIN_RESOURCE_ALLOCATION
@ -2315,13 +2347,13 @@ compute_resources $SRPMS_LIST
if [ -f $SRPM_RPM_DIRECT_REQUIRES_FILE ]; then if [ -f $SRPM_RPM_DIRECT_REQUIRES_FILE ]; then
CMD_OPTIONS="$CMD_OPTIONS --srpm-dependency-file $SRPM_RPM_DIRECT_REQUIRES_FILE" CMD_OPTIONS+=" --srpm-dependency-file $SRPM_RPM_DIRECT_REQUIRES_FILE"
fi fi
if [ -f "$RPM_DIRECT_REQUIRES_FILE" ]; then if [ -f "$RPM_DIRECT_REQUIRES_FILE" ]; then
CMD_OPTIONS="$CMD_OPTIONS --rpm-dependency-file $RPM_DIRECT_REQUIRES_FILE" CMD_OPTIONS+=" --rpm-dependency-file $RPM_DIRECT_REQUIRES_FILE"
fi fi
if [ -f "$RPM_TO_SRPM_MAP_FILE" ]; then if [ -f "$RPM_TO_SRPM_MAP_FILE" ]; then
CMD_OPTIONS="$CMD_OPTIONS --rpm-to-srpm-map-file $RPM_TO_SRPM_MAP_FILE" CMD_OPTIONS+=" --rpm-to-srpm-map-file $RPM_TO_SRPM_MAP_FILE"
fi fi
@ -2342,12 +2374,12 @@ echo "MAX_WORKERS=$MAX_WORKERS"
echo "MOCKCHAIN_RESOURCE_ALLOCATION=$MOCKCHAIN_RESOURCE_ALLOCATION" echo "MOCKCHAIN_RESOURCE_ALLOCATION=$MOCKCHAIN_RESOURCE_ALLOCATION"
CMD="$CMD_PREFIX mockchain-parallel -r $BUILD_CFG -l $BUILD_BASE --recurse --workers=$MAX_WORKERS --worker-resources=$MOCKCHAIN_RESOURCE_ALLOCATION --basedir=$MY_WORKSPACE --log=$MOCKCHAIN_LOG --tmp_prefix=$USER --addrepo=$LOCAL_URL --addrepo=$LOCAL_SRC_URL $CMD_OPTIONS -m --rebuild $SRPMS_LIST" CMD="$CMD_PREFIX $MOCKCHAIN --root $BUILD_CFG --localrepo $BUILD_BASE --recurse --workers=$MAX_WORKERS --worker-resources=$MOCKCHAIN_RESOURCE_ALLOCATION --basedir=$MY_WORKSPACE --tmp_prefix=$USER --addrepo=$LOCAL_URL --addrepo=$LOCAL_SRC_URL $CMD_OPTIONS $MOCK_PASSTHROUGH --rebuild"
CMD_BUILD_LIST="$CHAIN_OPTION $SRPMS_LIST"
echo "" echo ""
echo "$CMD -m --define='_tis_dist .tis' -m --define='platform_release $PLATFORM_RELEASE'" echo "$CMD $MOCK_PASSTHROUGH --define='_tis_dist .tis' $MOCK_PASSTHROUGH --define='platform_release $PLATFORM_RELEASE' $CMD_BUILD_LIST"
echo "" echo ""
trapwrap stdbuf -o0 $CMD $MOCK_PASSTHROUGH --define="_tis_dist .tis" $MOCK_PASSTHROUGH --define="platform_release $PLATFORM_RELEASE" $CMD_BUILD_LIST
trapwrap stdbuf -o0 $CMD -m --define="_tis_dist .tis" -m --define="platform_release $PLATFORM_RELEASE"
MOCKCHAIN_RC=$? MOCKCHAIN_RC=$?
echo $PLATFORM_RELEASE > $LAST_PLATFORM_RELEASE_FILE echo $PLATFORM_RELEASE > $LAST_PLATFORM_RELEASE_FILE
@ -2357,7 +2389,7 @@ if [ $CLEAN_FLAG -eq 0 ]; then
fi fi
for d in $(find $RESULT_DIR -name '*.rpm' | grep -v '[.]src[.]rpm' | xargs --max-args=1 dirname | sort -u); do for d in $(find $RESULT_DIR -name '*.rpm' | grep -v '[.]src[.]rpm' | xargs --max-args=1 dirname | sort -u); do
rsync -u $d/*.rpm $RPM_DIR rsync -u $d/*.rpm $RPM_DIR
done done
if [ $ALL -eq 1 ]; then if [ $ALL -eq 1 ]; then
@ -2441,5 +2473,5 @@ if [ 0$FORMAL_BUILD -eq 1 ] && [ "$USER" == "jenkins" ]; then
fi fi
fi fi
exit 0 exit 0
) 2>&1 | stdbuf -o0 awk '{ print strftime("%H:%M:%S"), $0; fflush(); }' | tee $(date "+$MY_WORKSPACE/build-rpms-parallel_%Y-%m-%d_%H-%M-%S.log") ; exit ${PIPESTATUS[0]} ) 2>&1 | stdbuf -o0 awk '{ print strftime("%H:%M:%S"), $0; fflush(); }' | tee $(date "+$MY_WORKSPACE/build-rpms-parallel_%Y-%m-%d_%H-%M-%S.log") ; exit ${PIPESTATUS[0]}

View File

@ -1,20 +1,20 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (c) 2018 Wind River Systems, Inc. # Copyright (c) 2018-2020 Wind River Systems, Inc.
# #
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
# #
# #
# Builds rpm files from src.rpm files. # Builds rpm files from src.rpm files.
# #
# This version compiles one package at a time. # This version compiles one package at a time.
# #
# The location of packages to be built is # The location of packages to be built is
# $MY_WORKSPACE/<build-type>/rpmbuild/SRPMS. # $MY_WORKSPACE/<build-type>/rpmbuild/SRPMS.
# #
# The build order is a derived from the BuildRequires in the # The build order is a derived from the BuildRequires in the
# spec files in the src.rpms. Note that the BuildRequires sometimes # spec files in the src.rpms. Note that the BuildRequires sometimes
# create dependency loops, so no correct order can be computed. In these # create dependency loops, so no correct order can be computed. In these
# cases we add a retry loop. As long as one new package builds, we # cases we add a retry loop. As long as one new package builds, we
@ -103,7 +103,7 @@ create-no-clean-list () {
local install_groups="" local install_groups=""
local install_packages="" local install_packages=""
local p local p
for p in $(grep "config_opts\['chroot_setup_cmd'\]" $MY_BUILD_CFG | tail -n1 | cut -d '=' -f 2 | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' -e "s/^'//" -e "s/'$//" -e 's/^install //'); do for p in $(grep "config_opts\['chroot_setup_cmd'\]" $MY_BUILD_CFG | tail -n1 | cut -d '=' -f 2 | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' -e "s/^'//" -e "s/'$//" -e 's/^install //'); do
if [[ $p == @* ]] ; then if [[ $p == @* ]] ; then
install_groups=$(join_by ' ' $install_groups $(echo $p | cut -c 2-)) install_groups=$(join_by ' ' $install_groups $(echo $p | cut -c 2-))
@ -111,37 +111,44 @@ create-no-clean-list () {
install_packages=$(join_by ' ' $install_packages $p) install_packages=$(join_by ' ' $install_packages $p)
fi fi
done done
local noclean_last_list_len=0 local noclean_last_list_len=0
local noclean_list="" local noclean_list=""
local tmp_list="" local tmp_list=""
local g local g
for g in $install_groups; do for g in $install_groups; do
tmp_list=$(yum -c $MY_YUM_CONF groupinfo $g 2>> /dev/null | awk 'f;/Mandatory Packages:/{f=1}' | cut -c 5-) # Find manditory packages in the group.
# Discard anything before (and including) 'Mandatory Packages:'
# and anything after (and including) 'Optional Packages:'.
# Also discard leading spaces or '+' characters.
tmp_list=$(${PKG_MANAGER} -c $MY_YUM_CONF groupinfo $g 2>> /dev/null \
| awk 'f;/Mandatory Packages:/{f=1}' \
| sed -n '/Optional Packages:/q;p' \
| sed 's#[ +]*##')
noclean_list=$(join_by ' ' $noclean_list $tmp_list) noclean_list=$(join_by ' ' $noclean_list $tmp_list)
done done
noclean_list=$(join_by ' ' $noclean_list $install_packages) noclean_list=$(join_by ' ' $noclean_list $install_packages)
noclean_list=$(echo $noclean_list | tr ' ' '\n' | sort --uniq) noclean_list=$(echo $noclean_list | tr ' ' '\n' | sort --uniq)
noclean_list_len=$(echo $noclean_list | wc -w) noclean_list_len=$(echo $noclean_list | wc -w)
while [ $noclean_list_len -gt $noclean_last_list_len ]; do while [ $noclean_list_len -gt $noclean_last_list_len ]; do
noclean_last_list_len=$noclean_list_len noclean_last_list_len=$noclean_list_len
noclean_list=$( (yum -c $MY_YUM_CONF deplist $noclean_list 2>> /dev/null | grep provider: | awk '{ print $2 }' | awk -F . '{ print $1 }'; for p in $noclean_list; do echo $p; done) | sort --uniq) noclean_list=$( (yum -c $MY_YUM_CONF deplist $noclean_list 2>> /dev/null | grep provider: | awk '{ print $2 }' | awk -F . '{ print $1 }'; for p in $noclean_list; do echo $p; done) | sort --uniq)
noclean_list_len=$(echo $noclean_list | wc -w) noclean_list_len=$(echo $noclean_list | wc -w)
done done
echo $noclean_list > $NO_CLEAN_LIST_FILE echo $noclean_list > $NO_CLEAN_LIST_FILE
fi fi
cat $NO_CLEAN_LIST_FILE cat $NO_CLEAN_LIST_FILE
} }
str_lst_contains() { str_lst_contains() {
TARGET="$1" TARGET="$1"
LST="$2" LST="$2"
if [[ $LST =~ (^|[[:space:]])$TARGET($|[[:space:]]) ]] ; then if [[ $LST =~ (^|[[:space:]])$TARGET($|[[:space:]]) ]] ; then
return 0 return 0
else else
return 1 return 1
@ -169,7 +176,9 @@ create_lst () {
recreate_repodata () { recreate_repodata () {
local DIR=${1} local DIR=${1}
(cd $DIR (
mkdir -p $DIR
cd $DIR
if [ -f repodata/*comps*xml ]; then if [ -f repodata/*comps*xml ]; then
\mv repodata/*comps*xml comps.xml \mv repodata/*comps*xml comps.xml
fi fi
@ -260,11 +269,11 @@ union () {
echo $b echo $b
fi fi
done done
} }
# #
# returns 0 if element is in the array # returns 0 if element is in the array
# #
# e.g. contains ARRAY $SEEKING && echo "$SEEKING is in 'ARRAY'" # e.g. contains ARRAY $SEEKING && echo "$SEEKING is in 'ARRAY'"
# #
contains () { contains () {
@ -311,7 +320,7 @@ build_order_recursive () {
needs=( $(grep "^$target;" "$SRPM_DIRECT_REQUIRES_FILE" | sed "s/$target;//" | sed 's/,/ /g') ) needs=( $(grep "^$target;" "$SRPM_DIRECT_REQUIRES_FILE" | sed "s/$target;//" | sed 's/,/ /g') )
needs_list=( $(intersection needs remainder_list) ) needs_list=( $(intersection needs remainder_list) )
for((idx=0;idx<${#needs_list[@]};idx++)); do for((idx=0;idx<${#needs_list[@]};idx++)); do
build_order_recursive ${needs_list[idx]} build_order_recursive ${needs_list[idx]}
done done
echo $target echo $target
break break
@ -361,7 +370,7 @@ build_order () {
UNORDERED_LIST=( ${original_list[@]} ) UNORDERED_LIST=( ${original_list[@]} )
while [ ${#UNORDERED_LIST[@]} -gt 0 ]; do while [ ${#UNORDERED_LIST[@]} -gt 0 ]; do
element=${UNORDERED_LIST[0]} element=${UNORDERED_LIST[0]}
build_order_recursive $element build_order_recursive $element
done done
fi fi
} }
@ -476,7 +485,7 @@ kill_descendents ()
recursive_promote_children="" recursive_promote_children=""
recursive_children=$(pgrep -P $kill_pid) recursive_children=$(pgrep -P $kill_pid)
fi fi
if [ $iteration -eq 0 ]; then if [ $iteration -eq 0 ]; then
other_children=$(for relevant_child in $relevant_other_children; do pgrep -P $kill_pid $relevant_child; done) other_children=$(for relevant_child in $relevant_other_children; do pgrep -P $kill_pid $relevant_child; done)
if [ "$other_children" != "" ]; then if [ "$other_children" != "" ]; then
@ -491,7 +500,7 @@ kill_descendents ()
fi fi
for pid in $recursive_children; do for pid in $recursive_children; do
kill_descendents "$pid" $kill_all $need_stop $((iteration + 1)) kill_descendents "$pid" $kill_all $need_stop $((iteration + 1))
done done
for pid in $recursive_promote_children; do for pid in $recursive_promote_children; do
kill_descendents "$pid" 1 1 $((iteration + 1)) kill_descendents "$pid" 1 1 $((iteration + 1))
@ -754,11 +763,11 @@ mock_clean_cfg () {
echo "==================================" echo "=================================="
mock_clean_cache_cfg $CFG mock_clean_cache_cfg $CFG
echo "==================================" echo "=================================="
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --scrub=all" echo "$MOCK --root $CFG --configdir $(dirname $CFG) --scrub=all"
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --scrub=all trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --scrub=all
echo "==================================" echo "=================================="
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --clean" echo "$MOCK --root $CFG --configdir $(dirname $CFG) --clean"
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --clean trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --clean
### Note: this sometimes leaves behind a $MY_WORKSPACE/cache/mock/yum_cache/yumcache.lock ### Note: this sometimes leaves behind a $MY_WORKSPACE/cache/mock/yum_cache/yumcache.lock
echo "==================================" echo "=================================="
mock_clean_cache_all_cfg $CFG mock_clean_cache_all_cfg $CFG
@ -833,10 +842,10 @@ mock_partial_clean_cfg () {
local RPMS_CLEAN_LIST="" local RPMS_CLEAN_LIST=""
local NEED_FULL_MOCK_CLEAN=0 local NEED_FULL_MOCK_CLEAN=0
for r in $RPMS_LIST; do for r in $RPMS_LIST; do
if ! str_lst_contains $r "$NO_CLEAN_LIST" ; then if ! str_lst_contains $r "$NO_CLEAN_LIST" ; then
RPMS_CLEAN_LIST=$(join_by ' ' $RPMS_CLEAN_LIST $r) RPMS_CLEAN_LIST=$(join_by ' ' $RPMS_CLEAN_LIST $r)
else else
echo "Can't remove '$r' from mock environment without a wipe"; echo "Can't remove '$r' from mock environment without a wipe";
NEED_FULL_MOCK_CLEAN=1 NEED_FULL_MOCK_CLEAN=1
fi fi
done done
@ -849,19 +858,19 @@ mock_partial_clean_cfg () {
# Intent of following is for $RPMS_LIST to be expand now while the remaining $ varaibles are for bash inside mock to expand # Intent of following is for $RPMS_LIST to be expand now while the remaining $ varaibles are for bash inside mock to expand
echo "Try to uninstall from the mock environment these packages: $RPMS_CLEAN_LIST" echo "Try to uninstall from the mock environment these packages: $RPMS_CLEAN_LIST"
CMD='LST="'$RPMS_CLEAN_LIST'"; CMD='LST="'$RPMS_CLEAN_LIST'";
DELETE_LIST=""; DELETE_LIST="";
for r in $LST; do for r in $LST; do
FOUND=$(rpm -q $r) ; FOUND=$(rpm -q $r) ;
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
DELETE_LIST="$DELETE_LIST $FOUND"; DELETE_LIST="$DELETE_LIST $FOUND";
fi; fi;
done; done;
echo "uninstalling these packages: $DELETE_LIST"; echo "uninstalling these packages: $DELETE_LIST";
if [ "$DELETE_LIST" != "" ]; then if [ "$DELETE_LIST" != "" ]; then
rpm -e --nodeps $DELETE_LIST; rpm -e --nodeps $DELETE_LIST;
fi' fi'
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --chroot bash -c $CMD" &> $TMP echo "$MOCK --root $CFG --configdir $(dirname $CFG) --chroot bash -c $CMD" &> $TMP
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --chroot "bash -c '$CMD'" &>> $TMP trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --chroot "bash -c '$CMD'" &>> $TMP
RC=$? RC=$?
if [ $RC -ne 0 ]; then if [ $RC -ne 0 ]; then
cat $TMP cat $TMP
@ -907,8 +916,8 @@ mock_clean_cache_cfg () {
clean_yum_cache_cfg $CFG clean_yum_cache_cfg $CFG
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --scrub=root-cache --scrub=yum-cache --scrub=cache" &> $TMP echo "$MOCK --root $CFG --configdir $(dirname $CFG) --scrub=root-cache --scrub=yum-cache --scrub=cache" &> $TMP
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --scrub=root-cache --scrub=yum-cache --scrub=cache &>> $TMP trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --scrub=root-cache --scrub=yum-cache --scrub=cache &>> $TMP
RC=$? RC=$?
if [ $RC -ne 0 ]; then if [ $RC -ne 0 ]; then
cat $TMP cat $TMP
@ -931,8 +940,8 @@ mock_clean_cache_all_cfg () {
echo "==================================" echo "=================================="
clean_yum_cache_cfg $CFG clean_yum_cache_cfg $CFG
echo "==================================" echo "=================================="
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --scrub=all" echo "$MOCK --root $CFG --configdir $(dirname $CFG) --scrub=all"
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --scrub=all trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --scrub=all
echo "==================================" echo "=================================="
} }
@ -956,8 +965,8 @@ mock_clean_metadata_cfg () {
fi fi
CMD=$((cat $CFG; grep config_opts\\[\'yum.conf\'\\\] $CFG | sed 's#\\n#\n#g') | grep '^[[]' | grep -v main | sed 's/[][]//g' | sed 's#^#yum --enablerepo=#' | sed 's#$# clean metadata#' | sort -u | tr '\n' ';') CMD=$((cat $CFG; grep config_opts\\[\'yum.conf\'\\\] $CFG | sed 's#\\n#\n#g') | grep '^[[]' | grep -v main | sed 's/[][]//g' | sed 's#^#yum --enablerepo=#' | sed 's#$# clean metadata#' | sort -u | tr '\n' ';')
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --chroot bash -c $CMD" &> $TMP echo "$MOCK --root $CFG --configdir $(dirname $CFG) --chroot bash -c $CMD" &> $TMP
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --chroot "bash -c '($CMD)'" &>>$TMP trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --chroot "bash -c '($CMD)'" &>>$TMP
RC=$? RC=$?
if [ $RC -ne 0 ]; then if [ $RC -ne 0 ]; then
cat $TMP cat $TMP
@ -1010,7 +1019,7 @@ update_cgcs_repo () {
if [ "x$NEW_UNTRACKED" != "x" ]; then if [ "x$NEW_UNTRACKED" != "x" ]; then
NEED_REBUILD=1 NEED_REBUILD=1
fi fi
if [ $NEED_REBUILD -eq 1 ]; then if [ $NEED_REBUILD -eq 1 ]; then
NEED_MOCK_CLEAN=1 NEED_MOCK_CLEAN=1
echo "" echo ""
@ -1056,7 +1065,7 @@ mock_clean_mounts_dir () {
fi fi
fi fi
if [ $RC -eq 1 ]; then if [ $RC -eq 1 ]; then
echo "ERROR: Directory '$MOUNT' is already mounted and will cause a build failure within mock." echo "ERROR: Directory '$MOUNT' is already mounted and will cause a build failure within mock."
echo "Ask your system administrator to umount '$MOUNT'." echo "Ask your system administrator to umount '$MOUNT'."
exit 1 exit 1
fi fi
@ -1097,7 +1106,7 @@ clean_yum_cache_cfg () {
local YUM_CACHE_MOUNT=$(readlink -f "$ROOT_DIR/root/var/cache/yum") local YUM_CACHE_MOUNT=$(readlink -f "$ROOT_DIR/root/var/cache/yum")
local YUM_CACHE_LOCK="$CACHE_DIR/mock/yum_cache/yumcache.lock" local YUM_CACHE_LOCK="$CACHE_DIR/mock/yum_cache/yumcache.lock"
# echo "clean_yum_cache YUM_CACHE_MOUNT='$YUM_CACHE_MOUNT' YUM_CACHE_LOCK='$YUM_CACHE_LOCK'" # echo "clean_yum_cache YUM_CACHE_MOUNT='$YUM_CACHE_MOUNT' YUM_CACHE_LOCK='$YUM_CACHE_LOCK'"
if [ "$YUM_CACHE_MOUNT" != "" ]; then if [ "$YUM_CACHE_MOUNT" != "" ]; then
mock_clean_mounts_dir "$YUM_CACHE_MOUNT" mock_clean_mounts_dir "$YUM_CACHE_MOUNT"
fi fi
@ -1131,8 +1140,8 @@ mock_update_cfg () {
echo "${FUNCNAME[0]}: $CFG" echo "${FUNCNAME[0]}: $CFG"
echo "==================================" echo "=================================="
set_mock_symlinks $CFG set_mock_symlinks $CFG
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --update" echo "$MOCK --root $CFG --configdir $(dirname $CFG) --update"
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --update trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --update
echo "==================================" echo "=================================="
} }
@ -1141,8 +1150,8 @@ mock_init_cfg () {
echo "${FUNCNAME[0]}: $CFG" echo "${FUNCNAME[0]}: $CFG"
echo "==================================" echo "=================================="
set_mock_symlinks $CFG set_mock_symlinks $CFG
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --init" echo "$MOCK --root $CFG --configdir $(dirname $CFG) --init"
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --init trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --init
echo "==================================" echo "=================================="
} }
@ -1161,14 +1170,14 @@ mock_update_or_init_cfg () {
if [ -d $ROOT_DIR/root ]; then if [ -d $ROOT_DIR/root ]; then
echo "Updating the mock environment" echo "Updating the mock environment"
set_mock_symlinks $CFG set_mock_symlinks $CFG
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --update" echo "$MOCK --root $CFG --configdir $(dirname $CFG) --update"
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --update &> $TMP trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --update &> $TMP
RC=$? RC=$?
else else
echo "Init the mock environment" echo "Init the mock environment"
set_mock_symlinks $CFG set_mock_symlinks $CFG
echo "$MOCK -r $CFG --configdir $(dirname $CFG) --init" echo "$MOCK --root $CFG --configdir $(dirname $CFG) --init"
trapwrap_n $CFG $MOCK -r $CFG --configdir $(dirname $CFG) --init &> $TMP trapwrap_n $CFG $MOCK --root $CFG --configdir $(dirname $CFG) --init &> $TMP
RC=$? RC=$?
fi fi
if [ $RC -ne 0 ]; then if [ $RC -ne 0 ]; then
@ -1198,12 +1207,12 @@ NO_DESCENDANTS=0
NO_REQUIRED=0 NO_REQUIRED=0
NO_AUTOCLEAN=0 NO_AUTOCLEAN=0
NO_BUILD_INFO=0 NO_BUILD_INFO=0
HELP=0 HELP=0
CLEAN_FLAG=0 CLEAN_FLAG=0
FORMAL_FLAG=0 FORMAL_FLAG=0
CAREFUL=0 CAREFUL=0
DEP_TEST_FLAG=0 DEP_TEST_FLAG=0
# read the options # read the options
TEMP=$(getopt -o h --long serial,std,rt,installer,containers,no-required,no-descendants,no-autoclean,no-build-info,dep-test,clean,formal,careful,help,layer: -n "$ME" -- "$@") TEMP=$(getopt -o h --long serial,std,rt,installer,containers,no-required,no-descendants,no-autoclean,no-build-info,dep-test,clean,formal,careful,help,layer: -n "$ME" -- "$@")
@ -1238,7 +1247,7 @@ while true ; do
--) shift ; break ;; --) shift ; break ;;
*) echo "Internal error!" ; exit 1 ;; *) echo "Internal error!" ; exit 1 ;;
esac esac
done done
# Reset variables # Reset variables
@ -1493,7 +1502,7 @@ clean_list () {
echo "rm -rf $d" echo "rm -rf $d"
\rm -rf "$d" 2>> /dev/null \rm -rf "$d" 2>> /dev/null
done done
else else
rs=$(rpm_get_srpm $r) rs=$(rpm_get_srpm $r)
if [[ "$rs" != "$sn"-[0-9]* ]]; then if [[ "$rs" != "$sn"-[0-9]* ]]; then
@ -1506,7 +1515,7 @@ clean_list () {
fi fi
done done
done done
TARGET=$(rpm -qp --qf '%{NAME}-%{VERSION}\n' "$s") TARGET=$(rpm -qp --qf '%{NAME}-%{VERSION}\n' "$s")
if [ $CLEAN_FLAG -eq 1 ]; then if [ $CLEAN_FLAG -eq 1 ]; then
@ -1542,7 +1551,7 @@ clean_list () {
\rm -f -v $RESULT_DIR/mockchain.log 2>> /dev/null \rm -f -v $RESULT_DIR/mockchain.log 2>> /dev/null
mock_clean mock_clean
else else
# If dependency test # If dependency test
if [ $DEP_TEST_FLAG -eq 1 ]; then if [ $DEP_TEST_FLAG -eq 1 ]; then
mock_clean mock_clean
@ -1801,7 +1810,7 @@ if [ $CLEAN_FLAG -eq 0 ] && [ $NO_DESCENDANTS -eq 0 ] && [ -f $SRPM_DIRECT_DESCE
done done
# For non-std build, and if non specific build targets are named, then search all # For non-std build, and if non specific build targets are named, then search all
# packages that we might build and check if they require a package that DID build # packages that we might build and check if they require a package that DID build
# in the std build. If so build the package as a secondary target, even though the # in the std build. If so build the package as a secondary target, even though the
# primary target was from a different build_type. # primary target was from a different build_type.
if [ "$BUILD_TYPE" != "std" ] && [ $ALL -eq 1 ] && [ -f $SRPM_TO_RPM_MAP_FILE ] && [ -f $SRPM_RPM_DIRECT_REQUIRES_FILE ]; then if [ "$BUILD_TYPE" != "std" ] && [ $ALL -eq 1 ] && [ -f $SRPM_TO_RPM_MAP_FILE ] && [ -f $SRPM_RPM_DIRECT_REQUIRES_FILE ]; then
@ -1861,7 +1870,7 @@ if [ $CLEAN_FLAG -eq 0 ] && [ $NO_DESCENDANTS -eq 0 ] && [ -f $SRPM_DIRECT_DESCE
done done
fi fi
# If the kernel or kernel-rt packages where absent from the primary build targets, but # If the kernel or kernel-rt packages where absent from the primary build targets, but
# added as a secondary target, then make sure all out-of-tree kernel modules are also # added as a secondary target, then make sure all out-of-tree kernel modules are also
# added. # added.
for n in kernel kernel-rt; do for n in kernel kernel-rt; do
@ -1996,9 +2005,9 @@ echo "SRPMS_LIST = $SRPMS_LIST"
echo "RPMS_LIST = $RPMS_LIST" echo "RPMS_LIST = $RPMS_LIST"
echo echo
if [ $CLEAN_FLAG -eq 0 ]; then if [ $CLEAN_FLAG -eq 0 ]; then
# pre-create these directories as $USER, # pre-create these directories as $USER,
# else mock will create them as root and fails to clean them. # else mock will create them as root and fails to clean them.
# Note: keep these in sync with mockchain-parallel! # Note: keep these in sync with mockchain-parallel!
mkdir -p $MY_WORKSPACE/mock mkdir -p $MY_WORKSPACE/mock
@ -2059,27 +2068,46 @@ mock_clean_metadata
echo echo
echo "Building" echo "Building"
recreate_repodata $BUILD_BASE/results/$BUILD_ENVIRONMENT_DIR
CMD_PREFIX="" CMD_PREFIX=""
if [ -x /bin/ionice ]; then if [ -x /bin/ionice ]; then
CMD_PREFIX="nice -n 20 ionice -c Idle /bin/ionice " CMD_PREFIX="nice -n 20 ionice -c Idle /bin/ionice "
fi fi
CMD_OPTIONS="-m --no-clean -m --no-cleanup-after" REAL_MOCKCHAIN=0
MOCK_PASSTHROUGH=""
MOCKCHAIN="mock"
CHAIN_OPTION="--chain"
if file $(which mockchain) | grep -q 'Python script'; then
REAL_MOCKCHAIN=1
MOCK_PASSTHROUGH="-m"
MOCKCHAIN="mockchain"
CHAIN_OPTION=""
fi
CMD_OPTIONS="$MOCK_PASSTHROUGH --no-clean $MOCK_PASSTHROUGH --no-cleanup-after"
if [ $CAREFUL -eq 1 ]; then if [ $CAREFUL -eq 1 ]; then
CMD_OPTIONS="-m --no-cleanup-after" CMD_OPTIONS="$MOCK_PASSTHROUGH --no-cleanup-after"
fi
if [ $REAL_MOCKCHAIN -eq 1 ]; then
CMD_OPTIONS+=" --log=$MOCKCHAIN_LOG"
fi fi
echo "CAREFUL=$CAREFUL" echo "CAREFUL=$CAREFUL"
echo "CMD_OPTIONS=$CMD_OPTIONS" echo "CMD_OPTIONS=$CMD_OPTIONS"
CMD="$CMD_PREFIX mockchain -r $BUILD_CFG -l $BUILD_BASE --recurse --log=$MOCKCHAIN_LOG --tmp_prefix=$USER --addrepo=$LOCAL_URL --addrepo=$LOCAL_SRC_URL -m --rootdir=$BUILD_BASE/mock/root $CMD_OPTIONS -m --rebuild $SRPMS_LIST" CMD="$CMD_PREFIX $MOCKCHAIN --root $BUILD_CFG --localrepo $BUILD_BASE --recurse --tmp_prefix=$USER --addrepo=$LOCAL_URL --addrepo=$LOCAL_SRC_URL $MOCK_PASSTHROUGH --rootdir=$BUILD_BASE/mock/root $CMD_OPTIONS $MOCK_PASSTHROUGH --rebuild"
echo "$CMD -m --define='_tis_dist .tis' -m --define='platform_release $PLATFORM_RELEASE'" CMD_BUILD_LIST="$CHAIN_OPTION $SRPMS_LIST"
trapwrap stdbuf -o0 $CMD -m --define='_tis_dist .tis' -m --define="platform_release $PLATFORM_RELEASE" echo ""
echo "$CMD $MOCK_PASSTHROUGH --define='_tis_dist .tis' $MOCK_PASSTHROUGH --define='platform_release $PLATFORM_RELEASE' $CMD_BUILD_LIST"
echo ""
trapwrap stdbuf -o0 $CMD $MOCK_PASSTHROUGH --define="_tis_dist .tis" $MOCK_PASSTHROUGH --define="platform_release $PLATFORM_RELEASE" $CMD_BUILD_LIST
MOCKCHAIN_RC=$? MOCKCHAIN_RC=$?
echo $PLATFORM_RELEASE > $LAST_PLATFORM_RELEASE_FILE echo $PLATFORM_RELEASE > $LAST_PLATFORM_RELEASE_FILE
for d in $(find $RESULT_DIR -name '*.rpm' | grep -v '[.]src[.]rpm' | xargs --max-args=1 dirname | sort -u); do for d in $(find $RESULT_DIR -name '*.rpm' | grep -v '[.]src[.]rpm' | xargs --max-args=1 dirname | sort -u); do
rsync -u $d/*.rpm $RPM_DIR rsync -u $d/*.rpm $RPM_DIR
done done
if [ $ALL -eq 1 ]; then if [ $ALL -eq 1 ]; then
@ -2163,5 +2191,5 @@ if [ 0$FORMAL_BUILD -eq 1 ] && [ "$USER" == "jenkins" ]; then
fi fi
fi fi
exit 0 exit 0
) 2>&1 | stdbuf -o0 awk '{ print strftime("%H:%M:%S"), $0; fflush(); }' | tee $(date "+$MY_WORKSPACE/build-rpms-serial_%Y-%m-%d_%H-%M-%S.log") ; exit ${PIPESTATUS[0]} ) 2>&1 | stdbuf -o0 awk '{ print strftime("%H:%M:%S"), $0; fflush(); }' | tee $(date "+$MY_WORKSPACE/build-rpms-serial_%Y-%m-%d_%H-%M-%S.log") ; exit ${PIPESTATUS[0]}

View File

@ -1,5 +1,11 @@
#!/bin/env bash #!/bin/env bash
#
# Copyright (c) 2018-2020 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
# Here's the score, kids. There are a few different places from which we can # Here's the score, kids. There are a few different places from which we can
# get packages. In priority order, they are: # get packages. In priority order, they are:
# #
@ -26,21 +32,33 @@
# export/dist/report_deps.txt # export/dist/report_deps.txt
# #
CGTS_DEPS_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}" )" )"
# Set REPOQUERY, REPOQUERY_SUB_COMMAND, REPOQUERY_RESOLVE and
# REPOQUERY_WHATPROVIDES_DELIM for our build environment.
source ${CGTS_DEPS_DIR}/../pkg-manager-utils.sh
# This function generates a simple file of dependencies we're trying to resolve # This function generates a simple file of dependencies we're trying to resolve
function generate_dep_list { function generate_dep_list {
TMP_RPM_DB=$(mktemp -d $(pwd)/tmp_rpm_db_XXXXXX) TMP_RPM_DB=$(mktemp -d $(pwd)/tmp_rpm_db_XXXXXX)
mkdir -p $TMP_RPM_DB mkdir -p $TMP_RPM_DB
rpm --initdb --dbpath $TMP_RPM_DB rpm --initdb --dbpath $TMP_RPM_DB
rpm --dbpath $TMP_RPM_DB --test -Uvh --replacefiles '*.rpm' >> $DEPDETAILLISTFILE 2>&1 rpm --dbpath $TMP_RPM_DB --test -Uvh --replacefiles '*.rpm' > $DEPLISTFILE_NEW 2>&1
rpm --dbpath $TMP_RPM_DB --test -Uvh --replacefiles '*.rpm' 2>&1 \ cat $DEPLISTFILE_NEW >> $DEPDETAILLISTFILE
| grep -v "error:" \ cat $DEPLISTFILE_NEW \
| grep -v "warning:" \ | grep -v -e "error:" -e "warning:" -e "Preparing..." \
| grep -v "Preparing..." \ -e "Verifying..." -e "installing package" \
| grep -v "installing package" \ | sed -e "s/ is needed by.*$//" -e "s/ [<=>].*$//" \
| sed "s/ is needed by.*$//" | sed "s/ >=.*$//" | sort -u > $DEPLISTFILE | sort -u > $DEPLISTFILE
\rm -rf $TMP_RPM_DB \rm -rf $TMP_RPM_DB
} }
join_array() {
local IFS="$1"
shift
echo "$*"
}
# Takes a list of requirements (either explcit package name, or capabilities # Takes a list of requirements (either explcit package name, or capabilities
# to provide) and install packages to meet those dependancies # to provide) and install packages to meet those dependancies
# #
@ -55,6 +73,7 @@ function generate_dep_list {
# capabilities. # capabilities.
function install_deps { function install_deps {
local DEP_LIST="" local DEP_LIST=""
local DEP_LIST_ARRAY=()
local DEP_LIST_FILE="$1" local DEP_LIST_FILE="$1"
# Temporary files are used in a few different ways # Temporary files are used in a few different ways
@ -68,7 +87,7 @@ function install_deps {
while read DEP while read DEP
do do
DEP_LIST="${DEP_LIST} ${DEP}" DEP_LIST+=" '${DEP}'"
done < $DEP_LIST_FILE done < $DEP_LIST_FILE
echo "Debug: List of deps to resolve: ${DEP_LIST}" echo "Debug: List of deps to resolve: ${DEP_LIST}"
@ -79,8 +98,17 @@ function install_deps {
# go through each repo and convert deps to packages based on package name # go through each repo and convert deps to packages based on package name
for REPOID in `grep '^[[].*[]]$' $YUM | grep -v '[[]main[]]' | awk -F '[][]' '{print $2 }'`; do for REPOID in `grep '^[[].*[]]$' $YUM | grep -v '[[]main[]]' | awk -F '[][]' '{print $2 }'`; do
echo "TMPDIR=$TMP_DIR repoquery -c $YUM --repoid=$REPOID --arch=x86_64,noarch ${DEP_LIST} --qf='%{name}'" echo "TMPDIR=${TMP_DIR}"\
TMPDIR=$TMP_DIR repoquery -c $YUM --repoid=$REPOID --arch=x86_64,noarch --qf='%{name}' ${DEP_LIST} | sed "s/kernel-debug/kernel/g" >> $UNSORTED_PACKAGES "${REPOQUERY} --config=${YUM} --repoid=$REPOID"\
"${REPOQUERY_SUB_COMMAND} --arch=x86_64,noarch"\
"${DEP_LIST} --qf='%{name}'"
TMPDIR=${TMP_DIR} \
${REPOQUERY} --config=${YUM} --repoid=$REPOID \
${REPOQUERY_SUB_COMMAND} --arch=x86_64,noarch \
--qf='%{name}' ${DEP_LIST} \
| sed "s/kernel-debug/kernel/g" >> $UNSORTED_PACKAGES
\rm -rf $TMP_DIR/yum-$USER-* \rm -rf $TMP_DIR/yum-$USER-*
done done
sort $UNSORTED_PACKAGES -u > $SORTED_PACKAGES sort $UNSORTED_PACKAGES -u > $SORTED_PACKAGES
@ -96,19 +124,31 @@ function install_deps {
# If there are any requirements not resolved, look up the packages with # If there are any requirements not resolved, look up the packages with
# --whatprovides # --whatprovides
if [ -s $UNRESOLVED_PACKAGES ]; then if [ -s $UNRESOLVED_PACKAGES ]; then
DEP_LIST="" DEP_LIST_ARRAY=()
\cp $SORTED_PACKAGES $UNSORTED_PACKAGES \cp $SORTED_PACKAGES $UNSORTED_PACKAGES
while read DEP while read DEP
do do
DEP_LIST="${DEP_LIST} ${DEP}" DEP_LIST_ARRAY+=( "${DEP}" )
done < $UNRESOLVED_PACKAGES done < $UNRESOLVED_PACKAGES
DEP_LIST=$(echo "$DEP_LIST" | sed 's/^ //g') if [ "${REPOQUERY_WHATPROVIDES_DELIM}" != " " ]; then
if [ "$DEP_LIST" != "" ]; then DEP_LIST_ARRAY=( "$(join_array "${REPOQUERY_WHATPROVIDES_DELIM}" "${DEP_LIST_ARRAY[@]}" )" )
fi
if [ ${#DEP_LIST_ARRAY[@]} -gt 0 ]; then
for REPOID in `grep '^[[].*[]]$' $YUM | grep -v '[[]main[]]' | awk -F '[][]' '{print $2 }'`; do for REPOID in `grep '^[[].*[]]$' $YUM | grep -v '[[]main[]]' | awk -F '[][]' '{print $2 }'`; do
echo "TMPDIR=$TMP_DIR repoquery -c $YUM --repoid=$REPOID --arch=x86_64,noarch --whatprovides ${DEP_LIST} --qf='%{name}'" echo "TMPDIR=${TMP_DIR}"\
TMPDIR=$TMP_DIR repoquery -c $YUM --repoid=$REPOID --arch=x86_64,noarch --qf='%{name}' --whatprovides ${DEP_LIST} | sed "s/kernel-debug/kernel/g" >> $UNSORTED_PACKAGES "${REPOQUERY} --config=${YUM} --repoid=${REPOID}"\
"${REPOQUERY_SUB_COMMAND} --arch=x86_64,noarch"\
"--qf='%{name}' --whatprovides ${DEP_LIST_ARRAY[@]}"
TMPDIR=${TMP_DIR} \
${REPOQUERY} --config=${YUM} --repoid=${REPOID} \
${REPOQUERY_SUB_COMMAND} --arch=x86_64,noarch \
--qf='%{name}' --whatprovides ${DEP_LIST_ARRAY[@]} \
| sed "s/kernel-debug/kernel/g" >> $UNSORTED_PACKAGES
\rm -rf $TMP_DIR/yum-$USER-* \rm -rf $TMP_DIR/yum-$USER-*
done done
fi fi
@ -124,12 +164,12 @@ function install_deps {
DEP_LIST=" " DEP_LIST=" "
while read DEP while read DEP
do do
DEP_LIST="${DEP_LIST}${DEP} " DEP_LIST+="${DEP} "
done < $SORTED_PACKAGES done < $SORTED_PACKAGES
rm $SORTED_PACKAGES rm $SORTED_PACKAGES
# go through each repo and install packages # go through each repo and install packages
local TARGETS=${DEP_LIST} local TARGETS="${DEP_LIST}"
echo "Debug: Resolved list of deps to install: ${TARGETS}" echo "Debug: Resolved list of deps to install: ${TARGETS}"
local UNRESOLVED local UNRESOLVED
for REPOID in `grep '^[[].*[]]$' $YUM | grep -v '[[]main[]]' | awk -F '[][]' '{print $2 }'`; do for REPOID in `grep '^[[].*[]]$' $YUM | grep -v '[[]main[]]' | awk -F '[][]' '{print $2 }'`; do
@ -137,8 +177,20 @@ function install_deps {
if [[ ! -z "${TARGETS// }" ]]; then if [[ ! -z "${TARGETS// }" ]]; then
REPO_PATH=$(cat $YUM | sed -n "/^\[$REPOID\]\$/,\$p" | grep '^baseurl=' | head -n 1 | awk -F 'file://' '{print $2}' | sed 's:/$::') REPO_PATH=$(cat $YUM | sed -n "/^\[$REPOID\]\$/,\$p" | grep '^baseurl=' | head -n 1 | awk -F 'file://' '{print $2}' | sed 's:/$::')
>&2 echo "TMPDIR=$TMP_DIR repoquery -c $YUM --repoid=$REPOID --arch=x86_64,noarch --resolve $TARGETS --qf='%{name} %{name}-%{version}-%{release}.%{arch}.rpm %{relativepath}'"
TMPDIR=$TMP_DIR repoquery -c $YUM --repoid=$REPOID --arch=x86_64,noarch --resolve $TARGETS --qf="%{name} %{name}-%{version}-%{release}.%{arch}.rpm %{relativepath}" | sort -r -V > $TMPFILE >&2 echo "TMPDIR=${TMP_DIR}"\
"${REPOQUERY} --config=${YUM} --repoid=${REPOID}"\
"${REPOQUERY_SUB_COMMAND} --arch=x86_64,noarch"\
"--qf='%{name} %{name}-%{version}-%{release}.%{arch}.rpm %{relativepath}'"\
"${REPOQUERY_RESOLVE} ${TARGETS}"
TMPDIR=${TMP_DIR} \
${REPOQUERY} --config=${YUM} --repoid=${REPOID} \
${REPOQUERY_SUB_COMMAND} --arch=x86_64,noarch \
--qf="%{name} %{name}-%{version}-%{release}.%{arch}.rpm %{relativepath}" \
${REPOQUERY_RESOLVE} ${TARGETS} \
| sort -r -V > $TMPFILE
\rm -rf $TMP_DIR/yum-$USER-* \rm -rf $TMP_DIR/yum-$USER-*
while read STR while read STR
@ -157,7 +209,11 @@ function install_deps {
cp $PKG_PATH . cp $PKG_PATH .
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
>&2 echo " Here's what I have to work with..." >&2 echo " Here's what I have to work with..."
>&2 echo " TMPDIR=$TMP_DIR repoquery -c $YUM --repoid=$REPOID --arch=x86_64,noarch --resolve $PKG --qf=\"%{name} %{name}-%{version}-%{release}.%{arch}.rpm %{relativepath}\"" >&2 echo " TMPDIR=${TMP_DIR}"\
"${REPOQUERY} --config=${YUM} --repoid=${REPOID}"\
"${REPOQUERY_SUB_COMMAND} --arch=x86_64,noarch"\
"--qf=\"%{name} %{name}-%{version}-%{release}.%{arch}.rpm %{relativepath}\""\
"${REPOQUERY_RESOLVE} ${PKG}"
>&2 echo " PKG=$PKG PKG_FILE=$PKG_FILE REPO_PATH=$REPO_PATH PKG_REL_PATH=$PKG_REL_PATH PKG_PATH=$PKG_PATH" >&2 echo " PKG=$PKG PKG_FILE=$PKG_FILE REPO_PATH=$REPO_PATH PKG_REL_PATH=$PKG_REL_PATH PKG_PATH=$PKG_PATH"
fi fi
@ -172,8 +228,8 @@ function install_deps {
echo " path $PKG_PATH" >> $BUILT_REPORT echo " path $PKG_PATH" >> $BUILT_REPORT
FOUND_UNKNOWN=1 FOUND_UNKNOWN=1
fi fi
done < $TMPFILE #<<< "$(TMPDIR=$TMP_DIR repoquery -c $YUM --repoid=$REPOID --arch=x86_64,noarch --resolve $TARGETS --qf=\"%{name} %{name}-%{version}-%{release}.%{arch}.rpm %{relativepath}\" | sort -r -V)" done < $TMPFILE
\rm -rf $TMP_DIR/yum-$USER-* \rm -rf $TMP_DIR/yum-$USER-*
TARGETS="$UNRESOLVED" TARGETS="$UNRESOLVED"
fi fi
done done
@ -220,6 +276,7 @@ OUTPUT_DIR=$MY_WORKSPACE/export
TMP_DIR=$MY_WORKSPACE/tmp TMP_DIR=$MY_WORKSPACE/tmp
YUM=$OUTPUT_DIR/yum.conf YUM=$OUTPUT_DIR/yum.conf
DEPLISTFILE=$OUTPUT_DIR/deps.txt DEPLISTFILE=$OUTPUT_DIR/deps.txt
DEPLISTFILE_NEW=$OUTPUT_DIR/deps_new.txt
DEPDETAILLISTFILE=$OUTPUT_DIR/deps_detail.txt DEPDETAILLISTFILE=$OUTPUT_DIR/deps_detail.txt
BUILT_REPORT=$OUTPUT_DIR/local.txt BUILT_REPORT=$OUTPUT_DIR/local.txt

View File

@ -1,40 +1,71 @@
#!/bin/env bash #!/bin/env bash
#
# Copyright (c) 2018-2020 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
CGTS_DEPS_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}" )" )"
# Set REPOQUERY, REPOQUERY_SUB_COMMAND, REPOQUERY_RESOLVE and
# REPOQUERY_WHATPROVIDES_DELIM for our build environment.
source ${CGTS_DEPS_DIR}/../pkg-manager-utils.sh
function generate_dep_list { function generate_dep_list {
TMP_RPM_DB=$(mktemp -d $(pwd)/tmp_rpm_db_XXXXXX) TMP_RPM_DB=$(mktemp -d $(pwd)/tmp_rpm_db_XXXXXX)
mkdir -p $TMP_RPM_DB mkdir -p $TMP_RPM_DB
rpm --initdb --dbpath $TMP_RPM_DB rpm --initdb --dbpath $TMP_RPM_DB
rpm --dbpath $TMP_RPM_DB --test -Uvh --replacefiles '*.rpm' >> $DEPDETAILLISTFILE 2>&1 rpm --dbpath $TMP_RPM_DB --test -Uvh --replacefiles '*.rpm' > $DEPLISTFILE_NEW 2>&1
rpm --dbpath $TMP_RPM_DB --test -Uvh --replacefiles '*.rpm' 2>&1 \ cat $DEPLISTFILE_NEW >> $DEPDETAILLISTFILE
| grep -v "error:" \ cat $DEPLISTFILE_NEW \
| grep -v "warning:" \ | grep -v -e "error:" -e "warning:" -e "Preparing..." \
| grep -v "Preparing..." \ -e "Verifying..." -e "installing package" \
| sed "s/ is needed by.*$//" | sed "s/ >=.*$//" | sort -u > $DEPLISTFILE | sed -e "s/ is needed by.*$//" -e "s/ [<=>].*$//" \
rm -rf $TMP_RPM_DB | sort -u > $DEPLISTFILE
\rm -rf $TMP_RPM_DB
}
join_array() {
local IFS="$1"
shift
echo "$*"
} }
function install_deps { function install_deps {
local DEP_LIST="" local DEP_LIST=""
local DEP_LIST_ARRAY=()
local DEP_LIST_FILE="$1" local DEP_LIST_FILE="$1"
rm -f $TMPFILE rm -f $TMPFILE
while read DEP while read DEP
do do
DEP_LIST="${DEP_LIST} ${DEP}" DEP_LIST_ARRAY+=( "${DEP}" )
done < $DEP_LIST_FILE done < $DEP_LIST_FILE
echo "Debug: List of deps to resolve: ${DEP_LIST}" if [ "${REPOQUERY_WHATPROVIDES_DELIM}" != " " ]; then
DEP_LIST_ARRAY=( "$(join_array "${REPOQUERY_WHATPROVIDES_DELIM}" "${DEP_LIST_ARRAY[@]}" )" )
fi
if [ -z "${DEP_LIST}" ]; then echo "Debug: List of deps to resolve: ${DEP_LIST_ARRAY[@]}"
if [ ${#DEP_LIST_ARRAY[@]} -gt 0 ]; then
return 0 return 0
fi fi
# go through each repo and convert deps to packages # go through each repo and convert deps to packages
for REPOID in `grep '^[[].*[]]$' $YUM | grep -v '[[]main[]]' | awk -F '[][]' '{print $2 }'`; do for REPOID in `grep '^[[].*[]]$' $YUM | grep -v '[[]main[]]' | awk -F '[][]' '{print $2 }'`; do
echo "TMPDIR=$TMP_DIR repoquery -c $YUM --repoid=$REPOID --arch=x86_64,noarch --whatprovides ${DEP_LIST} --qf='%{name}'" echo "TMPDIR=${TMP_DIR}"\
TMPDIR=$TMP_DIR repoquery -c $YUM --repoid=$REPOID --arch=x86_64,noarch --qf='%{name}' --whatprovides ${DEP_LIST} | sed "s/kernel-debug/kernel/g" >> $TMPFILE "${REPOQUERY} --config=${YUM} --repoid=${REPOID}"\
\rm -rf $TMP_DIR/yum-$USER-* "${REPOQUERY_SUB_COMMAND} --arch=x86_64,noarch"\
"--qf='%{name}' --whatprovides ${DEP_LIST_ARRAY[@]}"
TMPDIR=${TMP_DIR} \
${REPOQUERY} --config=${YUM} --repoid=${REPOID} \
${REPOQUERY_SUB_COMMAND} --arch=x86_64,noarch \
--qf='%{name}' --whatprovides ${DEP_LIST_ARRAY[@]} \
| sed "s/kernel-debug/kernel/g" >> $TMPFILE
\rm -rf $TMP_DIR/yum-$USER-*
done done
sort $TMPFILE -u > $TMPFILE1 sort $TMPFILE -u > $TMPFILE1
rm $TMPFILE rm $TMPFILE
@ -42,12 +73,12 @@ function install_deps {
DEP_LIST="" DEP_LIST=""
while read DEP while read DEP
do do
DEP_LIST="${DEP_LIST} ${DEP}" DEP_LIST+="${DEP} "
done < $TMPFILE1 done < $TMPFILE1
rm $TMPFILE1 rm $TMPFILE1
# next go through each repo and install packages # next go through each repo and install packages
local TARGETS=${DEP_LIST} local TARGETS="${DEP_LIST}"
echo "Debug: Resolved list of deps to install: ${TARGETS}" echo "Debug: Resolved list of deps to install: ${TARGETS}"
local UNRESOLVED local UNRESOLVED
for REPOID in `grep '^[[].*[]]$' $YUM | grep -v '[[]main[]]' | awk -F '[][]' '{print $2 }'`; do for REPOID in `grep '^[[].*[]]$' $YUM | grep -v '[[]main[]]' | awk -F '[][]' '{print $2 }'`; do
@ -55,9 +86,19 @@ function install_deps {
if [[ ! -z "${TARGETS// }" ]]; then if [[ ! -z "${TARGETS// }" ]]; then
REPO_PATH=$(cat $YUM | sed -n "/^\[$REPOID\]\$/,\$p" | grep '^baseurl=' | head -n 1 | awk -F 'file://' '{print $2}' | sed 's:/$::') REPO_PATH=$(cat $YUM | sed -n "/^\[$REPOID\]\$/,\$p" | grep '^baseurl=' | head -n 1 | awk -F 'file://' '{print $2}' | sed 's:/$::')
>&2 echo "TMPDIR=$TMP_DIR repoquery -c $YUM --repoid=$REPOID --arch=x86_64,noarch --resolve $TARGETS --qf='%{name} %{name}-%{version}-%{release}.%{arch}.rpm %{relativepath}'" >&2 echo "TMPDIR=${TMP_DIR}"\
TMPDIR=$TMP_DIR repoquery -c $YUM --repoid=$REPOID --arch=x86_64,noarch --resolve $TARGETS --qf="%{name} %{name}-%{version}-%{release}.%{arch}.rpm %{relativepath}" | sort -r -V >> $TMPFILE "${REPOQUERY} --config=${YUM} --repoid=${REPOID}"\
\rm -rf $TMP_DIR/yum-$USER-* "${REPOQUERY_SUB_COMMAND} --arch=x86_64,noarch"\
"--qf='%{name} %{name}-%{version}-%{release}.%{arch}.rpm %{relativepath}'"\
"${REPOQUERY_RESOLVE} ${TARGETS}"
TMPDIR=${TMP_DIR} \
${REPOQUERY} --config=${YUM} --repoid=${REPOID} \
${REPOQUERY_SUB_COMMAND} --arch=x86_64,noarch \
--qf="%{name} %{name}-%{version}-%{release}.%{arch}.rpm %{relativepath}" \
${REPOQUERY_RESOLVE} ${TARGETS} \
| sort -r -V >> $TMPFILE
\rm -rf $TMP_DIR/yum-$USER-*
while read STR while read STR
do do
@ -75,7 +116,11 @@ function install_deps {
cp $PKG_PATH . cp $PKG_PATH .
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
>&2 echo " Here's what I have to work with..." >&2 echo " Here's what I have to work with..."
>&2 echo " TMPDIR=$TMP_DIR repoquery -c $YUM --repoid=$REPOID --arch=x86_64,noarch --resolve $PKG --qf=\"%{name} %{name}-%{version}-%{release}.%{arch}.rpm %{relativepath}\"" >&2 echo " TMPDIR=${TMP_DIR}"\
"${REPOQUERY} -c ${YUM} --repoid=${REPOID}"\
"${REPOQUERY_SUB_COMMAND} --arch=x86_64,noarch"\
"--qf=\"%{name} %{name}-%{version}-%{release}.%{arch}.rpm %{relativepath}\""\
"${REPOQUERY_RESOLVE} ${PKG}"
>&2 echo " PKG=$PKG PKG_FILE=$PKG_FILE REPO_PATH=$REPO_PATH PKG_REL_PATH=$PKG_REL_PATH PKG_PATH=$PKG_PATH" >&2 echo " PKG=$PKG PKG_FILE=$PKG_FILE REPO_PATH=$REPO_PATH PKG_REL_PATH=$PKG_REL_PATH PKG_PATH=$PKG_PATH"
fi fi
@ -91,8 +136,9 @@ function install_deps {
echo " path $PKG_PATH" >> $BUILT_REPORT echo " path $PKG_PATH" >> $BUILT_REPORT
FOUND_UNKNOWN=1 FOUND_UNKNOWN=1
fi fi
done < $TMPFILE #<<< "$(TMPDIR=$TMP_DIR repoquery -c $YUM --repoid=$REPOID --arch=x86_64,noarch --resolve $TARGETS --qf=\"%{name} %{name}-%{version}-%{release}.%{arch}.rpm %{relativepath}\" | sort -r -V)" done < $TMPFILE
\rm -rf $TMP_DIR/yum-$USER-*
\rm -rf $TMP_DIR/yum-$USER-*
TARGETS="$UNRESOLVED" TARGETS="$UNRESOLVED"
fi fi
done done
@ -143,6 +189,7 @@ OUTPUT_DIR=${ROOT}/newDisk
YUM=${ROOT}/yum.conf YUM=${ROOT}/yum.conf
TMP_DIR=${ROOT}/tmp TMP_DIR=${ROOT}/tmp
DEPLISTFILE=${ROOT}/deps.txt DEPLISTFILE=${ROOT}/deps.txt
DEPLISTFILE_NEW=${ROOT}/deps_new.txt
DEPDETAILLISTFILE=${ROOT}/deps_detail.txt DEPDETAILLISTFILE=${ROOT}/deps_detail.txt
INSTALLDIR=${ROOT}/newDisk/isolinux/Packages INSTALLDIR=${ROOT}/newDisk/isolinux/Packages

View File

@ -1,6 +1,12 @@
#!/bin/bash #!/bin/bash
# set -x # set -x
#
# Copyright (c) 2018-2020 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
source "$SRC_BASE/build-tools/spec-utils" source "$SRC_BASE/build-tools/spec-utils"
source "$SRC_BASE/build-tools/srpm-utils" source "$SRC_BASE/build-tools/srpm-utils"
@ -195,14 +201,14 @@ fi
if [ $TAR_NEEDED -gt 0 ]; then if [ $TAR_NEEDED -gt 0 ]; then
echo "Creating tar file: $TAR_PATH ..." echo "Creating tar file: $TAR_PATH ..."
echo "tar czf $TAR_PATH $SRC_DIR --exclude '.git*' --exclude 'build' --exclude='.pc' --exclude='patches' --exclude='$SRC_DIR/$DISTRO' --exclude='pbr-*.egg' --transform 's,^$TRANSFORM,$TAR_NAME-$VERSION,'" echo "tar --exclude '.git*' --exclude 'build' --exclude='.pc' --exclude='patches' --exclude='$SRC_DIR/$DISTRO' --exclude='pbr-*.egg' --transform 's,^$TRANSFORM,$TAR_NAME-$VERSION,' -czf $TAR_PATH $SRC_DIR"
tar czf $TAR_PATH $SRC_DIR --exclude '.git*' --exclude 'build' --exclude='.pc' --exclude='patches' --exclude="$SRC_DIR/$DISTRO" --exclude='pbr-*.egg' --transform "s,^$TRANSFORM,$TAR_NAME-$VERSION," tar --exclude '.git*' --exclude 'build' --exclude='.pc' --exclude='patches' --exclude="$SRC_DIR/$DISTRO" --exclude='pbr-*.egg' --transform "s,^$TRANSFORM,$TAR_NAME-$VERSION," -czf "$TAR_PATH" "$SRC_DIR"
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
if [ "x$STAGING" != "x" ]; then if [ "x$STAGING" != "x" ]; then
popd popd
fi fi
echo "ERROR: default_build_srpm (${LINENO}): failed to create tar file, cmd: tar czf $TAR_PATH $SRC_DIR --exclude '.git*' --exclude 'build' --exclude='.pc' --exclude='patches' --exclude="$SRC_DIR/$DISTRO" --exclude='pbr-*.egg' --transform \"s,^$TRANSFORM,$TAR_NAME-$VERSION,\"" echo "ERROR: default_build_srpm (${LINENO}): failed to create tar file, cmd: tar --exclude '.git*' --exclude 'build' --exclude='.pc' --exclude='patches' --exclude="$SRC_DIR/$DISTRO" --exclude='pbr-*.egg' --transform \"s,^$TRANSFORM,$TAR_NAME-$VERSION,\" -czf '$TAR_PATH' '$SRC_DIR'"
exit 1 exit 1
fi fi
echo "Created tar file: $TAR_PATH" echo "Created tar file: $TAR_PATH"

View File

@ -24,10 +24,16 @@ interpreter_path () {
get__version__ () { get__version__ () {
local path=${1} local path=${1}
local var=""
if [ ! -f ${path} ]; then if [ ! -f ${path} ]; then
return 1 return 1
fi fi
grep __VERSION__= ${path} | cut -d '=' -f 2 | sed 's/"//g' 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_LESS_THAN=0

1221
build-tools/mockchain-parallel-2.6 Executable file

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,11 @@
#!/bin/sh #!/bin/sh
#
# Copyright (c) 2018-2020 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
# This script modifies a mock configuration file (typically $MY_BUILD_CFG) # This script modifies a mock configuration file (typically $MY_BUILD_CFG)
# to add build time environment variables to the mock environment (things # to add build time environment variables to the mock environment (things
# like what branch we're building on, etc). # like what branch we're building on, etc).
@ -11,6 +17,11 @@
# usage: modify-build-cfg [file.cfg] [<layer>] # usage: modify-build-cfg [file.cfg] [<layer>]
# #
MODIFY_BUILD_CFG_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}" )" )"
# Set PKG_MANAGER for our build environment.
source "${MODIFY_BUILD_CFG_DIR}/pkg-manager-utils.sh"
LAYER=${2:-$LAYER} LAYER=${2:-$LAYER}
# For backward compatibility. Old repo location or new? # For backward compatibility. Old repo location or new?
@ -23,6 +34,13 @@ if [ ! -d ${CENTOS_REPO} ]; then
fi fi
fi fi
# Preferred python
if rpm -q --whatprovides --quiet python3; then
PYTHON_PKG=python3
else
PYTHON_PKG=python2
fi
# Try to find a layer specific mock.cfg.proto # Try to find a layer specific mock.cfg.proto
MOCK_CFG_PROTO="${CENTOS_REPO}/mock.cfg.${LAYER}.proto" MOCK_CFG_PROTO="${CENTOS_REPO}/mock.cfg.${LAYER}.proto"
echo "==== Try MOCK_CFG_PROTO=$MOCK_CFG_PROTO ====" echo "==== Try MOCK_CFG_PROTO=$MOCK_CFG_PROTO ===="
@ -98,7 +116,7 @@ grep -q "config_opts\['environment'\]\['WRS_GIT_BRANCH'\]" $FILE || \
grep -q "config_opts\['environment'\]\['CGCS_GIT_BRANCH'\]" $FILE || \ grep -q "config_opts\['environment'\]\['CGCS_GIT_BRANCH'\]" $FILE || \
echo "config_opts['environment']['CGCS_GIT_BRANCH']" >> $FILE echo "config_opts['environment']['CGCS_GIT_BRANCH']" >> $FILE
if [ -z $FORMAL_BUILD ]; then if [ -z $FORMAL_BUILD ]; then
grep -q "config_opts\['macros'\]\['%_no_cgcs_license_check'\] = '1'" $FILE || \ grep -q "config_opts\['macros'\]\['%_no_cgcs_license_check'\] = '1'" $FILE || \
echo "config_opts['macros']['%_no_cgcs_license_check'] = '1'" >> $FILE echo "config_opts['macros']['%_no_cgcs_license_check'] = '1'" >> $FILE
else else
@ -118,8 +136,21 @@ if [ "containers" == "$BUILD_TYPE" ]; then
NETWORK_PKGS="bind-utils" NETWORK_PKGS="bind-utils"
fi fi
grep -q "config_opts\['chroot_setup_cmd'\] = 'install @buildsys-build pigz lbzip2 yum $NETWORK_PKGS'" $FILE || \ BUILD_PKGS=''
echo "config_opts['chroot_setup_cmd'] = 'install @buildsys-build pigz lbzip2 yum $NETWORK_PKGS'" >> $FILE if [ "${PKG_MANAGER}" == "yum" ]; then
BUILD_PKGS='@buildsys-build'
elif [ "${PKG_MANAGER}" == "dnf" ]; then
# buildsys-build group was dropped when Centos-8 switched to dnf.
# We must list all the members plus a few new ones (fedpkg-minimal, epel-rpm-macros).
BUILD_PKGS='bash bzip2 coreutils cpio diffutils epel-release epel-rpm-macros fedpkg-minimal findutils gawk gcc gcc-c++ grep gzip info make patch redhat-rpm-config redhat-release rpm-build sed shadow-utils tar unzip util-linux which xz'
fi
STX_PKGS='pigz lbzip2 bash'
PKGS="${BUILD_PKGS} ${STX_PKGS} ${PKG_MANAGER} ${PYTHON_PKG} ${NETWORK_PKGS}"
grep -q "config_opts\['chroot_setup_cmd'\] = 'install ${PKGS}'" $FILE || \
echo "config_opts['chroot_setup_cmd'] = 'install ${PKGS}'" >> $FILE
# Special case for containers. # Special case for containers.
# rpmbuild_networking is required for invoking helm commands within mock # rpmbuild_networking is required for invoking helm commands within mock

View File

@ -0,0 +1,33 @@
#
# Copyright (c) 2020 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
#
# BASH utilities to select package manager
#
# Currently just sets some environment variables
#
# Yum vs DNF compatibility
YUM=$(which yum 2>> /dev/null)
DNF=$(which dnf 2>> /dev/null)
PKG_MANAGER=""
REPOQUERY=$(which repoquery 2>> /dev/null)
REPOQUERY_SUB_COMMAND=""
REPOQUERY_RESOLVE="--resolve"
REPOQUERY_WHATPROVIDES_DELIM=" "
if [ ! -z ${DNF} ]; then
PKG_MANAGER="dnf"
REPOQUERY=${DNF}
REPOQUERY_SUB_COMMAND="repoquery --disable-modular-filtering"
REPOQUERY_RESOLVE=""
REPOQUERY_WHATPROVIDES_DELIM=","
elif [ ! -z ${YUM} ]; then
PKG_MANAGER="yum"
else
>&2 echo "ERROR: Couldn't find a supported package manager"
exit 1
fi

View File

@ -1,58 +0,0 @@
config_opts['root'] = 'BUILD_ENV/mock'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
config_opts['chroot_setup_cmd'] = 'install @buildsys-build'
config_opts['dist'] = 'el7' # only useful for --resultdir variable subst
config_opts['releasever'] = '7'
config_opts['rpmbuild_networking'] = False
config_opts['yum.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
# repos
[local-std]
name=local-std
baseurl=LOCAL_BASE/MY_BUILD_DIR/std/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-rt]
name=local-rt
baseurl=LOCAL_BASE/MY_BUILD_DIR/rt/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-installer]
name=local-installer
baseurl=LOCAL_BASE/MY_BUILD_DIR/installer/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[StxCentos7Distro]
name=Stx-Centos-7-Distro
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/Binary
failovermethod=priority
exclude=kernel-devel libvirt-devel
[StxCentos7Distro-rt]
name=Stx-Centos-7-Distro-rt
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/rt/Binary
failovermethod=priority
"""

View File

@ -0,0 +1 @@
mock.cfg.centos7.all.proto

View File

@ -0,0 +1,58 @@
config_opts['root'] = 'BUILD_ENV/mock'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
config_opts['chroot_setup_cmd'] = 'install @buildsys-build'
config_opts['dist'] = 'el7' # only useful for --resultdir variable subst
config_opts['releasever'] = '7'
config_opts['rpmbuild_networking'] = False
config_opts['yum.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
# repos
[local-std]
name=local-std
baseurl=LOCAL_BASE/MY_BUILD_DIR/std/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-rt]
name=local-rt
baseurl=LOCAL_BASE/MY_BUILD_DIR/rt/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-installer]
name=local-installer
baseurl=LOCAL_BASE/MY_BUILD_DIR/installer/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[StxCentos7Distro]
name=Stx-Centos-7-Distro
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/Binary
failovermethod=priority
exclude=kernel-devel libvirt-devel
[StxCentos7Distro-rt]
name=Stx-Centos-7-Distro-rt
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/rt/Binary
failovermethod=priority
"""

View File

@ -0,0 +1,58 @@
config_opts['root'] = 'BUILD_ENV/mock'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
config_opts['chroot_setup_cmd'] = 'install @buildsys-build'
config_opts['dist'] = 'el7' # only useful for --resultdir variable subst
config_opts['releasever'] = '7'
config_opts['rpmbuild_networking'] = False
config_opts['yum.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
# repos
[local-std]
name=local-std
baseurl=LOCAL_BASE/MY_BUILD_DIR/std/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-rt]
name=local-rt
baseurl=LOCAL_BASE/MY_BUILD_DIR/rt/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-installer]
name=local-installer
baseurl=LOCAL_BASE/MY_BUILD_DIR/installer/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[StxCentos7Distro]
name=Stx-Centos-7-Distro
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/Binary
failovermethod=priority
exclude=kernel-devel libvirt-devel
[StxCentos7Distro-rt]
name=Stx-Centos-7-Distro-rt
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/rt/Binary
failovermethod=priority
"""

View File

@ -0,0 +1,57 @@
config_opts['root'] = 'BUILD_ENV/mock'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
config_opts['chroot_setup_cmd'] = 'install @buildsys-build'
config_opts['dist'] = 'el7' # only useful for --resultdir variable subst
config_opts['releasever'] = '7'
config_opts['rpmbuild_networking'] = False
config_opts['yum.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
# repos
[local-std]
name=local-std
baseurl=LOCAL_BASE/MY_BUILD_DIR/std/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-rt]
name=local-rt
baseurl=LOCAL_BASE/MY_BUILD_DIR/rt/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-installer]
name=local-installer
baseurl=LOCAL_BASE/MY_BUILD_DIR/installer/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[StxCentos7Distro]
name=Stx-Centos-7-Distro
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/Binary
failovermethod=priority
[StxCentos7Distro-rt]
name=Stx-Centos-7-Distro-rt
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/rt/Binary
failovermethod=priority
"""

View File

@ -0,0 +1,63 @@
config_opts['root'] = 'BUILD_ENV/mock'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils epel-release epel-rpm-macros fedpkg-minimal findutils gawk gcc gcc-c++ grep gzip info make patch redhat-rpm-config redhat-release rpm-build sed shadow-utils tar unzip util-linux which xz'
config_opts['dist'] = 'el8' # only useful for --resultdir variable subst
config_opts['releasever'] = '8'
config_opts['package_manager'] = 'dnf'
config_opts['use_bootstrap'] = False
config_opts['use_bootstrap_image'] = False
config_opts['rpmbuild_networking'] = False
config_opts['yum.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
# repos
[local-std]
name=local-std
baseurl=LOCAL_BASE/MY_BUILD_DIR/std/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-rt]
name=local-rt
baseurl=LOCAL_BASE/MY_BUILD_DIR/rt/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-installer]
name=local-installer
baseurl=LOCAL_BASE/MY_BUILD_DIR/installer/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[StxCentos8Distro]
name=Stx-Centos-8-Distro
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/Binary
failovermethod=priority
exclude=kernel-devel libvirt-devel
module_hotfixes=1
[StxCentos8Distro-rt]
name=Stx-Centos-8-Distro-rt
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/rt/Binary
failovermethod=priority
module_hotfixes=1
"""

View File

@ -0,0 +1,63 @@
config_opts['root'] = 'BUILD_ENV/mock'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils epel-release epel-rpm-macros fedpkg-minimal findutils gawk gcc gcc-c++ grep gzip info make patch redhat-rpm-config redhat-release rpm-build sed shadow-utils tar unzip util-linux which xz'
config_opts['dist'] = 'el8' # only useful for --resultdir variable subst
config_opts['releasever'] = '8'
config_opts['package_manager'] = 'dnf'
config_opts['use_bootstrap'] = False
config_opts['use_bootstrap_image'] = False
config_opts['rpmbuild_networking'] = False
config_opts['yum.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
# repos
[local-std]
name=local-std
baseurl=LOCAL_BASE/MY_BUILD_DIR/std/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-rt]
name=local-rt
baseurl=LOCAL_BASE/MY_BUILD_DIR/rt/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-installer]
name=local-installer
baseurl=LOCAL_BASE/MY_BUILD_DIR/installer/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[StxCentos8Distro]
name=Stx-Centos-8-Distro
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/Binary
failovermethod=priority
exclude=kernel-devel libvirt-devel
module_hotfixes=1
[StxCentos8Distro-rt]
name=Stx-Centos-8-Distro-rt
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/rt/Binary
failovermethod=priority
module_hotfixes=1
"""

View File

@ -0,0 +1,62 @@
config_opts['root'] = 'BUILD_ENV/mock'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils epel-release epel-rpm-macros fedpkg-minimal findutils gawk gcc gcc-c++ grep gzip info make patch redhat-rpm-config redhat-release rpm-build sed shadow-utils tar unzip util-linux which xz'
config_opts['dist'] = 'el8' # only useful for --resultdir variable subst
config_opts['releasever'] = '8'
config_opts['package_manager'] = 'dnf'
config_opts['use_bootstrap'] = False
config_opts['use_bootstrap_image'] = False
config_opts['rpmbuild_networking'] = False
config_opts['yum.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
# repos
[local-std]
name=local-std
baseurl=LOCAL_BASE/MY_BUILD_DIR/std/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-rt]
name=local-rt
baseurl=LOCAL_BASE/MY_BUILD_DIR/rt/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-installer]
name=local-installer
baseurl=LOCAL_BASE/MY_BUILD_DIR/installer/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[StxCentos8Distro]
name=Stx-Centos-8-Distro
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/Binary
failovermethod=priority
module_hotfixes=1
[StxCentos8Distro-rt]
name=Stx-Centos-8-Distro-rt
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/rt/Binary
failovermethod=priority
module_hotfixes=1
"""

View File

@ -1,58 +0,0 @@
config_opts['root'] = 'BUILD_ENV/mock'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
config_opts['chroot_setup_cmd'] = 'install @buildsys-build'
config_opts['dist'] = 'el7' # only useful for --resultdir variable subst
config_opts['releasever'] = '7'
config_opts['rpmbuild_networking'] = False
config_opts['yum.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
# repos
[local-std]
name=local-std
baseurl=LOCAL_BASE/MY_BUILD_DIR/std/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-rt]
name=local-rt
baseurl=LOCAL_BASE/MY_BUILD_DIR/rt/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-installer]
name=local-installer
baseurl=LOCAL_BASE/MY_BUILD_DIR/installer/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[StxCentos7Distro]
name=Stx-Centos-7-Distro
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/Binary
failovermethod=priority
exclude=kernel-devel libvirt-devel
[StxCentos7Distro-rt]
name=Stx-Centos-7-Distro-rt
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/rt/Binary
failovermethod=priority
"""

View File

@ -0,0 +1 @@
mock.cfg.centos7.distro.proto

View File

@ -1,57 +0,0 @@
config_opts['root'] = 'BUILD_ENV/mock'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
config_opts['chroot_setup_cmd'] = 'install @buildsys-build'
config_opts['dist'] = 'el7' # only useful for --resultdir variable subst
config_opts['releasever'] = '7'
config_opts['rpmbuild_networking'] = False
config_opts['yum.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
# repos
[local-std]
name=local-std
baseurl=LOCAL_BASE/MY_BUILD_DIR/std/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-rt]
name=local-rt
baseurl=LOCAL_BASE/MY_BUILD_DIR/rt/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[local-installer]
name=local-installer
baseurl=LOCAL_BASE/MY_BUILD_DIR/installer/rpmbuild/RPMS
enabled=1
skip_if_unavailable=1
metadata_expire=0
[StxCentos7Distro]
name=Stx-Centos-7-Distro
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/Binary
failovermethod=priority
[StxCentos7Distro-rt]
name=Stx-Centos-7-Distro-rt
enabled=1
baseurl=LOCAL_BASE/MY_REPO_DIR/centos-repo/rt/Binary
failovermethod=priority
"""

View File

@ -0,0 +1 @@
mock.cfg.centos7.proto