diff --git a/3378ab337698933ccb2e4068b26acd5c6afe27c5.tar.gz b/3378ab337698933ccb2e4068b26acd5c6afe27c5.tar.gz deleted file mode 100644 index 28d4f94..0000000 Binary files a/3378ab337698933ccb2e4068b26acd5c6afe27c5.tar.gz and /dev/null differ diff --git a/ci.sh b/ci.sh new file mode 100644 index 0000000..f992801 --- /dev/null +++ b/ci.sh @@ -0,0 +1,193 @@ +#!/bin/bash + +set -euxo pipefail + +# Define variables +HOST_CPU="$(uname -m)" +JOBS="$(nproc)" + +# Functions +function _time { + /bin/time -f '=> [%E]' ${@} +} + +function _setup { + if ! meson setup "${BUILD_DIR}"; then + cat "${BUILD_DIR}/meson-logs/meson-log.txt" + return 1 + fi +} + +function _build { + rm -f build.log + if ! _time ninja -C "${BUILD_DIR}" -v -j "${JOBS}" >& build.log; then + cat build.log + return 1 + fi + head -4 build.log + tail -3 build.log +} + +function _test { + if ! _time meson test -C "${BUILD_DIR}" \ + -q --no-rebuild --print-errorlogs; then + return 1 + fi +} + +function _run_test { + if ! _setup; then + return 1 + fi + + if ! _build; then + return 2 + fi + + if ! _test; then + return 3 + fi +} + +# Print system info. +cat /proc/cpuinfo +cat /proc/meminfo + +# Install additional packages. +pip3 install meson==0.55.0 + +# Run test. + +# Customized constants. +# +# If the value is true, the CI returns the exit status zero even if the tests +# fail as a compromised way. +IGNORE_EXIT_STATUS= +# Set true if you want to skip specific tests to save total running time in all +# the CPU cases. +SKIP_ALL_GCC_DEFAULT= +SKIP_ALL_GCC_O2= +SKIP_ALL_GCC_RPM=true +SKIP_ALL_CLANG_DEFAULT=true +SKIP_ALL_CLANG_O2=true +SKIP_ALL_CLANG_RPM=true +# Set true if you want to skip specific tests in the specific CPU cases. +# The host machine CPU name is used in the constant names. +# +# Skip the test as it fails, and the i686 case takes longer running time. +SKIP_i686_GCC_DEFAULT=true + +# Generate the current CPU specific skip flags. +SKIP_CPU_GCC_DEFAULT=$(eval echo "\${SKIP_${HOST_CPU}_GCC_DEFAULT:-}") +SKIP_CPU_GCC_O2=$(eval echo "\${SKIP_${HOST_CPU}_GCC_O2:-}") +SKIP_CPU_GCC_RPM=$(eval echo "\${SKIP_${HOST_CPU}_GCC_RPM:-}") +SKIP_CPU_CLANG_DEFAULT=$(eval echo "\${SKIP_${HOST_CPU}_CLANG_DEFAULT:-}") +SKIP_CPU_CLANG_O2=$(eval echo "\${SKIP_${HOST_CPU}_CLANG_O2:-}") +SKIP_CPU_CLANG_RPM=$(eval echo "\${SKIP_${HOST_CPU}_CLANG_RPM:-}") + +exit_status=0 +result_gcc="skipped" +result_gcc_O2="skipped" +result_gcc_rpm="skipped" +result_clang="skipped" +result_clang_O2="skipped" +result_clang_rpm="skipped" + +# Print compiler versions. +gcc --version +g++ --version +clang --version +clang++ --version + +echo "== Tests on gcc in a default status ==" +if [ "${SKIP_ALL_GCC_DEFAULT}" != true ] && \ + [ "${SKIP_CPU_GCC_DEFAULT}" != true ]; then + result_gcc="ok" + if ! BUILD_DIR="build/gcc" CC="gcc" CXX="g++" \ + _run_test; then + exit_status=1 + result_gcc="not ok" + fi +fi + +echo "== Tests on clang in a default status ==" +if [ "${SKIP_ALL_CLANG_DEFAULT}" != true ] && \ + [ "${SKIP_CPU_CLANG_DEFAULT}" != true ]; then + result_clang="ok" + if ! BUILD_DIR="build/clang" CC="clang" CXX="clang++" \ + _run_test; then + exit_status=1 + result_clang="not ok" + fi +fi + +echo "== Tests on gcc with O2 flag ==" +if [ "${SKIP_ALL_GCC_O2}" != true ] && \ + [ "${SKIP_CPU_GCC_O2}" != true ]; then + result_gcc_O2="ok" + if ! BUILD_DIR="build/gcc-O2" CC="gcc" CXX="g++" \ + CFLAGS="-O2" CXXFLAGS="-O2" \ + _run_test; then + exit_status=1 + result_gcc_O2="not ok" + fi +fi + +echo "== Tests on clang with O2 flag ==" +if [ "${SKIP_ALL_CLANG_O2}" != true ] && \ + [ "${SKIP_CPU_CLANG_O2}" != true ]; then + result_clang_O2="ok" + if ! BUILD_DIR="build/clang-O2" CC="clang" CXX="clang++" \ + CFLAGS="-O2" CXXFLAGS="-O2" \ + _run_test; then + exit_status=1 + result_clang_O2="not ok" + fi +fi + +# This is an advanced test. +echo "== Tests on gcc with flags used in RPM package build ==" +if [ "${SKIP_ALL_GCC_RPM}" != true ] && \ + [ "${SKIP_CPU_GCC_RPM}" != true ]; then + result_gcc_rpm="ok" + if ! BUILD_DIR="build/gcc-rpm" CC="gcc" CXX="g++" \ + CFLAGS="${CI_GCC_RPM_CFLAGS}" CXXFLAGS="${CI_GCC_RPM_CXXFLAGS}" \ + LDFLAGS="${CI_GCC_RPM_LDFLAGS}" \ + _run_test; then + exit_status=1 + result_gcc_rpm="not ok" + fi +fi + +# This is an advanced test. +echo "== Tests on clang with flags used in RPM package build ==" +if [ "${SKIP_ALL_CLANG_RPM}" != true ] && \ + [ "${SKIP_CPU_CLANG_RPM}" != true ]; then + result_clang_rpm="ok" + if ! BUILD_DIR="build/clang-rpm" CC="clang" CXX="clang++" \ + CFLAGS="${CI_CLANG_RPM_CFLAGS}" CXXFLAGS="${CI_CLANG_RPM_CXXFLAGS}" \ + LDFLAGS="${CI_CLANG_RPM_LDFLAGS}" \ + _run_test; then + exit_status=1 + result_clang_rpm="not ok" + fi +fi + +# Print results. +cat <. +# Copy to use the modified script. +cp -p "%{SOURCE1}" ci.sh +sed -i -e '/^cat \/proc\/cpuinfo/ s/^/#/' ci.sh +sed -i -e '/^cat \/proc\/meminfo/ s/^/#/' ci.sh +sed -i -e '/^pip3 install meson/ s/^/#/' ci.sh +sed -i -e '/^IGNORE_EXIT_STATUS=/,/^SKIP_i686_GCC_DEFAULT=/ s/^/#/' ci.sh +diff -u "%{SOURCE1}" ci.sh || : -echo "== 1. tests on gcc ==" -gcc --version -g++ --version +cp -p ci.sh ci_gcc.sh +IGNORE_EXIT_STATUS= +# Prepare the configuration. +cat > config.txt < config.txt < [%E]' ./ci_gcc.sh +/bin/time -f '=> [%E]' ./ci_clang.sh %files devel %license COPYING @@ -124,6 +128,9 @@ popd %{_includedir}/%{name} %changelog +* Sat Jul 15 2023 yaoxin - 0.7.6-1 +- Update to 0.7.6 for fix build error caused by clang-15 + * Tue Mar 8 2022 yaoxin - 0.7.3-1 - Upgrade simde to 0.7.3 to resolve compilation failures.