Package: src:rdkit
Version: 202603.4-1
User: [email protected]
Usertags: python3.15
Tags: patch, ftbfs, forky, sid
Severity: serious
Hi!
While rebuilding the python related packages against the Python 3.15rc1
version we found that rdkit fails to build from source not only for 3.15
but also for 3.14 [1].
Error: testDistGeomHelpers:
src/catch2/../catch2/internal/catch_output_redirect.hpp:40: void
Catch::OutputRedirect::activate(): Assertion !m_redirectActive &&
"redirect is already active"' failed.
This is because catch2 is not thread safe till release 3.12, but
currently we have 3.7 in Debian, so the tests that depend on thread
safety need workarounds.
It's likely that this only started happening now, due to the new gcc
version.
I applied the fix in the sandbox [2] to be able to build the packages
that depend on rdkit and it has built successfully, please consider
applying the patch to get rdkit to build successfully.
Happy hacking,
[1]: https://debusine.debian.net/debian/r-python-python3.15/artifact/4587746/
[2]: https://debusine.debian.net/debian/r-python-python3.15/
--
"Can you imagine what I would do if I could do all I can?" -- Sun Tzu
Saludos /\/\ /\ >< `/
Description: Avoid Catch2 assertions in multithreaded test helper
Catch2 assertion macros are not thread-safe (prior catch2 3.12) and cause
assertion failures in OutputRedirect when invoked concurrently across worker
threads.
Author: Maximiliano Curia <[email protected]>
Forwarded: no
--- a/Code/GraphMol/DistGeomHelpers/testDgeomHelpers.cpp
+++ b/Code/GraphMol/DistGeomHelpers/testDgeomHelpers.cpp
@@ -943,17 +943,17 @@ void runblock(const std::vector<std::sha
.useLegacyImplementation = legacyETKDG};
std::vector<int> cids =
DGeomHelpers::EmbedMultipleConfs(*mol, 10, params);
- REQUIRE(cids.size() == 10);
+ TEST_ASSERT(cids.size() == 10);
std::unique_ptr<ForceFields::ForceField> field(
UFF::constructForceField(*mol, 100, cids[0]));
- REQUIRE(field);
+ TEST_ASSERT(field);
field->initialize();
double eng = field->calcEnergy();
if (!feq(eng, energies[i])) {
std::cerr << i << " iter " << j << " " << energies[i] << " != " << eng
<< std::endl;
}
- CHECK(feq(eng, energies[i]));
+ TEST_ASSERT(feq(eng, energies[i]));
}
}
}
Description: Avoid Catch2 assertions in substruct multithreaded test helper
Catch2 assertion macros are not thread-safe and cause assertion failures in
OutputRedirect when invoked concurrently across worker threads.
Author: Maximiliano Curia <[email protected]>
Forwarded: no
--- a/Code/GraphMol/Substruct/testSubstructMatch.cpp
+++ b/Code/GraphMol/Substruct/testSubstructMatch.cpp
@@ -541,7 +541,7 @@ void runblock(const std::vector<std::uni
MatchVectType matchV;
bool found = SubstructMatch(*mol, *query, matchV);
- CHECK(found == hits[i]);
+ TEST_ASSERT(found == hits[i]);
}
}
}