From c6ddfcd3f6d5d37c5c8c36a6c8f842cbb55b0ec3 Mon Sep 17 00:00:00 2001 From: Chahatpreet Singh Date: Fri, 8 May 2026 21:14:09 +0000 Subject: [PATCH] ac-library: fix tests on platforms where char is unsigned The type_traits_test asserts `to_unsigned_t` resolves to `unsigned char`, which only holds on platforms where `char` is signed (e.g. x86_64-linux). On platforms where `char` is unsigned by default (e.g. aarch64-linux), `to_unsigned_t` resolves to `char`, and the static_assert fails to compile. Guard the assertion with `CHAR_MIN < 0` so the correct relationship is checked on each platform. Also drop `-Wno-character-conversion` from NIX_CFLAGS_COMPILE since GCC 15 does not recognize it (the build log shows it being reported as an unrecognized command-line option). Reported upstream: https://github.com/atcoder/ac-library/issues/191 ZHF: #516381 --- .../fix-char-signedness-tests.patch | 24 +++++++++++++++++++ pkgs/by-name/ac/ac-library/package.nix | 8 +++++-- 2 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 pkgs/by-name/ac/ac-library/fix-char-signedness-tests.patch diff --git a/pkgs/by-name/ac/ac-library/fix-char-signedness-tests.patch b/pkgs/by-name/ac/ac-library/fix-char-signedness-tests.patch new file mode 100644 index 000000000000..7373784dbe43 --- /dev/null +++ b/pkgs/by-name/ac/ac-library/fix-char-signedness-tests.patch @@ -0,0 +1,24 @@ +diff --git i/test/unittest/type_traits_test.cpp w/test/unittest/type_traits_test.cpp +index 164cc79..123b3a2 100644 +--- i/test/unittest/type_traits_test.cpp ++++ w/test/unittest/type_traits_test.cpp +@@ -1,5 +1,6 @@ + #include "atcoder/internal_type_traits" + ++#include + #include + + #include +@@ -44,7 +45,12 @@ static_assert(internal::is_unsigned_int::value, ""); + static_assert(!internal::is_signed_int::value, ""); + static_assert(!internal::is_unsigned_int::value, ""); + ++#if CHAR_MIN < 0 + static_assert(is_same>::value, ""); ++#else ++static_assert(is_same>::value, ""); ++#endif ++ + static_assert( + is_same>::value, + ""); diff --git a/pkgs/by-name/ac/ac-library/package.nix b/pkgs/by-name/ac/ac-library/package.nix index b112b8128a81..bdbb3e5d2355 100644 --- a/pkgs/by-name/ac/ac-library/package.nix +++ b/pkgs/by-name/ac/ac-library/package.nix @@ -18,7 +18,12 @@ stdenv.mkDerivation (finalAttrs: { fetchSubmodules = true; hash = "sha256-1wwzN/JPS6daj1vDFuEN5z20tMdLfMvEKti0sxCVlHA="; }; - + patches = [ + # Fix type_traits_test assumptions about char signedness on platforms + # where char is unsigned by default (e.g. aarch64-linux). + # Reported upstream: https://github.com/atcoder/ac-library/issues/191 + ./fix-char-signedness-tests.patch + ]; outputs = [ "dev" "out" @@ -60,7 +65,6 @@ stdenv.mkDerivation (finalAttrs: { env = { NIX_CFLAGS_COMPILE = toString [ "-Wno-error=array-bounds" - "-Wno-character-conversion" ]; };