Debian Patches

Status for abseil/20230802.1-4

Patch Description Author Forwarded Bugs Origin Last update
riscv-rdcycle.diff unscaledcycleclock: remove RISC-V support
Starting with Linux 6.6 [1], RDCYCLE is a privileged instruction on
RISC-V and can't be used directly from userland. There is a sysctl
option to change that as a transition period, but it will eventually
disappear.

The RDTIME instruction is another less accurate alternative, however its
frequency varies from board to board, and there is currently now way to
get its frequency from userland [2].

Therefore this patch just removes the code for unscaledcycleclock on
RISC-V. Without processor specific implementation, abseil relies on
std::chrono::steady_clock::now().time_since_epoch() which is basically a
wrapper around clock_gettime (CLOCK_MONOTONIC), which in turns use
__vdso_clock_gettime(). On RISC-V this VDSO is just a wrapper around
RDTIME correctly scaled to use nanoseconds units.

This fixes the testsuite on riscv64, tested on a VisionFive 2 board.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cc4c07c89aada16229084eeb93895c95b7eabaa3
[2] https://github.com/abseil/abseil-cpp/pull/1631
aurel32 <aurelien@aurel32.net> no debian upstream, https://github.com/abseil/abseil-cpp/commit/7335a36d0b5c1c597566f9aa3f458a5b6817c3b4
configure.diff Set package configuration options
Configure Abseil for Debian.

- Set the SONAME appropriately.

- To minimize the possibility of future ABI breakage, treat absl::any,
absl::optional, absl::string_view, and absl::variant as their own types
(rather than aliases for the std:: versions), and compile everything in an
inline namespace.

- Enable upstream's hardened build mode.
Benjamin Barenblat <bbaren@google.com> not-needed
cpu-features.diff Canonicalize supported CPU feature set
Explicitly set supported CPU features.

- Disable Intel SSE and SSE2 on i386, since Debian supports some i386
processors without those extensions. Keep them enabled on amd64, since all
amd64 processors have them.

- Disable Intel SSSE3 entirely, since no i386 processor supports it and Debian
supports amd64 processors without it.

- Disable NEON on armel and armhf, since no armel processor supports NEON and
Debian supports some armhf processors without it. Keep it enabled on arm64,
since all arm64 processors have it.
Benjamin Barenblat <bbaren@google.com> not-needed
latomic.diff Use libatomic if necessary
On some architectures, notably armel, Abseil needs symbols defined in
libatomic. Abseil does not currently have a well-developed system to
declare external library dependencies, so just have the linker determine
if anything needs libatomic and add the DT_NEEDED entry where necessary.
Benjamin Barenblat <bbaren@google.com> no debian
empty-flags-library.diff Eliminate libabsl_flags.so and libabsl_flags.a
The libabsl_flags library only contains code when compiling with MSVC, which
Debian doesn't use. Skip compiling absl/flags/flag.cc, and make the Abseil flags
library header-only.
Benjamin Barenblat <bbaren@google.com> not-needed
cordz-info-statistics-test.diff no
pkg-config-directives.diff Do not propagate -Wno-... flags into pkg-config files
Lintian doesn't like any -W flags in pkg-config files, even if those flags
disable warnings.
Benjamin Barenblat <bbaren@google.com> not-needed
riscv-nan-formatting.diff riscv64: Disable negative NaN float ostream format checking
Streaming a negative NaN float with libstdc++ on riscv64 produces an
optimization-dependent result. Don't require that logging such a float with
Abseil produce the same result as libstdc++ streaming.
Benjamin Barenblat <bbaren@google.com> no debian

All known versions for source package 'abseil'

Links