#!/usr/bin/env bash# MOCK_COPRS exists as a comma-separated list of repos that will be enabled on mockBUILDER_NO_INCLUDE_SRPM=${BUILDER_NO_INCLUDE_SRPM:-0}SPEC_FILE=$1shiftset -euo pipefailif [ "$SPEC_FILE" == "" ] ; thenecho "No spec file selected"exit 1figroup_start() {WHAT=$1shiftprintf "::group:: ===%s===\n" "$WHAT"set -x}group_end() {set +xprintf "::endgroup::\n"}group_start "Generate spec file with rpkg"OUTDIR="$(mktemp -d)"SPEC_PATH="$(realpath "$(dirname "$SPEC_FILE")")"rpkg --path "${SPEC_PATH}" spec --outdir "$OUTDIR"RPMSPEC_FOR_CHECK="$(mktemp)"rpmspec -P "${OUTDIR}"/*.spec | tee "${RPMSPEC_FOR_CHECK}"if grep "ExclusiveArch:" "${RPMSPEC_FOR_CHECK}" ; thenif ! grep "$(arch)" "${RPMSPEC_FOR_CHECK}" ; thenecho "Arch Skipped" | tee /tmp/sources/arch_skippedexit 0fifigroup_endgroup_start "Lint spec file (non-blocking)"set +euo pipefailrpmlint "${OUTDIR}/*.spec"set -euo pipefailgroup_endgroup_start "Fetch sources and generate srpm"spectool -ag "${OUTDIR}"/*.spec -C "${OUTDIR}"rpkg --path "${SPEC_PATH}" srpm --outdir "${OUTDIR}"ls -lah "${OUTDIR}"group_endset +euo pipefailgroup_start "Build RPM with mock"MOCK_EXIT=0COPRS_RAW=()IFS=',' read -r -a COPRS_RAW <<< "${MOCK_COPRS}"COPRS=()for COPR in "${COPRS_RAW[@]}" ; doCOPRS+=("-a")COPRS+=("${COPR}")doneif [ "$BUILDER_NO_INCLUDE_SRPM" != "1" ] ; thenmock \--isolation=simple \"$OUTDIR"/*.src.rpm \"${COPRS[@]}" \"$@"MOCK_EXIT=$?elsemock \--isolation=simple \"${COPRS}" \"$@"MOCK_EXIT=$?figroup_endset -euo pipefailwhile IFS= read -r -d $'\0' log_file; dogroup_start "Build logs: ${log_file}"cat $log_filegroup_enddone < <(find /var/lib/mock/*/result -type f -iname '*.log' -print0)exit $MOCK_EXIT