rpm-build/entrypoint.sh

67 lines
1.8 KiB
Bash
Raw Normal View History

#!/bin/bash
# SPECS should be a JSON array of all the to-process spec files
# Forgejo runner doesn't support dynamic matrix jobs so, this has to be made this way
# Convert the JSON array to a bash array and iterate over it
echo "::debug::input_specs: ${INPUT_SPECS}"
readarray -t SPECS < <(echo ${INPUT_SPECS} | jq -c .[] | tr -d '"')
echo "::debug::specs: ${SPECS}"
SYSTEM=${INPUT_SYSTEM}
ARCH=${INPUT_ARCH}
2024-12-04 13:15:16 +00:00
NOCHECK=${INPUT_NOCHECK}
rm -rf /var/lib/mock/*
mount -t tmpfs tmpfs /var/lib/mock
2024-12-07 18:30:16 +00:00
RESULT="rpms=["
for SPEC in ${SPECS[@]}; do
SPEC_NAME=$(basename ${SPEC})
CONFIGURATION="${SYSTEM}-${ARCH}"
echo "::debug::spec file: ${SPEC}"
echo "::debug::target: ${SYSTEM}-${ARCH}"
echo "::debug::nocheck: ${NOCHECK}"
echo "Building ${SPEC_NAME} for ${CONFIGURATION}"
echo "::group::Building SRPM"
cd $(dirname ${SPEC})
spectool -g ${SPEC_NAME}
if [ $? -ne 0 ]; then
echo "::error::Failed to download sources"
exit 1
fi
mock -r "${SYSTEM}-${ARCH}" --buildsrpm --spec ${SPEC_NAME} --sources . --resultdir result
if [ $? -ne 0 ]; then
echo "::error::Failed to build SRPM"
exit 1
fi
echo "::endgroup::"
2024-12-07 18:30:16 +00:00
SRPM=$(grep Wrote result/build.log | cut -d ":" -f 2 | tr -d " " | xargs basename)
echo "::group::Building RPM"
OPTS=""
2024-12-07 18:30:16 +00:00
if [ ${NOCHECK,,} == "true" ]; then
OPTS="${OPTS} --nocheck"
fi
2024-12-07 18:30:16 +00:00
mock -r "${SYSTEM}-${ARCH}" --resultdir result ${OPTS} result/${SRPM}
if [ $? -ne 0 ]; then
echo "::error::Failed to build RPM"
exit 1
fi
echo "::endgroup::"
2024-12-07 18:30:16 +00:00
RPMS=$(grep Wrote result/build.log | grep "/RPMS/" | cut -d" " -f 2 | xargs basename)
echo "::debug::built rpm: ${RPMS}"
RESULT="${RESULT},\"${RPMS}\""
2024-12-07 22:30:06 +00:00
cd - &> /dev/null
done
2024-12-07 18:30:16 +00:00
RESULT="${RESULT/[,/[}]"
echo "::debug::final built rpms: ${RESULT}"
echo ${RESULT} >> ${GITHUB_OUTPUT}