Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libdeflate for openSUSE:Factory checked in at 2023-05-02 16:19:29 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libdeflate (Old) and /work/SRC/openSUSE:Factory/.libdeflate.new.1533 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libdeflate" Tue May 2 16:19:29 2023 rev:10 rq:1083979 version:1.18 Changes: -------- --- /work/SRC/openSUSE:Factory/libdeflate/libdeflate.changes 2023-01-25 17:49:36.510123125 +0100 +++ /work/SRC/openSUSE:Factory/.libdeflate.new.1533/libdeflate.changes 2023-05-02 16:24:13.747661537 +0200 @@ -1,0 +2,15 @@ +Thu Apr 27 22:43:07 UTC 2023 - Dirk Müller <dmuel...@suse.com> + +- update to 1.18: + * Fixed a bug where the build type didn't default to "Release" + when using CMake 3.10 or earlier. + * Fixed a bug where some optimized code wasn't used when + building with Clang 15 or later (x86), or with Clang 16 + or later (aarch64). + * Fixed build errors with some architecture and compiler + combos: + * aarch64 with Clang 16 + * armv6kz or armv7e-m with gcc + * armhf with gcc (on Debian only) + +------------------------------------------------------------------- Old: ---- libdeflate-1.17.tar.gz New: ---- libdeflate-1.18.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libdeflate.spec ++++++ --- /var/tmp/diff_new_pack.GuVHTI/_old 2023-05-02 16:24:14.159663981 +0200 +++ /var/tmp/diff_new_pack.GuVHTI/_new 2023-05-02 16:24:14.167664028 +0200 @@ -19,7 +19,7 @@ %define major 0 %define libname %{name}%{major} Name: libdeflate -Version: 1.17 +Version: 1.18 Release: 0 Summary: Library for DEFLATE/zlib/gzip compression and decompression License: BSD-2-Clause ++++++ libdeflate-1.17.tar.gz -> libdeflate-1.18.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdeflate-1.17/.github/workflows/ci.yml new/libdeflate-1.18/.github/workflows/ci.yml --- old/libdeflate-1.17/.github/workflows/ci.yml 2023-01-15 09:16:49.000000000 +0100 +++ new/libdeflate-1.18/.github/workflows/ci.yml 2023-03-24 03:41:29.000000000 +0100 @@ -12,7 +12,7 @@ env: CC: ${{ matrix.compiler }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Install dependencies run: | sudo apt-get update @@ -29,8 +29,8 @@ compiler: [gcc, clang] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: uraimo/run-on-arch-action@v2.2.0 + - uses: actions/checkout@v3 + - uses: uraimo/run-on-arch-action@v2.5.0 with: arch: ${{ matrix.arch }} distro: bullseye @@ -51,7 +51,7 @@ env: CFLAGS: -Werror -DLIBDEFLATE_ENABLE_ASSERTIONS steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - run: cmake -B build -DLIBDEFLATE_BUILD_TESTS=1 - run: cmake --build build --verbose - run: DESTDIR=build/install cmake --install build --verbose @@ -73,7 +73,7 @@ env: CFLAGS: -Werror -DLIBDEFLATE_ENABLE_ASSERTIONS steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: msys2/setup-msys2@v2 with: msystem: ${{matrix.sys}} @@ -101,7 +101,7 @@ toolset: [v143, ClangCL] runs-on: windows-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: microsoft/setup-msbuild@v1.1 - run: vcpkg install zlib:${{matrix.platform.vcpkg}} - run: > @@ -129,7 +129,7 @@ toolset: ClangCL runs-on: windows-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: microsoft/setup-msbuild@v1.1 # Note: as per the CMake documentation, DESTDIR is unsupported on Windows. - run: > @@ -143,7 +143,7 @@ name: Run clang static analyzer runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Install dependencies run: | sudo apt-get update @@ -155,7 +155,7 @@ name: Run shellcheck runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Install dependencies run: | sudo apt-get update @@ -169,7 +169,7 @@ env: CFLAGS: -Werror -DLIBDEFLATE_ENABLE_ASSERTIONS steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Install dependencies run: | sudo apt-get update @@ -199,7 +199,7 @@ env: CFLAGS: -Werror -DLIBDEFLATE_ENABLE_ASSERTIONS steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - run: | scripts/cmake-helper.sh \ -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK_LATEST_HOME"/build/cmake/android.toolchain.cmake \ @@ -209,6 +209,34 @@ cmake --build build --verbose DESTDIR=build/install cmake --install build --verbose + cpu-features-regression-tests: + name: Test building adler32.c and crc32.c with various flags + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu + - name: Compile tests + run: | + cflags="-O0 -Wall -Werror" + for file in lib/adler32.c lib/crc32.c; do + echo "arm32, default options, file=$file" + arm-linux-gnueabihf-gcc -c $cflags $file + for arch in armv4 armv4t armv5t armv5te armv5tej armv6 armv6j armv6k \ + armv6z armv6kz armv6zk armv6t2; do + echo "arm32, -march=$arch, file=$file" + arm-linux-gnueabihf-gcc -c -march=$arch -mfpu=vfp -marm $cflags $file + done + for arch in armv7 armv7-a armv7ve armv7-r armv7-m armv7e-m; do + echo "arm32, -march=$arch, file=$file" + arm-linux-gnueabihf-gcc -c -march=$arch -mfpu=vfp $cflags $file + done + echo "arm64, -mcpu=emag" + aarch64-linux-gnu-gcc -c -mcpu=emag $cflags $file + done + fuzz-with-libFuzzer: name: Fuzz with libFuzzer (${{matrix.target}} ${{matrix.sanitizer}}) strategy: @@ -236,7 +264,7 @@ sanitizer: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Install dependencies run: | sudo apt-get update diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdeflate-1.17/CMakeLists.txt new/libdeflate-1.18/CMakeLists.txt --- old/libdeflate-1.17/CMakeLists.txt 2023-01-15 09:16:49.000000000 +0100 +++ new/libdeflate-1.18/CMakeLists.txt 2023-03-24 03:41:29.000000000 +0100 @@ -1,9 +1,9 @@ cmake_minimum_required(VERSION 3.7) # Default to a release build. -if(NOT CMAKE_BUILD_TYPE) +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) message(STATUS "No build type selected; defaulting to Release") - set(CMAKE_BUILD_TYPE Release) + set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build" FORCE) endif() # With MSVC, don't automatically append /W3 to the compiler flags. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdeflate-1.17/NEWS.md new/libdeflate-1.18/NEWS.md --- old/libdeflate-1.17/NEWS.md 2023-01-15 09:16:49.000000000 +0100 +++ new/libdeflate-1.18/NEWS.md 2023-03-24 03:41:29.000000000 +0100 @@ -1,5 +1,18 @@ # libdeflate release notes +## Version 1.18 + +* Fixed a bug where the build type didn't default to "Release" when using + CMake 3.10 or earlier. + +* Fixed a bug where some optimized code wasn't used when building with + Clang 15 or later (x86), or with Clang 16 or later (aarch64). + +* Fixed build errors with some architecture and compiler combos: + * aarch64 with Clang 16 + * armv6kz or armv7e-m with gcc + * armhf with gcc (on Debian only) + ## Version 1.17 (Apologies for another release so soon after v1.16, but the bug fix listed below diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdeflate-1.17/lib/arm/cpu_features.h new/libdeflate-1.18/lib/arm/cpu_features.h --- old/libdeflate-1.17/lib/arm/cpu_features.h 2023-01-15 09:16:49.000000000 +0100 +++ new/libdeflate-1.18/lib/arm/cpu_features.h 2023-03-24 03:41:29.000000000 +0100 @@ -98,7 +98,7 @@ #if HAVE_PMULL_NATIVE || \ (HAVE_DYNAMIC_ARM_CPU_FEATURES && \ HAVE_NEON_INTRIN /* needed to exclude soft float arm32 case */ && \ - (GCC_PREREQ(6, 1) || __has_builtin(__builtin_neon_vmull_p64) || \ + (GCC_PREREQ(6, 1) || CLANG_PREREQ(3, 5, 6010000) || \ defined(_MSC_VER)) && \ /* * On arm32 with clang, the crypto intrinsics (which include pmull) @@ -147,27 +147,45 @@ #else # define HAVE_CRC32_NATIVE 0 #endif -/* - * Support for ARM CRC32 intrinsics when CRC32 instructions are not enabled in - * the main target has been affected by two gcc bugs, which we must avoid by - * only allowing gcc versions that have the corresponding fixes. First, gcc - * commit 943766d37ae4 ("[arm] Fix use of CRC32 intrinsics with Armv8-a and - * hard-float"), i.e. gcc 8.4+, 9.3+, 10.1+, or 11+, is needed. Second, gcc - * commit c1cdabe3aab8 ("arm: reorder assembler architecture directives - * [PR101723]"), i.e. gcc 9.5+, 10.4+, 11.3+, or 12+, is needed when binutils is - * 2.34 or later, due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104439. - * We use the second set of prerequisites, as they are stricter and we have no - * way to detect the binutils version directly from a C source file. - */ -#if HAVE_CRC32_NATIVE || \ - (HAVE_DYNAMIC_ARM_CPU_FEATURES && \ - ((__has_builtin(__builtin_arm_crc32b) && !GCC_PREREQ(1, 0)) || \ - GCC_PREREQ(11, 3) || \ - (GCC_PREREQ(10, 4) && !GCC_PREREQ(11, 0)) || \ - (GCC_PREREQ(9, 5) && !GCC_PREREQ(10, 0)) || \ - defined(_MSC_VER))) +#undef HAVE_CRC32_INTRIN +#if HAVE_CRC32_NATIVE # define HAVE_CRC32_INTRIN 1 -#else +#elif HAVE_DYNAMIC_ARM_CPU_FEATURES +# if GCC_PREREQ(1, 0) + /* + * Support for ARM CRC32 intrinsics when CRC32 instructions are not enabled + * in the main target has been affected by two gcc bugs, which we must avoid + * by only allowing gcc versions that have the corresponding fixes. First, + * gcc commit 943766d37ae4 ("[arm] Fix use of CRC32 intrinsics with Armv8-a + * and hard-float"), i.e. gcc 8.4+, 9.3+, 10.1+, or 11+, is needed. Second, + * gcc commit c1cdabe3aab8 ("arm: reorder assembler architecture directives + * [PR101723]"), i.e. gcc 9.5+, 10.4+, 11.3+, or 12+, is needed when + * binutils is 2.34 or later, due to + * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104439. We use the second + * set of prerequisites, as they are stricter and we have no way to detect + * the binutils version directly from a C source file. + * + * Also exclude the cases where the main target arch is armv6kz or armv7e-m. + * In those cases, gcc doesn't let functions that use the main arch be + * inlined into functions that are targeted to armv8-a+crc. (armv8-a is + * necessary for crc to be accepted at all.) That causes build errors. + * This issue happens for these specific sub-archs because they are not a + * subset of armv8-a. Note: clang does not have this limitation. + */ +# if (GCC_PREREQ(11, 3) || \ + (GCC_PREREQ(10, 4) && !GCC_PREREQ(11, 0)) || \ + (GCC_PREREQ(9, 5) && !GCC_PREREQ(10, 0))) && \ + !defined(__ARM_ARCH_6KZ__) && \ + !defined(__ARM_ARCH_7EM__) +# define HAVE_CRC32_INTRIN 1 +# endif +# elif CLANG_PREREQ(3, 4, 6000000) +# define HAVE_CRC32_INTRIN 1 +# elif defined(_MSC_VER) +# define HAVE_CRC32_INTRIN 1 +# endif +#endif +#ifndef HAVE_CRC32_INTRIN # define HAVE_CRC32_INTRIN 0 #endif @@ -184,7 +202,7 @@ # define HAVE_SHA3_INTRIN (HAVE_NEON_INTRIN && \ (HAVE_SHA3_NATIVE || HAVE_SHA3_TARGET) && \ (GCC_PREREQ(9, 1) /* r268049 */ || \ - __has_builtin(__builtin_neon_veor3q_v))) + CLANG_PREREQ(13, 0, 13160000))) #else # define HAVE_SHA3_NATIVE 0 # define HAVE_SHA3_TARGET 0 @@ -200,7 +218,7 @@ # endif # if HAVE_DOTPROD_NATIVE || \ (HAVE_DYNAMIC_ARM_CPU_FEATURES && \ - (GCC_PREREQ(8, 1) || __has_builtin(__builtin_neon_vdotq_v) || \ + (GCC_PREREQ(8, 1) || CLANG_PREREQ(7, 0, 10010000) || \ defined(_MSC_VER))) # define HAVE_DOTPROD_INTRIN 1 # else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdeflate-1.17/lib/arm/crc32_impl.h new/libdeflate-1.18/lib/arm/crc32_impl.h --- old/libdeflate-1.17/lib/arm/crc32_impl.h 2023-01-15 09:16:49.000000000 +0100 +++ new/libdeflate-1.18/lib/arm/crc32_impl.h 2023-03-24 03:41:29.000000000 +0100 @@ -51,6 +51,13 @@ # ifdef ARCH_ARM32 # ifdef __clang__ # define ATTRIBUTES _target_attribute("armv8-a,crc") +# elif defined(__ARM_PCS_VFP) + /* + * +simd is needed to avoid a "selected architecture lacks an FPU" + * error with Debian arm-linux-gnueabihf-gcc when -mfpu is not + * explicitly specified on the command line. + */ +# define ATTRIBUTES _target_attribute("arch=armv8-a+crc+simd") # else # define ATTRIBUTES _target_attribute("arch=armv8-a+crc") # endif @@ -243,7 +250,7 @@ # define ATTRIBUTES _target_attribute("arch=armv8-a+crc,fpu=crypto-neon-fp-armv8") # else # ifdef __clang__ -# define ATTRIBUTES _target_attribute("crc,crypto") +# define ATTRIBUTES _target_attribute("crc,aes") # else # define ATTRIBUTES _target_attribute("+crc,+crypto") # endif @@ -445,8 +452,17 @@ # define ATTRIBUTES _target_attribute("fpu=crypto-neon-fp-armv8") # else # ifdef __clang__ -# define ATTRIBUTES _target_attribute("crypto") + /* + * This used to use "crypto", but that stopped working with clang 16. + * Now only "aes" works. "aes" works with older versions too, so use + * that. No "+" prefix; clang 15 and earlier doesn't accept that. + */ +# define ATTRIBUTES _target_attribute("aes") # else + /* + * With gcc, only "+crypto" works. Both the "+" prefix and the + * "crypto" (not "aes") are essential... + */ # define ATTRIBUTES _target_attribute("+crypto") # endif # endif @@ -562,7 +578,7 @@ # define ATTRIBUTES # else # ifdef __clang__ -# define ATTRIBUTES _target_attribute("crypto,crc") +# define ATTRIBUTES _target_attribute("aes,crc") # else # define ATTRIBUTES _target_attribute("+crypto,+crc") # endif @@ -589,7 +605,7 @@ # define ATTRIBUTES # else # ifdef __clang__ -# define ATTRIBUTES _target_attribute("crypto,crc,sha3") +# define ATTRIBUTES _target_attribute("aes,crc,sha3") /* * With gcc, arch=armv8.2-a is needed for the sha3 intrinsics, unless the * default target is armv8.3-a or later in which case it must be omitted. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdeflate-1.17/lib/x86/cpu_features.h new/libdeflate-1.18/lib/x86/cpu_features.h --- old/libdeflate-1.17/lib/x86/cpu_features.h 2023-01-15 09:16:49.000000000 +0100 +++ new/libdeflate-1.18/lib/x86/cpu_features.h 2023-03-24 03:41:29.000000000 +0100 @@ -97,8 +97,7 @@ # define HAVE_PCLMUL_NATIVE 0 #endif #if HAVE_PCLMUL_NATIVE || (HAVE_TARGET_INTRINSICS && \ - (GCC_PREREQ(4, 4) || \ - __has_builtin(__builtin_ia32_pclmulqdq128) || \ + (GCC_PREREQ(4, 4) || CLANG_PREREQ(3, 2, 0) || \ defined(_MSC_VER))) # define HAVE_PCLMUL_INTRIN 1 #else @@ -112,8 +111,7 @@ # define HAVE_AVX_NATIVE 0 #endif #if HAVE_AVX_NATIVE || (HAVE_TARGET_INTRINSICS && \ - (GCC_PREREQ(4, 6) || \ - __has_builtin(__builtin_ia32_maxps256) || \ + (GCC_PREREQ(4, 6) || CLANG_PREREQ(3, 0, 0) || \ defined(_MSC_VER))) # define HAVE_AVX_INTRIN 1 #else @@ -127,8 +125,7 @@ # define HAVE_AVX2_NATIVE 0 #endif #if HAVE_AVX2_NATIVE || (HAVE_TARGET_INTRINSICS && \ - (GCC_PREREQ(4, 7) || \ - __has_builtin(__builtin_ia32_psadbw256) || \ + (GCC_PREREQ(4, 7) || CLANG_PREREQ(3, 1, 0) || \ defined(_MSC_VER))) # define HAVE_AVX2_INTRIN 1 #else @@ -142,8 +139,7 @@ # define HAVE_BMI2_NATIVE 0 #endif #if HAVE_BMI2_NATIVE || (HAVE_TARGET_INTRINSICS && \ - (GCC_PREREQ(4, 7) || \ - __has_builtin(__builtin_ia32_pdep_di) || \ + (GCC_PREREQ(4, 7) || CLANG_PREREQ(3, 1, 0) || \ defined(_MSC_VER))) # define HAVE_BMI2_INTRIN 1 #else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdeflate-1.17/libdeflate.h new/libdeflate-1.18/libdeflate.h --- old/libdeflate-1.17/libdeflate.h 2023-01-15 09:16:49.000000000 +0100 +++ new/libdeflate-1.18/libdeflate.h 2023-03-24 03:41:29.000000000 +0100 @@ -13,8 +13,8 @@ #endif #define LIBDEFLATE_VERSION_MAJOR 1 -#define LIBDEFLATE_VERSION_MINOR 17 -#define LIBDEFLATE_VERSION_STRING "1.17" +#define LIBDEFLATE_VERSION_MINOR 18 +#define LIBDEFLATE_VERSION_STRING "1.18" /* * Users of libdeflate.dll on Windows can define LIBDEFLATE_DLL to cause diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdeflate-1.17/scripts/cmake-helper.sh new/libdeflate-1.18/scripts/cmake-helper.sh --- old/libdeflate-1.17/scripts/cmake-helper.sh 2023-01-15 09:16:49.000000000 +0100 +++ new/libdeflate-1.18/scripts/cmake-helper.sh 2023-03-24 03:41:29.000000000 +0100 @@ -3,11 +3,13 @@ # This script ensures that the 'build' directory has been created and configured # with the given CMake options and environment. +set -e + TOPDIR="$(dirname "$0")"/.. BUILDDIR="$TOPDIR"/build flags=$(env; echo "@CMAKEOPTS@=$*") -if [ "$flags" != "$(cat "$BUILDDIR"/.flags 2>/dev/null)" ]; then +if [ "$flags" != "$(cat "$BUILDDIR"/.flags 2>/dev/null || true)" ]; then rm -rf "$BUILDDIR"/CMakeCache.txt "$BUILDDIR"/CMakeFiles mkdir -p "$BUILDDIR" cmake -S "$TOPDIR" -B "$BUILDDIR" "$@" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdeflate-1.17/scripts/msc_test.bat new/libdeflate-1.18/scripts/msc_test.bat --- old/libdeflate-1.17/scripts/msc_test.bat 2023-01-15 09:16:49.000000000 +0100 +++ new/libdeflate-1.18/scripts/msc_test.bat 1970-01-01 01:00:00.000000000 +0100 @@ -1,3 +0,0 @@ -nmake /f Makefile.msc clean -nmake /f Makefile.msc -copy /y *.exe j:\exe\