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

Reply via email to