commit:     58574b25fddb05c7c86ebb5e7d610e7042d2d291
Author:     Takuya Wakazono <pastalian46 <AT> gmail <DOT> com>
AuthorDate: Fri Jan  9 13:52:52 2026 +0000
Commit:     David Roman <davidroman96 <AT> gmail <DOT> com>
CommitDate: Fri Jan  9 13:52:52 2026 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=58574b25

app-admin/ananicy-cpp: fix build with glibc-2.41 and clang-19

Closes: https://bugs.gentoo.org/960226
Signed-off-by: Takuya Wakazono <pastalian46 <AT> gmail.com>

 ...1.1.1-r3.ebuild => ananicy-cpp-1.1.1-r4.ebuild} |   6 +-
 .../files/ananicy-cpp-1.1.1-clang-19.patch         |  45 +++++++++
 .../files/ananicy-cpp-1.1.1-glibc-2.41.patch       | 103 +++++++++++++++++++++
 3 files changed, 152 insertions(+), 2 deletions(-)

diff --git a/app-admin/ananicy-cpp/ananicy-cpp-1.1.1-r3.ebuild 
b/app-admin/ananicy-cpp/ananicy-cpp-1.1.1-r4.ebuild
similarity index 92%
rename from app-admin/ananicy-cpp/ananicy-cpp-1.1.1-r3.ebuild
rename to app-admin/ananicy-cpp/ananicy-cpp-1.1.1-r4.ebuild
index f4a50a3911..7f9f1b1c94 100644
--- a/app-admin/ananicy-cpp/ananicy-cpp-1.1.1-r3.ebuild
+++ b/app-admin/ananicy-cpp/ananicy-cpp-1.1.1-r4.ebuild
@@ -24,13 +24,13 @@ RDEPEND="
        !app-admin/ananicy
        >=dev-cpp/nlohmann_json-3.9
        >=dev-libs/libfmt-8:=
-       >=dev-libs/spdlog-1.9
+       >=dev-libs/spdlog-1.9:=
        bpf? (
                 dev-libs/elfutils
                 dev-libs/libbpf
                 dev-util/bpftool
        )
-       systemd? ( sys-apps/systemd )
+       systemd? ( sys-apps/systemd:= )
 "
 
 DEPEND="
