sci-physics/espresso: add the patches too. oops...

Fixes: 74d3bc3916
Signed-off-by: Eli Schwartz <eschwartz@gentoo.org>
This commit is contained in:
Eli Schwartz
2025-09-08 15:18:02 -04:00
parent c19ed3a7a6
commit ff73a7079b
3 changed files with 353 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
From e0852a7cc236c500cfcd155dd1a58838dbdc438a Mon Sep 17 00:00:00 2001
From: Eli Schwartz <eschwartz@gentoo.org>
Date: Tue, 2 Sep 2025 19:47:46 -0400
Subject: [PATCH] allow building test deps without running ctest indirectly
---
src/CMakeLists.txt | 3 +--
testsuite/python/CMakeLists.txt | 3 +--
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 2b80d67..abb251b 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -20,8 +20,7 @@
# Target for the unit tests
add_custom_target(
- check_unit_tests COMMAND ${CMAKE_CTEST_COMMAND} --timeout ${TEST_TIMEOUT}
- ${CTEST_ARGS} --output-on-failure)
+ check_unit_tests )
if(WITH_TESTS)
# Run unit tests on check
diff --git a/testsuite/python/CMakeLists.txt b/testsuite/python/CMakeLists.txt
index bb057cd..e2107e0 100644
--- a/testsuite/python/CMakeLists.txt
+++ b/testsuite/python/CMakeLists.txt
@@ -340,7 +340,6 @@ add_custom_target(
add_dependencies(check_python_skip_long pypresso python_test_data)
add_custom_target(
- check_python COMMAND ${CMAKE_CTEST_COMMAND} --timeout ${TEST_TIMEOUT}
- ${CTEST_ARGS} --output-on-failure)
+ check_python )
add_dependencies(check_python pypresso python_test_data)
add_dependencies(check check_python)
--
2.49.1

View File

@@ -0,0 +1,112 @@
From 111283a0e0184e1674ef29ec0bd873a099574096 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jean-No=C3=ABl=20Grad?= <jgrad@icp.uni-stuttgart.de>
Date: Tue, 18 Apr 2023 10:46:51 +0200
Subject: [PATCH] python: Update deprecated setuptools functionality
Starting with setuptools v67.3.0, the pkg_resources module is being
progressively phased out from the setuptools main module.
---
doc/tutorials/constant_pH/constant_pH.ipynb | 4 ++--
maintainer/benchmarks/mc_acid_base_reservoir.py | 4 ++--
testsuite/python/unittest_decorators.py | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/doc/tutorials/constant_pH/constant_pH.ipynb b/doc/tutorials/constant_pH/constant_pH.ipynb
index bcfd5bdf993..ca4029465a4 100644
--- a/doc/tutorials/constant_pH/constant_pH.ipynb
+++ b/doc/tutorials/constant_pH/constant_pH.ipynb
@@ -137,10 +137,10 @@
"plt.rcParams.update({'font.size': 18})\n",
"\n",
"import numpy as np\n",
- "import setuptools\n",
+ "import pkg_resources\n",
"import pint # module for working with units and dimensions\n",
"import time\n",
- "assert setuptools.version.pkg_resources.packaging.specifiers.SpecifierSet('>=0.10.1').contains(pint.__version__), \\\n",
+ "assert pkg_resources.packaging.specifiers.SpecifierSet('>=0.10.1').contains(pint.__version__), \\\n",
" f'pint version {pint.__version__} is too old: several numpy operations can cast away the unit'\n",
"\n",
"import espressomd\n",
diff --git a/maintainer/benchmarks/mc_acid_base_reservoir.py b/maintainer/benchmarks/mc_acid_base_reservoir.py
index 97e465e8c70..a7a7a965f73 100644
--- a/maintainer/benchmarks/mc_acid_base_reservoir.py
+++ b/maintainer/benchmarks/mc_acid_base_reservoir.py
@@ -24,7 +24,7 @@
import espressomd
import espressomd.electrostatics
import espressomd.reaction_methods
-import setuptools
+import pkg_resources
import argparse
parser = argparse.ArgumentParser(description="Benchmark MC simulations in the grand-reaction ensemble. "
@@ -45,7 +45,7 @@
# process and check arguments
assert args.particles_per_core >= 100, "you need to use at least 100 particles per core to avoid finite-size effects in the simulation"
espressomd.assert_features(['WCA', 'ELECTROSTATICS'])
-assert setuptools.version.pkg_resources.packaging.specifiers.SpecifierSet('>=0.10.1').contains(pint.__version__), \
+assert pkg_resources.packaging.specifiers.SpecifierSet('>=0.10.1').contains(pint.__version__), \
f'pint version {pint.__version__} is too old: several numpy operations can cast away the unit'
diff --git a/testsuite/python/unittest_decorators.py b/testsuite/python/unittest_decorators.py
index 109f89cc8d7..a9a0e5200c4 100644
--- a/testsuite/python/unittest_decorators.py
+++ b/testsuite/python/unittest_decorators.py
@@ -19,7 +19,7 @@
import sys
import importlib
-import setuptools
+import pkg_resources
import unittest
import espressomd
@@ -74,7 +74,7 @@ def skipIfUnmetModuleVersionRequirement(module, version_requirement):
_module = importlib.import_module(module)
except ImportError:
return skipIfMissingModules(module)
- if not setuptools.version.pkg_resources.packaging.specifiers.SpecifierSet(
+ if not pkg_resources.packaging.specifiers.SpecifierSet(
version_requirement).contains(_module.__version__):
return unittest.skip(
"Skipping test: version requirement not met for module {}".format(module))
From bff5e2703d4371f06f281d48181431558066d566 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jean-No=C3=ABl=20Grad?= <jgrad@icp.uni-stuttgart.de>
Date: Tue, 20 Dec 2022 19:36:34 +0100
Subject: [PATCH] tests: Replace deprecated numpy option
Option 'normed' in numpy.histogramdd was deprecated since 1.15 and
removed in 1.24.
---
testsuite/python/observable_profile.py | 2 +-
testsuite/python/observable_profileLB.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/testsuite/python/observable_profile.py b/testsuite/python/observable_profile.py
index 9692449185b..0a7b7eafff5 100644
--- a/testsuite/python/observable_profile.py
+++ b/testsuite/python/observable_profile.py
@@ -51,7 +51,7 @@ def test_density_profile(self):
obs_bin_centers = density_profile.bin_centers()
np_hist, np_edges = tests_common.get_histogram(
np.copy(self.system.part.all().pos), self.kwargs, 'cartesian',
- normed=True)
+ density=True)
np_hist *= len(self.system.part)
np.testing.assert_array_almost_equal(obs_data, np_hist)
for i in range(3):
diff --git a/testsuite/python/observable_profileLB.py b/testsuite/python/observable_profileLB.py
index 4a3527035da..6770cea8e50 100644
--- a/testsuite/python/observable_profileLB.py
+++ b/testsuite/python/observable_profileLB.py
@@ -91,7 +91,7 @@ def test_velocity_profile(self):
obs_edges = obs.call_method("edges")
_, np_edges = tests_common.get_histogram(
np.zeros([1, 3]), LB_VELOCITY_PROFILE_PARAMS, 'cartesian',
- normed=True)
+ density=True)
for i in range(3):
np.testing.assert_array_almost_equal(obs_edges[i], np_edges[i])
for x in range(obs_data.shape[0]):

