diff mbox series

[meta-arago,scarthgap/master,4/6] meta-arago-extras: Backport abseil-cpp from meta-oe master

Message ID 20250117002520.627504-5-afd@ti.com
State Superseded
Delegated to: Ryan Eatmon
Headers show
Series Add ONNX Runtime | expand

Commit Message

Andrew Davis Jan. 17, 2025, 12:25 a.m. UTC
ONNX and ONNX Runtime depend on a very specific version of Abseil that
is not the version included with meta-oe scarthgap. But it just so
happens to be the version provided in current meta-oe master.
Backport this version for our use in scarthgap.

This patch is not needed for meta-arago master branch. If meta-oe
master at some point moves to a newer incompatible version of
Abseil we will deal with this dependency in a different way.

Signed-off-by: Andrew Davis <afd@ti.com>
---
 .../0001-absl-always-use-asm-sgidefs.h.patch  |  38 +++++++
 ...e-maes-option-from-cross-compilation.patch |  38 +++++++
 ...e-neon-option-from-cross-compilation.patch |  49 +++++++++
 .../abseil-cpp/0004-abseil-ppc-fixes.patch    | 103 ++++++++++++++++++
 ...-virtual-dtor-in-the-flags-are-neede.patch |  30 +++++
 .../abseil-cpp/abseil-cpp_20240722.0.bb       |  54 +++++++++
 6 files changed, 312 insertions(+)
 create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch
 create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch
 create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch
 create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch
 create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch
 create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb

Comments

Denys Dmytriyenko Jan. 22, 2025, 11:02 p.m. UTC | #1
On Thu, Jan 16, 2025 at 06:25:18PM -0600, Andrew Davis via lists.yoctoproject.org wrote:
> ONNX and ONNX Runtime depend on a very specific version of Abseil that
> is not the version included with meta-oe scarthgap. But it just so
> happens to be the version provided in current meta-oe master.
> Backport this version for our use in scarthgap.
> 
> This patch is not needed for meta-arago master branch. If meta-oe
> master at some point moves to a newer incompatible version of
> Abseil we will deal with this dependency in a different way.

Just a note here - there's an effort to improve meta-arago-* layers quality 
and eventually seek a Yocto Project Compatible status for them. Adding a 
version of a recipe that exists upstream is possible, but requires some extra 
attention, especially when it's a newer version and gets preferred by BitBake 
automatically. One way to do it is to lower its default preference with 
DEFAULT_PREFERENCE = "-1" and then set a corresponding PREFERRED_VERSION in 
the distro conf...