@@ -41,6 +41,8 @@ DEPEND="
 
 PATCHES=(
        "${FILESDIR}/${P}-remove-debug-flags.patch"
+       "${FILESDIR}/${P}-clang-19.patch"
+       "${FILESDIR}/${P}-glibc-2.41.patch"
 )
 
 pkg_setup() {

diff --git a/app-admin/ananicy-cpp/files/ananicy-cpp-1.1.1-clang-19.patch 
b/app-admin/ananicy-cpp/files/ananicy-cpp-1.1.1-clang-19.patch
new file mode 100644
index 0000000000..1a2ffadcc7
--- /dev/null
+++ b/app-admin/ananicy-cpp/files/ananicy-cpp-1.1.1-clang-19.patch
@@ -0,0 +1,45 @@
+https://gitlab.com/ananicy-cpp/ananicy-cpp/-/commit/b2589a9b1faa2ecf54aeede40ea781c33bfb09a8
+From: John Titor <[email protected]>
+Date: Fri, 27 Dec 2024 11:37:04 +0530
+Subject: [PATCH] atomic-queue: fix build with clang 19
+
+> error: a template argument list is expected after a name prefixed by the 
template keyword [-Wmissing-template-arg-list-after-template-kw]
+
+Co-authored-by: Reno Dakota <[email protected]>
+--- a/include/utility/atomic_queue/atomic_queue.h
++++ b/include/utility/atomic_queue/atomic_queue.h
+@@ -393,13 +393,13 @@ class AtomicQueue2 : public 
AtomicQueueCommon<AtomicQueue2<T, SIZE, MINIMIZE_CON
+ 
+     T do_pop(unsigned tail) noexcept {
+         unsigned index = details::remap_index<SHUFFLE_BITS>(tail % size_);
+-        return Base::template do_pop_any(states_[index], elements_[index]);
++        return Base::template do_pop_any<T>(states_[index], elements_[index]);
+     }
+ 
+     template<class U>
+     void do_push(U&& element, unsigned head) noexcept {
+         unsigned index = details::remap_index<SHUFFLE_BITS>(head % size_);
+-        Base::template do_push_any(std::forward<U>(element), states_[index], 
elements_[index]);
++        Base::template do_push_any<U>(std::forward<U>(element), 
states_[index], elements_[index]);
+     }
+ 
+ public:
+@@ -521,13 +521,13 @@ class AtomicQueueB2 : public 
AtomicQueueCommon<AtomicQueueB2<T, A, MAXIMIZE_THRO
+ 
+     T do_pop(unsigned tail) noexcept {
+         unsigned index = details::remap_index<SHUFFLE_BITS>(tail & (size_ - 
1));
+-        return Base::template do_pop_any(states_[index], elements_[index]);
++        return Base::template do_pop_any<T>(states_[index], elements_[index]);
+     }
+ 
+     template<class U>
+     void do_push(U&& element, unsigned head) noexcept {
+         unsigned index = details::remap_index<SHUFFLE_BITS>(head & (size_ - 
1));
+-        Base::template do_push_any(std::forward<U>(element), states_[index], 
elements_[index]);
++        Base::template do_push_any<U>(std::forward<U>(element), 
states_[index], elements_[index]);
+     }
+ 
+ public:
+-- 
+GitLab
+

diff --git a/app-admin/ananicy-cpp/files/ananicy-cpp-1.1.1-glibc-2.41.patch 
b/app-admin/ananicy-cpp/files/ananicy-cpp-1.1.1-glibc-2.41.patch
new file mode 100644
index 0000000000..a6747de7a0
--- /dev/null
+++ b/app-admin/ananicy-cpp/files/ananicy-cpp-1.1.1-glibc-2.41.patch
@@ -0,0 +1,103 @@
+https://gitlab.com/ananicy-cpp/ananicy-cpp/-/commit/99e64815bacaf3baa28ad89d022e33ebede94fa9
+From: Antoine Viallon <[email protected]>
+Date: Thu, 3 Apr 2025 14:24:10 +0200
+Subject: [PATCH] [Platform/Linux] rename sched_*attr symbols to avoid
+ conflicts with newer GLibc versions
+
+(cherry picked from commit 6748f23c5f1eaf6c15cb771a3804e3e527015903)
+--- a/src/platform/linux/priority.cpp
++++ b/src/platform/linux/priority.cpp
+@@ -185,12 +185,12 @@ std::string_view test_latnice_support() noexcept {
+ 
+   // Use this here instead of function,
+   // to suppress errors from function call.
+-  struct sched_attr attr = {
+-      .size = sizeof(struct sched_attr),
++  struct ananicy_sched_attr attr = {
++      .size = sizeof(struct ananicy_sched_attr),
+       .sched_flags = SCHED_FLAG_LATENCY_NICE | SCHED_FLAG_KEEP_PARAMS,
+       .sched_latency_nice = latency_nice,
+   };
+-  const std::int32_t err = sched_setattr(pid, &attr, 0);
++  const std::int32_t err = ananicy_sched_setattr(pid, &attr, 0);
+   bool               is_supported{};
+   if (err == 0 && errno == 0) {
+     set_latnice(pid, saved_latnice);
+--- a/src/platform/linux/process_info.cpp
++++ b/src/platform/linux/process_info.cpp
+@@ -104,16 +104,16 @@ static std::string get_sched_policy_name(unsigned 
sched_policy) {
+   }
+ }
+ 
+-static sched_attr get_sched_attributes(process_id_t pid) {
++static ananicy_sched_attr get_sched_attributes(process_id_t pid) {
+ 
+-  ::sched_attr attr{};
+-  sched_getattr(static_cast<pid_t>(pid), &attr, sizeof(attr), 0);
++  ::ananicy_sched_attr attr{};
++  ananicy_sched_getattr(static_cast<pid_t>(pid), &attr, sizeof(attr), 0);
+ 
+   return attr;
+ }
+ 
+ bool is_realtime(process_id_t pid) {
+-  const sched_attr attr = get_sched_attributes(pid);
++  const ananicy_sched_attr attr = get_sched_attributes(pid);
+   return attr.sched_priority > 0;
+ }
+ 
+--- a/src/platform/linux/syscalls.h
++++ b/src/platform/linux/syscalls.h
+@@ -69,7 +69,7 @@ static int ioprio_get(__priority_which_t _which, id_t _who) {
+ #define SCHED_FLAG_KEEP_POLICY          0x08
+ #endif
+ 
+-struct [[gnu::packed]] sched_attr {
++struct [[gnu::packed]] ananicy_sched_attr {
+   uint32_t size;
+ 
+   uint32_t sched_policy; // SCHED_(FIFO,RR,DEADLINE,OTHER,BATCH,IDLE, etc.)
+@@ -94,20 +94,20 @@ struct [[gnu::packed]] sched_attr {
+   int32_t sched_latency_nice;
+ };
+ 
+-static int sched_setattr(pid_t pid, const struct sched_attr *attr,
++static int ananicy_sched_setattr(pid_t pid, const struct ananicy_sched_attr 
*attr,
+                          unsigned int flags) {
+   return static_cast<int>(syscall(__NR_sched_setattr, pid, attr, flags));
+ }
+ 
+-static int sched_getattr(pid_t pid, struct sched_attr *attr, unsigned int 
size,
++static int ananicy_sched_getattr(pid_t pid, struct ananicy_sched_attr *attr, 
unsigned int size,
+                          unsigned int flags) {
+   return static_cast<int>(syscall(__NR_sched_getattr, pid, attr, size, 
flags));
+ }
+ 
+ static int get_latnice(pid_t pid) {
+   // pid==0 refers to calling thread
+-  struct sched_attr attr = { .size = sizeof(struct sched_attr) };
+-  if (sched_getattr(pid, &attr, sizeof(attr), 0) < 0) {
++  struct ananicy_sched_attr attr = { .size = sizeof(struct 
ananicy_sched_attr) };
++  if (ananicy_sched_getattr(pid, &attr, sizeof(attr), 0) < 0) {
+       std::perror("sched_getattr");
+   }
+   return attr.sched_latency_nice; // defaults to 0
+@@ -115,12 +115,12 @@ static int get_latnice(pid_t pid) {
+ 
+ static int set_latnice(pid_t pid, int latency_nice) {
+   // pid==0 refers to calling thread
+-  struct sched_attr attr = {
+-    .size = sizeof(struct sched_attr),
++  struct ananicy_sched_attr attr = {
++    .size = sizeof(struct ananicy_sched_attr),
+     .sched_flags = SCHED_FLAG_LATENCY_NICE | SCHED_FLAG_KEEP_PARAMS,
+     .sched_latency_nice = latency_nice,
+   };
+-  const int err = sched_setattr(pid, &attr, 0);
++  const int err = ananicy_sched_setattr(pid, &attr, 0);
+   if (err < 0) {
+     // sched_setattr failed
+     if (errno == EINVAL) {
+-- 
+GitLab
+

Reply via email to