conda-forge / conda-forge-pinning-feedstock

A conda-smithy repository for conda-forge-pinning.
BSD 3-Clause "New" or "Revised" License
55 stars 487 forks source link

Add rdkit to global pinning #5719

Open h-vetinari opened 5 months ago

h-vetinari commented 5 months ago

There's quite a large number of packages depending on rdkit; even moreso given that rdkit contains a whole bunch of libraries:

list of libraries ``` lib/libRDKitAbbreviations.so lib/libRDKitAbbreviations.so.1 lib/libRDKitAbbreviations.so.1.2024.03.1 lib/libRDKitAlignment.so lib/libRDKitAlignment.so.1 lib/libRDKitAlignment.so.1.2024.03.1 lib/libRDKitAvalonLib.so lib/libRDKitAvalonLib.so.1 lib/libRDKitAvalonLib.so.1.2024.03.1 lib/libRDKitCIPLabeler.so lib/libRDKitCIPLabeler.so.1 lib/libRDKitCIPLabeler.so.1.2024.03.1 lib/libRDKitCatalogs.so lib/libRDKitCatalogs.so.1 lib/libRDKitCatalogs.so.1.2024.03.1 lib/libRDKitChemReactions.so lib/libRDKitChemReactions.so.1 lib/libRDKitChemReactions.so.1.2024.03.1 lib/libRDKitChemTransforms.so lib/libRDKitChemTransforms.so.1 lib/libRDKitChemTransforms.so.1.2024.03.1 lib/libRDKitChemicalFeatures.so lib/libRDKitChemicalFeatures.so.1 lib/libRDKitChemicalFeatures.so.1.2024.03.1 lib/libRDKitDataStructs.so lib/libRDKitDataStructs.so.1 lib/libRDKitDataStructs.so.1.2024.03.1 lib/libRDKitDepictor.so lib/libRDKitDepictor.so.1 lib/libRDKitDepictor.so.1.2024.03.1 lib/libRDKitDeprotect.so lib/libRDKitDeprotect.so.1 lib/libRDKitDeprotect.so.1.2024.03.1 lib/libRDKitDescriptors.so lib/libRDKitDescriptors.so.1 lib/libRDKitDescriptors.so.1.2024.03.1 lib/libRDKitDetermineBonds.so lib/libRDKitDetermineBonds.so.1 lib/libRDKitDetermineBonds.so.1.2024.03.1 lib/libRDKitDistGeomHelpers.so lib/libRDKitDistGeomHelpers.so.1 lib/libRDKitDistGeomHelpers.so.1.2024.03.1 lib/libRDKitDistGeometry.so lib/libRDKitDistGeometry.so.1 lib/libRDKitDistGeometry.so.1.2024.03.1 lib/libRDKitEHTLib.so lib/libRDKitEHTLib.so.1 lib/libRDKitEHTLib.so.1.2024.03.1 lib/libRDKitEigenSolvers.so lib/libRDKitEigenSolvers.so.1 lib/libRDKitEigenSolvers.so.1.2024.03.1 lib/libRDKitFMCS.so lib/libRDKitFMCS.so.1 lib/libRDKitFMCS.so.1.2024.03.1 lib/libRDKitFileParsers.so lib/libRDKitFileParsers.so.1 lib/libRDKitFileParsers.so.1.2024.03.1 lib/libRDKitFilterCatalog.so lib/libRDKitFilterCatalog.so.1 lib/libRDKitFilterCatalog.so.1.2024.03.1 lib/libRDKitFingerprints.so lib/libRDKitFingerprints.so.1 lib/libRDKitFingerprints.so.1.2024.03.1 lib/libRDKitForceField.so lib/libRDKitForceField.so.1 lib/libRDKitForceField.so.1.2024.03.1 lib/libRDKitForceFieldHelpers.so lib/libRDKitForceFieldHelpers.so.1 lib/libRDKitForceFieldHelpers.so.1.2024.03.1 lib/libRDKitFragCatalog.so lib/libRDKitFragCatalog.so.1 lib/libRDKitFragCatalog.so.1.2024.03.1 lib/libRDKitFreeSASALib.so lib/libRDKitFreeSASALib.so.1 lib/libRDKitFreeSASALib.so.1.2024.03.1 lib/libRDKitGeneralizedSubstruct.so lib/libRDKitGeneralizedSubstruct.so.1 lib/libRDKitGeneralizedSubstruct.so.1.2024.03.1 lib/libRDKitGenericGroups.so lib/libRDKitGenericGroups.so.1 lib/libRDKitGenericGroups.so.1.2024.03.1 lib/libRDKitGraphMol.so lib/libRDKitGraphMol.so.1 lib/libRDKitGraphMol.so.1.2024.03.1 lib/libRDKitInchi.so lib/libRDKitInchi.so.1 lib/libRDKitInchi.so.1.2024.03.1 lib/libRDKitInfoTheory.so lib/libRDKitInfoTheory.so.1 lib/libRDKitInfoTheory.so.1.2024.03.1 lib/libRDKitMMPA.so lib/libRDKitMMPA.so.1 lib/libRDKitMMPA.so.1.2024.03.1 lib/libRDKitMarvinParser.so lib/libRDKitMarvinParser.so.1 lib/libRDKitMarvinParser.so.1.2024.03.1 lib/libRDKitMolAlign.so lib/libRDKitMolAlign.so.1 lib/libRDKitMolAlign.so.1.2024.03.1 lib/libRDKitMolCatalog.so lib/libRDKitMolCatalog.so.1 lib/libRDKitMolCatalog.so.1.2024.03.1 lib/libRDKitMolChemicalFeatures.so lib/libRDKitMolChemicalFeatures.so.1 lib/libRDKitMolChemicalFeatures.so.1.2024.03.1 lib/libRDKitMolDraw2D.so lib/libRDKitMolDraw2D.so.1 lib/libRDKitMolDraw2D.so.1.2024.03.1 lib/libRDKitMolEnumerator.so lib/libRDKitMolEnumerator.so.1 lib/libRDKitMolEnumerator.so.1.2024.03.1 lib/libRDKitMolHash.so lib/libRDKitMolHash.so.1 lib/libRDKitMolHash.so.1.2024.03.1 lib/libRDKitMolInterchange.so lib/libRDKitMolInterchange.so.1 lib/libRDKitMolInterchange.so.1.2024.03.1 lib/libRDKitMolStandardize.so lib/libRDKitMolStandardize.so.1 lib/libRDKitMolStandardize.so.1.2024.03.1 lib/libRDKitMolTransforms.so lib/libRDKitMolTransforms.so.1 lib/libRDKitMolTransforms.so.1.2024.03.1 lib/libRDKitO3AAlign.so lib/libRDKitO3AAlign.so.1 lib/libRDKitO3AAlign.so.1.2024.03.1 lib/libRDKitOptimizer.so lib/libRDKitOptimizer.so.1 lib/libRDKitOptimizer.so.1.2024.03.1 lib/libRDKitPartialCharges.so lib/libRDKitPartialCharges.so.1 lib/libRDKitPartialCharges.so.1.2024.03.1 lib/libRDKitRDBoost.so lib/libRDKitRDBoost.so.1 lib/libRDKitRDBoost.so.1.2024.03.1 lib/libRDKitRDGeneral.so lib/libRDKitRDGeneral.so.1 lib/libRDKitRDGeneral.so.1.2024.03.1 lib/libRDKitRDGeometryLib.so lib/libRDKitRDGeometryLib.so.1 lib/libRDKitRDGeometryLib.so.1.2024.03.1 lib/libRDKitRDInchiLib.so lib/libRDKitRDInchiLib.so.1 lib/libRDKitRDInchiLib.so.1.2024.03.1 lib/libRDKitRDStreams.so lib/libRDKitRDStreams.so.1 lib/libRDKitRDStreams.so.1.2024.03.1 lib/libRDKitRGroupDecomposition.so lib/libRDKitRGroupDecomposition.so.1 lib/libRDKitRGroupDecomposition.so.1.2024.03.1 lib/libRDKitRascalMCES.so lib/libRDKitRascalMCES.so.1 lib/libRDKitRascalMCES.so.1.2024.03.1 lib/libRDKitReducedGraphs.so lib/libRDKitReducedGraphs.so.1 lib/libRDKitReducedGraphs.so.1.2024.03.1 lib/libRDKitRingDecomposerLib.so lib/libRDKitRingDecomposerLib.so.1 lib/libRDKitRingDecomposerLib.so.1.2024.03.1 lib/libRDKitSLNParse.so lib/libRDKitSLNParse.so.1 lib/libRDKitSLNParse.so.1.2024.03.1 lib/libRDKitScaffoldNetwork.so lib/libRDKitScaffoldNetwork.so.1 lib/libRDKitScaffoldNetwork.so.1.2024.03.1 lib/libRDKitShapeHelpers.so lib/libRDKitShapeHelpers.so.1 lib/libRDKitShapeHelpers.so.1.2024.03.1 lib/libRDKitSimDivPickers.so lib/libRDKitSimDivPickers.so.1 lib/libRDKitSimDivPickers.so.1.2024.03.1 lib/libRDKitSmilesParse.so lib/libRDKitSmilesParse.so.1 lib/libRDKitSmilesParse.so.1.2024.03.1 lib/libRDKitSubgraphs.so lib/libRDKitSubgraphs.so.1 lib/libRDKitSubgraphs.so.1.2024.03.1 lib/libRDKitSubstructLibrary.so lib/libRDKitSubstructLibrary.so.1 lib/libRDKitSubstructLibrary.so.1.2024.03.1 lib/libRDKitSubstructMatch.so lib/libRDKitSubstructMatch.so.1 lib/libRDKitSubstructMatch.so.1.2024.03.1 lib/libRDKitTautomerQuery.so lib/libRDKitTautomerQuery.so.1 lib/libRDKitTautomerQuery.so.1.2024.03.1 lib/libRDKitTrajectory.so lib/libRDKitTrajectory.so.1 lib/libRDKitTrajectory.so.1.2024.03.1 lib/libRDKitavalon_clib.so lib/libRDKitavalon_clib.so.1 lib/libRDKitavalon_clib.so.1.2024.03.1 lib/libRDKitcoordgen.so lib/libRDKitcoordgen.so.1 lib/libRDKitcoordgen.so.1.2024.03.1 lib/libRDKitfreesasa_clib.so lib/libRDKitfreesasa_clib.so.1 lib/libRDKitfreesasa_clib.so.1.2024.03.1 lib/libRDKitga.so lib/libRDKitga.so.1 lib/libRDKitga.so.1.2024.03.1 lib/libRDKithc.so lib/libRDKithc.so.1 lib/libRDKithc.so.1.2024.03.1 lib/libRDKitmaeparser.so lib/libRDKitmaeparser.so.1 lib/libRDKitmaeparser.so.1.2024.03.1 lib/libyaehmop_eht.a ```