> Signed-off-by: Andrew Davis <afd@ti.com>
> ---
>  .../0001-absl-always-use-asm-sgidefs.h.patch  |  38 +++++++
>  ...e-maes-option-from-cross-compilation.patch |  38 +++++++
>  ...e-neon-option-from-cross-compilation.patch |  49 +++++++++
>  .../abseil-cpp/0004-abseil-ppc-fixes.patch    | 103 ++++++++++++++++++
>  ...-virtual-dtor-in-the-flags-are-neede.patch |  30 +++++
>  .../abseil-cpp/abseil-cpp_20240722.0.bb       |  54 +++++++++
>  6 files changed, 312 insertions(+)
>  create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch
>  create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch
>  create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch
>  create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch
>  create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch
>  create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb
> 
> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch
> new file mode 100644
> index 00000000..6fecf256
> --- /dev/null
> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch
> @@ -0,0 +1,38 @@
> +From 11faa06436fdeb0c9948080a11f9a99d3b5ba16c Mon Sep 17 00:00:00 2001
> +From: Khem Raj <raj.khem@gmail.com>
> +Date: Thu, 9 Apr 2020 13:06:27 -0700
> +Subject: [PATCH] absl: always use <asm/sgidefs.h>
> +
> +Fixes mips/musl build, since sgidefs.h is not present on all C libraries
> +but on linux asm/sgidefs.h is there and contains same definitions, using
> +that makes it portable.
> +
> +Upstream-Status: Pending
> +
> +Signed-off-by: Khem Raj <raj.khem@gmail.com>
> +---
> + absl/base/internal/direct_mmap.h | 6 +-----
> + 1 file changed, 1 insertion(+), 5 deletions(-)
> +
> +diff --git a/absl/base/internal/direct_mmap.h b/absl/base/internal/direct_mmap.h
> +index 1beb2ee4..140b0697 100644
> +--- a/absl/base/internal/direct_mmap.h
> ++++ b/absl/base/internal/direct_mmap.h
> +@@ -41,13 +41,9 @@
> + 
> + #ifdef __mips__
> + // Include definitions of the ABI currently in use.
> +-#if defined(__BIONIC__) || !defined(__GLIBC__)
> +-// Android doesn't have sgidefs.h, but does have asm/sgidefs.h, which has the
> ++// bionic/musl C libs don't have sgidefs.h, but do have asm/sgidefs.h, which has the
> + // definitions we need.
> + #include <asm/sgidefs.h>
> +-#else
> +-#include <sgidefs.h>
> +-#endif  // __BIONIC__ || !__GLIBC__
> + #endif  // __mips__
> + 
> + // SYS_mmap and SYS_munmap are not defined in Android.
> +-- 
> +2.25.1
> +
> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch
> new file mode 100644
> index 00000000..d49e860f
> --- /dev/null
> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch
> @@ -0,0 +1,38 @@
> +From a573ccd57e713486e7d8e782d6b3b34fde01ff9e Mon Sep 17 00:00:00 2001
> +From: Sinan Kaya <sinan.kaya@microsoft.com>
> +Date: Mon, 3 Feb 2020 03:25:57 +0000
> +Subject: [PATCH] Remove maes option from cross-compilation
> +
> +Upstream-Status: Pending
> +---
> + absl/copts/GENERATED_AbseilCopts.cmake | 4 ----
> + absl/copts/GENERATED_copts.bzl         | 4 ----
> + 2 files changed, 8 deletions(-)
> +
> +diff --git a/absl/copts/GENERATED_AbseilCopts.cmake b/absl/copts/GENERATED_AbseilCopts.cmake
> +index da2282fe..5e0e8dfd 100644
> +--- a/absl/copts/GENERATED_AbseilCopts.cmake
> ++++ b/absl/copts/GENERATED_AbseilCopts.cmake
> +@@ -229,7 +229,3 @@ list(APPEND ABSL_RANDOM_HWAES_ARM64_FLAGS
> + list(APPEND ABSL_RANDOM_HWAES_MSVC_X64_FLAGS
> + )
> + 
> +-list(APPEND ABSL_RANDOM_HWAES_X64_FLAGS
> +-    "-maes"
> +-    "-msse4.1"
> +-)
> +diff --git a/absl/copts/GENERATED_copts.bzl b/absl/copts/GENERATED_copts.bzl
> +index b9e0071e..0072008c 100644
> +--- a/absl/copts/GENERATED_copts.bzl
> ++++ b/absl/copts/GENERATED_copts.bzl
> +@@ -230,7 +230,3 @@ ABSL_RANDOM_HWAES_ARM64_FLAGS = [
> + ABSL_RANDOM_HWAES_MSVC_X64_FLAGS = [
> + ]
> + 
> +-ABSL_RANDOM_HWAES_X64_FLAGS = [
> +-    "-maes",
> +-    "-msse4.1",
> +-]
> +-- 
> +2.25.1
> +
> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch
> new file mode 100644
> index 00000000..c82b9e1b
> --- /dev/null
> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch
> @@ -0,0 +1,49 @@
> +From 632632508daf8bb3a5800dac937ffc33c6d85973 Mon Sep 17 00:00:00 2001
> +From: Jonas Gorski <jonas.gorski@bisdn.de>
> +Date: Thu, 16 Jun 2022 11:46:31 +0000
> +Subject: [PATCH] Remove neon option from cross compilation
> +
> +Not every arm platform supports neon instructions, so do not enforce
> +them.
> +
> +Upstream-Status: Pending
> +
> +Signed-off-by: Jonas Gorski <jonas.gorski@bisdn.de>
> +---
> + absl/copts/GENERATED_AbseilCopts.cmake | 4 ----
> + absl/copts/GENERATED_copts.bzl         | 4 ----
> + 2 files changed, 8 deletions(-)
> +
> +diff --git a/absl/copts/GENERATED_AbseilCopts.cmake b/absl/copts/GENERATED_AbseilCopts.cmake
> +index 5e0e8dfd..57cfc4d3 100644
> +--- a/absl/copts/GENERATED_AbseilCopts.cmake
> ++++ b/absl/copts/GENERATED_AbseilCopts.cmake
> +@@ -218,10 +218,6 @@ list(APPEND ABSL_MSVC_TEST_FLAGS
> +     "/DNOMINMAX"
> + )
> + 
> +-list(APPEND ABSL_RANDOM_HWAES_ARM32_FLAGS
> +-    "-mfpu=neon"
> +-)
> +-
> + list(APPEND ABSL_RANDOM_HWAES_ARM64_FLAGS
> +     "-march=armv8-a+crypto"
> + )
> +diff --git a/absl/copts/GENERATED_copts.bzl b/absl/copts/GENERATED_copts.bzl
> +index 0072008c..72840fda 100644
> +--- a/absl/copts/GENERATED_copts.bzl
> ++++ b/absl/copts/GENERATED_copts.bzl
> +@@ -219,10 +219,6 @@ ABSL_MSVC_TEST_FLAGS = [
> +     "/DNOMINMAX",
> + ]
> + 
> +-ABSL_RANDOM_HWAES_ARM32_FLAGS = [
> +-    "-mfpu=neon",
> +-]
> +-
> + ABSL_RANDOM_HWAES_ARM64_FLAGS = [
> +     "-march=armv8-a+crypto",
> + ]
> +-- 
> +2.25.1
> +
> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch
> new file mode 100644
> index 00000000..ba0cd669
> --- /dev/null
> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch
> @@ -0,0 +1,103 @@
> +From f9607924225ca59fb6c60222e6424b84e6f70029 Mon Sep 17 00:00:00 2001
> +From: Khem Raj <raj.khem@gmail.com>
> +Date: Sat, 21 Sep 2024 20:53:06 +0800
> +Subject: [PATCH] abseil: ppc fixes
> +
> +An all-in-one patch that fixes several issues:
> +
> +1) UnscaledCycleClock not fully implemented for ppc*-musl (disabled on musl)
> +2) powerpc stacktrace implementation only works on glibc (disabled on musl)
> +3) powerpc stacktrace implementation has ppc64 assumptions (fixed)
> +4) examine_stack.cpp makes glibc assumptions on powerpc (fixed)
> +
> +Sourced from void linux
> +
> +Upstream-Status: Pending
> +
> +Signed-off-by: Khem Raj <raj.khem@gmail.com>
> +---
> + absl/base/internal/unscaledcycleclock.cc       | 4 ++--
> + absl/base/internal/unscaledcycleclock_config.h | 3 ++-
> + absl/debugging/internal/examine_stack.cc       | 8 +++++++-
> + absl/debugging/internal/stacktrace_config.h    | 2 +-
> + 4 files changed, 12 insertions(+), 5 deletions(-)
> +
> +diff --git a/absl/base/internal/unscaledcycleclock.cc b/absl/base/internal/unscaledcycleclock.cc
> +index a0bf3a65..103b4f6a 100644
> +--- a/absl/base/internal/unscaledcycleclock.cc
> ++++ b/absl/base/internal/unscaledcycleclock.cc
> +@@ -20,7 +20,7 @@
> + #include <intrin.h>
> + #endif
> + 
> +-#if defined(__powerpc__) || defined(__ppc__)
> ++#if (defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)
> + #ifdef __GLIBC__
> + #include <sys/platform/ppc.h>
> + #elif defined(__FreeBSD__)
> +@@ -58,7 +58,7 @@ double UnscaledCycleClock::Frequency() {
> +   return base_internal::NominalCPUFrequency();
> + }
> + 
> +-#elif defined(__powerpc__) || defined(__ppc__)
> ++#elif (defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)
> + 
> + int64_t UnscaledCycleClock::Now() {
> + #ifdef __GLIBC__
> +diff --git a/absl/base/internal/unscaledcycleclock_config.h b/absl/base/internal/unscaledcycleclock_config.h
> +index 43a3dabe..196a8535 100644
> +--- a/absl/base/internal/unscaledcycleclock_config.h
> ++++ b/absl/base/internal/unscaledcycleclock_config.h
> +@@ -21,7 +21,8 @@
> + 
> + // The following platforms have an implementation of a hardware counter.
> + #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \
> +-    defined(__powerpc__) || defined(__ppc__) || defined(_M_IX86) ||     \
> ++    ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || \
> ++    defined(_M_IX86) ||     \
> +     (defined(_M_X64) && !defined(_M_ARM64EC))
> + #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1
> + #else
> +diff --git a/absl/debugging/internal/examine_stack.cc b/absl/debugging/internal/examine_stack.cc
> +index 3dd6ba1a..f923b055 100644
> +--- a/absl/debugging/internal/examine_stack.cc
> ++++ b/absl/debugging/internal/examine_stack.cc
> +@@ -36,6 +36,10 @@
> + #include <csignal>
> + #include <cstdio>
> + 
> ++#if defined(__powerpc__)
> ++#include <asm/ptrace.h>
> ++#endif
> ++
> + #include "absl/base/attributes.h"
> + #include "absl/base/internal/raw_logging.h"
> + #include "absl/base/macros.h"
> +@@ -177,8 +181,10 @@ void* GetProgramCounter(void* const vuc) {
> +     return reinterpret_cast<void*>(context->uc_mcontext.pc);
> + #elif defined(__powerpc64__)
> +     return reinterpret_cast<void*>(context->uc_mcontext.gp_regs[32]);
> +-#elif defined(__powerpc__)
> ++#elif defined(__powerpc__) && defined(__GLIBC__)
> +     return reinterpret_cast<void*>(context->uc_mcontext.uc_regs->gregs[32]);
> ++#elif defined(__powerpc__)
> ++    return reinterpret_cast<void*>((context->uc_regs)->gregs[32]);
> + #elif defined(__riscv)
> +     return reinterpret_cast<void*>(context->uc_mcontext.__gregs[REG_PC]);
> + #elif defined(__s390__) && !defined(__s390x__)
> +diff --git a/absl/debugging/internal/stacktrace_config.h b/absl/debugging/internal/stacktrace_config.h
> +index 3929b1b7..23d5e504 100644
> +--- a/absl/debugging/internal/stacktrace_config.h
> ++++ b/absl/debugging/internal/stacktrace_config.h
> +@@ -60,7 +60,7 @@
> + #elif defined(__i386__) || defined(__x86_64__)
> + #define ABSL_STACKTRACE_INL_HEADER \
> +   "absl/debugging/internal/stacktrace_x86-inl.inc"
> +-#elif defined(__ppc__) || defined(__PPC__)
> ++#elif (defined(__ppc__) || defined(__PPC__)) && defined(__GLIBC__)
> + #define ABSL_STACKTRACE_INL_HEADER \
> +   "absl/debugging/internal/stacktrace_powerpc-inl.inc"
> + #elif defined(__aarch64__)
> +-- 
> +2.25.1
> +
> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch
> new file mode 100644
> index 00000000..9a4fc0b4
> --- /dev/null
> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch
> @@ -0,0 +1,30 @@
> +From 9cb5e5d15c142e5cc43a2c1db87c8e4e5b6d38a5 Mon Sep 17 00:00:00 2001
> +From: Derek Mauro <dmauro@google.com>
> +Date: Mon, 5 Aug 2024 07:35:05 -0700
> +Subject: [PATCH] Don't match -Wnon-virtual-dtor in the "flags are needed to
> + suppress warnings in headers". It should fall through to the "don't impose
> + our warnings on others" case. Do this by matching on "-Wno-*" instead of
> + "-Wno*".
> +
> +Fixes #1737
> +
> +PiperOrigin-RevId: 659548798
> +Change-Id: I49d7ba7ddcd7be30f946fca90ba9be467181e854
> +Upstream-Status: Backport [https://github.com/abseil/abseil-cpp/commit/9cb5e5d15c142e5cc43a2c1db87c8e4e5b6d38a5]
> +---
> + CMake/AbseilHelpers.cmake | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake
> +index b177e590..3c4c92fe 100644
> +--- a/CMake/AbseilHelpers.cmake
> ++++ b/CMake/AbseilHelpers.cmake
> +@@ -195,7 +195,7 @@ function(absl_cc_library)
> +         # specified platform. Filter both of them out before the successor
> +         # reaches the "^-m" filter.
> +         set(skip_next_cflag ON)
> +-      elseif(${cflag} MATCHES "^(-Wno|/wd)")
> ++      elseif(${cflag} MATCHES "^(-Wno-|/wd)")
> +         # These flags are needed to suppress warnings that might fire in our headers.
> +         set(PC_CFLAGS "${PC_CFLAGS} ${cflag}")
> +       elseif(${cflag} MATCHES "^(-W|/w[1234eo])")
> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb
> new file mode 100644
> index 00000000..4bfc2100
> --- /dev/null
> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb
> @@ -0,0 +1,54 @@
> +SUMMARY = "Abseil is a cpp library like STL"
> +DESCRIPTION = "Abseil provides pieces missing from the C++ standard. Contains \
> +additional useful libraries like algorithm, container, debugging, hash, memory, \
> +meta, numeric, strings, synchronization, time, types and utility."
> +HOMEPAGE = "https://abseil.io/"
> +SECTION = "libs"
> +LICENSE = "Apache-2.0"
> +LIC_FILES_CHKSUM = "file://LICENSE;md5=df52c6edb7adc22e533b2bacc3bd3915"
> +
> +SRCREV = "4447c7562e3bc702ade25105912dce503f0c4010"
> +BRANCH = "lts_2024_07_22"
> +SRC_URI = "git://github.com/abseil/abseil-cpp;branch=${BRANCH};protocol=https \
> +           file://0001-absl-always-use-asm-sgidefs.h.patch             \
> +           file://0002-Remove-maes-option-from-cross-compilation.patch \
> +           file://0003-Remove-neon-option-from-cross-compilation.patch \
> +           file://0004-abseil-ppc-fixes.patch \
> +           file://0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch \
> +          "
> +
> +S = "${WORKDIR}/git"
> +
> +inherit cmake
> +
> +EXTRA_OECMAKE = "-DBUILD_SHARED_LIBS=ON \
> +                 -DBUILD_TESTING=OFF    \
> +                 -DABSL_ENABLE_INSTALL=ON \
> +                "
> +
> +SYSROOT_DIRS:append:class-nativesdk:mingw32 = " ${bindir}"
> +
> +PACKAGES_DYNAMIC += "^libabsl-*"
> +PACKAGES_DYNAMIC:class-native = ""
> +
> +PACKAGESPLITFUNCS =+ "split_dynamic_packages"
> +
> +python split_dynamic_packages() {
> +    libdir = d.getVar('libdir')
> +
> +    libpackages = do_split_packages(
> +        d,
> +        root=libdir,
> +        file_regex=r'^libabsl_(.*)\.so\..*$',
> +        output_pattern='libabsl-%s',
> +        description="abseil shared library %s",
> +        prepend=True,
> +        extra_depends='',
> +    )
> +    if libpackages:
> +        d.appendVar('RDEPENDS:' + d.getVar('PN'), ' ' + ' '.join(libpackages))
> +}
> +
> +ALLOW_EMPTY:${PN} = "1"
> +
> +BBCLASSEXTEND = "native nativesdk"
> -- 
> 2.39.2
Andrew Davis Jan. 23, 2025, 3:49 p.m. UTC | #2
On 1/22/25 5:02 PM, Denys Dmytriyenko wrote:
> On Thu, Jan 16, 2025 at 06:25:18PM -0600, Andrew Davis via lists.yoctoproject.org wrote:
>> ONNX and ONNX Runtime depend on a very specific version of Abseil that
>> is not the version included with meta-oe scarthgap. But it just so
>> happens to be the version provided in current meta-oe master.
>> Backport this version for our use in scarthgap.
>>
>> This patch is not needed for meta-arago master branch. If meta-oe
>> master at some point moves to a newer incompatible version of
>> Abseil we will deal with this dependency in a different way.
> 
> Just a note here - there's an effort to improve meta-arago-* layers quality
> and eventually seek a Yocto Project Compatible status for them. Adding a
> version of a recipe that exists upstream is possible, but requires some extra
> attention, especially when it's a newer version and gets preferred by BitBake
> automatically. One way to do it is to lower its default preference with
> DEFAULT_PREFERENCE = "-1" and then set a corresponding PREFERRED_VERSION in
> the distro conf...
> 

Good info, thanks, if I need to make a change like this going forward I'll do
it like that. (I'm assuming our scarthgap branch isn't going to be a candidate
for this Yocto Compat status, and this patch is only for scarthgap so no fix
needed for this patch?)

Andrew

> 
>> Signed-off-by: Andrew Davis <afd@ti.com>
>> ---
>>   .../0001-absl-always-use-asm-sgidefs.h.patch  |  38 +++++++
>>   ...e-maes-option-from-cross-compilation.patch |  38 +++++++
>>   ...e-neon-option-from-cross-compilation.patch |  49 +++++++++
>>   .../abseil-cpp/0004-abseil-ppc-fixes.patch    | 103 ++++++++++++++++++
>>   ...-virtual-dtor-in-the-flags-are-neede.patch |  30 +++++
>>   .../abseil-cpp/abseil-cpp_20240722.0.bb       |  54 +++++++++
>>   6 files changed, 312 insertions(+)
>>   create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch
>>   create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch
>>   create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch
>>   create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch
>>   create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch
>>   create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb
>>
>> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch
>> new file mode 100644
>> index 00000000..6fecf256
>> --- /dev/null
>> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch
>> @@ -0,0 +1,38 @@
>> +From 11faa06436fdeb0c9948080a11f9a99d3b5ba16c Mon Sep 17 00:00:00 2001
>> +From: Khem Raj <raj.khem@gmail.com>
>> +Date: Thu, 9 Apr 2020 13:06:27 -0700
>> +Subject: [PATCH] absl: always use <asm/sgidefs.h>
>> +
>> +Fixes mips/musl build, since sgidefs.h is not present on all C libraries
>> +but on linux asm/sgidefs.h is there and contains same definitions, using
>> +that makes it portable.
>> +
>> +Upstream-Status: Pending
>> +
>> +Signed-off-by: Khem Raj <raj.khem@gmail.com>
>> +---
>> + absl/base/internal/direct_mmap.h | 6 +-----
>> + 1 file changed, 1 insertion(+), 5 deletions(-)
>> +
>> +diff --git a/absl/base/internal/direct_mmap.h b/absl/base/internal/direct_mmap.h
>> +index 1beb2ee4..140b0697 100644
>> +--- a/absl/base/internal/direct_mmap.h
>> ++++ b/absl/base/internal/direct_mmap.h
>> +@@ -41,13 +41,9 @@
>> +
>> + #ifdef __mips__
>> + // Include definitions of the ABI currently in use.
>> +-#if defined(__BIONIC__) || !defined(__GLIBC__)
>> +-// Android doesn't have sgidefs.h, but does have asm/sgidefs.h, which has the
>> ++// bionic/musl C libs don't have sgidefs.h, but do have asm/sgidefs.h, which has the
>> + // definitions we need.
>> + #include <asm/sgidefs.h>
>> +-#else
>> +-#include <sgidefs.h>
>> +-#endif  // __BIONIC__ || !__GLIBC__
>> + #endif  // __mips__
>> +
>> + // SYS_mmap and SYS_munmap are not defined in Android.
>> +--
>> +2.25.1
>> +
>> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch
>> new file mode 100644
>> index 00000000..d49e860f
>> --- /dev/null
>> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch
>> @@ -0,0 +1,38 @@
>> +From a573ccd57e713486e7d8e782d6b3b34fde01ff9e Mon Sep 17 00:00:00 2001
>> +From: Sinan Kaya <sinan.kaya@microsoft.com>
>> +Date: Mon, 3 Feb 2020 03:25:57 +0000
>> +Subject: [PATCH] Remove maes option from cross-compilation
>> +
>> +Upstream-Status: Pending
>> +---
>> + absl/copts/GENERATED_AbseilCopts.cmake | 4 ----
>> + absl/copts/GENERATED_copts.bzl         | 4 ----
>> + 2 files changed, 8 deletions(-)
>> +
>> +diff --git a/absl/copts/GENERATED_AbseilCopts.cmake b/absl/copts/GENERATED_AbseilCopts.cmake
>> +index da2282fe..5e0e8dfd 100644
>> +--- a/absl/copts/GENERATED_AbseilCopts.cmake
>> ++++ b/absl/copts/GENERATED_AbseilCopts.cmake
>> +@@ -229,7 +229,3 @@ list(APPEND ABSL_RANDOM_HWAES_ARM64_FLAGS
>> + list(APPEND ABSL_RANDOM_HWAES_MSVC_X64_FLAGS
>> + )
>> +
>> +-list(APPEND ABSL_RANDOM_HWAES_X64_FLAGS
>> +-    "-maes"
>> +-    "-msse4.1"
>> +-)
>> +diff --git a/absl/copts/GENERATED_copts.bzl b/absl/copts/GENERATED_copts.bzl
>> +index b9e0071e..0072008c 100644
>> +--- a/absl/copts/GENERATED_copts.bzl
>> ++++ b/absl/copts/GENERATED_copts.bzl
>> +@@ -230,7 +230,3 @@ ABSL_RANDOM_HWAES_ARM64_FLAGS = [
>> + ABSL_RANDOM_HWAES_MSVC_X64_FLAGS = [
>> + ]
>> +
>> +-ABSL_RANDOM_HWAES_X64_FLAGS = [
>> +-    "-maes",
>> +-    "-msse4.1",
>> +-]
>> +--
>> +2.25.1
>> +
>> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch
>> new file mode 100644
>> index 00000000..c82b9e1b
>> --- /dev/null
>> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch
>> @@ -0,0 +1,49 @@
>> +From 632632508daf8bb3a5800dac937ffc33c6d85973 Mon Sep 17 00:00:00 2001
>> +From: Jonas Gorski <jonas.gorski@bisdn.de>
>> +Date: Thu, 16 Jun 2022 11:46:31 +0000
>> +Subject: [PATCH] Remove neon option from cross compilation
>> +
>> +Not every arm platform supports neon instructions, so do not enforce
>> +them.
>> +
>> +Upstream-Status: Pending
>> +
>> +Signed-off-by: Jonas Gorski <jonas.gorski@bisdn.de>
>> +---
>> + absl/copts/GENERATED_AbseilCopts.cmake | 4 ----
>> + absl/copts/GENERATED_copts.bzl         | 4 ----
>> + 2 files changed, 8 deletions(-)
>> +
>> +diff --git a/absl/copts/GENERATED_AbseilCopts.cmake b/absl/copts/GENERATED_AbseilCopts.cmake
>> +index 5e0e8dfd..57cfc4d3 100644
>> +--- a/absl/copts/GENERATED_AbseilCopts.cmake
>> ++++ b/absl/copts/GENERATED_AbseilCopts.cmake
>> +@@ -218,10 +218,6 @@ list(APPEND ABSL_MSVC_TEST_FLAGS
>> +     "/DNOMINMAX"
>> + )
>> +
>> +-list(APPEND ABSL_RANDOM_HWAES_ARM32_FLAGS
>> +-    "-mfpu=neon"
>> +-)
>> +-
>> + list(APPEND ABSL_RANDOM_HWAES_ARM64_FLAGS
>> +     "-march=armv8-a+crypto"
>> + )
>> +diff --git a/absl/copts/GENERATED_copts.bzl b/absl/copts/GENERATED_copts.bzl
>> +index 0072008c..72840fda 100644
>> +--- a/absl/copts/GENERATED_copts.bzl
>> ++++ b/absl/copts/GENERATED_copts.bzl
>> +@@ -219,10 +219,6 @@ ABSL_MSVC_TEST_FLAGS = [
>> +     "/DNOMINMAX",
>> + ]
>> +
>> +-ABSL_RANDOM_HWAES_ARM32_FLAGS = [
>> +-    "-mfpu=neon",
>> +-]
>> +-
>> + ABSL_RANDOM_HWAES_ARM64_FLAGS = [
>> +     "-march=armv8-a+crypto",
>> + ]
>> +--
>> +2.25.1
>> +
>> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch
>> new file mode 100644
>> index 00000000..ba0cd669
>> --- /dev/null
>> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch
>> @@ -0,0 +1,103 @@
>> +From f9607924225ca59fb6c60222e6424b84e6f70029 Mon Sep 17 00:00:00 2001
>> +From: Khem Raj <raj.khem@gmail.com>
>> +Date: Sat, 21 Sep 2024 20:53:06 +0800
>> +Subject: [PATCH] abseil: ppc fixes
>> +
>> +An all-in-one patch that fixes several issues:
>> +
>> +1) UnscaledCycleClock not fully implemented for ppc*-musl (disabled on musl)
>> +2) powerpc stacktrace implementation only works on glibc (disabled on musl)
>> +3) powerpc stacktrace implementation has ppc64 assumptions (fixed)
>> +4) examine_stack.cpp makes glibc assumptions on powerpc (fixed)
>> +
>> +Sourced from void linux
>> +
>> +Upstream-Status: Pending
>> +
>> +Signed-off-by: Khem Raj <raj.khem@gmail.com>
>> +---
>> + absl/base/internal/unscaledcycleclock.cc       | 4 ++--
>> + absl/base/internal/unscaledcycleclock_config.h | 3 ++-
>> + absl/debugging/internal/examine_stack.cc       | 8 +++++++-
>> + absl/debugging/internal/stacktrace_config.h    | 2 +-
>> + 4 files changed, 12 insertions(+), 5 deletions(-)
>> +
>> +diff --git a/absl/base/internal/unscaledcycleclock.cc b/absl/base/internal/unscaledcycleclock.cc
>> +index a0bf3a65..103b4f6a 100644
>> +--- a/absl/base/internal/unscaledcycleclock.cc
>> ++++ b/absl/base/internal/unscaledcycleclock.cc
>> +@@ -20,7 +20,7 @@
>> + #include <intrin.h>
>> + #endif
>> +
>> +-#if defined(__powerpc__) || defined(__ppc__)
>> ++#if (defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)
>> + #ifdef __GLIBC__
>> + #include <sys/platform/ppc.h>
>> + #elif defined(__FreeBSD__)
>> +@@ -58,7 +58,7 @@ double UnscaledCycleClock::Frequency() {
>> +   return base_internal::NominalCPUFrequency();
>> + }
>> +
>> +-#elif defined(__powerpc__) || defined(__ppc__)
>> ++#elif (defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)
>> +
>> + int64_t UnscaledCycleClock::Now() {
>> + #ifdef __GLIBC__
>> +diff --git a/absl/base/internal/unscaledcycleclock_config.h b/absl/base/internal/unscaledcycleclock_config.h
>> +index 43a3dabe..196a8535 100644
>> +--- a/absl/base/internal/unscaledcycleclock_config.h
>> ++++ b/absl/base/internal/unscaledcycleclock_config.h
>> +@@ -21,7 +21,8 @@
>> +
>> + // The following platforms have an implementation of a hardware counter.
>> + #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \
>> +-    defined(__powerpc__) || defined(__ppc__) || defined(_M_IX86) ||     \
>> ++    ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || \
>> ++    defined(_M_IX86) ||     \
>> +     (defined(_M_X64) && !defined(_M_ARM64EC))
>> + #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1
>> + #else
>> +diff --git a/absl/debugging/internal/examine_stack.cc b/absl/debugging/internal/examine_stack.cc
>> +index 3dd6ba1a..f923b055 100644
>> +--- a/absl/debugging/internal/examine_stack.cc
>> ++++ b/absl/debugging/internal/examine_stack.cc
>> +@@ -36,6 +36,10 @@
>> + #include <csignal>
>> + #include <cstdio>
>> +
>> ++#if defined(__powerpc__)
>> ++#include <asm/ptrace.h>
>> ++#endif
>> ++
>> + #include "absl/base/attributes.h"
>> + #include "absl/base/internal/raw_logging.h"
>> + #include "absl/base/macros.h"
>> +@@ -177,8 +181,10 @@ void* GetProgramCounter(void* const vuc) {
>> +     return reinterpret_cast<void*>(context->uc_mcontext.pc);
>> + #elif defined(__powerpc64__)
>> +     return reinterpret_cast<void*>(context->uc_mcontext.gp_regs[32]);
>> +-#elif defined(__powerpc__)
>> ++#elif defined(__powerpc__) && defined(__GLIBC__)
>> +     return reinterpret_cast<void*>(context->uc_mcontext.uc_regs->gregs[32]);
>> ++#elif defined(__powerpc__)
>> ++    return reinterpret_cast<void*>((context->uc_regs)->gregs[32]);
>> + #elif defined(__riscv)
>> +     return reinterpret_cast<void*>(context->uc_mcontext.__gregs[REG_PC]);
>> + #elif defined(__s390__) && !defined(__s390x__)
>> +diff --git a/absl/debugging/internal/stacktrace_config.h b/absl/debugging/internal/stacktrace_config.h
>> +index 3929b1b7..23d5e504 100644
>> +--- a/absl/debugging/internal/stacktrace_config.h
>> ++++ b/absl/debugging/internal/stacktrace_config.h
>> +@@ -60,7 +60,7 @@
>> + #elif defined(__i386__) || defined(__x86_64__)
>> + #define ABSL_STACKTRACE_INL_HEADER \
>> +   "absl/debugging/internal/stacktrace_x86-inl.inc"
>> +-#elif defined(__ppc__) || defined(__PPC__)
>> ++#elif (defined(__ppc__) || defined(__PPC__)) && defined(__GLIBC__)
>> + #define ABSL_STACKTRACE_INL_HEADER \
>> +   "absl/debugging/internal/stacktrace_powerpc-inl.inc"
>> + #elif defined(__aarch64__)
>> +--
>> +2.25.1
>> +
>> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch
>> new file mode 100644
>> index 00000000..9a4fc0b4
>> --- /dev/null
>> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch
>> @@ -0,0 +1,30 @@
>> +From 9cb5e5d15c142e5cc43a2c1db87c8e4e5b6d38a5 Mon Sep 17 00:00:00 2001
>> +From: Derek Mauro <dmauro@google.com>
>> +Date: Mon, 5 Aug 2024 07:35:05 -0700
>> +Subject: [PATCH] Don't match -Wnon-virtual-dtor in the "flags are needed to
>> + suppress warnings in headers". It should fall through to the "don't impose
>> + our warnings on others" case. Do this by matching on "-Wno-*" instead of
>> + "-Wno*".
>> +
>> +Fixes #1737
>> +
>> +PiperOrigin-RevId: 659548798
>> +Change-Id: I49d7ba7ddcd7be30f946fca90ba9be467181e854
>> +Upstream-Status: Backport [https://github.com/abseil/abseil-cpp/commit/9cb5e5d15c142e5cc43a2c1db87c8e4e5b6d38a5]
>> +---
>> + CMake/AbseilHelpers.cmake | 2 +-
>> + 1 file changed, 1 insertion(+), 1 deletion(-)
>> +
>> +diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake
>> +index b177e590..3c4c92fe 100644
>> +--- a/CMake/AbseilHelpers.cmake
>> ++++ b/CMake/AbseilHelpers.cmake
>> +@@ -195,7 +195,7 @@ function(absl_cc_library)
>> +         # specified platform. Filter both of them out before the successor
>> +         # reaches the "^-m" filter.
>> +         set(skip_next_cflag ON)
>> +-      elseif(${cflag} MATCHES "^(-Wno|/wd)")
>> ++      elseif(${cflag} MATCHES "^(-Wno-|/wd)")
>> +         # These flags are needed to suppress warnings that might fire in our headers.
>> +         set(PC_CFLAGS "${PC_CFLAGS} ${cflag}")
>> +       elseif(${cflag} MATCHES "^(-W|/w[1234eo])")
>> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb
>> new file mode 100644
>> index 00000000..4bfc2100
>> --- /dev/null
>> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb
>> @@ -0,0 +1,54 @@
>> +SUMMARY = "Abseil is a cpp library like STL"
>> +DESCRIPTION = "Abseil provides pieces missing from the C++ standard. Contains \
>> +additional useful libraries like algorithm, container, debugging, hash, memory, \
>> +meta, numeric, strings, synchronization, time, types and utility."
>> +HOMEPAGE = "https://abseil.io/"
>> +SECTION = "libs"
>> +LICENSE = "Apache-2.0"
>> +LIC_FILES_CHKSUM = "file://LICENSE;md5=df52c6edb7adc22e533b2bacc3bd3915"
>> +
>> +SRCREV = "4447c7562e3bc702ade25105912dce503f0c4010"
>> +BRANCH = "lts_2024_07_22"
>> +SRC_URI = "git://github.com/abseil/abseil-cpp;branch=${BRANCH};protocol=https \
>> +           file://0001-absl-always-use-asm-sgidefs.h.patch             \
>> +           file://0002-Remove-maes-option-from-cross-compilation.patch \
>> +           file://0003-Remove-neon-option-from-cross-compilation.patch \
>> +           file://0004-abseil-ppc-fixes.patch \
>> +           file://0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch \
>> +          "
>> +
>> +S = "${WORKDIR}/git"
>> +
>> +inherit cmake
>> +
>> +EXTRA_OECMAKE = "-DBUILD_SHARED_LIBS=ON \
>> +                 -DBUILD_TESTING=OFF    \
>> +                 -DABSL_ENABLE_INSTALL=ON \
>> +                "
>> +
>> +SYSROOT_DIRS:append:class-nativesdk:mingw32 = " ${bindir}"
>> +
>> +PACKAGES_DYNAMIC += "^libabsl-*"
>> +PACKAGES_DYNAMIC:class-native = ""
>> +
>> +PACKAGESPLITFUNCS =+ "split_dynamic_packages"
>> +
>> +python split_dynamic_packages() {
>> +    libdir = d.getVar('libdir')
>> +
>> +    libpackages = do_split_packages(
>> +        d,
>> +        root=libdir,
>> +        file_regex=r'^libabsl_(.*)\.so\..*$',
>> +        output_pattern='libabsl-%s',
>> +        description="abseil shared library %s",
>> +        prepend=True,
>> +        extra_depends='',
>> +    )
>> +    if libpackages:
>> +        d.appendVar('RDEPENDS:' + d.getVar('PN'), ' ' + ' '.join(libpackages))
>> +}
>> +
>> +ALLOW_EMPTY:${PN} = "1"
>> +
>> +BBCLASSEXTEND = "native nativesdk"
>> -- 
>> 2.39.2
Ryan Eatmon Jan. 23, 2025, 3:56 p.m. UTC | #3
On 1/23/2025 9:49 AM, Andrew Davis wrote:
> On 1/22/25 5:02 PM, Denys Dmytriyenko wrote:
>> On Thu, Jan 16, 2025 at 06:25:18PM -0600, Andrew Davis via 
>> lists.yoctoproject.org wrote:
>>> ONNX and ONNX Runtime depend on a very specific version of Abseil that
>>> is not the version included with meta-oe scarthgap. But it just so
>>> happens to be the version provided in current meta-oe master.
>>> Backport this version for our use in scarthgap.
>>>
>>> This patch is not needed for meta-arago master branch. If meta-oe
>>> master at some point moves to a newer incompatible version of
>>> Abseil we will deal with this dependency in a different way.
>>
>> Just a note here - there's an effort to improve meta-arago-* layers 
>> quality
>> and eventually seek a Yocto Project Compatible status for them. Adding a
>> version of a recipe that exists upstream is possible, but requires 
>> some extra
>> attention, especially when it's a newer version and gets preferred by 
>> BitBake
>> automatically. One way to do it is to lower its default preference with
>> DEFAULT_PREFERENCE = "-1" and then set a corresponding 
>> PREFERRED_VERSION in
>> the distro conf...
>>
> 
> Good info, thanks, if I need to make a change like this going forward 
> I'll do
> it like that. (I'm assuming our scarthgap branch isn't going to be a 
> candidate
> for this Yocto Compat status, and this patch is only for scarthgap so no 
> fix
> needed for this patch?)

The patch is labelled as being for master as well...  Can we not mix the 
scarthgap/master patches in a single series unless they truly should be 
applied to both.  It's really annoying to manually pick and choose which 
patches to apply where.


> Andrew
> 
>>
>>> Signed-off-by: Andrew Davis <afd@ti.com>
>>> ---
>>>   .../0001-absl-always-use-asm-sgidefs.h.patch  |  38 +++++++
>>>   ...e-maes-option-from-cross-compilation.patch |  38 +++++++
>>>   ...e-neon-option-from-cross-compilation.patch |  49 +++++++++
>>>   .../abseil-cpp/0004-abseil-ppc-fixes.patch    | 103 ++++++++++++++++++
>>>   ...-virtual-dtor-in-the-flags-are-neede.patch |  30 +++++
>>>   .../abseil-cpp/abseil-cpp_20240722.0.bb       |  54 +++++++++
>>>   6 files changed, 312 insertions(+)
>>>   create mode 100644 
>>> meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch
>>>   create mode 100644 
>>> meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch
>>>   create mode 100644 
>>> meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch
>>>   create mode 100644 
>>> meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch
>>>   create mode 100644 
>>> meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch
>>>   create mode 100644 
>>> meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb
>>>
>>> diff --git 
>>> a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch
>>> new file mode 100644
>>> index 00000000..6fecf256
>>> --- /dev/null
>>> +++ 
>>> b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch
>>> @@ -0,0 +1,38 @@
>>> +From 11faa06436fdeb0c9948080a11f9a99d3b5ba16c Mon Sep 17 00:00:00 2001
>>> +From: Khem Raj <raj.khem@gmail.com>
>>> +Date: Thu, 9 Apr 2020 13:06:27 -0700
>>> +Subject: [PATCH] absl: always use <asm/sgidefs.h>
>>> +
>>> +Fixes mips/musl build, since sgidefs.h is not present on all C 
>>> libraries
>>> +but on linux asm/sgidefs.h is there and contains same definitions, 
>>> using
>>> +that makes it portable.
>>> +
>>> +Upstream-Status: Pending
>>> +
>>> +Signed-off-by: Khem Raj <raj.khem@gmail.com>
>>> +---
>>> + absl/base/internal/direct_mmap.h | 6 +-----
>>> + 1 file changed, 1 insertion(+), 5 deletions(-)
>>> +
>>> +diff --git a/absl/base/internal/direct_mmap.h 
>>> b/absl/base/internal/direct_mmap.h
>>> +index 1beb2ee4..140b0697 100644
>>> +--- a/absl/base/internal/direct_mmap.h
>>> ++++ b/absl/base/internal/direct_mmap.h
>>> +@@ -41,13 +41,9 @@
>>> +
>>> + #ifdef __mips__
>>> + // Include definitions of the ABI currently in use.
>>> +-#if defined(__BIONIC__) || !defined(__GLIBC__)
>>> +-// Android doesn't have sgidefs.h, but does have asm/sgidefs.h, 
>>> which has the
>>> ++// bionic/musl C libs don't have sgidefs.h, but do have 
>>> asm/sgidefs.h, which has the
>>> + // definitions we need.
>>> + #include <asm/sgidefs.h>
>>> +-#else
>>> +-#include <sgidefs.h>
>>> +-#endif  // __BIONIC__ || !__GLIBC__
>>> + #endif  // __mips__
>>> +
>>> + // SYS_mmap and SYS_munmap are not defined in Android.
>>> +--
>>> +2.25.1
>>> +
>>> diff --git 
>>> a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch
>>> new file mode 100644
>>> index 00000000..d49e860f
>>> --- /dev/null
>>> +++ 
>>> b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch
>>> @@ -0,0 +1,38 @@
>>> +From a573ccd57e713486e7d8e782d6b3b34fde01ff9e Mon Sep 17 00:00:00 2001
>>> +From: Sinan Kaya <sinan.kaya@microsoft.com>
>>> +Date: Mon, 3 Feb 2020 03:25:57 +0000
>>> +Subject: [PATCH] Remove maes option from cross-compilation
>>> +
>>> +Upstream-Status: Pending
>>> +---
>>> + absl/copts/GENERATED_AbseilCopts.cmake | 4 ----
>>> + absl/copts/GENERATED_copts.bzl         | 4 ----
>>> + 2 files changed, 8 deletions(-)
>>> +
>>> +diff --git a/absl/copts/GENERATED_AbseilCopts.cmake 
>>> b/absl/copts/GENERATED_AbseilCopts.cmake
>>> +index da2282fe..5e0e8dfd 100644
>>> +--- a/absl/copts/GENERATED_AbseilCopts.cmake
>>> ++++ b/absl/copts/GENERATED_AbseilCopts.cmake
>>> +@@ -229,7 +229,3 @@ list(APPEND ABSL_RANDOM_HWAES_ARM64_FLAGS
>>> + list(APPEND ABSL_RANDOM_HWAES_MSVC_X64_FLAGS
>>> + )
>>> +
>>> +-list(APPEND ABSL_RANDOM_HWAES_X64_FLAGS
>>> +-    "-maes"
>>> +-    "-msse4.1"
>>> +-)
>>> +diff --git a/absl/copts/GENERATED_copts.bzl 
>>> b/absl/copts/GENERATED_copts.bzl
>>> +index b9e0071e..0072008c 100644
>>> +--- a/absl/copts/GENERATED_copts.bzl
>>> ++++ b/absl/copts/GENERATED_copts.bzl
>>> +@@ -230,7 +230,3 @@ ABSL_RANDOM_HWAES_ARM64_FLAGS = [
>>> + ABSL_RANDOM_HWAES_MSVC_X64_FLAGS = [
>>> + ]
>>> +
>>> +-ABSL_RANDOM_HWAES_X64_FLAGS = [
>>> +-    "-maes",
>>> +-    "-msse4.1",
>>> +-]
>>> +--
>>> +2.25.1
>>> +
>>> diff --git 
>>> a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch
>>> new file mode 100644
>>> index 00000000..c82b9e1b
>>> --- /dev/null
>>> +++ 
>>> b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch
>>> @@ -0,0 +1,49 @@
>>> +From 632632508daf8bb3a5800dac937ffc33c6d85973 Mon Sep 17 00:00:00 2001
>>> +From: Jonas Gorski <jonas.gorski@bisdn.de>
>>> +Date: Thu, 16 Jun 2022 11:46:31 +0000
>>> +Subject: [PATCH] Remove neon option from cross compilation
>>> +
>>> +Not every arm platform supports neon instructions, so do not enforce
>>> +them.
>>> +
>>> +Upstream-Status: Pending
>>> +
>>> +Signed-off-by: Jonas Gorski <jonas.gorski@bisdn.de>
>>> +---
>>> + absl/copts/GENERATED_AbseilCopts.cmake | 4 ----
>>> + absl/copts/GENERATED_copts.bzl         | 4 ----
>>> + 2 files changed, 8 deletions(-)
>>> +
>>> +diff --git a/absl/copts/GENERATED_AbseilCopts.cmake 
>>> b/absl/copts/GENERATED_AbseilCopts.cmake
>>> +index 5e0e8dfd..57cfc4d3 100644
>>> +--- a/absl/copts/GENERATED_AbseilCopts.cmake
>>> ++++ b/absl/copts/GENERATED_AbseilCopts.cmake
>>> +@@ -218,10 +218,6 @@ list(APPEND ABSL_MSVC_TEST_FLAGS
>>> +     "/DNOMINMAX"
>>> + )
>>> +
>>> +-list(APPEND ABSL_RANDOM_HWAES_ARM32_FLAGS
>>> +-    "-mfpu=neon"
>>> +-)
>>> +-
>>> + list(APPEND ABSL_RANDOM_HWAES_ARM64_FLAGS
>>> +     "-march=armv8-a+crypto"
>>> + )
>>> +diff --git a/absl/copts/GENERATED_copts.bzl 
>>> b/absl/copts/GENERATED_copts.bzl
>>> +index 0072008c..72840fda 100644
>>> +--- a/absl/copts/GENERATED_copts.bzl
>>> ++++ b/absl/copts/GENERATED_copts.bzl
>>> +@@ -219,10 +219,6 @@ ABSL_MSVC_TEST_FLAGS = [
>>> +     "/DNOMINMAX",
>>> + ]
>>> +
>>> +-ABSL_RANDOM_HWAES_ARM32_FLAGS = [
>>> +-    "-mfpu=neon",
>>> +-]
>>> +-
>>> + ABSL_RANDOM_HWAES_ARM64_FLAGS = [
>>> +     "-march=armv8-a+crypto",
>>> + ]
>>> +--
>>> +2.25.1
>>> +
>>> diff --git 
>>> a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch
>>> new file mode 100644
>>> index 00000000..ba0cd669
>>> --- /dev/null
>>> +++ 
>>> b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch
>>> @@ -0,0 +1,103 @@
>>> +From f9607924225ca59fb6c60222e6424b84e6f70029 Mon Sep 17 00:00:00 2001
>>> +From: Khem Raj <raj.khem@gmail.com>
>>> +Date: Sat, 21 Sep 2024 20:53:06 +0800
>>> +Subject: [PATCH] abseil: ppc fixes
>>> +
>>> +An all-in-one patch that fixes several issues:
>>> +
>>> +1) UnscaledCycleClock not fully implemented for ppc*-musl (disabled 
>>> on musl)
>>> +2) powerpc stacktrace implementation only works on glibc (disabled 
>>> on musl)
>>> +3) powerpc stacktrace implementation has ppc64 assumptions (fixed)
>>> +4) examine_stack.cpp makes glibc assumptions on powerpc (fixed)
>>> +
>>> +Sourced from void linux
>>> +
>>> +Upstream-Status: Pending
>>> +
>>> +Signed-off-by: Khem Raj <raj.khem@gmail.com>
>>> +---
>>> + absl/base/internal/unscaledcycleclock.cc       | 4 ++--
>>> + absl/base/internal/unscaledcycleclock_config.h | 3 ++-
>>> + absl/debugging/internal/examine_stack.cc       | 8 +++++++-
>>> + absl/debugging/internal/stacktrace_config.h    | 2 +-
>>> + 4 files changed, 12 insertions(+), 5 deletions(-)
>>> +
>>> +diff --git a/absl/base/internal/unscaledcycleclock.cc 
>>> b/absl/base/internal/unscaledcycleclock.cc
>>> +index a0bf3a65..103b4f6a 100644
>>> +--- a/absl/base/internal/unscaledcycleclock.cc
>>> ++++ b/absl/base/internal/unscaledcycleclock.cc
>>> +@@ -20,7 +20,7 @@
>>> + #include <intrin.h>
>>> + #endif
>>> +
>>> +-#if defined(__powerpc__) || defined(__ppc__)
>>> ++#if (defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)
>>> + #ifdef __GLIBC__
>>> + #include <sys/platform/ppc.h>
>>> + #elif defined(__FreeBSD__)
>>> +@@ -58,7 +58,7 @@ double UnscaledCycleClock::Frequency() {
>>> +   return base_internal::NominalCPUFrequency();
>>> + }
>>> +
>>> +-#elif defined(__powerpc__) || defined(__ppc__)
>>> ++#elif (defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)
>>> +
>>> + int64_t UnscaledCycleClock::Now() {
>>> + #ifdef __GLIBC__
>>> +diff --git a/absl/base/internal/unscaledcycleclock_config.h 
>>> b/absl/base/internal/unscaledcycleclock_config.h
>>> +index 43a3dabe..196a8535 100644
>>> +--- a/absl/base/internal/unscaledcycleclock_config.h
>>> ++++ b/absl/base/internal/unscaledcycleclock_config.h
>>> +@@ -21,7 +21,8 @@
>>> +
>>> + // The following platforms have an implementation of a hardware 
>>> counter.
>>> + #if defined(__i386__) || defined(__x86_64__) || 
>>> defined(__aarch64__) || \
>>> +-    defined(__powerpc__) || defined(__ppc__) || defined(_M_IX86) 
>>> ||     \
>>> ++    ((defined(__powerpc__) || defined(__ppc__)) && 
>>> defined(__GLIBC__)) || \
>>> ++    defined(_M_IX86) ||     \
>>> +     (defined(_M_X64) && !defined(_M_ARM64EC))
>>> + #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1
>>> + #else
>>> +diff --git a/absl/debugging/internal/examine_stack.cc 
>>> b/absl/debugging/internal/examine_stack.cc
>>> +index 3dd6ba1a..f923b055 100644
>>> +--- a/absl/debugging/internal/examine_stack.cc
>>> ++++ b/absl/debugging/internal/examine_stack.cc
>>> +@@ -36,6 +36,10 @@
>>> + #include <csignal>
>>> + #include <cstdio>
>>> +
>>> ++#if defined(__powerpc__)
>>> ++#include <asm/ptrace.h>
>>> ++#endif
>>> ++
>>> + #include "absl/base/attributes.h"
>>> + #include "absl/base/internal/raw_logging.h"
>>> + #include "absl/base/macros.h"
>>> +@@ -177,8 +181,10 @@ void* GetProgramCounter(void* const vuc) {
>>> +     return reinterpret_cast<void*>(context->uc_mcontext.pc);
>>> + #elif defined(__powerpc64__)
>>> +     return reinterpret_cast<void*>(context->uc_mcontext.gp_regs[32]);
>>> +-#elif defined(__powerpc__)
>>> ++#elif defined(__powerpc__) && defined(__GLIBC__)
>>> +     return 
>>> reinterpret_cast<void*>(context->uc_mcontext.uc_regs->gregs[32]);
>>> ++#elif defined(__powerpc__)
>>> ++    return reinterpret_cast<void*>((context->uc_regs)->gregs[32]);
>>> + #elif defined(__riscv)
>>> +     return 
>>> reinterpret_cast<void*>(context->uc_mcontext.__gregs[REG_PC]);
>>> + #elif defined(__s390__) && !defined(__s390x__)
>>> +diff --git a/absl/debugging/internal/stacktrace_config.h 
>>> b/absl/debugging/internal/stacktrace_config.h
>>> +index 3929b1b7..23d5e504 100644
>>> +--- a/absl/debugging/internal/stacktrace_config.h
>>> ++++ b/absl/debugging/internal/stacktrace_config.h
>>> +@@ -60,7 +60,7 @@
>>> + #elif defined(__i386__) || defined(__x86_64__)
>>> + #define ABSL_STACKTRACE_INL_HEADER \
>>> +   "absl/debugging/internal/stacktrace_x86-inl.inc"
>>> +-#elif defined(__ppc__) || defined(__PPC__)
>>> ++#elif (defined(__ppc__) || defined(__PPC__)) && defined(__GLIBC__)
>>> + #define ABSL_STACKTRACE_INL_HEADER \
>>> +   "absl/debugging/internal/stacktrace_powerpc-inl.inc"
>>> + #elif defined(__aarch64__)
>>> +--
>>> +2.25.1
>>> +
>>> diff --git 
>>> a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch
>>> new file mode 100644
>>> index 00000000..9a4fc0b4
>>> --- /dev/null
>>> +++ 
>>> b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch
>>> @@ -0,0 +1,30 @@
>>> +From 9cb5e5d15c142e5cc43a2c1db87c8e4e5b6d38a5 Mon Sep 17 00:00:00 2001
>>> +From: Derek Mauro <dmauro@google.com>
>>> +Date: Mon, 5 Aug 2024 07:35:05 -0700
>>> +Subject: [PATCH] Don't match -Wnon-virtual-dtor in the "flags are 
>>> needed to
>>> + suppress warnings in headers". It should fall through to the "don't 
>>> impose
>>> + our warnings on others" case. Do this by matching on "-Wno-*" 
>>> instead of
>>> + "-Wno*".
>>> +
>>> +Fixes #1737
>>> +
>>> +PiperOrigin-RevId: 659548798
>>> +Change-Id: I49d7ba7ddcd7be30f946fca90ba9be467181e854
>>> +Upstream-Status: Backport 
>>> [https://github.com/abseil/abseil-cpp/commit/9cb5e5d15c142e5cc43a2c1db87c8e4e5b6d38a5]
>>> +---
>>> + CMake/AbseilHelpers.cmake | 2 +-
>>> + 1 file changed, 1 insertion(+), 1 deletion(-)
>>> +
>>> +diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake
>>> +index b177e590..3c4c92fe 100644
>>> +--- a/CMake/AbseilHelpers.cmake
>>> ++++ b/CMake/AbseilHelpers.cmake
>>> +@@ -195,7 +195,7 @@ function(absl_cc_library)
>>> +         # specified platform. Filter both of them out before the 
>>> successor
>>> +         # reaches the "^-m" filter.
>>> +         set(skip_next_cflag ON)
>>> +-      elseif(${cflag} MATCHES "^(-Wno|/wd)")
>>> ++      elseif(${cflag} MATCHES "^(-Wno-|/wd)")
>>> +         # These flags are needed to suppress warnings that might 
>>> fire in our headers.
>>> +         set(PC_CFLAGS "${PC_CFLAGS} ${cflag}")
>>> +       elseif(${cflag} MATCHES "^(-W|/w[1234eo])")
>>> diff --git 
>>> a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb
>>> new file mode 100644
>>> index 00000000..4bfc2100
>>> --- /dev/null
>>> +++ 
>>> b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb
>>> @@ -0,0 +1,54 @@
>>> +SUMMARY = "Abseil is a cpp library like STL"
>>> +DESCRIPTION = "Abseil provides pieces missing from the C++ standard. 
>>> Contains \
>>> +additional useful libraries like algorithm, container, debugging, 
>>> hash, memory, \
>>> +meta, numeric, strings, synchronization, time, types and utility."
>>> +HOMEPAGE = "https://abseil.io/"
>>> +SECTION = "libs"
>>> +LICENSE = "Apache-2.0"
>>> +LIC_FILES_CHKSUM = 
>>> "file://LICENSE;md5=df52c6edb7adc22e533b2bacc3bd3915"
>>> +
>>> +SRCREV = "4447c7562e3bc702ade25105912dce503f0c4010"
>>> +BRANCH = "lts_2024_07_22"
>>> +SRC_URI = 
>>> "git://github.com/abseil/abseil-cpp;branch=${BRANCH};protocol=https \
>>> +           
>>> file://0001-absl-always-use-asm-sgidefs.h.patch             \
>>> +           
>>> file://0002-Remove-maes-option-from-cross-compilation.patch \
>>> +           
>>> file://0003-Remove-neon-option-from-cross-compilation.patch \
>>> +           file://0004-abseil-ppc-fixes.patch \
>>> +           
>>> file://0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch \
>>> +          "
>>> +
>>> +S = "${WORKDIR}/git"
>>> +
>>> +inherit cmake
>>> +
>>> +EXTRA_OECMAKE = "-DBUILD_SHARED_LIBS=ON \
>>> +                 -DBUILD_TESTING=OFF    \
>>> +                 -DABSL_ENABLE_INSTALL=ON \
>>> +                "
>>> +
>>> +SYSROOT_DIRS:append:class-nativesdk:mingw32 = " ${bindir}"
>>> +
>>> +PACKAGES_DYNAMIC += "^libabsl-*"
>>> +PACKAGES_DYNAMIC:class-native = ""
>>> +
>>> +PACKAGESPLITFUNCS =+ "split_dynamic_packages"
>>> +
>>> +python split_dynamic_packages() {
>>> +    libdir = d.getVar('libdir')
>>> +
>>> +    libpackages = do_split_packages(
>>> +        d,
>>> +        root=libdir,
>>> +        file_regex=r'^libabsl_(.*)\.so\..*$',
>>> +        output_pattern='libabsl-%s',
>>> +        description="abseil shared library %s",
>>> +        prepend=True,
>>> +        extra_depends='',
>>> +    )
>>> +    if libpackages:
>>> +        d.appendVar('RDEPENDS:' + d.getVar('PN'), ' ' + ' 
>>> '.join(libpackages))
>>> +}
>>> +
>>> +ALLOW_EMPTY:${PN} = "1"
>>> +
>>> +BBCLASSEXTEND = "native nativesdk"
>>> -- 
>>> 2.39.2
Andrew Davis Jan. 23, 2025, 4:28 p.m. UTC | #4
On 1/23/25 9:56 AM, Ryan Eatmon wrote:
> 
> 
> On 1/23/2025 9:49 AM, Andrew Davis wrote:
>> On 1/22/25 5:02 PM, Denys Dmytriyenko wrote:
>>> On Thu, Jan 16, 2025 at 06:25:18PM -0600, Andrew Davis via lists.yoctoproject.org wrote:
>>>> ONNX and ONNX Runtime depend on a very specific version of Abseil that
>>>> is not the version included with meta-oe scarthgap. But it just so
>>>> happens to be the version provided in current meta-oe master.
>>>> Backport this version for our use in scarthgap.
>>>>
>>>> This patch is not needed for meta-arago master branch. If meta-oe
>>>> master at some point moves to a newer incompatible version of
>>>> Abseil we will deal with this dependency in a different way.
>>>
>>> Just a note here - there's an effort to improve meta-arago-* layers quality
>>> and eventually seek a Yocto Project Compatible status for them. Adding a
>>> version of a recipe that exists upstream is possible, but requires some extra
>>> attention, especially when it's a newer version and gets preferred by BitBake
>>> automatically. One way to do it is to lower its default preference with
>>> DEFAULT_PREFERENCE = "-1" and then set a corresponding PREFERRED_VERSION in
>>> the distro conf...
>>>
>>
>> Good info, thanks, if I need to make a change like this going forward I'll do
>> it like that. (I'm assuming our scarthgap branch isn't going to be a candidate
>> for this Yocto Compat status, and this patch is only for scarthgap so no fix
>> needed for this patch?)
> 
> The patch is labelled as being for master as well...  Can we not mix the scarthgap/master patches in a single series unless they truly should be applied to both.  It's really annoying to manually pick and choose which patches to apply where.
> 

Sorry about that, I'll split this one out from this series and send
it by itself for just scarthgap.

Andrew

> 
>> Andrew
>>
>>>
>>>> Signed-off-by: Andrew Davis <afd@ti.com>
>>>> ---
>>>>   .../0001-absl-always-use-asm-sgidefs.h.patch  |  38 +++++++
>>>>   ...e-maes-option-from-cross-compilation.patch |  38 +++++++
>>>>   ...e-neon-option-from-cross-compilation.patch |  49 +++++++++
>>>>   .../abseil-cpp/0004-abseil-ppc-fixes.patch    | 103 ++++++++++++++++++
>>>>   ...-virtual-dtor-in-the-flags-are-neede.patch |  30 +++++
>>>>   .../abseil-cpp/abseil-cpp_20240722.0.bb       |  54 +++++++++
>>>>   6 files changed, 312 insertions(+)
>>>>   create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch
>>>>   create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch
>>>>   create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch
>>>>   create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch
>>>>   create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch
>>>>   create mode 100644 meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb
>>>>
>>>> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch
>>>> new file mode 100644
>>>> index 00000000..6fecf256
>>>> --- /dev/null
>>>> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch
>>>> @@ -0,0 +1,38 @@
>>>> +From 11faa06436fdeb0c9948080a11f9a99d3b5ba16c Mon Sep 17 00:00:00 2001
>>>> +From: Khem Raj <raj.khem@gmail.com>
>>>> +Date: Thu, 9 Apr 2020 13:06:27 -0700
>>>> +Subject: [PATCH] absl: always use <asm/sgidefs.h>
>>>> +
>>>> +Fixes mips/musl build, since sgidefs.h is not present on all C libraries
>>>> +but on linux asm/sgidefs.h is there and contains same definitions, using
>>>> +that makes it portable.
>>>> +
>>>> +Upstream-Status: Pending
>>>> +
>>>> +Signed-off-by: Khem Raj <raj.khem@gmail.com>
>>>> +---
>>>> + absl/base/internal/direct_mmap.h | 6 +-----
>>>> + 1 file changed, 1 insertion(+), 5 deletions(-)
>>>> +
>>>> +diff --git a/absl/base/internal/direct_mmap.h b/absl/base/internal/direct_mmap.h
>>>> +index 1beb2ee4..140b0697 100644
>>>> +--- a/absl/base/internal/direct_mmap.h
>>>> ++++ b/absl/base/internal/direct_mmap.h
>>>> +@@ -41,13 +41,9 @@
>>>> +
>>>> + #ifdef __mips__
>>>> + // Include definitions of the ABI currently in use.
>>>> +-#if defined(__BIONIC__) || !defined(__GLIBC__)
>>>> +-// Android doesn't have sgidefs.h, but does have asm/sgidefs.h, which has the
>>>> ++// bionic/musl C libs don't have sgidefs.h, but do have asm/sgidefs.h, which has the
>>>> + // definitions we need.
>>>> + #include <asm/sgidefs.h>
>>>> +-#else
>>>> +-#include <sgidefs.h>
>>>> +-#endif  // __BIONIC__ || !__GLIBC__
>>>> + #endif  // __mips__
>>>> +
>>>> + // SYS_mmap and SYS_munmap are not defined in Android.
>>>> +--
>>>> +2.25.1
>>>> +
>>>> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch
>>>> new file mode 100644
>>>> index 00000000..d49e860f
>>>> --- /dev/null
>>>> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch
>>>> @@ -0,0 +1,38 @@
>>>> +From a573ccd57e713486e7d8e782d6b3b34fde01ff9e Mon Sep 17 00:00:00 2001
>>>> +From: Sinan Kaya <sinan.kaya@microsoft.com>
>>>> +Date: Mon, 3 Feb 2020 03:25:57 +0000
>>>> +Subject: [PATCH] Remove maes option from cross-compilation
>>>> +
>>>> +Upstream-Status: Pending
>>>> +---
>>>> + absl/copts/GENERATED_AbseilCopts.cmake | 4 ----
>>>> + absl/copts/GENERATED_copts.bzl         | 4 ----
>>>> + 2 files changed, 8 deletions(-)
>>>> +
>>>> +diff --git a/absl/copts/GENERATED_AbseilCopts.cmake b/absl/copts/GENERATED_AbseilCopts.cmake
>>>> +index da2282fe..5e0e8dfd 100644
>>>> +--- a/absl/copts/GENERATED_AbseilCopts.cmake
>>>> ++++ b/absl/copts/GENERATED_AbseilCopts.cmake
>>>> +@@ -229,7 +229,3 @@ list(APPEND ABSL_RANDOM_HWAES_ARM64_FLAGS
>>>> + list(APPEND ABSL_RANDOM_HWAES_MSVC_X64_FLAGS
>>>> + )
>>>> +
>>>> +-list(APPEND ABSL_RANDOM_HWAES_X64_FLAGS
>>>> +-    "-maes"
>>>> +-    "-msse4.1"
>>>> +-)
>>>> +diff --git a/absl/copts/GENERATED_copts.bzl b/absl/copts/GENERATED_copts.bzl
>>>> +index b9e0071e..0072008c 100644
>>>> +--- a/absl/copts/GENERATED_copts.bzl
>>>> ++++ b/absl/copts/GENERATED_copts.bzl
>>>> +@@ -230,7 +230,3 @@ ABSL_RANDOM_HWAES_ARM64_FLAGS = [
>>>> + ABSL_RANDOM_HWAES_MSVC_X64_FLAGS = [
>>>> + ]
>>>> +
>>>> +-ABSL_RANDOM_HWAES_X64_FLAGS = [
>>>> +-    "-maes",
>>>> +-    "-msse4.1",
>>>> +-]
>>>> +--
>>>> +2.25.1
>>>> +
>>>> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch
>>>> new file mode 100644
>>>> index 00000000..c82b9e1b
>>>> --- /dev/null
>>>> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch
>>>> @@ -0,0 +1,49 @@
>>>> +From 632632508daf8bb3a5800dac937ffc33c6d85973 Mon Sep 17 00:00:00 2001
>>>> +From: Jonas Gorski <jonas.gorski@bisdn.de>
>>>> +Date: Thu, 16 Jun 2022 11:46:31 +0000
>>>> +Subject: [PATCH] Remove neon option from cross compilation
>>>> +
>>>> +Not every arm platform supports neon instructions, so do not enforce
>>>> +them.
>>>> +
>>>> +Upstream-Status: Pending
>>>> +
>>>> +Signed-off-by: Jonas Gorski <jonas.gorski@bisdn.de>
>>>> +---
>>>> + absl/copts/GENERATED_AbseilCopts.cmake | 4 ----
>>>> + absl/copts/GENERATED_copts.bzl         | 4 ----
>>>> + 2 files changed, 8 deletions(-)
>>>> +
>>>> +diff --git a/absl/copts/GENERATED_AbseilCopts.cmake b/absl/copts/GENERATED_AbseilCopts.cmake
>>>> +index 5e0e8dfd..57cfc4d3 100644
>>>> +--- a/absl/copts/GENERATED_AbseilCopts.cmake
>>>> ++++ b/absl/copts/GENERATED_AbseilCopts.cmake
>>>> +@@ -218,10 +218,6 @@ list(APPEND ABSL_MSVC_TEST_FLAGS
>>>> +     "/DNOMINMAX"
>>>> + )
>>>> +
>>>> +-list(APPEND ABSL_RANDOM_HWAES_ARM32_FLAGS
>>>> +-    "-mfpu=neon"
>>>> +-)
>>>> +-
>>>> + list(APPEND ABSL_RANDOM_HWAES_ARM64_FLAGS
>>>> +     "-march=armv8-a+crypto"
>>>> + )
>>>> +diff --git a/absl/copts/GENERATED_copts.bzl b/absl/copts/GENERATED_copts.bzl
>>>> +index 0072008c..72840fda 100644
>>>> +--- a/absl/copts/GENERATED_copts.bzl
>>>> ++++ b/absl/copts/GENERATED_copts.bzl
>>>> +@@ -219,10 +219,6 @@ ABSL_MSVC_TEST_FLAGS = [
>>>> +     "/DNOMINMAX",
>>>> + ]
>>>> +
>>>> +-ABSL_RANDOM_HWAES_ARM32_FLAGS = [
>>>> +-    "-mfpu=neon",
>>>> +-]
>>>> +-
>>>> + ABSL_RANDOM_HWAES_ARM64_FLAGS = [
>>>> +     "-march=armv8-a+crypto",
>>>> + ]
>>>> +--
>>>> +2.25.1
>>>> +
>>>> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch
>>>> new file mode 100644
>>>> index 00000000..ba0cd669
>>>> --- /dev/null
>>>> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch
>>>> @@ -0,0 +1,103 @@
>>>> +From f9607924225ca59fb6c60222e6424b84e6f70029 Mon Sep 17 00:00:00 2001
>>>> +From: Khem Raj <raj.khem@gmail.com>
>>>> +Date: Sat, 21 Sep 2024 20:53:06 +0800
>>>> +Subject: [PATCH] abseil: ppc fixes
>>>> +
>>>> +An all-in-one patch that fixes several issues:
>>>> +
>>>> +1) UnscaledCycleClock not fully implemented for ppc*-musl (disabled on musl)
>>>> +2) powerpc stacktrace implementation only works on glibc (disabled on musl)
>>>> +3) powerpc stacktrace implementation has ppc64 assumptions (fixed)
>>>> +4) examine_stack.cpp makes glibc assumptions on powerpc (fixed)
>>>> +
>>>> +Sourced from void linux
>>>> +
>>>> +Upstream-Status: Pending
>>>> +
>>>> +Signed-off-by: Khem Raj <raj.khem@gmail.com>
>>>> +---
>>>> + absl/base/internal/unscaledcycleclock.cc       | 4 ++--
>>>> + absl/base/internal/unscaledcycleclock_config.h | 3 ++-
>>>> + absl/debugging/internal/examine_stack.cc       | 8 +++++++-
>>>> + absl/debugging/internal/stacktrace_config.h    | 2 +-
>>>> + 4 files changed, 12 insertions(+), 5 deletions(-)
>>>> +
>>>> +diff --git a/absl/base/internal/unscaledcycleclock.cc b/absl/base/internal/unscaledcycleclock.cc
>>>> +index a0bf3a65..103b4f6a 100644
>>>> +--- a/absl/base/internal/unscaledcycleclock.cc
>>>> ++++ b/absl/base/internal/unscaledcycleclock.cc
>>>> +@@ -20,7 +20,7 @@
>>>> + #include <intrin.h>
>>>> + #endif
>>>> +
>>>> +-#if defined(__powerpc__) || defined(__ppc__)
>>>> ++#if (defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)
>>>> + #ifdef __GLIBC__
>>>> + #include <sys/platform/ppc.h>
>>>> + #elif defined(__FreeBSD__)
>>>> +@@ -58,7 +58,7 @@ double UnscaledCycleClock::Frequency() {
>>>> +   return base_internal::NominalCPUFrequency();
>>>> + }
>>>> +
>>>> +-#elif defined(__powerpc__) || defined(__ppc__)
>>>> ++#elif (defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)
>>>> +
>>>> + int64_t UnscaledCycleClock::Now() {
>>>> + #ifdef __GLIBC__
>>>> +diff --git a/absl/base/internal/unscaledcycleclock_config.h b/absl/base/internal/unscaledcycleclock_config.h
>>>> +index 43a3dabe..196a8535 100644
>>>> +--- a/absl/base/internal/unscaledcycleclock_config.h
>>>> ++++ b/absl/base/internal/unscaledcycleclock_config.h
>>>> +@@ -21,7 +21,8 @@
>>>> +
>>>> + // The following platforms have an implementation of a hardware counter.
>>>> + #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \
>>>> +-    defined(__powerpc__) || defined(__ppc__) || defined(_M_IX86) ||     \
>>>> ++    ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || \
>>>> ++    defined(_M_IX86) ||     \
>>>> +     (defined(_M_X64) && !defined(_M_ARM64EC))
>>>> + #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1
>>>> + #else
>>>> +diff --git a/absl/debugging/internal/examine_stack.cc b/absl/debugging/internal/examine_stack.cc
>>>> +index 3dd6ba1a..f923b055 100644
>>>> +--- a/absl/debugging/internal/examine_stack.cc
>>>> ++++ b/absl/debugging/internal/examine_stack.cc
>>>> +@@ -36,6 +36,10 @@
>>>> + #include <csignal>
>>>> + #include <cstdio>
>>>> +
>>>> ++#if defined(__powerpc__)
>>>> ++#include <asm/ptrace.h>
>>>> ++#endif
>>>> ++
>>>> + #include "absl/base/attributes.h"
>>>> + #include "absl/base/internal/raw_logging.h"
>>>> + #include "absl/base/macros.h"
>>>> +@@ -177,8 +181,10 @@ void* GetProgramCounter(void* const vuc) {
>>>> +     return reinterpret_cast<void*>(context->uc_mcontext.pc);
>>>> + #elif defined(__powerpc64__)
>>>> +     return reinterpret_cast<void*>(context->uc_mcontext.gp_regs[32]);
>>>> +-#elif defined(__powerpc__)
>>>> ++#elif defined(__powerpc__) && defined(__GLIBC__)
>>>> +     return reinterpret_cast<void*>(context->uc_mcontext.uc_regs->gregs[32]);
>>>> ++#elif defined(__powerpc__)
>>>> ++    return reinterpret_cast<void*>((context->uc_regs)->gregs[32]);
>>>> + #elif defined(__riscv)
>>>> +     return reinterpret_cast<void*>(context->uc_mcontext.__gregs[REG_PC]);
>>>> + #elif defined(__s390__) && !defined(__s390x__)
>>>> +diff --git a/absl/debugging/internal/stacktrace_config.h b/absl/debugging/internal/stacktrace_config.h
>>>> +index 3929b1b7..23d5e504 100644
>>>> +--- a/absl/debugging/internal/stacktrace_config.h
>>>> ++++ b/absl/debugging/internal/stacktrace_config.h
>>>> +@@ -60,7 +60,7 @@
>>>> + #elif defined(__i386__) || defined(__x86_64__)
>>>> + #define ABSL_STACKTRACE_INL_HEADER \
>>>> +   "absl/debugging/internal/stacktrace_x86-inl.inc"
>>>> +-#elif defined(__ppc__) || defined(__PPC__)
>>>> ++#elif (defined(__ppc__) || defined(__PPC__)) && defined(__GLIBC__)
>>>> + #define ABSL_STACKTRACE_INL_HEADER \
>>>> +   "absl/debugging/internal/stacktrace_powerpc-inl.inc"
>>>> + #elif defined(__aarch64__)
>>>> +--
>>>> +2.25.1
>>>> +
>>>> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch
>>>> new file mode 100644
>>>> index 00000000..9a4fc0b4
>>>> --- /dev/null
>>>> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch
>>>> @@ -0,0 +1,30 @@
>>>> +From 9cb5e5d15c142e5cc43a2c1db87c8e4e5b6d38a5 Mon Sep 17 00:00:00 2001
>>>> +From: Derek Mauro <dmauro@google.com>
>>>> +Date: Mon, 5 Aug 2024 07:35:05 -0700
>>>> +Subject: [PATCH] Don't match -Wnon-virtual-dtor in the "flags are needed to
>>>> + suppress warnings in headers". It should fall through to the "don't impose
>>>> + our warnings on others" case. Do this by matching on "-Wno-*" instead of
>>>> + "-Wno*".
>>>> +
>>>> +Fixes #1737
>>>> +
>>>> +PiperOrigin-RevId: 659548798
>>>> +Change-Id: I49d7ba7ddcd7be30f946fca90ba9be467181e854
>>>> +Upstream-Status: Backport [https://github.com/abseil/abseil-cpp/commit/9cb5e5d15c142e5cc43a2c1db87c8e4e5b6d38a5]
>>>> +---
>>>> + CMake/AbseilHelpers.cmake | 2 +-
>>>> + 1 file changed, 1 insertion(+), 1 deletion(-)
>>>> +
>>>> +diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake
>>>> +index b177e590..3c4c92fe 100644
>>>> +--- a/CMake/AbseilHelpers.cmake
>>>> ++++ b/CMake/AbseilHelpers.cmake
>>>> +@@ -195,7 +195,7 @@ function(absl_cc_library)
>>>> +         # specified platform. Filter both of them out before the successor
>>>> +         # reaches the "^-m" filter.
>>>> +         set(skip_next_cflag ON)
>>>> +-      elseif(${cflag} MATCHES "^(-Wno|/wd)")
>>>> ++      elseif(${cflag} MATCHES "^(-Wno-|/wd)")
>>>> +         # These flags are needed to suppress warnings that might fire in our headers.
>>>> +         set(PC_CFLAGS "${PC_CFLAGS} ${cflag}")
>>>> +       elseif(${cflag} MATCHES "^(-W|/w[1234eo])")
>>>> diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb
>>>> new file mode 100644
>>>> index 00000000..4bfc2100
>>>> --- /dev/null
>>>> +++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb
>>>> @@ -0,0 +1,54 @@
>>>> +SUMMARY = "Abseil is a cpp library like STL"
>>>> +DESCRIPTION = "Abseil provides pieces missing from the C++ standard. Contains \
>>>> +additional useful libraries like algorithm, container, debugging, hash, memory, \
>>>> +meta, numeric, strings, synchronization, time, types and utility."
>>>> +HOMEPAGE = "https://abseil.io/"
>>>> +SECTION = "libs"
>>>> +LICENSE = "Apache-2.0"
>>>> +LIC_FILES_CHKSUM = "file://LICENSE;md5=df52c6edb7adc22e533b2bacc3bd3915"
>>>> +
>>>> +SRCREV = "4447c7562e3bc702ade25105912dce503f0c4010"
>>>> +BRANCH = "lts_2024_07_22"
>>>> +SRC_URI = "git://github.com/abseil/abseil-cpp;branch=${BRANCH};protocol=https \
>>>> + file://0001-absl-always-use-asm-sgidefs.h.patch             \
>>>> + file://0002-Remove-maes-option-from-cross-compilation.patch \
>>>> + file://0003-Remove-neon-option-from-cross-compilation.patch \
>>>> +           file://0004-abseil-ppc-fixes.patch \
>>>> + file://0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch \
>>>> +          "
>>>> +
>>>> +S = "${WORKDIR}/git"
>>>> +
>>>> +inherit cmake
>>>> +
>>>> +EXTRA_OECMAKE = "-DBUILD_SHARED_LIBS=ON \
>>>> +                 -DBUILD_TESTING=OFF    \
>>>> +                 -DABSL_ENABLE_INSTALL=ON \
>>>> +                "
>>>> +
>>>> +SYSROOT_DIRS:append:class-nativesdk:mingw32 = " ${bindir}"
>>>> +
>>>> +PACKAGES_DYNAMIC += "^libabsl-*"
>>>> +PACKAGES_DYNAMIC:class-native = ""
>>>> +
>>>> +PACKAGESPLITFUNCS =+ "split_dynamic_packages"
>>>> +
>>>> +python split_dynamic_packages() {
>>>> +    libdir = d.getVar('libdir')
>>>> +
>>>> +    libpackages = do_split_packages(
>>>> +        d,
>>>> +        root=libdir,
>>>> +        file_regex=r'^libabsl_(.*)\.so\..*$',
>>>> +        output_pattern='libabsl-%s',
>>>> +        description="abseil shared library %s",
>>>> +        prepend=True,
>>>> +        extra_depends='',
>>>> +    )
>>>> +    if libpackages:
>>>> +        d.appendVar('RDEPENDS:' + d.getVar('PN'), ' ' + ' '.join(libpackages))
>>>> +}
>>>> +
>>>> +ALLOW_EMPTY:${PN} = "1"
>>>> +
>>>> +BBCLASSEXTEND = "native nativesdk"
>>>> -- 
>>>> 2.39.2
>
diff mbox series

Patch

diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch
new file mode 100644
index 00000000..6fecf256
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch
@@ -0,0 +1,38 @@ 
+From 11faa06436fdeb0c9948080a11f9a99d3b5ba16c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 9 Apr 2020 13:06:27 -0700
+Subject: [PATCH] absl: always use <asm/sgidefs.h>
+
+Fixes mips/musl build, since sgidefs.h is not present on all C libraries
+but on linux asm/sgidefs.h is there and contains same definitions, using
+that makes it portable.
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ absl/base/internal/direct_mmap.h | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/absl/base/internal/direct_mmap.h b/absl/base/internal/direct_mmap.h
+index 1beb2ee4..140b0697 100644
+--- a/absl/base/internal/direct_mmap.h
++++ b/absl/base/internal/direct_mmap.h
+@@ -41,13 +41,9 @@
+ 
+ #ifdef __mips__
+ // Include definitions of the ABI currently in use.
+-#if defined(__BIONIC__) || !defined(__GLIBC__)
+-// Android doesn't have sgidefs.h, but does have asm/sgidefs.h, which has the
++// bionic/musl C libs don't have sgidefs.h, but do have asm/sgidefs.h, which has the
+ // definitions we need.
+ #include <asm/sgidefs.h>
+-#else
+-#include <sgidefs.h>
+-#endif  // __BIONIC__ || !__GLIBC__
+ #endif  // __mips__
+ 
+ // SYS_mmap and SYS_munmap are not defined in Android.
+-- 
+2.25.1
+
diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch
new file mode 100644
index 00000000..d49e860f
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0002-Remove-maes-option-from-cross-compilation.patch
@@ -0,0 +1,38 @@ 
+From a573ccd57e713486e7d8e782d6b3b34fde01ff9e Mon Sep 17 00:00:00 2001
+From: Sinan Kaya <sinan.kaya@microsoft.com>
+Date: Mon, 3 Feb 2020 03:25:57 +0000
+Subject: [PATCH] Remove maes option from cross-compilation
+
+Upstream-Status: Pending
+---
+ absl/copts/GENERATED_AbseilCopts.cmake | 4 ----
+ absl/copts/GENERATED_copts.bzl         | 4 ----
+ 2 files changed, 8 deletions(-)
+
+diff --git a/absl/copts/GENERATED_AbseilCopts.cmake b/absl/copts/GENERATED_AbseilCopts.cmake
+index da2282fe..5e0e8dfd 100644
+--- a/absl/copts/GENERATED_AbseilCopts.cmake
++++ b/absl/copts/GENERATED_AbseilCopts.cmake
+@@ -229,7 +229,3 @@ list(APPEND ABSL_RANDOM_HWAES_ARM64_FLAGS
+ list(APPEND ABSL_RANDOM_HWAES_MSVC_X64_FLAGS
+ )
+ 
+-list(APPEND ABSL_RANDOM_HWAES_X64_FLAGS
+-    "-maes"
+-    "-msse4.1"
+-)
+diff --git a/absl/copts/GENERATED_copts.bzl b/absl/copts/GENERATED_copts.bzl
+index b9e0071e..0072008c 100644
+--- a/absl/copts/GENERATED_copts.bzl
++++ b/absl/copts/GENERATED_copts.bzl
+@@ -230,7 +230,3 @@ ABSL_RANDOM_HWAES_ARM64_FLAGS = [
+ ABSL_RANDOM_HWAES_MSVC_X64_FLAGS = [
+ ]
+ 
+-ABSL_RANDOM_HWAES_X64_FLAGS = [
+-    "-maes",
+-    "-msse4.1",
+-]
+-- 
+2.25.1
+
diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch
new file mode 100644
index 00000000..c82b9e1b
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0003-Remove-neon-option-from-cross-compilation.patch
@@ -0,0 +1,49 @@ 
+From 632632508daf8bb3a5800dac937ffc33c6d85973 Mon Sep 17 00:00:00 2001
+From: Jonas Gorski <jonas.gorski@bisdn.de>
+Date: Thu, 16 Jun 2022 11:46:31 +0000
+Subject: [PATCH] Remove neon option from cross compilation
+
+Not every arm platform supports neon instructions, so do not enforce
+them.
+
+Upstream-Status: Pending
+
+Signed-off-by: Jonas Gorski <jonas.gorski@bisdn.de>
+---
+ absl/copts/GENERATED_AbseilCopts.cmake | 4 ----
+ absl/copts/GENERATED_copts.bzl         | 4 ----
+ 2 files changed, 8 deletions(-)
+
+diff --git a/absl/copts/GENERATED_AbseilCopts.cmake b/absl/copts/GENERATED_AbseilCopts.cmake
+index 5e0e8dfd..57cfc4d3 100644
+--- a/absl/copts/GENERATED_AbseilCopts.cmake
++++ b/absl/copts/GENERATED_AbseilCopts.cmake
+@@ -218,10 +218,6 @@ list(APPEND ABSL_MSVC_TEST_FLAGS
+     "/DNOMINMAX"
+ )
+ 
+-list(APPEND ABSL_RANDOM_HWAES_ARM32_FLAGS
+-    "-mfpu=neon"
+-)
+-
+ list(APPEND ABSL_RANDOM_HWAES_ARM64_FLAGS
+     "-march=armv8-a+crypto"
+ )
+diff --git a/absl/copts/GENERATED_copts.bzl b/absl/copts/GENERATED_copts.bzl
+index 0072008c..72840fda 100644
+--- a/absl/copts/GENERATED_copts.bzl
++++ b/absl/copts/GENERATED_copts.bzl
+@@ -219,10 +219,6 @@ ABSL_MSVC_TEST_FLAGS = [
+     "/DNOMINMAX",
+ ]
+ 
+-ABSL_RANDOM_HWAES_ARM32_FLAGS = [
+-    "-mfpu=neon",
+-]
+-
+ ABSL_RANDOM_HWAES_ARM64_FLAGS = [
+     "-march=armv8-a+crypto",
+ ]
+-- 
+2.25.1
+
diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch
new file mode 100644
index 00000000..ba0cd669
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0004-abseil-ppc-fixes.patch
@@ -0,0 +1,103 @@ 
+From f9607924225ca59fb6c60222e6424b84e6f70029 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 21 Sep 2024 20:53:06 +0800
+Subject: [PATCH] abseil: ppc fixes
+
+An all-in-one patch that fixes several issues:
+
+1) UnscaledCycleClock not fully implemented for ppc*-musl (disabled on musl)
+2) powerpc stacktrace implementation only works on glibc (disabled on musl)
+3) powerpc stacktrace implementation has ppc64 assumptions (fixed)
+4) examine_stack.cpp makes glibc assumptions on powerpc (fixed)
+
+Sourced from void linux
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ absl/base/internal/unscaledcycleclock.cc       | 4 ++--
+ absl/base/internal/unscaledcycleclock_config.h | 3 ++-
+ absl/debugging/internal/examine_stack.cc       | 8 +++++++-
+ absl/debugging/internal/stacktrace_config.h    | 2 +-
+ 4 files changed, 12 insertions(+), 5 deletions(-)
+
+diff --git a/absl/base/internal/unscaledcycleclock.cc b/absl/base/internal/unscaledcycleclock.cc
+index a0bf3a65..103b4f6a 100644
+--- a/absl/base/internal/unscaledcycleclock.cc
++++ b/absl/base/internal/unscaledcycleclock.cc
+@@ -20,7 +20,7 @@
+ #include <intrin.h>
+ #endif
+ 
+-#if defined(__powerpc__) || defined(__ppc__)
++#if (defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)
+ #ifdef __GLIBC__
+ #include <sys/platform/ppc.h>
+ #elif defined(__FreeBSD__)
+@@ -58,7 +58,7 @@ double UnscaledCycleClock::Frequency() {
+   return base_internal::NominalCPUFrequency();
+ }
+ 
+-#elif defined(__powerpc__) || defined(__ppc__)
++#elif (defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)
+ 
+ int64_t UnscaledCycleClock::Now() {
+ #ifdef __GLIBC__
+diff --git a/absl/base/internal/unscaledcycleclock_config.h b/absl/base/internal/unscaledcycleclock_config.h
+index 43a3dabe..196a8535 100644
+--- a/absl/base/internal/unscaledcycleclock_config.h
++++ b/absl/base/internal/unscaledcycleclock_config.h
+@@ -21,7 +21,8 @@
+ 
+ // The following platforms have an implementation of a hardware counter.
+ #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \
+-    defined(__powerpc__) || defined(__ppc__) || defined(_M_IX86) ||     \
++    ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || \
++    defined(_M_IX86) ||     \
+     (defined(_M_X64) && !defined(_M_ARM64EC))
+ #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1
+ #else
+diff --git a/absl/debugging/internal/examine_stack.cc b/absl/debugging/internal/examine_stack.cc
+index 3dd6ba1a..f923b055 100644
+--- a/absl/debugging/internal/examine_stack.cc
++++ b/absl/debugging/internal/examine_stack.cc
+@@ -36,6 +36,10 @@
+ #include <csignal>
+ #include <cstdio>
+ 
++#if defined(__powerpc__)
++#include <asm/ptrace.h>
++#endif
++
+ #include "absl/base/attributes.h"
+ #include "absl/base/internal/raw_logging.h"
+ #include "absl/base/macros.h"
+@@ -177,8 +181,10 @@ void* GetProgramCounter(void* const vuc) {
+     return reinterpret_cast<void*>(context->uc_mcontext.pc);
+ #elif defined(__powerpc64__)
+     return reinterpret_cast<void*>(context->uc_mcontext.gp_regs[32]);
+-#elif defined(__powerpc__)
++#elif defined(__powerpc__) && defined(__GLIBC__)
+     return reinterpret_cast<void*>(context->uc_mcontext.uc_regs->gregs[32]);
++#elif defined(__powerpc__)
++    return reinterpret_cast<void*>((context->uc_regs)->gregs[32]);
+ #elif defined(__riscv)
+     return reinterpret_cast<void*>(context->uc_mcontext.__gregs[REG_PC]);
+ #elif defined(__s390__) && !defined(__s390x__)
+diff --git a/absl/debugging/internal/stacktrace_config.h b/absl/debugging/internal/stacktrace_config.h
+index 3929b1b7..23d5e504 100644
+--- a/absl/debugging/internal/stacktrace_config.h
++++ b/absl/debugging/internal/stacktrace_config.h
+@@ -60,7 +60,7 @@
+ #elif defined(__i386__) || defined(__x86_64__)
+ #define ABSL_STACKTRACE_INL_HEADER \
+   "absl/debugging/internal/stacktrace_x86-inl.inc"
+-#elif defined(__ppc__) || defined(__PPC__)
++#elif (defined(__ppc__) || defined(__PPC__)) && defined(__GLIBC__)
+ #define ABSL_STACKTRACE_INL_HEADER \
+   "absl/debugging/internal/stacktrace_powerpc-inl.inc"
+ #elif defined(__aarch64__)
+-- 
+2.25.1
+
diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch
new file mode 100644
index 00000000..9a4fc0b4
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp/0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch
@@ -0,0 +1,30 @@ 
+From 9cb5e5d15c142e5cc43a2c1db87c8e4e5b6d38a5 Mon Sep 17 00:00:00 2001
+From: Derek Mauro <dmauro@google.com>
+Date: Mon, 5 Aug 2024 07:35:05 -0700
+Subject: [PATCH] Don't match -Wnon-virtual-dtor in the "flags are needed to
+ suppress warnings in headers". It should fall through to the "don't impose
+ our warnings on others" case. Do this by matching on "-Wno-*" instead of
+ "-Wno*".
+
+Fixes #1737
+
+PiperOrigin-RevId: 659548798
+Change-Id: I49d7ba7ddcd7be30f946fca90ba9be467181e854
+Upstream-Status: Backport [https://github.com/abseil/abseil-cpp/commit/9cb5e5d15c142e5cc43a2c1db87c8e4e5b6d38a5]
+---
+ CMake/AbseilHelpers.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake
+index b177e590..3c4c92fe 100644
+--- a/CMake/AbseilHelpers.cmake
++++ b/CMake/AbseilHelpers.cmake
+@@ -195,7 +195,7 @@ function(absl_cc_library)
+         # specified platform. Filter both of them out before the successor
+         # reaches the "^-m" filter.
+         set(skip_next_cflag ON)
+-      elseif(${cflag} MATCHES "^(-Wno|/wd)")
++      elseif(${cflag} MATCHES "^(-Wno-|/wd)")
+         # These flags are needed to suppress warnings that might fire in our headers.
+         set(PC_CFLAGS "${PC_CFLAGS} ${cflag}")
+       elseif(${cflag} MATCHES "^(-W|/w[1234eo])")
diff --git a/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb
new file mode 100644
index 00000000..4bfc2100
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/abseil-cpp/abseil-cpp_20240722.0.bb
@@ -0,0 +1,54 @@ 
+SUMMARY = "Abseil is a cpp library like STL"
+DESCRIPTION = "Abseil provides pieces missing from the C++ standard. Contains \
+additional useful libraries like algorithm, container, debugging, hash, memory, \
+meta, numeric, strings, synchronization, time, types and utility."
+HOMEPAGE = "https://abseil.io/"
+SECTION = "libs"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=df52c6edb7adc22e533b2bacc3bd3915"
+
+SRCREV = "4447c7562e3bc702ade25105912dce503f0c4010"
+BRANCH = "lts_2024_07_22"
+SRC_URI = "git://github.com/abseil/abseil-cpp;branch=${BRANCH};protocol=https \
+           file://0001-absl-always-use-asm-sgidefs.h.patch             \
+           file://0002-Remove-maes-option-from-cross-compilation.patch \
+           file://0003-Remove-neon-option-from-cross-compilation.patch \
+           file://0004-abseil-ppc-fixes.patch \
+           file://0005-Don-t-match-Wnon-virtual-dtor-in-the-flags-are-neede.patch \
+          "
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+EXTRA_OECMAKE = "-DBUILD_SHARED_LIBS=ON \
+                 -DBUILD_TESTING=OFF    \
+                 -DABSL_ENABLE_INSTALL=ON \
+                "
+
+SYSROOT_DIRS:append:class-nativesdk:mingw32 = " ${bindir}"
+
+PACKAGES_DYNAMIC += "^libabsl-*"
+PACKAGES_DYNAMIC:class-native = ""
+
+PACKAGESPLITFUNCS =+ "split_dynamic_packages"
+
+python split_dynamic_packages() {
+    libdir = d.getVar('libdir')
+
+    libpackages = do_split_packages(
+        d,
+        root=libdir,
+        file_regex=r'^libabsl_(.*)\.so\..*$',
+        output_pattern='libabsl-%s',
+        description="abseil shared library %s",
+        prepend=True,
+        extra_depends='',
+    )
+    if libpackages:
+        d.appendVar('RDEPENDS:' + d.getVar('PN'), ' ' + ' '.join(libpackages))
+}
+
+ALLOW_EMPTY:${PN} = "1"
+
+BBCLASSEXTEND = "native nativesdk"