From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 273EE15813A for ; Tue, 14 Jan 2025 06:34:14 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 63BF6E07DB; Tue, 14 Jan 2025 06:34:13 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 41582E07DB for ; Tue, 14 Jan 2025 06:34:13 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 3F4AA340906 for ; Tue, 14 Jan 2025 06:34:12 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id CF9F720A3 for ; Tue, 14 Jan 2025 06:34:10 +0000 (UTC) From: "Sam James" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" Message-ID: <1736836368.3c2c0cf61d2d1231e5c88f6c2f48c3b5e4524716.sam@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: dev-cpp/benchmark/files/, profiles/arch/hppa/, dev-cpp/benchmark/ X-VCS-Repository: repo/gentoo X-VCS-Files: dev-cpp/benchmark/Manifest dev-cpp/benchmark/benchmark-1.8.4.ebuild dev-cpp/benchmark/benchmark-1.9.0.ebuild dev-cpp/benchmark/benchmark-1.9.1.ebuild dev-cpp/benchmark/files/benchmark-1.9.1-clock-detection-portability.patch profiles/arch/hppa/package.mask X-VCS-Directories: dev-cpp/benchmark/files/ profiles/arch/hppa/ dev-cpp/benchmark/ X-VCS-Committer: sam X-VCS-Committer-Name: Sam James X-VCS-Revision: 3c2c0cf61d2d1231e5c88f6c2f48c3b5e4524716 X-VCS-Branch: master Date: Tue, 14 Jan 2025 06:34:10 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 3a252e8a-46a7-4980-bfd6-ad0e3bbab5ec X-Archives-Hash: 5d9db84d57a1e06672858b087d77e000 commit: 3c2c0cf61d2d1231e5c88f6c2f48c3b5e4524716 Author: Sam James gentoo org> AuthorDate: Tue Jan 14 06:22:02 2025 +0000 Commit: Sam James gentoo org> CommitDate: Tue Jan 14 06:32:48 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3c2c0cf6 dev-cpp/benchmark: add 1.9.1 * Skip tests which fail with GCC 15 for now (bug #941538). It's worth us looking at why they only fail with 15 but CMake warns on them being brittle w/ diff GCC versions and I'm not too worried about it. * Drop USE=libcxx, USE=exceptions, USE=lto. These should be determined by profile, upstream defaults / always on, and user *FLAGS, respectively. * Backport upstream patches to add clock detection for HPPA *and* fallback for other arches. Yay! * Fix libpfm (disable for multilib as it's not multilib-aware, bug #943293). * Add USE=debug for -DNDEBUG (bug #943629). Bug: https://bugs.gentoo.org/914038 Bug: https://bugs.gentoo.org/941538 Closes: https://bugs.gentoo.org/943293 Closes: https://bugs.gentoo.org/943629 Signed-off-by: Sam James gentoo.org> dev-cpp/benchmark/Manifest | 1 + dev-cpp/benchmark/benchmark-1.8.4.ebuild | 2 +- dev-cpp/benchmark/benchmark-1.9.0.ebuild | 2 +- ...nchmark-1.9.0.ebuild => benchmark-1.9.1.ebuild} | 55 ++++-- ...nchmark-1.9.1-clock-detection-portability.patch | 205 +++++++++++++++++++++ profiles/arch/hppa/package.mask | 5 - 6 files changed, 244 insertions(+), 26 deletions(-) diff --git a/dev-cpp/benchmark/Manifest b/dev-cpp/benchmark/Manifest index 9fa403401fa5..07551f9ed37d 100644 --- a/dev-cpp/benchmark/Manifest +++ b/dev-cpp/benchmark/Manifest @@ -1,2 +1,3 @@ DIST benchmark-1.8.4.tar.gz 253916 BLAKE2B 78a290a5013d8371e87b7c918e518e3ec0e8247e25e211d160ab8dea51d8871d8dac54ee91ee0c512af86a60d1f4e9baedadc20d4a7fa28ef790411fda0399c8 SHA512 835d12b88fe52309ce6b2ffbc8b3c178ac594be7d249b5daca0373d1d03ec83ea3c7b94224f67f22d21919376985867eeff0d1c0721501cfd8a9e9b8a9c48882 DIST benchmark-1.9.0.tar.gz 253961 BLAKE2B fdac0018435622e3ee2c1cde02c8140a15f2579b9059d1592b588033e6935bd8d54c874f4ea912696e8e1d5f7eebae30ba849f77cc3f74f006b4b03c712685ed SHA512 0e91e0e5a2222d7650fd8bd9cafb2f0e7c1689cd1b87b2cc529c738db12bfef31162aa5a4da78f7b0aa7f0101dc08b626802c58d39862458f82f9fea9316ca25 +DIST benchmark-1.9.1.tar.gz 255148 BLAKE2B 39b78afcb333c750960f476476b625d7f72b7cb787176deda1bd939d030e39b16fd008816c64447f7bb224983f2e80b047636f727a3d6d938f1b44dc25bddb55 SHA512 fc787d3d60a55abb3edaa575bf947c72e1ad1404a35bfddf585299411bcd04d32503bba563f9a36dccf128fce6261b97d460d6c293ed2c2d0807cf0154c86aa7 diff --git a/dev-cpp/benchmark/benchmark-1.8.4.ebuild b/dev-cpp/benchmark/benchmark-1.8.4.ebuild index 3ba3a6651fab..b800d96f5d0f 100644 --- a/dev-cpp/benchmark/benchmark-1.8.4.ebuild +++ b/dev-cpp/benchmark/benchmark-1.8.4.ebuild @@ -11,7 +11,7 @@ SRC_URI="https://github.com/google/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" LICENSE="Apache-2.0" SLOT="0" -KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ppc ppc64 ~riscv x86" +KEYWORDS="~alpha amd64 ~arm arm64 ~loong ppc ppc64 ~riscv x86" IUSE="debug doc test" RESTRICT="!test? ( test )" diff --git a/dev-cpp/benchmark/benchmark-1.9.0.ebuild b/dev-cpp/benchmark/benchmark-1.9.0.ebuild index 8340d18d7710..b20f08d030a7 100644 --- a/dev-cpp/benchmark/benchmark-1.9.0.ebuild +++ b/dev-cpp/benchmark/benchmark-1.9.0.ebuild @@ -12,7 +12,7 @@ HOMEPAGE="https://github.com/google/benchmark/" SRC_URI="https://github.com/google/benchmark/archive/v${PV}.tar.gz -> ${P}.tar.gz" LICENSE="Apache-2.0" SLOT="0/$(ver_cut 1)" -KEYWORDS="amd64 ~arm arm64 ~hppa ~loong ~ppc ppc64 ~riscv x86" +KEYWORDS="amd64 ~arm arm64 ~loong ~ppc ppc64 ~riscv x86" IUSE="doc +exceptions libcxx libpfm lto test +tools" RESTRICT="!test? ( test )" REQUIRED_USE="tools? ( ${PYTHON_REQUIRED_USE} )" diff --git a/dev-cpp/benchmark/benchmark-1.9.0.ebuild b/dev-cpp/benchmark/benchmark-1.9.1.ebuild similarity index 56% copy from dev-cpp/benchmark/benchmark-1.9.0.ebuild copy to dev-cpp/benchmark/benchmark-1.9.1.ebuild index 8340d18d7710..267541f48e8b 100644 --- a/dev-cpp/benchmark/benchmark-1.9.0.ebuild +++ b/dev-cpp/benchmark/benchmark-1.9.1.ebuild @@ -1,67 +1,84 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 -PYTHON_COMPAT=( python3_{11,12} ) +PYTHON_COMPAT=( python3_{11..12} ) -inherit cmake-multilib python-single-r1 +inherit cmake-multilib flag-o-matic python-single-r1 DESCRIPTION="A microbenchmark support library" HOMEPAGE="https://github.com/google/benchmark/" SRC_URI="https://github.com/google/benchmark/archive/v${PV}.tar.gz -> ${P}.tar.gz" + LICENSE="Apache-2.0" SLOT="0/$(ver_cut 1)" -KEYWORDS="amd64 ~arm arm64 ~hppa ~loong ~ppc ppc64 ~riscv x86" -IUSE="doc +exceptions libcxx libpfm lto test +tools" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" +IUSE="doc debug libpfm test +tools" RESTRICT="!test? ( test )" REQUIRED_USE="tools? ( ${PYTHON_REQUIRED_USE} )" DEPEND=" - libcxx? ( llvm-runtimes/libcxx[${MULTILIB_USEDEP}] ) libpfm? ( dev-libs/libpfm:= ) " - -BDEPEND=" - >=dev-build/cmake-3.10 - doc? ( app-text/doxygen ) - test? ( dev-cpp/gtest[${MULTILIB_USEDEP}] ) -" - RDEPEND=" + ${DEPEND} tools? ( $(python_gen_cond_dep ' dev-python/numpy[${PYTHON_USEDEP}] >=dev-python/scipy-1.10.0[${PYTHON_USEDEP}] ') - ${PYTHON_DEPS} ) " +BDEPEND=" + doc? ( app-text/doxygen ) + test? ( dev-cpp/gtest[${MULTILIB_USEDEP}] ) +" -PATCHES=( "${FILESDIR}/${P}-fix-documentation-installation.patch" ) +PATCHES=( + "${FILESDIR}/${PN}-1.9.0-fix-documentation-installation.patch" + "${FILESDIR}/${P}-clock-detection-portability.patch" +) pkg_setup() { use tools && python-single-r1_pkg_setup } multilib_src_configure() { + # bug #943629 + use debug || append-cppflags -DNDEBUG + local mycmakeargs=( -DBENCHMARK_ENABLE_DOXYGEN="$(usex doc)" - -DBENCHMARK_ENABLE_EXCEPTIONS="$(usex exceptions)" -DBENCHMARK_ENABLE_GTEST_TESTS="$(usex test)" - -DBENCHMARK_ENABLE_LTO="$(usex lto)" - -DBENCHMARK_ENABLE_LIBPFM="$(usex libpfm)" + # Users should control this via *FLAGS + -DBENCHMARK_ENABLE_LTO=OFF + -DBENCHMARK_ENABLE_LIBPFM="$(multilib_native_usex libpfm)" -DBENCHMARK_ENABLE_TESTING="$(usex test)" -DBENCHMARK_ENABLE_WERROR=OFF -DBENCHMARK_INSTALL_DOCS="$(usex doc)" -DBENCHMARK_USE_BUNDLED_GTEST=OFF - -DBENCHMARK_USE_LIBCXX="$(usex libcxx)" + # This is determined by profile. + -DBENCHMARK_USE_LIBCXX=OFF ) cmake_src_configure } +multilib_src_test() { + CMAKE_SKIP_TESTS=( + # CMake already warns on these being brittle w/ diff + # compiler versions. Could do with investigation if bored + # but not critical. See bug #941538. + run_donotoptimize_assembly_test_CHECK + run_state_assembly_test_CHECK + run_clobber_memory_assembly_test_CHECK + ) + + cmake_src_test +} + multilib_src_install_all() { dodoc CONTRIBUTING.md dodoc CONTRIBUTORS diff --git a/dev-cpp/benchmark/files/benchmark-1.9.1-clock-detection-portability.patch b/dev-cpp/benchmark/files/benchmark-1.9.1-clock-detection-portability.patch new file mode 100644 index 000000000000..d9ecd9db56d2 --- /dev/null +++ b/dev-cpp/benchmark/files/benchmark-1.9.1-clock-detection-portability.patch @@ -0,0 +1,205 @@ +https://github.com/google/benchmark/commit/f65741b2bd92461dc2c816056eb9c996ae48ad62 +https://github.com/google/benchmark/commit/077db43001b42af3ad23e993b2bdcb4fadb7bcf8 +https://github.com/google/benchmark/commit/39be87d3004ff9ff4cdf736651af80c3d15e2497 +https://github.com/google/benchmark/commit/c24774dc4f4402c3ad150363321cc972ed2669e7 + +From f65741b2bd92461dc2c816056eb9c996ae48ad62 Mon Sep 17 00:00:00 2001 +From: Helge Deller +Date: Wed, 8 Jan 2025 13:03:53 +0100 +Subject: [PATCH] cycleclock: Support for PA-RISC (hppa) architecture (#1894) + +Co-authored-by: dominic <510002+dmah42@users.noreply.github.com> +--- + src/cycleclock.h | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/src/cycleclock.h b/src/cycleclock.h +index bd62f5d7e7..7852f3df52 100644 +--- a/src/cycleclock.h ++++ b/src/cycleclock.h +@@ -229,6 +229,16 @@ inline BENCHMARK_ALWAYS_INLINE int64_t Now() { + struct timeval tv; + gettimeofday(&tv, nullptr); + return static_cast(tv.tv_sec) * 1000000 + tv.tv_usec; ++#elif defined(__hppa__) ++ // HP PA-RISC provides a user-readable clock counter (cr16), but ++ // it's not syncronized across CPUs and only 32-bit wide when programs ++ // are built as 32-bit binaries. ++ // Use clock_gettime(CLOCK_MONOTONIC, ...) instead of gettimeofday ++ // because is provides nanosecond resolution. ++ // Initialize to always return 0 if clock_gettime fails. ++ struct timespec ts = {0, 0}; ++ clock_gettime(CLOCK_MONOTONIC, &ts); ++ return static_cast(ts.tv_sec) * 1000000000 + ts.tv_nsec; + #else + // The soft failover to a generic implementation is automatic only for ARM. + // For other platforms the developer is expected to make an attempt to create + +From 077db43001b42af3ad23e993b2bdcb4fadb7bcf8 Mon Sep 17 00:00:00 2001 +From: Helge Deller +Date: Wed, 8 Jan 2025 17:54:08 +0100 +Subject: [PATCH] cycleclock: Use cock_gettime() as fallback for any Linux + architecture (#1899) + +The Linux kernel provides the clock_gettime() functions since a long +time already, so it's possible to use it as a generic fallback option +for any architecture if no other (better) possibility has been provided +instead. + +I noticed the benchmark package failed to build on debian on the SH-4 +architecture, so with this change SH-4 is now the first user of this +fallback option. +--- + src/cycleclock.h | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/cycleclock.h b/src/cycleclock.h +index 7852f3df5..03e02f805 100644 +--- a/src/cycleclock.h ++++ b/src/cycleclock.h +@@ -229,10 +229,12 @@ inline BENCHMARK_ALWAYS_INLINE int64_t Now() { + struct timeval tv; + gettimeofday(&tv, nullptr); + return static_cast(tv.tv_sec) * 1000000 + tv.tv_usec; +-#elif defined(__hppa__) ++#elif defined(__hppa__) || defined(__linux__) ++ // Fallback for all other architectures with a recent Linux kernel, e.g.: + // HP PA-RISC provides a user-readable clock counter (cr16), but + // it's not syncronized across CPUs and only 32-bit wide when programs + // are built as 32-bit binaries. ++ // Same for SH-4 and possibly others. + // Use clock_gettime(CLOCK_MONOTONIC, ...) instead of gettimeofday + // because is provides nanosecond resolution. + // Initialize to always return 0 if clock_gettime fails. +From 39be87d3004ff9ff4cdf736651af80c3d15e2497 Mon Sep 17 00:00:00 2001 +From: Helge Deller +Date: Thu, 9 Jan 2025 11:47:29 +0100 +Subject: [PATCH] Fix runtime crash when parsing /proc/cpuinfo fails (#1900) + +The testcase fails on sparc64, because the parsing of /proc/cpuinfo +fails and thus currently returns "0" CPUs which finally leads +to division-by-zero faults in the tests. + +Fix the issue by returning at least "1" CPU which allows the +tests to run. A error message will be printed in any case. + +Long-term the code should be fixed to parse the cpuinfo output +on sparch which looks like this: +... +type : sun4v +ncpus probed : 48 +ncpus active : 48 +--- + src/sysinfo.cc | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/sysinfo.cc b/src/sysinfo.cc +index 49bff75e5..ce14b8d8e 100644 +--- a/src/sysinfo.cc ++++ b/src/sysinfo.cc +@@ -561,10 +561,12 @@ int GetNumCPUsImpl() { + } + + int GetNumCPUs() { +- const int num_cpus = GetNumCPUsImpl(); ++ int num_cpus = GetNumCPUsImpl(); + if (num_cpus < 1) { + std::cerr << "Unable to extract number of CPUs. If your platform uses " + "/proc/cpuinfo, custom support may need to be added.\n"; ++ /* There is at least one CPU which we run on. */ ++ num_cpus = 1; + } + return num_cpus; + } +From c24774dc4f4402c3ad150363321cc972ed2669e7 Mon Sep 17 00:00:00 2001 +From: Helge Deller +Date: Thu, 9 Jan 2025 17:07:43 +0100 +Subject: [PATCH] Get number of CPUs with sysconf() on Linux (#1901) + +* Get number of CPUs with sysconf() on Linux + +Avoid parsing the /proc/cpuinfo just to get number of CPUs. +Instead use the portable function provided by glibc. + +* Update sysinfo.cc +--- + src/sysinfo.cc | 54 +++----------------------------------------------- + 1 file changed, 3 insertions(+), 51 deletions(-) + +diff --git a/src/sysinfo.cc b/src/sysinfo.cc +index ce14b8d8e..eddd430e6 100644 +--- a/src/sysinfo.cc ++++ b/src/sysinfo.cc +@@ -492,14 +492,14 @@ int GetNumCPUsImpl() { + GetSystemInfo(&sysinfo); + // number of logical processors in the current group + return static_cast(sysinfo.dwNumberOfProcessors); +-#elif defined(BENCHMARK_OS_SOLARIS) ++#elif defined(__linux__) || defined(BENCHMARK_OS_SOLARIS) + // Returns -1 in case of a failure. +- long num_cpu = sysconf(_SC_NPROCESSORS_ONLN); ++ int num_cpu = static_cast(sysconf(_SC_NPROCESSORS_ONLN)); + if (num_cpu < 0) { + PrintErrorAndDie("sysconf(_SC_NPROCESSORS_ONLN) failed with error: ", + strerror(errno)); + } +- return (int)num_cpu; ++ return num_cpu; + #elif defined(BENCHMARK_OS_QNX) + return static_cast(_syspage_ptr->num_cpu); + #elif defined(BENCHMARK_OS_QURT) +@@ -508,54 +508,6 @@ int GetNumCPUsImpl() { + hardware_threads.max_hthreads = 1; + } + return hardware_threads.max_hthreads; +-#else +- int num_cpus = 0; +- int max_id = -1; +- std::ifstream f("/proc/cpuinfo"); +- if (!f.is_open()) { +- std::cerr << "Failed to open /proc/cpuinfo\n"; +- return -1; +- } +-#if defined(__alpha__) +- const std::string Key = "cpus detected"; +-#else +- const std::string Key = "processor"; +-#endif +- std::string ln; +- while (std::getline(f, ln)) { +- if (ln.empty()) continue; +- std::size_t split_idx = ln.find(':'); +- std::string value; +-#if defined(__s390__) +- // s390 has another format in /proc/cpuinfo +- // it needs to be parsed differently +- if (split_idx != std::string::npos) +- value = ln.substr(Key.size() + 1, split_idx - Key.size() - 1); +-#else +- if (split_idx != std::string::npos) value = ln.substr(split_idx + 1); +-#endif +- if (ln.size() >= Key.size() && ln.compare(0, Key.size(), Key) == 0) { +- num_cpus++; +- if (!value.empty()) { +- const int cur_id = benchmark::stoi(value); +- max_id = std::max(cur_id, max_id); +- } +- } +- } +- if (f.bad()) { +- PrintErrorAndDie("Failure reading /proc/cpuinfo"); +- } +- if (!f.eof()) { +- PrintErrorAndDie("Failed to read to end of /proc/cpuinfo"); +- } +- f.close(); +- +- if ((max_id + 1) != num_cpus) { +- fprintf(stderr, +- "CPU ID assignments in /proc/cpuinfo seem messed up." +- " This is usually caused by a bad BIOS.\n"); +- } +- return num_cpus; + #endif + BENCHMARK_UNREACHABLE(); + } diff --git a/profiles/arch/hppa/package.mask b/profiles/arch/hppa/package.mask index 39addcecad66..e7ef6e29762a 100644 --- a/profiles/arch/hppa/package.mask +++ b/profiles/arch/hppa/package.mask @@ -4,8 +4,3 @@ # Sam James (2023-03-28) # Needs explicit porting to each platform (bug 894078#c6) dev-python/py-cpuinfo - -# Quote from : -# "Compilation fails with: #error You need to define CycleTimer for -# your OS and CPU" -dev-cpp/benchmark