commit: 803b6b6c292eaf58bed226d51e087abf1f35fd59 Author: Guilherme Amadio <amadio <AT> gentoo <DOT> org> AuthorDate: Wed Nov 18 16:40:02 2020 +0000 Commit: Guilherme Amadio <amadio <AT> gentoo <DOT> org> CommitDate: Wed Nov 18 16:47:23 2020 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=803b6b6c
sci-physics/clhep: fix bug 657966 Closes: https://bugs.gentoo.org/657966 Package-Manager: Portage-3.0.9, Repoman-3.0.2 Signed-off-by: Guilherme Amadio <amadio <AT> gentoo.org> sci-physics/clhep/clhep-2.4.1.3-r1.ebuild | 2 + sci-physics/clhep/clhep-2.4.4.0.ebuild | 2 + .../clhep/files/clhep-fix-testThreaded.patch | 90 ++++++++++++++++++++++ 3 files changed, 94 insertions(+) diff --git a/sci-physics/clhep/clhep-2.4.1.3-r1.ebuild b/sci-physics/clhep/clhep-2.4.1.3-r1.ebuild index cfc4c3b20e1..59a7053f214 100644 --- a/sci-physics/clhep/clhep-2.4.1.3-r1.ebuild +++ b/sci-physics/clhep/clhep-2.4.1.3-r1.ebuild @@ -26,6 +26,8 @@ BDEPEND=" ) " +PATCHES=( "${FILESDIR}"/clhep-fix-testThreaded.patch ) + S="${WORKDIR}/${PV}/CLHEP" src_prepare() { diff --git a/sci-physics/clhep/clhep-2.4.4.0.ebuild b/sci-physics/clhep/clhep-2.4.4.0.ebuild index 6195dd38061..3d785fcc166 100644 --- a/sci-physics/clhep/clhep-2.4.4.0.ebuild +++ b/sci-physics/clhep/clhep-2.4.4.0.ebuild @@ -26,6 +26,8 @@ BDEPEND=" ) " +PATCHES=( "${FILESDIR}"/clhep-fix-testThreaded.patch ) + S="${WORKDIR}/${PV}/CLHEP" src_prepare() { diff --git a/sci-physics/clhep/files/clhep-fix-testThreaded.patch b/sci-physics/clhep/files/clhep-fix-testThreaded.patch new file mode 100644 index 00000000000..58010dc726d --- /dev/null +++ b/sci-physics/clhep/files/clhep-fix-testThreaded.patch @@ -0,0 +1,90 @@ +From 849f0250076ac3cce672e925c232bd6b96a018e0 Mon Sep 17 00:00:00 2001 +From: Guilherme Amadio <ama...@cern.ch> +Date: Wed, 18 Nov 2020 17:33:17 +0100 +Subject: [PATCH] Fix testThreaded on x86 + +--- + Random/test/testThreaded.cc | 53 ++++++++++++++++++++++++++----------- + 1 file changed, 38 insertions(+), 15 deletions(-) + +diff --git a/Random/test/testThreaded.cc b/Random/test/testThreaded.cc +index a835ce19..0a6352c3 100644 +--- a/Random/test/testThreaded.cc ++++ b/Random/test/testThreaded.cc +@@ -65,23 +65,38 @@ void testRandGauss(std::vector<double> const& reference, bool& result) { + + result = true; + ++ std::vector<double> v; ++ v.push_back(dist.fire()); ++ v.push_back(dist.fire()); ++ v.push_back(dist.fire()); ++ v.push_back(dist.fire()); ++ v.push_back(dist.fire()); ++ + // Just a sanity check first. The fire method reproduces + // itself. +- if (reference[0] != dist.fire() || +- reference[1] != dist.fire() || +- reference[2] != dist.fire() || +- reference[3] != dist.fire() || +- reference[4] != dist.fire()) { ++ if (reference[0] != v[0] || ++ reference[1] != v[1] || ++ reference[2] != v[2] || ++ reference[3] != v[3] || ++ reference[4] != v[4]) { + result = false; + } + + // check the shoot method where we pass in an engine + CLHEP::HepJamesRandom engine1(seedL1); +- if (reference[0] != CLHEP::RandGauss::shoot(&engine1) || +- reference[1] != CLHEP::RandGauss::shoot(&engine1) || +- reference[2] != CLHEP::RandGauss::shoot(&engine1) || +- reference[3] != CLHEP::RandGauss::shoot(&engine1) || +- reference[4] != CLHEP::RandGauss::shoot(&engine1)) { ++ ++ v.clear(); ++ v.push_back(CLHEP::RandGauss::shoot(&engine1)); ++ v.push_back(CLHEP::RandGauss::shoot(&engine1)); ++ v.push_back(CLHEP::RandGauss::shoot(&engine1)); ++ v.push_back(CLHEP::RandGauss::shoot(&engine1)); ++ v.push_back(CLHEP::RandGauss::shoot(&engine1)); ++ ++ if (reference[0] != v[0] || ++ reference[1] != v[1] || ++ reference[2] != v[2] || ++ reference[3] != v[3] || ++ reference[4] != v[4]) { + result = false; + } + +@@ -93,11 +108,19 @@ void testRandGauss(std::vector<double> const& reference, bool& result) { + // setFlag causes it to not use the cached value + // and generate a new pair of random numbers + CLHEP::RandGauss::setFlag(false); +- if (reference[0] != CLHEP::RandGauss::shoot() || +- reference[1] != CLHEP::RandGauss::shoot() || +- reference[2] != CLHEP::RandGauss::shoot() || +- reference[3] != CLHEP::RandGauss::shoot() || +- reference[4] != CLHEP::RandGauss::shoot()) { ++ ++ v.clear(); ++ v.push_back(CLHEP::RandGauss::shoot()); ++ v.push_back(CLHEP::RandGauss::shoot()); ++ v.push_back(CLHEP::RandGauss::shoot()); ++ v.push_back(CLHEP::RandGauss::shoot()); ++ v.push_back(CLHEP::RandGauss::shoot()); ++ ++ if (reference[0] != v[0] || ++ reference[1] != v[1] || ++ reference[2] != v[2] || ++ reference[3] != v[3] || ++ reference[4] != v[4]) { + result = false; + } + CLHEP::HepRandom::setTheEngine(savedEngine); +-- +2.29.2 +