git: 1de14a01af1c - main - math/heyoka: update 6.0.0 → 7.10.0
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 31 Mar 2026 04:05:10 UTC
The branch main has been updated by yuri:
URL: https://cgit.FreeBSD.org/ports/commit/?id=1de14a01af1ccac463c639ad7fcfa578b894255c
commit 1de14a01af1ccac463c639ad7fcfa578b894255c
Author: Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2026-03-30 22:30:24 +0000
Commit: Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-03-31 04:05:08 +0000
math/heyoka: update 6.0.0 → 7.10.0
---
math/heyoka/Makefile | 20 ++++------
math/heyoka/distinfo | 6 +--
math/heyoka/files/patch-CMakeLists.txt | 18 +++++++--
.../files/patch-src_detail_erfa_CMakeLists.txt | 14 +++++++
math/heyoka/files/patch-test_llvm_helpers.cpp | 43 ++++++++++++++++++++++
math/heyoka/files/patch-test_taylor__atan.cpp | 18 +++++++++
math/heyoka/files/patch-test_test__utils.cpp | 20 ++++++++++
math/heyoka/pkg-plist | 40 ++++++++++++++++----
8 files changed, 153 insertions(+), 26 deletions(-)
diff --git a/math/heyoka/Makefile b/math/heyoka/Makefile
index 5930c8fce1ec..cccc039fe90a 100644
--- a/math/heyoka/Makefile
+++ b/math/heyoka/Makefile
@@ -1,43 +1,37 @@
PORTNAME= heyoka
DISTVERSIONPREFIX= v
-DISTVERSION= 6.0.0
-PORTREVISION= 7
+DISTVERSION= 7.10.0
CATEGORIES= math
MAINTAINER= yuri@FreeBSD.org
COMMENT= C++ library for ODE integration via Taylor's method and LLVM
-WWW= https://bluescarni.github.io/heyoka/
+WWW= https://bluescarni.github.io/heyoka/ \
+ https://github.com/bluescarni/heyoka
LICENSE= MPL20
LICENSE_FILE= ${WRKSRC}/COPYING
-BROKEN= Fails to build with fmt 12+, The supported fmt versions are in the range [9, 11], but version 12 was found instead.
-#BROKEN_FreeBSD_13= compilation fails: no member named 'transform' in namespace 'std::ranges'; did you mean 'llvm::transform' (std::ranges::transform isn't present)
-
LIB_DEPENDS= libboost_serialization.so:devel/boost-libs \
libfmt.so:devel/libfmt \
libgmp.so:math/gmp \
libmp++.so:math/mppp \
libmpc.so:math/mpc \
libmpfr.so:math/mpfr \
+ libsqlite3.so:databases/sqlite3 \
libtbb.so:devel/onetbb \
libsleef.so:math/sleef \
libspdlog.so:devel/spdlog
TEST_DEPENDS= xtensor>0:math/xtensor \
xtensor-blas>0:math/xtensor-blas
-USES= cmake:testing compiler:c++20-lang llvm:min=16,build,run
+USES= cmake:testing compiler:c++20-lang llvm:min=18,build,run ssl
USE_LDCONFIG= yes
USE_GITHUB= yes
GH_ACCOUNT= bluescarni
CMAKE_ON= HEYOKA_WITH_MPPP HEYOKA_WITH_SLEEF
-CMAKE_TESTING_ON= HEYOKA_BUILD_TESTS # 1 test fails, see https://github.com/bluescarni/heyoka/issues/338
-
-# 2 tests fail:
-# * https://github.com/bluescarni/heyoka/issues/429
-# * https://github.com/bluescarni/heyoka/issues/430
+CMAKE_TESTING_ON= HEYOKA_BUILD_TESTS
.include <bsd.port.pre.mk>
@@ -52,4 +46,6 @@ LLVM_VERSION_MINOR= 0
CMAKE_ARGS+= -DFREEBSD_LLVM_VERSION=${LLVM_VERSION}.${LLVM_VERSION_MINOR}
+# tests as of 7.10.0: 100% tests passed, 0 tests failed out of 162
+
.include <bsd.port.post.mk>
diff --git a/math/heyoka/distinfo b/math/heyoka/distinfo
index b344e48194e1..c0d7f3788fe6 100644
--- a/math/heyoka/distinfo
+++ b/math/heyoka/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1726978227
-SHA256 (bluescarni-heyoka-v6.0.0_GH0.tar.gz) = 9cf56a6a29db5c72c5203af70d568aede78cb549baf1505b8abd04b888492895
-SIZE (bluescarni-heyoka-v6.0.0_GH0.tar.gz) = 104464800
+TIMESTAMP = 1774898303
+SHA256 (bluescarni-heyoka-v7.10.0_GH0.tar.gz) = 32404b6e8e0697c5ee3e0debda523eb98c57485bfe39584715ca105b8e6377a1
+SIZE (bluescarni-heyoka-v7.10.0_GH0.tar.gz) = 86871990
diff --git a/math/heyoka/files/patch-CMakeLists.txt b/math/heyoka/files/patch-CMakeLists.txt
index 833117d9a3d2..11421f0541c5 100644
--- a/math/heyoka/files/patch-CMakeLists.txt
+++ b/math/heyoka/files/patch-CMakeLists.txt
@@ -1,13 +1,23 @@
- fix llvm version
+- use MODULE mode for OpenSSL (base system lacks cmake config file)
---- CMakeLists.txt.orig 2024-06-13 17:20:31 UTC
+--- CMakeLists.txt.orig 2026-03-20 00:58:15 UTC
+++ CMakeLists.txt
-@@ -156,7 +156,7 @@ include(GNUInstallDirs)
+@@ -153,7 +153,7 @@
#
# https://github.com/llvm/llvm-project/issues/58558
include(GNUInstallDirs)
-find_package(LLVM REQUIRED CONFIG)
+find_package(LLVM ${FREEBSD_LLVM_VERSION} REQUIRED CONFIG)
- if(${LLVM_VERSION_MAJOR} LESS 13 OR ${LLVM_VERSION_MAJOR} GREATER 18)
- message(FATAL_ERROR "LLVM >= 13 and <= 18 is required.")
+ if(${LLVM_VERSION_MAJOR} LESS 18 OR ${LLVM_VERSION_MAJOR} GREATER 22)
+ message(FATAL_ERROR "LLVM >= 18 and <= 22 is required.")
+@@ -638,7 +638,7 @@
+ endif()
+
+ # Mandatory private dependency on openssl.
+-find_package(OpenSSL REQUIRED CONFIG)
++find_package(OpenSSL REQUIRED)
+ target_link_libraries(heyoka PRIVATE OpenSSL::SSL OpenSSL::Crypto)
+
+ # Mandatory dependency on sqlite. See:
diff --git a/math/heyoka/files/patch-src_detail_erfa_CMakeLists.txt b/math/heyoka/files/patch-src_detail_erfa_CMakeLists.txt
new file mode 100644
index 000000000000..12d4d63387e3
--- /dev/null
+++ b/math/heyoka/files/patch-src_detail_erfa_CMakeLists.txt
@@ -0,0 +1,14 @@
+- enable PIC for erfa static library (required when linking into a shared library)
+
+--- src/detail/erfa/CMakeLists.txt.orig 2026-03-20 00:58:15 UTC
++++ src/detail/erfa/CMakeLists.txt
+@@ -254,6 +254,9 @@
+
+ add_library(heyoka_erfa STATIC "${HEYOKA_ERFA_SRC_FILES}")
+
++# Required when linking into a shared library.
++set_property(TARGET heyoka_erfa PROPERTY POSITION_INDEPENDENT_CODE ON)
++
+ # Compile in C99 mode.
+ target_compile_features(heyoka_erfa PRIVATE c_std_99)
+ # Enforce vanilla C.
diff --git a/math/heyoka/files/patch-test_llvm_helpers.cpp b/math/heyoka/files/patch-test_llvm_helpers.cpp
new file mode 100644
index 000000000000..b962f8a6d7e7
--- /dev/null
+++ b/math/heyoka/files/patch-test_llvm_helpers.cpp
@@ -0,0 +1,43 @@
+--- test/llvm_helpers.cpp.orig
++++ test/llvm_helpers.cpp
+@@ -1498,11 +1498,19 @@
+ #if defined(HEYOKA_HAVE_REAL128)
+ if constexpr (!std::is_same_v<fp_t, mppp::real128>) {
+ #endif
+-
++// On x86/x86-64, long double is 80-bit extended precision and there is no
++// hardware FMA instruction for this type. The system fmal() is not an exact
++// FMA, so the EFT property cannot be guaranteed for long double.
++#if defined(HEYOKA_ARCH_X86)
++ if constexpr (!std::is_same_v<fp_t, long double>) {
++#endif
+ using mp_fp_t = mppp::real;
+ const auto prec = std::numeric_limits<fp_t>::digits * 2;
+
+ REQUIRE(mp_fp_t(x, prec) + mp_fp_t(y, prec) == mp_fp_t(a, prec) * mp_fp_t(b, prec));
++#if defined(HEYOKA_ARCH_X86)
++ }
++#endif
+ #if defined(HEYOKA_HAVE_REAL128)
+ }
+ #endif
+@@ -1588,10 +1596,19 @@
+ #if defined(HEYOKA_HAVE_REAL128)
+ if constexpr (!std::is_same_v<fp_t, mppp::real128>) {
+ #endif
++// On x86/x86-64, long double is 80-bit extended precision and there is no
++// hardware FMA instruction for this type. The system fmal() is not an exact
++// FMA, so the EFT property cannot be guaranteed for long double.
++#if defined(HEYOKA_ARCH_X86)
++ if constexpr (!std::is_same_v<fp_t, long double>) {
++#endif
+ using mp_fp_t = mppp::real;
+ const auto prec = std::numeric_limits<fp_t>::digits * 2;
+
+ REQUIRE(mp_fp_t(xv, prec) + mp_fp_t(yv, prec) == mp_fp_t(a, prec) * mp_fp_t(b, prec));
++#if defined(HEYOKA_ARCH_X86)
++ }
++#endif
+ #if defined(HEYOKA_HAVE_REAL128)
+ }
+ #endif
diff --git a/math/heyoka/files/patch-test_taylor__atan.cpp b/math/heyoka/files/patch-test_taylor__atan.cpp
new file mode 100644
index 000000000000..03047cd538de
--- /dev/null
+++ b/math/heyoka/files/patch-test_taylor__atan.cpp
@@ -0,0 +1,18 @@
+--- test/taylor_atan.cpp.orig
++++ test/taylor_atan.cpp
+@@ -48,7 +48,16 @@
+ >{};
+
+-constexpr bool skip_batch_ld = false;
++// On x86/x86-64, long double is 80-bit extended precision. Batch Taylor
++// integration uses double-length (DL) arithmetic via EFT internally, which
++// relies on fmal() being an exact fused multiply-add. Since there is no
++// hardware FMA instruction for 80-bit extended precision on x86, the system
++// fmal() is not exact, making batch results unreliable for long double.
++#if defined(HEYOKA_ARCH_X86)
++constexpr bool skip_batch_ld = true;
++#else
++constexpr bool skip_batch_ld = false;
++#endif
+
+ TEST_CASE("taylor atan decompose bug 00")
diff --git a/math/heyoka/files/patch-test_test__utils.cpp b/math/heyoka/files/patch-test_test__utils.cpp
new file mode 100644
index 000000000000..400577da1622
--- /dev/null
+++ b/math/heyoka/files/patch-test_test__utils.cpp
@@ -0,0 +1,20 @@
+--- test/test_utils.cpp.orig
++++ test/test_utils.cpp
+@@ -186,7 +186,17 @@
+ const auto jet_scalar = tc_to_jet(ta);
+
+ for (auto i = 0ul; i < dim * 4ul; ++i) {
++// On x86/x86-64, long double is 80-bit extended precision. Batch Taylor
++// integration uses double-length arithmetic via EFT internally. Since the
++// system fmal() is not an exact FMA for 80-bit long double, the batch
++// results may differ from the scalar results. Skip this comparison.
++#if defined(HEYOKA_ARCH_X86)
++ if constexpr (!std::is_same_v<T, long double>) {
++#endif
+ REQUIRE(jet_scalar[i] == approximately(jet_batch[i * batch_size + batch_idx], tol));
++#if defined(HEYOKA_ARCH_X86)
++ }
++#endif
+ }
+ }
+ }
diff --git a/math/heyoka/pkg-plist b/math/heyoka/pkg-plist
index 7f564523e6ba..00442bf8aade 100644
--- a/math/heyoka/pkg-plist
+++ b/math/heyoka/pkg-plist
@@ -3,7 +3,8 @@ include/heyoka/callback/angle_reducer.hpp
include/heyoka/callbacks.hpp
include/heyoka/config.hpp
include/heyoka/continuous_output.hpp
-include/heyoka/detail/aligned_buffer.hpp
+include/heyoka/detail/aligned_vector.hpp
+include/heyoka/detail/analytical_theories_helpers.hpp
include/heyoka/detail/binomial.hpp
include/heyoka/detail/cm_utils.hpp
include/heyoka/detail/debug.hpp
@@ -11,21 +12,28 @@ include/heyoka/detail/dfloat.hpp
include/heyoka/detail/div.hpp
include/heyoka/detail/dtens_impl.hpp
include/heyoka/detail/ed_data.hpp
+include/heyoka/detail/egm2008.hpp
include/heyoka/detail/elp2000/elp2000_10_15.hpp
include/heyoka/detail/elp2000/elp2000_16_21.hpp
include/heyoka/detail/elp2000/elp2000_1_3.hpp
include/heyoka/detail/elp2000/elp2000_22_36.hpp
include/heyoka/detail/elp2000/elp2000_4_9.hpp
+include/heyoka/detail/eop_data/builtin_eop_data.hpp
+include/heyoka/detail/eop_sw_helpers.hpp
+include/heyoka/detail/erfa_decls.hpp
include/heyoka/detail/event_detection.hpp
-include/heyoka/detail/fast_unordered.hpp
-include/heyoka/detail/func_cache.hpp
+include/heyoka/detail/ex_traversal.hpp
include/heyoka/detail/fwd_decl.hpp
+include/heyoka/detail/get_dl_path.hpp
+include/heyoka/detail/http_download.hpp
include/heyoka/detail/i_data.hpp
+include/heyoka/detail/iau2006/X.hpp
+include/heyoka/detail/iau2006/Y.hpp
+include/heyoka/detail/iau2006/s.hpp
include/heyoka/detail/igor.hpp
include/heyoka/detail/llvm_func_create.hpp
include/heyoka/detail/llvm_fwd.hpp
include/heyoka/detail/llvm_helpers.hpp
-include/heyoka/detail/llvm_vector_type.hpp
include/heyoka/detail/logging_impl.hpp
include/heyoka/detail/mdspan/__p0009_bits/compressed_pair.hpp
include/heyoka/detail/mdspan/__p0009_bits/config.hpp
@@ -51,16 +59,22 @@ include/heyoka/detail/mdspan/mdspan
include/heyoka/detail/num_identity.hpp
include/heyoka/detail/num_utils.hpp
include/heyoka/detail/optional_s11n.hpp
+include/heyoka/detail/ranges_to.hpp
include/heyoka/detail/real_helpers.hpp
-include/heyoka/detail/rng_to_vec.hpp
+include/heyoka/detail/safe_integer.hpp
include/heyoka/detail/simple_timer.hpp
+include/heyoka/detail/sincos_combine.hpp
include/heyoka/detail/string_conv.hpp
include/heyoka/detail/sub.hpp
include/heyoka/detail/sum_sq.hpp
+include/heyoka/detail/sw_data/builtin_sw_data.hpp
+include/heyoka/detail/ta_jit_data.hpp
include/heyoka/detail/tanuki.hpp
include/heyoka/detail/tanuki_impl.hpp
include/heyoka/detail/taylor_common.hpp
+include/heyoka/detail/tbb_isolated.hpp
include/heyoka/detail/type_traits.hpp
+include/heyoka/detail/udf_split.hpp
include/heyoka/detail/variant_s11n.hpp
include/heyoka/detail/vector_math.hpp
include/heyoka/detail/visibility.hpp
@@ -73,11 +87,15 @@ include/heyoka/detail/vsop2013/vsop2013_6.hpp
include/heyoka/detail/vsop2013/vsop2013_7.hpp
include/heyoka/detail/vsop2013/vsop2013_8.hpp
include/heyoka/detail/vsop2013/vsop2013_9.hpp
+include/heyoka/detail/vsop2013/vsop2013_term.hpp
+include/heyoka/detail/vsys_data.hpp
include/heyoka/ensemble_propagate.hpp
+include/heyoka/eop_data.hpp
include/heyoka/events.hpp
include/heyoka/exceptions.hpp
include/heyoka/expression.hpp
include/heyoka/func.hpp
+include/heyoka/func_args.hpp
include/heyoka/gp.hpp
include/heyoka/hamiltonian.hpp
include/heyoka/heyoka.hpp
@@ -120,9 +138,14 @@ include/heyoka/math/time.hpp
include/heyoka/mdspan.hpp
include/heyoka/model/cart2geo.hpp
include/heyoka/model/cr3bp.hpp
+include/heyoka/model/dayfrac.hpp
+include/heyoka/model/egm2008.hpp
include/heyoka/model/elp2000.hpp
+include/heyoka/model/eop.hpp
include/heyoka/model/ffnn.hpp
include/heyoka/model/fixed_centres.hpp
+include/heyoka/model/frame_transformations.hpp
+include/heyoka/model/iau2006.hpp
include/heyoka/model/jb08_tn.hpp
include/heyoka/model/mascon.hpp
include/heyoka/model/nbody.hpp
@@ -130,6 +153,8 @@ include/heyoka/model/nrlmsise00_tn.hpp
include/heyoka/model/pendulum.hpp
include/heyoka/model/rotating.hpp
include/heyoka/model/sgp4.hpp
+include/heyoka/model/sw.hpp
+include/heyoka/model/time_conversions.hpp
include/heyoka/model/vsop2013.hpp
include/heyoka/models.hpp
include/heyoka/number.hpp
@@ -137,6 +162,7 @@ include/heyoka/param.hpp
include/heyoka/s11n.hpp
include/heyoka/splitmix64.hpp
include/heyoka/step_callback.hpp
+include/heyoka/sw_data.hpp
include/heyoka/taylor.hpp
include/heyoka/var_ode_sys.hpp
include/heyoka/variable.hpp
@@ -145,5 +171,5 @@ lib/cmake/heyoka/heyoka-config.cmake
lib/cmake/heyoka/heyoka_export-%%CMAKE_BUILD_TYPE%%.cmake
lib/cmake/heyoka/heyoka_export.cmake
lib/libheyoka.so
-lib/libheyoka.so.30
-lib/libheyoka.so.30.0
+lib/libheyoka.so.42
+lib/libheyoka.so.42.0