From the .so.1 + CalVer I'm not actually sure whether we'd even need to rebuild for every major version (==year); this can be circumvented with a sover-style package if necessary. For now though, I'd at least want to capture this correctly, as not having this pinned is forcing the solver into some weird contortions in some places.

CC @conda-forge/rdkit @conda-forge/core

jaimergp commented 3 months ago

cc @greglandrum for awareness.

Their ABI version is 1 for 14 years... That's either impressive or not up-to-date :P From a quick look at the RDKit issue tracker I think the SOVER is indeed stable, but I'd rather hear from Greg directly.

greglandrum commented 3 months ago

Yeah, that hasn't ever changed since we do not attempt to track ABI versions or maintain ABI compatibility. The assumption is that you'll probably need to recompile code that depends on the libraries when the version of the underlying library changes

We do try and avoid actually breaking code, and if this happens it will only be in one of the twice-yearly major releases, but now that we're adding new features in minor releaes, it is possible that a minor release can contain new functions/overloads and/or that new arguments (with default values so that existing code does not break) may be added to existing functions.

h-vetinari commented 3 months ago

It's OK not to have a real ABI, but once packages start depending on rdkit, we need to express the (lack) of ABI compatibility, and then recompile dependent packages whenever necessary. For that purpose the pinning & bot infrastructure does almost all of the work, but rdkit needs to be added here for this to work (though it also needs a run-export, as noted here).