Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ccache for openSUSE:Factory checked in at 2023-06-14 16:29:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ccache (Old) and /work/SRC/openSUSE:Factory/.ccache.new.15902 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ccache" Wed Jun 14 16:29:01 2023 rev:73 rq:1092775 version:4.8.2 Changes: -------- --- /work/SRC/openSUSE:Factory/ccache/ccache.changes 2023-05-22 13:14:01.970719730 +0200 +++ /work/SRC/openSUSE:Factory/.ccache.new.15902/ccache.changes 2023-06-14 16:29:36.990570419 +0200 @@ -1,0 +2,11 @@ +Mon Jun 12 21:10:27 UTC 2023 - Dirk Müller <[email protected]> + +- update to 4.8.2: + * Ccache no longer passes `-v` to the preprocessor. This + improves preprocessor mode hit rate when `-v` is on the + compiler command line. + * Made `--trim-max-size` accept 0 for no limit. + + * Clarified `--evict-older-than` semantics. + * Fixed typo in "`Directory is not hashed if using -gz`" test. + +------------------------------------------------------------------- Old: ---- ccache-4.8.1.tar.xz ccache-4.8.1.tar.xz.asc New: ---- ccache-4.8.2.tar.xz ccache-4.8.2.tar.xz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ccache.spec ++++++ --- /var/tmp/diff_new_pack.4HqqQW/_old 2023-06-14 16:29:39.746587358 +0200 +++ /var/tmp/diff_new_pack.4HqqQW/_new 2023-06-14 16:29:39.750587384 +0200 @@ -17,7 +17,7 @@ Name: ccache -Version: 4.8.1 +Version: 4.8.2 Release: 0 Summary: A Fast C/C++ Compiler Cache License: GPL-3.0-or-later ++++++ ccache-4.8.1.tar.xz -> ccache-4.8.2.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/.github/workflows/build.yaml new/ccache-4.8.2/.github/workflows/build.yaml --- old/ccache-4.8.1/.github/workflows/build.yaml 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/.github/workflows/build.yaml 2023-06-12 21:17:31.000000000 +0200 @@ -325,17 +325,16 @@ CMAKE_PARAMS: -DCMAKE_BUILD_TYPE=CI -DZSTD_FROM_INTERNET=ON -DHIREDIS_FROM_INTERNET=ON TEST_CC: clang -target x86_64-pc-windows-msvc - # Issue: #1278 - # - name: Windows VS2019 64-bit MSBuild - # os: windows-2019 - # msvc_arch: x64 - # allow_test_failures: true # For now, don't fail the build on failure - # CC: cl - # CXX: cl - # ENABLE_CACHE_CLEANUP_TESTS: 1 - # CMAKE_GENERATOR: Visual Studio 16 2019 - # CMAKE_PARAMS: -DCMAKE_BUILD_TYPE=CI -DZSTD_FROM_INTERNET=ON -DHIREDIS_FROM_INTERNET=ON -A x64 - # TEST_CC: clang -target x86_64-pc-windows-msvc + - name: Windows VS2019 64-bit MSBuild + os: windows-2019 + msvc_arch: x64 + allow_test_failures: true # For now, don't fail the build on failure + CC: cl + CXX: cl + ENABLE_CACHE_CLEANUP_TESTS: 1 + CMAKE_GENERATOR: Visual Studio 16 2019 + CMAKE_PARAMS: -DCMAKE_BUILD_TYPE=CI -DZSTD_FROM_INTERNET=ON -DHIREDIS_FROM_INTERNET=ON -A x64 + TEST_CC: clang -target x86_64-pc-windows-msvc - name: Windows VS2022 32-bit Ninja os: windows-2022 @@ -370,17 +369,16 @@ CMAKE_PARAMS: -DCMAKE_BUILD_TYPE=CI -DZSTD_FROM_INTERNET=ON -DHIREDIS_FROM_INTERNET=ON TEST_CC: clang -target x86_64-pc-windows-msvc - # Issue: #1278 - # - name: Windows VS2022 64-bit MSBuild - # os: windows-2022 - # msvc_arch: x64 - # allow_test_failures: true # For now, don't fail the build on failure - # CC: cl - # CXX: cl - # ENABLE_CACHE_CLEANUP_TESTS: 1 - # CMAKE_GENERATOR: Visual Studio 17 2022 - # CMAKE_PARAMS: -DCMAKE_BUILD_TYPE=CI -DZSTD_FROM_INTERNET=ON -DHIREDIS_FROM_INTERNET=ON -A x64 - # TEST_CC: clang -target x86_64-pc-windows-msvc + - name: Windows VS2022 64-bit MSBuild + os: windows-2022 + msvc_arch: x64 + allow_test_failures: true # For now, don't fail the build on failure + CC: cl + CXX: cl + ENABLE_CACHE_CLEANUP_TESTS: 1 + CMAKE_GENERATOR: Visual Studio 17 2022 + CMAKE_PARAMS: -DCMAKE_BUILD_TYPE=CI -DZSTD_FROM_INTERNET=ON -DHIREDIS_FROM_INTERNET=ON -A x64 + TEST_CC: clang -target x86_64-pc-windows-msvc - name: Clang address & UB sanitizer os: ubuntu-20.04 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/.mailmap new/ccache-4.8.2/.mailmap --- old/ccache-4.8.1/.mailmap 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/.mailmap 2023-06-12 21:17:31.000000000 +0200 @@ -12,6 +12,7 @@ Erik Flodin <[email protected]> Florin Trofin <[email protected]> Hongli Lai <[email protected]> +Huang Qin Jing <[email protected]> Jacob Young <[email protected]> Jonny Yu <[email protected]> Ka Ho Ng <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/CMakeLists.txt new/ccache-4.8.2/CMakeLists.txt --- old/ccache-4.8.1/CMakeLists.txt 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/CMakeLists.txt 2023-06-12 21:17:31.000000000 +0200 @@ -66,11 +66,11 @@ set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) endif() +include(CIBuildType) +include(DefaultBuildType) include(UseFastestLinker) include(StandardSettings) include(StandardWarnings) -include(CIBuildType) -include(DefaultBuildType) # # Configuration diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/CMakeSettings.json new/ccache-4.8.2/CMakeSettings.json --- old/ccache-4.8.1/CMakeSettings.json 1970-01-01 01:00:00.000000000 +0100 +++ new/ccache-4.8.2/CMakeSettings.json 2023-06-12 21:17:31.000000000 +0200 @@ -0,0 +1,86 @@ +{ + "configurations": [ + { + "name": "x64-Debug", + "generator": "Ninja", + "configurationType": "Debug", + "inheritEnvironments": [ + "msvc_x64" + ], + "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", + "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}" + }, { + "name": "x64-Release", + "generator": "Ninja", + "configurationType": "Release", + "inheritEnvironments": [ + "msvc_x64" + ], + "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", + "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}" + }, { + "name": "x64-RelWithDebInfo", + "generator": "Ninja", + "configurationType": "RelWithDebInfo", + "inheritEnvironments": [ + "msvc_x64" + ], + "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", + "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}" + }, { + "name": "x86-Debug", + "generator": "Ninja", + "configurationType": "Debug", + "inheritEnvironments": [ + "msvc_x86" + ], + "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", + "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}" + }, { + "name": "x86-Release", + "generator": "Ninja", + "configurationType": "Release", + "inheritEnvironments": [ + "msvc_x86" + ], + "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", + "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}" + }, { + "name": "x86-RelWithDebInfo", + "generator": "Ninja", + "configurationType": "RelWithDebInfo", + "inheritEnvironments": [ + "msvc_x86" + ], + "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", + "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}" + }, { + "name": "arm64-Debug", + "generator": "Ninja", + "configurationType": "Debug", + "inheritEnvironments": [ + "msvc_arm64" + ], + "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", + "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}" + }, { + "name": "arm64-Release", + "generator": "Ninja", + "configurationType": "Release", + "inheritEnvironments": [ + "msvc_arm64" + ], + "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", + "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}" + }, { + "name": "arm64-RelWithDebInfo", + "generator": "Ninja", + "configurationType": "RelWithDebInfo", + "inheritEnvironments": [ + "msvc_arm64" + ], + "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", + "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}" + } + ] +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/LICENSE.adoc new/ccache-4.8.2/LICENSE.adoc --- old/ccache-4.8.1/LICENSE.adoc 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/LICENSE.adoc 2023-06-12 21:17:31.000000000 +0200 @@ -72,8 +72,8 @@ === src/third_party/blake3/blake3_* -This is a subset of https://github.com/BLAKE3-team/BLAKE3[BLAKE3] 1.3.1 with -the following license: +This is a subset of https://github.com/BLAKE3-team/BLAKE3[BLAKE3] 1.4.0 with the +following license: ---- This work is released into the public domain with CC0 1.0. Alternatively, it is @@ -516,7 +516,7 @@ === src/third_party/httplib.* cpp-httplib - A C++11 cross-platform HTTP/HTTPS library. Copied from cpp-httplib -v0.12.3 downloaded from https://github.com/yhirose/cpp-httplib[cpp-httplib]. The +v0.12.6 downloaded from https://github.com/yhirose/cpp-httplib[cpp-httplib]. The library has the following license: ---- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/cmake/CcacheVersion.cmake new/ccache-4.8.2/cmake/CcacheVersion.cmake --- old/ccache-4.8.1/cmake/CcacheVersion.cmake 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/cmake/CcacheVersion.cmake 2023-06-12 21:17:31.000000000 +0200 @@ -22,7 +22,7 @@ # CCACHE_VERSION_ORIGIN is set to "archive" in scenario 1 and "git" in scenario # 3. -set(version_info "17d5c61227130894f0cedb5f5d0c7567f2b2c5a7 HEAD, tag: v4.8.1, origin/master, origin/HEAD, master") +set(version_info "dc5bb78d8351c19c3eb2cb18ada184ca66f7ceef HEAD, tag: v4.8.2, origin/master, origin/HEAD, master") set(CCACHE_VERSION "unknown") if(version_info MATCHES "^([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f])[0-9a-f]* (.*)") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/cmake/Findhiredis.cmake new/ccache-4.8.2/cmake/Findhiredis.cmake --- old/ccache-4.8.1/cmake/Findhiredis.cmake 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/cmake/Findhiredis.cmake 2023-06-12 21:17:31.000000000 +0200 @@ -2,6 +2,11 @@ return() endif() +if(POLICY CMP0135) + # Set timestamps on extracted files to time of extraction. + cmake_policy(SET CMP0135 NEW) +endif() + set(hiredis_FOUND FALSE) if(HIREDIS_FROM_INTERNET AND NOT HIREDIS_FROM_INTERNET STREQUAL "AUTO") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/cmake/Findzstd.cmake new/ccache-4.8.2/cmake/Findzstd.cmake --- old/ccache-4.8.1/cmake/Findzstd.cmake 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/cmake/Findzstd.cmake 2023-06-12 21:17:31.000000000 +0200 @@ -2,6 +2,11 @@ return() endif() +if(POLICY CMP0135) + # Set timestamps on extracted files to time of extraction. + cmake_policy(SET CMP0135 NEW) +endif() + set(zstd_FOUND FALSE) if(ZSTD_FROM_INTERNET AND NOT ZSTD_FROM_INTERNET STREQUAL "AUTO") @@ -52,6 +57,11 @@ set(zstd_dir ${CMAKE_BINARY_DIR}/zstd-${zstd_version}) set(zstd_build ${CMAKE_BINARY_DIR}/zstd-build) + if(XCODE) + # See https://github.com/facebook/zstd/pull/3665 + set(zstd_patch PATCH_COMMAND sed -i .bak -e s/^set_source_files_properties.*PROPERTIES.*LANGUAGE.*C/\#&/ build/cmake/lib/CMakeLists.txt) + endif() + include(FetchContent) FetchContent_Declare( zstd @@ -59,6 +69,7 @@ URL_HASH SHA256=9c4396cc829cfae319a6e2615202e82aad41372073482fce286fac78646d3ee4 SOURCE_DIR ${zstd_dir} BINARY_DIR ${zstd_build} + ${zstd_patch} ) FetchContent_GetProperties(zstd) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/cmake/StandardSettings.cmake new/ccache-4.8.2/cmake/StandardSettings.cmake --- old/ccache-4.8.1/cmake/StandardSettings.cmake 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/cmake/StandardSettings.cmake 2023-06-12 21:17:31.000000000 +0200 @@ -13,6 +13,10 @@ endif() if(CMAKE_CXX_COMPILER_ID MATCHES "^GNU|(Apple)?Clang$" AND NOT MSVC) + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + target_compile_definitions(standard_settings INTERFACE _GLIBCXX_ASSERTIONS) + endif() + option(ENABLE_COVERAGE "Enable coverage reporting for GCC/Clang" FALSE) if(ENABLE_COVERAGE) target_compile_options(standard_settings INTERFACE --coverage -O0 -g) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/doc/AUTHORS.adoc new/ccache-4.8.2/doc/AUTHORS.adoc --- old/ccache-4.8.1/doc/AUTHORS.adoc 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/doc/AUTHORS.adoc 2023-06-12 21:17:31.000000000 +0200 @@ -50,6 +50,7 @@ * Harsh Shandilya * Havard Graff * Hongli Lai +* Huang Qin Jing * Igor Pylypiv * Ivan Vaigult * Ivan Volnov @@ -134,6 +135,7 @@ * Ryan Burns * Ryan Egesdahl * Sam Gross +* Sam James * Sergei Trofimovich * Sergey Semushin * Steffen Dettmer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/doc/MANUAL.adoc new/ccache-4.8.2/doc/MANUAL.adoc --- old/ccache-4.8.1/doc/MANUAL.adoc 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/doc/MANUAL.adoc 2023-06-12 21:17:31.000000000 +0200 @@ -84,13 +84,14 @@ *-c*, *--cleanup*:: - Clean up the cache by removing old cached files until the specified file - number and cache size limits are not exceeded. This also recalculates the - cache file count and size totals. Normally, there is no need to initiate - cleanup manually as ccache keeps the cache below the specified limits at - runtime and keeps statistics up to date on each compilation. Forcing a - cleanup is mostly useful if you have modified the cache contents manually or - believe that the cache size statistics may be inaccurate. + Clean up the cache by removing not recently used cached files until the + specified file number and cache size limits are not exceeded. This also + recalculates the cache file count and size totals. Normally, there is no + need to initiate cleanup manually as ccache keeps the cache below the + specified limits at runtime and keeps statistics up to date on each + compilation. Forcing a cleanup is mostly useful if you have modified the + cache contents manually or believe that the cache size statistics may be + inaccurate. *-C*, *--clear*:: @@ -118,9 +119,9 @@ *--evict-older-than* _AGE_:: - Remove files older than _AGE_ from the cache. _AGE_ should be an unsigned - integer with a `d` (days) or `s` (seconds) suffix. If combined with - `--evict-namespace`, only remove old files within that namespace. + Remove files used less recently than _AGE_ from the cache. _AGE_ should be + an unsigned integer with a `d` (days) or `s` (seconds) suffix. If combined + with `--evict-namespace`, only remove files within that namespace. *-h*, *--help*:: @@ -201,8 +202,8 @@ *--trim-dir* _PATH_:: - Remove old files from directory _PATH_ until it is at most the size - specified by `--trim-max-size`. + Remove not recently used files from directory _PATH_ until it is at most the + size specified by `--trim-max-size`. + WARNING: Don't use this option to trim the local cache. To trim the local cache directory to a certain size, use `CCACHE_MAXSIZE=_SIZE_ ccache -c`. @@ -211,7 +212,7 @@ Specify the maximum size for `--trim-dir`. _SIZE_ should be a number followed by an optional suffix: kB, MB, GB, TB (decimal), KiB, MiB, GiB or - TiB (binary). The default suffix is GiB. + TiB (binary). The default suffix is GiB. Use 0 for no limit. *--trim-method* _METHOD_:: @@ -936,6 +937,7 @@ + * `+file:/shared/nfs/directory+` * `+file:///shared/nfs/one|read-only file:///shared/nfs/two+` +* `+file:///Z:/example/windows/folder+` * `+http://example.com/cache+` * `+redis://example.com+` + @@ -1184,6 +1186,7 @@ * `+file:/shared/nfs/directory+` * `+file:///shared/nfs/directory|umask=002|update-mtime=true+` +* `+file:///Z:/example/windows/folder+` * `+file://example.com/shared/ccache%20folder+` Optional attributes: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/doc/NEWS.adoc new/ccache-4.8.2/doc/NEWS.adoc --- old/ccache-4.8.1/doc/NEWS.adoc 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/doc/NEWS.adoc 2023-06-12 21:17:31.000000000 +0200 @@ -1,5 +1,55 @@ = Ccache news +== Ccache 4.8.2 + +Release date: 2023-06-12 + + +=== Bug fixes + +- Fixed parsing of Windows drive letter in file URLs for remote storage. + + [small]#_[contributed by Joel Rosdahl]_# + +- Fixed a bug affecting depend mode with MSVC. + + [small]#_[contributed by Huang Qin Jin]_# + +- Ccache no longer passes `-v` to the preprocessor. This improves preprocessor + mode hit rate when `-v` is on the compiler command line. + + [small]#_[contributed by Joel Rosdahl]_# + +- Made `--trim-max-size` accept 0 for no limit. + + [small]#_[contributed by Joel Rosdahl]_# + + +=== Build improvements + +- Made various fixes for Windows 64-bit MSBuild builds. + + [small]#_[contributed by Rafael Kitover]_# + +- Silenced CMake warning for extracted timestamps. + + [small]#_[contributed by Rafael Kitover]_# + +- Worked around problem with building ZStandard with Xcode. + + [small]#_[contributed by Gregor Jasny]_# + +- Fixed undefined behavior (only triggered by unit tests) in + `util::read_file_part` for zero count, making the build fail with + `+_GLIBCXX_ASSERTIONS+`. + + [small]#_[contributed by Joel Rosdahl]_# + + +=== Documentation improvements + +- Clarified `--evict-older-than` semantics. + + [small]#_[contributed by Joel Rosdahl]_# + + +=== Test improvements + +- Fixed typo in "`Directory is not hashed if using -gz`" test. + + [small]#_[contributed by Sam James]_# + + == Ccache 4.8.1 Release date: 2023-05-19 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/ccache.cpp new/ccache-4.8.2/src/ccache.cpp --- old/ccache-4.8.1/src/ccache.cpp 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/ccache.cpp 2023-06-12 21:17:31.000000000 +0200 @@ -1029,7 +1029,7 @@ ctx, Util::normalize_concrete_absolute_path(abs_inc_path)); std::string line_with_rel_inc = util::replace_first(orig_line, abs_inc_path, rel_inc_path); - new_stdout_data.insert(new_stdout_data.begin(), + new_stdout_data.insert(new_stdout_data.end(), line_with_rel_inc.data(), line_with_rel_inc.size()); } else { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/compopt.cpp new/ccache-4.8.2/src/compopt.cpp --- old/ccache-4.8.1/src/compopt.cpp 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/compopt.cpp 2023-06-12 21:17:31.000000000 +0200 @@ -151,6 +151,7 @@ {"-stdlib=", AFFECTS_CPP | TAKES_CONCAT_ARG}, {"-trigraphs", AFFECTS_CPP}, {"-u", TAKES_ARG | TAKES_CONCAT_ARG}, + {"-v", AFFECTS_COMP}, {"-z", TAKES_ARG | TAKES_CONCAT_ARG | AFFECTS_COMP}, }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/core/Statistics.cpp new/ccache-4.8.2/src/core/Statistics.cpp --- old/ccache-4.8.1/src/core/Statistics.cpp 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/core/Statistics.cpp 2023-06-12 21:17:31.000000000 +0200 @@ -253,7 +253,7 @@ // since they are not interesting to show. }; -static_assert(sizeof(k_statistics_fields) / sizeof(k_statistics_fields[0]) +static_assert(std::size(k_statistics_fields) == static_cast<size_t>(Statistic::END) - (/*none*/ 1 + /*subdir files*/ 16 + /*subdir size*/ 16)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/core/mainoptions.cpp new/ccache-4.8.2/src/core/mainoptions.cpp --- old/ccache-4.8.1/src/core/mainoptions.cpp 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/core/mainoptions.cpp 2023-06-12 21:17:31.000000000 +0200 @@ -98,9 +98,9 @@ In the third form, ccache is masquerading as the compiler. Common options: - -c, --cleanup delete old files and recalculate size counters - (normally not needed as this is done - automatically) + -c, --cleanup delete not recently used files and recalculate + size counters (normally not needed as this is + done automatically) -C, --clear clear the cache completely (except configuration) --config-path PATH operate on configuration file PATH instead of the default @@ -108,8 +108,9 @@ default --evict-namespace NAMESPACE remove files created in namespace NAMESPACE - --evict-older-than AGE remove files older than AGE (unsigned integer - with a d (days) or s (seconds) suffix) + --evict-older-than AGE remove files used less recently than AGE + (unsigned integer with a d (days) or s (seconds) + suffix) -F, --max-files NUM set maximum number of files in cache to NUM (use 0 for no limit) -M, --max-size SIZE set maximum size of cache to SIZE (use 0 for no @@ -137,13 +138,14 @@ -V, --version print version and copyright information Options for remote file-based storage: - --trim-dir PATH remove old files from directory PATH until it is - at most the size specified by --trim-max-size - (note: don't use this option to trim the local - cache) - --trim-max-size SIZE specify the maximum size for --trim-dir; - available suffixes: kB, MB, GB, TB (decimal) and - KiB, MiB, GiB, TiB (binary); default suffix: GiB + --trim-dir PATH remove not recently used files from directory + PATH until it is at most the size specified by + --trim-max-size (note: don't use this option to + trim the local cache) + --trim-max-size SIZE specify the maximum size for --trim-dir (use 0 for + no limit); available suffixes: kB, MB, GB, TB + (decimal) and KiB, MiB, GiB, TiB (binary); + default suffix: GiB --trim-method METHOD specify the method (atime or mtime) for --trim-dir; default: atime --trim-recompress LEVEL @@ -365,13 +367,15 @@ uint64_t final_size = size_after_recompression; size_t removed_files = 0; - for (const auto& file : files) { - if (final_size <= trim_max_size) { - break; - } - if (Util::unlink_tmp(file.path())) { - ++removed_files; - final_size -= file.size_on_disk(); + if (trim_max_size > 0) { + for (const auto& file : files) { + if (final_size <= trim_max_size) { + break; + } + if (Util::unlink_tmp(file.path())) { + ++removed_files; + final_size -= file.size_on_disk(); + } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/storage/remote/FileStorage.cpp new/ccache-4.8.2/src/storage/remote/FileStorage.cpp --- old/ccache-4.8.1/src/storage/remote/FileStorage.cpp 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/storage/remote/FileStorage.cpp 2023-06-12 21:17:31.000000000 +0200 @@ -1,4 +1,4 @@ -// Copyright (C) 2021-2022 Joel Rosdahl and other contributors +// Copyright (C) 2021-2023 Joel Rosdahl and other contributors // // See doc/AUTHORS.adoc for a complete list of contributors. // @@ -71,6 +71,10 @@ const auto& host = params.url.host(); #ifdef _WIN32 m_dir = util::replace_all(params.url.path(), "/", "\\"); + if (m_dir.length() >= 3 && m_dir[0] == '\\' && m_dir[2] == ':') { + // \X:\foo\bar -> X:\foo\bar according to RFC 8089 appendix E.2. + m_dir = m_dir.substr(1); + } if (!host.empty()) { m_dir = FMT("\\\\{}{}", host, m_dir); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/third_party/blake3/CMakeLists.txt new/ccache-4.8.2/src/third_party/blake3/CMakeLists.txt --- old/ccache-4.8.1/src/third_party/blake3/CMakeLists.txt 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/third_party/blake3/CMakeLists.txt 2023-06-12 21:17:31.000000000 +0200 @@ -27,7 +27,11 @@ # First check if it's possible to use the assembler variant for the feature. string(TOUPPER "have_asm_${feature}" have_feature) - if(NOT DEFINED "${have_feature}" AND CMAKE_SIZEOF_VOID_P EQUAL 8) + if(NOT DEFINED "${have_feature}" AND CMAKE_SIZEOF_VOID_P EQUAL 8 +# Force intrinsic version for msbuild because of a bug in the cmake generator +# or msbuild itself with masm flags. + AND NOT CMAKE_GENERATOR MATCHES "Visual Studio") + if(NOT CMAKE_REQUIRED_QUIET) message(STATUS "Performing Test ${have_feature}") endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/third_party/blake3/blake3.c new/ccache-4.8.2/src/third_party/blake3/blake3.c --- old/ccache-4.8.1/src/third_party/blake3/blake3.c 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/third_party/blake3/blake3.c 2023-06-12 21:17:31.000000000 +0200 @@ -246,7 +246,7 @@ // The wide helper function returns (writes out) an array of chaining values // and returns the length of that array. The number of chaining values returned -// is the dyanmically detected SIMD degree, at most MAX_SIMD_DEGREE. Or fewer, +// is the dynamically detected SIMD degree, at most MAX_SIMD_DEGREE. Or fewer, // if the input is shorter than that many chunks. The reason for maintaining a // wide array of chaining values going back up the tree, is to allow the // implementation to hash as many parents in parallel as possible. @@ -254,7 +254,7 @@ // As a special case when the SIMD degree is 1, this function will still return // at least 2 outputs. This guarantees that this function doesn't perform the // root compression. (If it did, it would use the wrong flags, and also we -// wouldn't be able to implement exendable ouput.) Note that this function is +// wouldn't be able to implement exendable output.) Note that this function is // not used when the whole input is only 1 chunk long; that's a different // codepath. // diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/third_party/blake3/blake3.h new/ccache-4.8.2/src/third_party/blake3/blake3.h --- old/ccache-4.8.1/src/third_party/blake3/blake3.h 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/third_party/blake3/blake3.h 2023-06-12 21:17:31.000000000 +0200 @@ -4,11 +4,33 @@ #include <stddef.h> #include <stdint.h> +#if !defined(BLAKE3_API) +# if defined(_WIN32) || defined(__CYGWIN__) +# if defined(BLAKE3_DLL) +# if defined(BLAKE3_DLL_EXPORTS) +# define BLAKE3_API __declspec(dllexport) +# else +# define BLAKE3_API __declspec(dllimport) +# endif +# define BLAKE3_PRIVATE +# else +# define BLAKE3_API +# define BLAKE3_PRIVATE +# endif +# elif __GNUC__ >= 4 +# define BLAKE3_API __attribute__((visibility("default"))) +# define BLAKE3_PRIVATE __attribute__((visibility("hidden"))) +# else +# define BLAKE3_API +# define BLAKE3_PRIVATE +# endif +#endif + #ifdef __cplusplus extern "C" { #endif -#define BLAKE3_VERSION_STRING "1.3.1" +#define BLAKE3_VERSION_STRING "1.4.0" #define BLAKE3_KEY_LEN 32 #define BLAKE3_OUT_LEN 32 #define BLAKE3_BLOCK_LEN 64 @@ -38,20 +60,20 @@ uint8_t cv_stack[(BLAKE3_MAX_DEPTH + 1) * BLAKE3_OUT_LEN]; } blake3_hasher; -const char *blake3_version(void); -void blake3_hasher_init(blake3_hasher *self); -void blake3_hasher_init_keyed(blake3_hasher *self, - const uint8_t key[BLAKE3_KEY_LEN]); -void blake3_hasher_init_derive_key(blake3_hasher *self, const char *context); -void blake3_hasher_init_derive_key_raw(blake3_hasher *self, const void *context, - size_t context_len); -void blake3_hasher_update(blake3_hasher *self, const void *input, - size_t input_len); -void blake3_hasher_finalize(const blake3_hasher *self, uint8_t *out, - size_t out_len); -void blake3_hasher_finalize_seek(const blake3_hasher *self, uint64_t seek, - uint8_t *out, size_t out_len); -void blake3_hasher_reset(blake3_hasher *self); +BLAKE3_API const char *blake3_version(void); +BLAKE3_API void blake3_hasher_init(blake3_hasher *self); +BLAKE3_API void blake3_hasher_init_keyed(blake3_hasher *self, + const uint8_t key[BLAKE3_KEY_LEN]); +BLAKE3_API void blake3_hasher_init_derive_key(blake3_hasher *self, const char *context); +BLAKE3_API void blake3_hasher_init_derive_key_raw(blake3_hasher *self, const void *context, + size_t context_len); +BLAKE3_API void blake3_hasher_update(blake3_hasher *self, const void *input, + size_t input_len); +BLAKE3_API void blake3_hasher_finalize(const blake3_hasher *self, uint8_t *out, + size_t out_len); +BLAKE3_API void blake3_hasher_finalize_seek(const blake3_hasher *self, uint64_t seek, + uint8_t *out, size_t out_len); +BLAKE3_API void blake3_hasher_reset(blake3_hasher *self); #ifdef __cplusplus } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/third_party/blake3/blake3_avx2.c new/ccache-4.8.2/src/third_party/blake3/blake3_avx2.c --- old/ccache-4.8.1/src/third_party/blake3/blake3_avx2.c 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/third_party/blake3/blake3_avx2.c 2023-06-12 21:17:31.000000000 +0200 @@ -167,7 +167,7 @@ __m256i gh_0145 = _mm256_unpacklo_epi32(vecs[6], vecs[7]); __m256i gh_2367 = _mm256_unpackhi_epi32(vecs[6], vecs[7]); - // Interleave 64-bit lates. The low unpack is lanes 00/22 and the high is + // Interleave 64-bit lanes. The low unpack is lanes 00/22 and the high is // 11/33. __m256i abcd_04 = _mm256_unpacklo_epi64(ab_0145, cd_0145); __m256i abcd_15 = _mm256_unpackhi_epi64(ab_0145, cd_0145); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/third_party/blake3/blake3_avx2_x86-64_windows_gnu.S new/ccache-4.8.2/src/third_party/blake3/blake3_avx2_x86-64_windows_gnu.S --- old/ccache-4.8.1/src/third_party/blake3/blake3_avx2_x86-64_windows_gnu.S 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/third_party/blake3/blake3_avx2_x86-64_windows_gnu.S 2023-06-12 21:17:31.000000000 +0200 @@ -1784,7 +1784,7 @@ vmovdqu xmmword ptr [rbx+0x10], xmm1 jmp 4b -.section .rodata +.section .rdata .p2align 6 ADD0: .long 0, 1, 2, 3, 4, 5, 6, 7 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/third_party/blake3/blake3_avx512.c new/ccache-4.8.2/src/third_party/blake3/blake3_avx512.c --- old/ccache-4.8.1/src/third_party/blake3/blake3_avx512.c 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/third_party/blake3/blake3_avx512.c 2023-06-12 21:17:31.000000000 +0200 @@ -429,7 +429,7 @@ } INLINE void transpose_vecs_128(__m128i vecs[4]) { - // Interleave 32-bit lates. The low unpack is lanes 00/11 and the high is + // Interleave 32-bit lanes. The low unpack is lanes 00/11 and the high is // 22/33. Note that this doesn't split the vector into two lanes, as the // AVX2 counterparts do. __m128i ab_01 = _mm_unpacklo_epi32(vecs[0], vecs[1]); @@ -684,7 +684,7 @@ __m256i gh_0145 = _mm256_unpacklo_epi32(vecs[6], vecs[7]); __m256i gh_2367 = _mm256_unpackhi_epi32(vecs[6], vecs[7]); - // Interleave 64-bit lates. The low unpack is lanes 00/22 and the high is + // Interleave 64-bit lanes. The low unpack is lanes 00/22 and the high is // 11/33. __m256i abcd_04 = _mm256_unpacklo_epi64(ab_0145, cd_0145); __m256i abcd_15 = _mm256_unpackhi_epi64(ab_0145, cd_0145); @@ -959,7 +959,7 @@ __m512i op_0 = _mm512_unpacklo_epi32(vecs[14], vecs[15]); __m512i op_2 = _mm512_unpackhi_epi32(vecs[14], vecs[15]); - // Interleave 64-bit lates. The _0 unpack is lanes + // Interleave 64-bit lanes. The _0 unpack is lanes // 0/0/0/0/4/4/4/4/8/8/8/8/12/12/12/12, the _1 unpack is lanes // 1/1/1/1/5/5/5/5/9/9/9/9/13/13/13/13, the _2 unpack is lanes // 2/2/2/2/6/6/6/6/10/10/10/10/14/14/14/14, and the _3 unpack is lanes @@ -1047,13 +1047,26 @@ INLINE void load_counters16(uint64_t counter, bool increment_counter, __m512i *out_lo, __m512i *out_hi) { const __m512i mask = _mm512_set1_epi32(-(int32_t)increment_counter); - const __m512i add0 = _mm512_set_epi32(15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); - const __m512i add1 = _mm512_and_si512(mask, add0); - __m512i l = _mm512_add_epi32(_mm512_set1_epi32((int32_t)counter), add1); - __mmask16 carry = _mm512_cmp_epu32_mask(l, add1, _MM_CMPINT_LT); - __m512i h = _mm512_mask_add_epi32(_mm512_set1_epi32((int32_t)(counter >> 32)), carry, _mm512_set1_epi32((int32_t)(counter >> 32)), _mm512_set1_epi32(1)); - *out_lo = l; - *out_hi = h; + const __m512i deltas = _mm512_set_epi32(15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); + const __m512i masked_deltas = _mm512_and_si512(deltas, mask); + const __m512i low_words = _mm512_add_epi32( + _mm512_set1_epi32((int32_t)counter), + masked_deltas); + // The carry bit is 1 if the high bit of the word was 1 before addition and is + // 0 after. + // NOTE: It would be a bit more natural to use _mm512_cmp_epu32_mask to + // compute the carry bits here, and originally we did, but that intrinsic is + // broken under GCC 5.4. See https://github.com/BLAKE3-team/BLAKE3/issues/271. + const __m512i carries = _mm512_srli_epi32( + _mm512_andnot_si512( + low_words, // 0 after (gets inverted by andnot) + _mm512_set1_epi32((int32_t)counter)), // and 1 before + 31); + const __m512i high_words = _mm512_add_epi32( + _mm512_set1_epi32((int32_t)(counter >> 32)), + carries); + *out_lo = low_words; + *out_hi = high_words; } static diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/third_party/blake3/blake3_avx512_x86-64_windows_gnu.S new/ccache-4.8.2/src/third_party/blake3/blake3_avx512_x86-64_windows_gnu.S --- old/ccache-4.8.1/src/third_party/blake3/blake3_avx512_x86-64_windows_gnu.S 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/third_party/blake3/blake3_avx512_x86-64_windows_gnu.S 2023-06-12 21:17:31.000000000 +0200 @@ -2587,7 +2587,7 @@ add rsp, 72 ret -.section .rodata +.section .rdata .p2align 6 INDEX0: .long 0, 1, 2, 3, 16, 17, 18, 19 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/third_party/blake3/blake3_dispatch.c new/ccache-4.8.2/src/third_party/blake3/blake3_dispatch.c --- old/ccache-4.8.1/src/third_party/blake3/blake3_dispatch.c 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/third_party/blake3/blake3_dispatch.c 2023-06-12 21:17:31.000000000 +0200 @@ -10,14 +10,14 @@ #elif defined(__GNUC__) #include <immintrin.h> #else -#error "Unimplemented!" +#undef IS_X86 /* Unimplemented! */ #endif #endif #define MAYBE_UNUSED(x) (void)((x)) #if defined(IS_X86) -static uint64_t xgetbv() { +static uint64_t xgetbv(void) { #if defined(_MSC_VER) return _xgetbv(0); #else @@ -82,7 +82,7 @@ static #endif enum cpu_feature - get_cpu_features() { + get_cpu_features(void) { if (g_cpu_features != UNDEFINED) { return g_cpu_features; @@ -101,7 +101,7 @@ if (*edx & (1UL << 26)) features |= SSE2; #endif - if (*ecx & (1UL << 0)) + if (*ecx & (1UL << 9)) features |= SSSE3; if (*ecx & (1UL << 19)) features |= SSE41; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/third_party/blake3/blake3_impl.h new/ccache-4.8.2/src/third_party/blake3/blake3_impl.h --- old/ccache-4.8.1/src/third_party/blake3/blake3_impl.h 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/third_party/blake3/blake3_impl.h 2023-06-12 21:17:31.000000000 +0200 @@ -46,7 +46,6 @@ #if defined(_MSC_VER) #include <intrin.h> #endif -#include <immintrin.h> #endif #if !defined(BLAKE3_USE_NEON) @@ -88,7 +87,7 @@ /* x is assumed to be nonzero. */ static unsigned int highest_one(uint64_t x) { #if defined(__GNUC__) || defined(__clang__) - return 63 ^ __builtin_clzll(x); + return 63 ^ (unsigned int)__builtin_clzll(x); #elif defined(_MSC_VER) && defined(IS_X86_64) unsigned long index; _BitScanReverse64(&index, x); @@ -118,7 +117,7 @@ // Count the number of 1 bits. INLINE unsigned int popcnt(uint64_t x) { #if defined(__GNUC__) || defined(__clang__) - return __builtin_popcountll(x); + return (unsigned int)__builtin_popcountll(x); #else unsigned int count = 0; while (x != 0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/third_party/blake3/blake3_sse2.c new/ccache-4.8.2/src/third_party/blake3/blake3_sse2.c --- old/ccache-4.8.1/src/third_party/blake3/blake3_sse2.c 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/third_party/blake3/blake3_sse2.c 2023-06-12 21:17:31.000000000 +0200 @@ -396,7 +396,7 @@ } INLINE void transpose_vecs(__m128i vecs[DEGREE]) { - // Interleave 32-bit lates. The low unpack is lanes 00/11 and the high is + // Interleave 32-bit lanes. The low unpack is lanes 00/11 and the high is // 22/33. Note that this doesn't split the vector into two lanes, as the // AVX2 counterparts do. __m128i ab_01 = _mm_unpacklo_epi32(vecs[0], vecs[1]); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/third_party/blake3/blake3_sse2_x86-64_windows_gnu.S new/ccache-4.8.2/src/third_party/blake3/blake3_sse2_x86-64_windows_gnu.S --- old/ccache-4.8.1/src/third_party/blake3/blake3_sse2_x86-64_windows_gnu.S 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/third_party/blake3/blake3_sse2_x86-64_windows_gnu.S 2023-06-12 21:17:31.000000000 +0200 @@ -2301,7 +2301,7 @@ ret -.section .rodata +.section .rdata .p2align 6 BLAKE3_IV: .long 0x6A09E667, 0xBB67AE85 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/third_party/blake3/blake3_sse41.c new/ccache-4.8.2/src/third_party/blake3/blake3_sse41.c --- old/ccache-4.8.1/src/third_party/blake3/blake3_sse41.c 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/third_party/blake3/blake3_sse41.c 2023-06-12 21:17:31.000000000 +0200 @@ -390,7 +390,7 @@ } INLINE void transpose_vecs(__m128i vecs[DEGREE]) { - // Interleave 32-bit lates. The low unpack is lanes 00/11 and the high is + // Interleave 32-bit lanes. The low unpack is lanes 00/11 and the high is // 22/33. Note that this doesn't split the vector into two lanes, as the // AVX2 counterparts do. __m128i ab_01 = _mm_unpacklo_epi32(vecs[0], vecs[1]); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/third_party/blake3/blake3_sse41_x86-64_windows_gnu.S new/ccache-4.8.2/src/third_party/blake3/blake3_sse41_x86-64_windows_gnu.S --- old/ccache-4.8.1/src/third_party/blake3/blake3_sse41_x86-64_windows_gnu.S 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/third_party/blake3/blake3_sse41_x86-64_windows_gnu.S 2023-06-12 21:17:31.000000000 +0200 @@ -2042,7 +2042,7 @@ ret -.section .rodata +.section .rdata .p2align 6 BLAKE3_IV: .long 0x6A09E667, 0xBB67AE85 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/third_party/httplib.cpp new/ccache-4.8.2/src/third_party/httplib.cpp --- old/ccache-4.8.1/src/third_party/httplib.cpp 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/third_party/httplib.cpp 2023-06-12 21:17:31.000000000 +0200 @@ -829,7 +829,7 @@ return ret; } -#if !defined _WIN32 && !defined ANDROID && !defined _AIX +#if !defined _WIN32 && !defined ANDROID && !defined _AIX && !defined __MVS__ #define USE_IF2IP #endif @@ -3297,7 +3297,6 @@ Server & Server::set_expect_100_continue_handler(Expect100ContinueHandler handler) { expect_100_continue_handler_ = std::move(handler); - return *this; } @@ -3950,8 +3949,8 @@ res.headers.erase(it); } - res.headers.emplace("Content-Type", - "multipart/byteranges; boundary=" + boundary); + res.set_header("Content-Type", + "multipart/byteranges; boundary=" + boundary); } auto type = detail::encoding_type(req, res); @@ -4641,32 +4640,32 @@ // Prepare additional headers if (close_connection) { if (!req.has_header("Connection")) { - req.headers.emplace("Connection", "close"); + req.set_header("Connection", "close"); } } if (!req.has_header("Host")) { if (is_ssl()) { if (port_ == 443) { - req.headers.emplace("Host", host_); + req.set_header("Host", host_); } else { - req.headers.emplace("Host", host_and_port_); + req.set_header("Host", host_and_port_); } } else { if (port_ == 80) { - req.headers.emplace("Host", host_); + req.set_header("Host", host_); } else { - req.headers.emplace("Host", host_and_port_); + req.set_header("Host", host_and_port_); } } } - if (!req.has_header("Accept")) { req.headers.emplace("Accept", "*/*"); } + if (!req.has_header("Accept")) { req.set_header("Accept", "*/*"); } #ifndef CPPHTTPLIB_NO_DEFAULT_USER_AGENT if (!req.has_header("User-Agent")) { auto agent = std::string("cpp-httplib/") + CPPHTTPLIB_VERSION; - req.headers.emplace("User-Agent", agent); + req.set_header("User-Agent", agent); } #endif @@ -4675,23 +4674,23 @@ if (!req.is_chunked_content_provider_) { if (!req.has_header("Content-Length")) { auto length = std::to_string(req.content_length_); - req.headers.emplace("Content-Length", length); + req.set_header("Content-Length", length); } } } else { if (req.method == "POST" || req.method == "PUT" || req.method == "PATCH") { - req.headers.emplace("Content-Length", "0"); + req.set_header("Content-Length", "0"); } } } else { if (!req.has_header("Content-Type")) { - req.headers.emplace("Content-Type", "text/plain"); + req.set_header("Content-Type", "text/plain"); } if (!req.has_header("Content-Length")) { auto length = std::to_string(req.body.size()); - req.headers.emplace("Content-Length", length); + req.set_header("Content-Length", length); } } @@ -4759,12 +4758,10 @@ ContentProvider content_provider, ContentProviderWithoutLength content_provider_without_length, const std::string &content_type, Error &error) { - if (!content_type.empty()) { - req.headers.emplace("Content-Type", content_type); - } + if (!content_type.empty()) { req.set_header("Content-Type", content_type); } #ifdef CPPHTTPLIB_ZLIB_SUPPORT - if (compress_) { req.headers.emplace("Content-Encoding", "gzip"); } + if (compress_) { req.set_header("Content-Encoding", "gzip"); } #endif #ifdef CPPHTTPLIB_ZLIB_SUPPORT @@ -4825,10 +4822,9 @@ req.content_provider_ = detail::ContentProviderAdapter( std::move(content_provider_without_length)); req.is_chunked_content_provider_ = true; - req.headers.emplace("Transfer-Encoding", "chunked"); + req.set_header("Transfer-Encoding", "chunked"); } else { req.body.assign(body, content_length); - ; } } @@ -5448,9 +5444,7 @@ req.headers = headers; req.path = path; - if (!content_type.empty()) { - req.headers.emplace("Content-Type", content_type); - } + if (!content_type.empty()) { req.set_header("Content-Type", content_type); } req.body.assign(body, content_length); return send_(std::move(req)); @@ -5600,9 +5594,7 @@ proxy_digest_auth_username_ = username; proxy_digest_auth_password_ = password; } -#endif -#ifdef CPPHTTPLIB_OPENSSL_SUPPORT void ClientImpl::set_ca_cert_path(const std::string &ca_cert_file_path, const std::string &ca_cert_dir_path) { ca_cert_file_path_ = ca_cert_file_path; @@ -5614,9 +5606,34 @@ ca_cert_store_ = ca_cert_store; } } -#endif -#ifdef CPPHTTPLIB_OPENSSL_SUPPORT +X509_STORE *ClientImpl::create_ca_cert_store(const char *ca_cert, + std::size_t size) { + auto mem = BIO_new_mem_buf(ca_cert, static_cast<int>(size)); + if (!mem) return nullptr; + + auto inf = PEM_X509_INFO_read_bio(mem, nullptr, nullptr, nullptr); + if (!inf) { + BIO_free_all(mem); + return nullptr; + } + + auto cts = X509_STORE_new(); + if (cts) { + for (auto first = 0, last = sk_X509_INFO_num(inf); first < last; ++first) { + auto itmp = sk_X509_INFO_value(inf, first); + if (!itmp) { continue; } + + if (itmp->x509) { X509_STORE_add_cert(cts, itmp->x509); } + if (itmp->crl) { X509_STORE_add_crl(cts, itmp->crl); } + } + } + + sk_X509_INFO_pop_free(inf, X509_INFO_free); + BIO_free_all(mem); + return cts; +} + void ClientImpl::enable_server_certificate_verification(bool enabled) { server_certificate_verification_ = enabled; } @@ -6014,6 +6031,11 @@ } } +void SSLClient::load_ca_cert_store(const char *ca_cert, + std::size_t size) { + set_ca_cert_store(ClientImpl::create_ca_cert_store(ca_cert, size)); +} + long SSLClient::get_openssl_verify_result() const { return verify_result_; } @@ -6779,7 +6801,9 @@ } #endif -void Client::set_logger(Logger logger) { cli_->set_logger(logger); } +void Client::set_logger(Logger logger) { + cli_->set_logger(std::move(logger)); +} #ifdef CPPHTTPLIB_OPENSSL_SUPPORT void Client::set_ca_cert_path(const std::string &ca_cert_file_path, @@ -6795,6 +6819,10 @@ } } +void Client::load_ca_cert_store(const char *ca_cert, std::size_t size) { + set_ca_cert_store(cli_->create_ca_cert_store(ca_cert, size)); +} + long Client::get_openssl_verify_result() const { if (is_ssl_) { return static_cast<SSLClient &>(*cli_).get_openssl_verify_result(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/third_party/httplib.h new/ccache-4.8.2/src/third_party/httplib.h --- old/ccache-4.8.1/src/third_party/httplib.h 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/third_party/httplib.h 2023-06-12 21:17:31.000000000 +0200 @@ -8,7 +8,7 @@ #ifndef CPPHTTPLIB_HTTPLIB_H #define CPPHTTPLIB_HTTPLIB_H -#define CPPHTTPLIB_VERSION "0.12.3" +#define CPPHTTPLIB_VERSION "0.12.6" /* * Configuration @@ -172,9 +172,15 @@ #else // not _WIN32 #include <arpa/inet.h> -#ifndef _AIX +#if !defined(_AIX) && !defined(__MVS__) #include <ifaddrs.h> #endif +#ifdef __MVS__ +#include <strings.h> +#ifndef NI_MAXHOST +#define NI_MAXHOST 1025 +#endif +#endif #include <net/if.h> #include <netdb.h> #include <netinet/in.h> @@ -223,6 +229,7 @@ #include <string> #include <sys/stat.h> #include <thread> +#include <utility> #ifdef CPPHTTPLIB_OPENSSL_SUPPORT #ifdef _WIN32 @@ -1117,6 +1124,7 @@ void set_ca_cert_path(const std::string &ca_cert_file_path, const std::string &ca_cert_dir_path = std::string()); void set_ca_cert_store(X509_STORE *ca_cert_store); + X509_STORE *create_ca_cert_store(const char *ca_cert, std::size_t size); #endif #ifdef CPPHTTPLIB_OPENSSL_SUPPORT @@ -1497,6 +1505,7 @@ const std::string &ca_cert_dir_path = std::string()); void set_ca_cert_store(X509_STORE *ca_cert_store); + void load_ca_cert_store(const char *ca_cert, std::size_t size); long get_openssl_verify_result() const; @@ -1556,6 +1565,7 @@ bool is_valid() const override; void set_ca_cert_store(X509_STORE *ca_cert_store); + void load_ca_cert_store(const char *ca_cert, std::size_t size); long get_openssl_verify_result() const; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/src/util/file.cpp new/ccache-4.8.2/src/util/file.cpp --- old/ccache-4.8.1/src/util/file.cpp 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/src/util/file.cpp 2023-06-12 21:17:31.000000000 +0200 @@ -214,6 +214,11 @@ nonstd::expected<T, std::string> read_file_part(const std::string& path, size_t pos, size_t count) { + T result; + if (count == 0) { + return result; + } + Fd fd(open(path.c_str(), O_RDONLY | O_BINARY)); if (!fd) { LOG("Failed to open {}: {}", path, strerror(errno)); @@ -226,7 +231,6 @@ int64_t ret = 0; size_t bytes_read = 0; - T result; result.resize(count); while (true) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-4.8.1/test/suites/base.bash new/ccache-4.8.2/test/suites/base.bash --- old/ccache-4.8.1/test/suites/base.bash 2023-05-19 20:15:08.000000000 +0200 +++ new/ccache-4.8.2/test/suites/base.bash 2023-06-12 21:17:31.000000000 +0200 @@ -552,7 +552,7 @@ # ------------------------------------------------------------------------- TEST "Directory is not hashed if using -gz" - if $COMPILER -c test1.c -gz 2>/dev/null + if $COMPILER -c test1.c -gz 2>/dev/null \ && $COMPILER -E test1.c -gz >preprocessed.i 2>/dev/null \ && [ -s preprocessed.i ] \ && ! grep -Fq $PWD preprocessed.i; then