View File

@@ -0,0 +1,201 @@
Several files were removed from this patch due to not applying.
Only Ellipsoid_test.cpp actually failed for me without it.
From 18aeab318cbf2df7450d8c2e5e3634802345454c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jean-No=C3=ABl=20Grad?= <jgrad@icp.uni-stuttgart.de>
Date: Mon, 17 Apr 2023 11:58:09 +0200
Subject: [PATCH] tests: Decrease sensitivity to rounding errors
Expressions involving multiple multiplications can lead to rounding
errors in the order of 1.5 machine precision, triggering assertions
on architectures that don't support double extended precision, or
when fast-math mode is enabled.
---
.../tests/ReactionAlgorithm_test.cpp | 2 +-
.../tests/SingleReaction_test.cpp | 4 ++--
.../tests/reaction_methods_utils_test.cpp | 2 +-
.../unit_tests/EspressoSystemStandAlone_test.cpp | 2 +-
src/core/unit_tests/Verlet_list_test.cpp | 2 +-
src/core/unit_tests/p3m_test.cpp | 2 +-
src/core/unit_tests/periodic_fold_test.cpp | 4 ++--
src/core/unit_tests/specfunc_test.cpp | 2 +-
src/core/unit_tests/thermostats_test.cpp | 2 +-
src/particle_observables/tests/algorithms.cpp | 2 +-
src/shapes/unit_tests/Ellipsoid_test.cpp | 2 +-
src/shapes/unit_tests/Sphere_test.cpp | 2 +-
src/utils/tests/Vector_test.cpp | 5 +++--
src/utils/tests/interpolation_test.cpp | 3 ++-
src/utils/tests/matrix_vector_product.cpp | 5 +++--
src/utils/tests/vec_rotate_test.cpp | 2 +-
testsuite/python/analyze_chains.py | 15 ++++++++++-----
testsuite/python/integrator_npt_stats.py | 2 +-
18 files changed, 34 insertions(+), 26 deletions(-)
diff --git a/src/core/reaction_methods/tests/SingleReaction_test.cpp b/src/core/reaction_methods/tests/SingleReaction_test.cpp
index aeae253cec1..41a27b03ae9 100644
--- a/src/core/reaction_methods/tests/SingleReaction_test.cpp
+++ b/src/core/reaction_methods/tests/SingleReaction_test.cpp
@@ -32,7 +32,7 @@
// and the configurational move probability for a given system state.
BOOST_AUTO_TEST_CASE(SingleReaction_test) {
using namespace ReactionMethods;
- constexpr double tol = 100 * std::numeric_limits<double>::epsilon();
+ auto constexpr tol = 8. * 100. * std::numeric_limits<double>::epsilon();
// create a reaction A -> 3 B + 4 C
int const type_A = 0;
@@ -64,7 +64,7 @@ BOOST_AUTO_TEST_CASE(SingleReaction_test) {
std::unordered_map<int, int>{{type_A, i}, {type_B, j}, {type_C, k}};
auto const val = calculate_factorial_expression(reaction, p_numbers);
auto const ref = g(i, -1) * g(j, 3) * g(k, 4);
- BOOST_CHECK_CLOSE(val, ref, 5 * tol);
+ BOOST_CHECK_CLOSE(val, ref, 5. * tol);
}
}
}
diff --git a/src/core/unit_tests/periodic_fold_test.cpp b/src/core/unit_tests/periodic_fold_test.cpp
index 7346b472c0e..49d69777c94 100644
--- a/src/core/unit_tests/periodic_fold_test.cpp
+++ b/src/core/unit_tests/periodic_fold_test.cpp
@@ -106,7 +106,7 @@ BOOST_AUTO_TEST_CASE(with_image_count) {
BOOST_CHECK(res.first >= 0.);
BOOST_CHECK(res.first <= box);
BOOST_CHECK(std::abs(res.first - x + res.second * box) <=
- std::numeric_limits<double>::epsilon());
+ 4. * std::numeric_limits<double>::epsilon());
}
/* Corner right */
@@ -117,7 +117,7 @@ BOOST_AUTO_TEST_CASE(with_image_count) {
BOOST_CHECK(res.first >= 0.);
BOOST_CHECK(res.first < box);
BOOST_CHECK(std::abs(res.first - x + res.second * box) <=
- std::numeric_limits<double>::epsilon());
+ 4. * std::numeric_limits<double>::epsilon());
}
}
diff --git a/src/core/unit_tests/thermostats_test.cpp b/src/core/unit_tests/thermostats_test.cpp
index 0edd7f47a44..16d5cbf992c 100644
--- a/src/core/unit_tests/thermostats_test.cpp
+++ b/src/core/unit_tests/thermostats_test.cpp
@@ -42,7 +42,7 @@
// multiply by 100 because BOOST_CHECK_CLOSE takes a percentage tolerance,
// and by 6 to account for error accumulation in thermostat functions
-constexpr auto tol = 6 * 100 * std::numeric_limits<double>::epsilon();
+auto constexpr tol = 8. * 100. * std::numeric_limits<double>::epsilon();
Particle particle_factory() {
Particle p{};
diff --git a/src/particle_observables/tests/algorithms.cpp b/src/particle_observables/tests/algorithms.cpp
index 4a1cef824cf..7fabb7c3ef4 100644
--- a/src/particle_observables/tests/algorithms.cpp
+++ b/src/particle_observables/tests/algorithms.cpp
@@ -79,7 +79,7 @@ BOOST_AUTO_TEST_CASE(algorithms_integer) {
}
BOOST_AUTO_TEST_CASE(algorithms_double) {
- auto constexpr tol = 100 * std::numeric_limits<double>::epsilon();
+ auto constexpr tol = 8. * 100. * std::numeric_limits<double>::epsilon();
std::vector<double> const values{1., 2., 3., 4.};
{
auto const res = WeightedAverage<Testing::Identity, Testing::One>()(values);
diff --git a/src/shapes/unit_tests/Ellipsoid_test.cpp b/src/shapes/unit_tests/Ellipsoid_test.cpp
index 2f4331a6147..d9d41874bf7 100644
--- a/src/shapes/unit_tests/Ellipsoid_test.cpp
+++ b/src/shapes/unit_tests/Ellipsoid_test.cpp
@@ -34,7 +34,7 @@
BOOST_AUTO_TEST_CASE(dist_function) {
// multiply by 100 because BOOST_REQUIRE_CLOSE takes a percentage tolerance
- auto constexpr tol = std::numeric_limits<double>::epsilon() * 100;
+ auto constexpr tol = 8. * 100. * std::numeric_limits<double>::epsilon();
double const semiaxes[3] = {3.1, 2.2, 1.3};
Shapes::Ellipsoid e;
diff --git a/src/shapes/unit_tests/Sphere_test.cpp b/src/shapes/unit_tests/Sphere_test.cpp
index e6eb19aa2f7..61fb916ce7f 100644
--- a/src/shapes/unit_tests/Sphere_test.cpp
+++ b/src/shapes/unit_tests/Sphere_test.cpp
@@ -34,7 +34,7 @@ void check_distance_function(Shapes::Sphere &s) {
Utils::Vector3d vec;
double dist;
// multiply by 100 because BOOST_REQUIRE_CLOSE takes a percentage tolerance
- auto const tol = std::numeric_limits<double>::epsilon() * 100;
+ auto constexpr tol = 8. * 100. * std::numeric_limits<double>::epsilon();
s.rad() = 1.0;
pos = {0., 0., 0.};
diff --git a/src/utils/tests/Vector_test.cpp b/src/utils/tests/Vector_test.cpp
index 88bb0ad0ceb..a29709ecfc6 100644
--- a/src/utils/tests/Vector_test.cpp
+++ b/src/utils/tests/Vector_test.cpp
@@ -119,10 +119,11 @@ BOOST_AUTO_TEST_CASE(test_norm2) {
}
BOOST_AUTO_TEST_CASE(normalize) {
- Utils::Vector3d v{1, 2, 3};
+ auto constexpr tol = 8. * 100. * std::numeric_limits<double>::epsilon();
+ Utils::Vector3d v{1., 2., 3.};
v.normalize();
- BOOST_CHECK((v.norm2() - 1.0) <= std::numeric_limits<double>::epsilon());
+ BOOST_CHECK_CLOSE(v.norm2(), 1.0, tol);
}
BOOST_AUTO_TEST_CASE(comparison_operators) {
diff --git a/src/utils/tests/interpolation_test.cpp b/src/utils/tests/interpolation_test.cpp
index 701a7456c89..b452ab32e9d 100644
--- a/src/utils/tests/interpolation_test.cpp
+++ b/src/utils/tests/interpolation_test.cpp
@@ -135,6 +135,7 @@ BOOST_AUTO_TEST_CASE(sum_of_weights_odd) {
}
BOOST_AUTO_TEST_CASE(nearest_point) {
+ auto constexpr tol = 8. * 100. * std::numeric_limits<double>::epsilon();
std::array<int, 3> nmp;
double weight;
auto save_ind = [&nmp, &weight](const std::array<int, 3> &ind, double w) {
@@ -145,7 +146,7 @@ BOOST_AUTO_TEST_CASE(nearest_point) {
bspline_3d<1>({.1, .2, .3}, save_ind, {0.5, 0.5, 0.5}, {});
BOOST_CHECK((std::array<int, 3>{{0, 0, 1}} == nmp));
- BOOST_CHECK_CLOSE(weight, 1., 100. * std::numeric_limits<double>::epsilon());
+ BOOST_CHECK_CLOSE(weight, 1., tol);
}
BOOST_AUTO_TEST_CASE(interpolation_points_3) {
diff --git a/src/utils/tests/matrix_vector_product.cpp b/src/utils/tests/matrix_vector_product.cpp
index 8f7d8f1fdec..f98d0f5bd4f 100644
--- a/src/utils/tests/matrix_vector_product.cpp
+++ b/src/utils/tests/matrix_vector_product.cpp
@@ -32,10 +32,11 @@ static constexpr std::array<std::array<int, 3>, 3> matrix{
{{{1, 2, 9}}, {{8, 41, 6}}, {{31, 15, 99}}}};
BOOST_AUTO_TEST_CASE(inner_product) {
+ auto constexpr tol = 8. * 100. * std::numeric_limits<double>::epsilon();
const std::array<double, 3> vector{{0.5, 1.25, 3.1}};
auto const result = Utils::matrix_vector_product<double, 3, matrix>(vector);
for (int i = 0; i < 3; ++i) {
- BOOST_CHECK_CLOSE(result[i], boost::inner_product(matrix[i], vector, 0.0),
- 100. * std::numeric_limits<double>::epsilon());
+ auto const ref = boost::inner_product(matrix[i], vector, 0.0);
+ BOOST_CHECK_CLOSE(result[i], ref, tol);
}
}
diff --git a/src/utils/tests/vec_rotate_test.cpp b/src/utils/tests/vec_rotate_test.cpp
index c1ad10eabb7..88b2af17983 100644
--- a/src/utils/tests/vec_rotate_test.cpp
+++ b/src/utils/tests/vec_rotate_test.cpp
@@ -44,7 +44,7 @@ BOOST_AUTO_TEST_CASE(rotation) {
auto const is = Utils::vec_rotate(k, t, v);
auto const rel_diff = (expected - is).norm() / expected.norm();
- BOOST_CHECK(rel_diff < std::numeric_limits<double>::epsilon());
+ BOOST_CHECK(rel_diff < 8. * std::numeric_limits<double>::epsilon());
}
BOOST_AUTO_TEST_CASE(angle_between) {