rdkit_chem 2025.09.3.12-arm64-darwin-23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CMakeLists.txt +713 -0
- data/Code/CMakeLists.txt +44 -0
- data/Code/RubyWrappers/Abbreviations.i +19 -0
- data/Code/RubyWrappers/AddHs.i +34 -0
- data/Code/RubyWrappers/Atom.i +165 -0
- data/Code/RubyWrappers/AtomIterators.i +77 -0
- data/Code/RubyWrappers/AtomPairs.i +95 -0
- data/Code/RubyWrappers/AvalonLib.i +41 -0
- data/Code/RubyWrappers/BitOps.i +72 -0
- data/Code/RubyWrappers/Bond.i +87 -0
- data/Code/RubyWrappers/BondIterators.i +61 -0
- data/Code/RubyWrappers/CMakeLists.txt +67 -0
- data/Code/RubyWrappers/Canon.i +40 -0
- data/Code/RubyWrappers/ChemDraw.i +81 -0
- data/Code/RubyWrappers/ChemReactions.i +166 -0
- data/Code/RubyWrappers/ChemTransforms.i +126 -0
- data/Code/RubyWrappers/Conformer.i +69 -0
- data/Code/RubyWrappers/Descriptors.i +64 -0
- data/Code/RubyWrappers/Dict.i +45 -0
- data/Code/RubyWrappers/DistGeom.i +217 -0
- data/Code/RubyWrappers/DiversityPick.h +49 -0
- data/Code/RubyWrappers/DiversityPick.i +10 -0
- data/Code/RubyWrappers/ErrorGenerator.i +73 -0
- data/Code/RubyWrappers/ExplicitBitVect.i +76 -0
- data/Code/RubyWrappers/FMCS.i +63 -0
- data/Code/RubyWrappers/FilterCatalog.i +154 -0
- data/Code/RubyWrappers/Fingerprints.i +56 -0
- data/Code/RubyWrappers/ForceField.i +161 -0
- data/Code/RubyWrappers/GeneralizedSubstruct.i +38 -0
- data/Code/RubyWrappers/GenericRDKitException.h +27 -0
- data/Code/RubyWrappers/Inchi.i +38 -0
- data/Code/RubyWrappers/MolBundle.i +16 -0
- data/Code/RubyWrappers/MolDraw2D.i +117 -0
- data/Code/RubyWrappers/MolEnumerator.i +45 -0
- data/Code/RubyWrappers/MolHash.i +25 -0
- data/Code/RubyWrappers/MolOps.i +76 -0
- data/Code/RubyWrappers/MolStandardize.i +37 -0
- data/Code/RubyWrappers/MolSupplier.i +83 -0
- data/Code/RubyWrappers/MolTransforms.i +39 -0
- data/Code/RubyWrappers/MolWriters.i +41 -0
- data/Code/RubyWrappers/MonomerInfo.i +42 -0
- data/Code/RubyWrappers/MorganFingerprints.h +21 -0
- data/Code/RubyWrappers/MorganFingerprints.i +66 -0
- data/Code/RubyWrappers/PeriodicTable.i +44 -0
- data/Code/RubyWrappers/Queries.i +289 -0
- data/Code/RubyWrappers/QueryAtom.i +47 -0
- data/Code/RubyWrappers/QueryBond.i +47 -0
- data/Code/RubyWrappers/QueryOps.i +44 -0
- data/Code/RubyWrappers/RDKitExceptions.i +75 -0
- data/Code/RubyWrappers/RDLogger.i +74 -0
- data/Code/RubyWrappers/RDProps.i +44 -0
- data/Code/RubyWrappers/RGroupDecomposition.i +52 -0
- data/Code/RubyWrappers/ROMol.i +703 -0
- data/Code/RubyWrappers/RWMol.i +262 -0
- data/Code/RubyWrappers/RascalMCES.i +71 -0
- data/Code/RubyWrappers/ReactionFingerprints.i +37 -0
- data/Code/RubyWrappers/RingInfo.i +40 -0
- data/Code/RubyWrappers/Rings.i +40 -0
- data/Code/RubyWrappers/SanitException.i +100 -0
- data/Code/RubyWrappers/ScaffoldNetwork.i +28 -0
- data/Code/RubyWrappers/SmartsWrite.i +38 -0
- data/Code/RubyWrappers/SmilesParse.i +40 -0
- data/Code/RubyWrappers/SmilesWrite.i +42 -0
- data/Code/RubyWrappers/StereoGroup.i +16 -0
- data/Code/RubyWrappers/Streams.i +67 -0
- data/Code/RubyWrappers/Subgraphs.i +53 -0
- data/Code/RubyWrappers/Subset.i +75 -0
- data/Code/RubyWrappers/SubstanceGroup.i +91 -0
- data/Code/RubyWrappers/SubstructLibrary.i +80 -0
- data/Code/RubyWrappers/TautomerQuery.i +19 -0
- data/Code/RubyWrappers/Trajectory.i +34 -0
- data/Code/RubyWrappers/boost_tuple.i +64 -0
- data/Code/RubyWrappers/extend_std_vector.i +10 -0
- data/Code/RubyWrappers/gmwrapper/CMakeLists.txt +75 -0
- data/Code/RubyWrappers/gmwrapper/GraphMolRuby.i +431 -0
- data/Code/RubyWrappers/gmwrapper/std_list.i +65 -0
- data/Code/RubyWrappers/point.i +56 -0
- data/Code/RubyWrappers/transforms.i +60 -0
- data/Code/RubyWrappers/types.i +40 -0
- data/README.md +116 -0
- data/Rakefile +256 -0
- data/ext/rdkit_chem/CMakeLists.txt +69 -0
- data/ext/rdkit_chem/Makefile +5 -0
- data/ext/rdkit_chem/extconf.rb +104 -0
- data/lib/rdkit_chem/3.1.0/RDKitChem.bundle +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitAbbreviations.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitAbbreviations.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitAbbreviations.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitAlignment.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitAlignment.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitAlignment.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitCIPLabeler.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitCIPLabeler.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitCIPLabeler.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitCatalogs.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitCatalogs.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitCatalogs.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitChemDraw.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitChemDraw.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitChemDraw.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitChemReactions.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitChemReactions.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitChemReactions.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitChemTransforms.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitChemTransforms.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitChemTransforms.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitChemicalFeatures.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitChemicalFeatures.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitChemicalFeatures.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDataStructs.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDataStructs.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDataStructs.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDepictor.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDepictor.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDepictor.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDeprotect.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDeprotect.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDeprotect.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDescriptors.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDescriptors.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDescriptors.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDistGeomHelpers.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDistGeomHelpers.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDistGeomHelpers.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDistGeometry.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDistGeometry.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitDistGeometry.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitEigenSolvers.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitEigenSolvers.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitEigenSolvers.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitEnumerateStereoisomers.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitEnumerateStereoisomers.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitEnumerateStereoisomers.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitFMCS.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitFMCS.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitFMCS.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitFileParsers.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitFileParsers.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitFileParsers.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitFilterCatalog.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitFilterCatalog.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitFilterCatalog.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitFingerprints.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitFingerprints.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitFingerprints.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitForceField.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitForceField.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitForceField.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitForceFieldHelpers.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitForceFieldHelpers.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitForceFieldHelpers.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitFragCatalog.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitFragCatalog.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitFragCatalog.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitGeneralizedSubstruct.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitGeneralizedSubstruct.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitGeneralizedSubstruct.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitGenericGroups.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitGenericGroups.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitGenericGroups.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitGraphMol.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitGraphMol.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitGraphMol.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitInfoTheory.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitInfoTheory.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitInfoTheory.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMMPA.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMMPA.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMMPA.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMarvinParser.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMarvinParser.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMarvinParser.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolAlign.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolAlign.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolAlign.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolCatalog.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolCatalog.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolCatalog.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolChemicalFeatures.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolChemicalFeatures.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolChemicalFeatures.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolDraw2D.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolDraw2D.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolDraw2D.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolEnumerator.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolEnumerator.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolEnumerator.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolHash.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolHash.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolHash.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolInteractionFields.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolInteractionFields.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolInteractionFields.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolInterchange.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolInterchange.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolInterchange.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolProcessing.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolProcessing.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolProcessing.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolStandardize.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolStandardize.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolStandardize.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolTransforms.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolTransforms.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitMolTransforms.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitO3AAlign.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitO3AAlign.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitO3AAlign.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitOptimizer.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitOptimizer.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitOptimizer.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitPartialCharges.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitPartialCharges.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitPartialCharges.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitPubChemShape.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitPubChemShape.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitPubChemShape.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRDChemDrawLib.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRDChemDrawLib.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRDChemDrawLib.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRDChemDrawReactionLib.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRDChemDrawReactionLib.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRDChemDrawReactionLib.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRDGeneral.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRDGeneral.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRDGeneral.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRDGeometryLib.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRDGeometryLib.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRDGeometryLib.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRDStreams.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRDStreams.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRDStreams.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRGroupDecomposition.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRGroupDecomposition.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRGroupDecomposition.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRascalMCES.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRascalMCES.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRascalMCES.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitReducedGraphs.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitReducedGraphs.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitReducedGraphs.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRingDecomposerLib.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRingDecomposerLib.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitRingDecomposerLib.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSLNParse.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSLNParse.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSLNParse.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitScaffoldNetwork.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitScaffoldNetwork.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitScaffoldNetwork.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitShapeHelpers.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitShapeHelpers.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitShapeHelpers.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSimDivPickers.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSimDivPickers.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSimDivPickers.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSmilesParse.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSmilesParse.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSmilesParse.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSubgraphs.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSubgraphs.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSubgraphs.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSubstructLibrary.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSubstructLibrary.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSubstructLibrary.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSubstructMatch.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSubstructMatch.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSubstructMatch.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSynthonSpaceSearch.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSynthonSpaceSearch.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitSynthonSpaceSearch.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitTautomerQuery.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitTautomerQuery.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitTautomerQuery.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitTrajectory.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitTrajectory.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitTrajectory.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitcoordgen.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitcoordgen.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitcoordgen.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitga.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitga.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitga.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKithc.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKithc.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKithc.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitmaeparser.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitmaeparser.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitmaeparser.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitpubchem_align3d.1.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libRDKitpubchem_align3d.2026.03.1pre.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libRDKitpubchem_align3d.dylib +1 -0
- data/lib/rdkit_chem/3.1.0/libboost_iostreams.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libboost_random.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libboost_regex.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libboost_serialization.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libfreetype.6.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libicudata.78.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libicui18n.78.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libicuuc.78.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/liblzma.5.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libpng16.16.dylib +0 -0
- data/lib/rdkit_chem/3.1.0/libzstd.1.dylib +0 -0
- data/lib/rdkit_chem/version.rb +6 -0
- data/lib/rdkit_chem.rb +32 -0
- data/test/test_rdkit_chem.rb +99 -0
- metadata +378 -0
data/README.md
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
|
|
2
|
+
# rdkit-chem gem
|
|
3
|
+
|
|
4
|
+
GEM for [RDKIT](http://rdkit.org/), an Open-Source Cheminformatics Software
|
|
5
|
+
|
|
6
|
+
## Environment
|
|
7
|
+
|
|
8
|
+
### Prerequisites
|
|
9
|
+
* cmake 3.8 or later
|
|
10
|
+
* curl
|
|
11
|
+
* tar, sed, make (those should be present anyway)
|
|
12
|
+
* SWIG 2 or later
|
|
13
|
+
* python header (`python-dev`)
|
|
14
|
+
* sqlite (`sqlite3-dev`)
|
|
15
|
+
* boost > 1.58 (`libboost-all-dev`)
|
|
16
|
+
* gcc
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## Install
|
|
20
|
+
`gem install rdkit_chem`
|
|
21
|
+
|
|
22
|
+
It downloads the sources, compiles and installs RDKIT with the ruby bindings.
|
|
23
|
+
The installation may last very long - please be patient.
|
|
24
|
+
|
|
25
|
+
## macOS Build Notes
|
|
26
|
+
|
|
27
|
+
### Known Issues and Solutions
|
|
28
|
+
|
|
29
|
+
#### 1. Boost Serialization Not Found
|
|
30
|
+
|
|
31
|
+
**Error:**
|
|
32
|
+
```
|
|
33
|
+
CMake Error: Found package configuration file boost_serialization-config.cmake
|
|
34
|
+
but it set boost_serialization_FOUND to FALSE
|
|
35
|
+
Reason: No suitable build variant has been found.
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Solution:** The gem has been updated to use static Boost flags (`-DBoost_USE_STATIC_LIBS=ON -DBoost_USE_STATIC_RUNTIME=ON`).
|
|
39
|
+
|
|
40
|
+
#### 2. Ruby Symbol Linking Error
|
|
41
|
+
|
|
42
|
+
**Error:**
|
|
43
|
+
```
|
|
44
|
+
Undefined symbols for architecture x86_64:
|
|
45
|
+
"_rb_define_class", "_rb_str_new", ... (Ruby C API symbols)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Solution:** Fixed in `Code/RubyWrappers/gmwrapper/CMakeLists.txt` with `-undefined dynamic_lookup` for macOS.
|
|
49
|
+
|
|
50
|
+
#### 3. Ruby 3.2+ Compatibility (CRITICAL)
|
|
51
|
+
|
|
52
|
+
**Error:**
|
|
53
|
+
```ruby
|
|
54
|
+
require 'RDKitChem'
|
|
55
|
+
# => TypeError: wrong argument type nil (expected Data)
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Cause:** Ruby 3.2+ introduced a new `Data` class that conflicts with SWIG's wrapper generation.
|
|
59
|
+
|
|
60
|
+
**Workaround:** Use Ruby 3.1.x:
|
|
61
|
+
```bash
|
|
62
|
+
# Using asdf
|
|
63
|
+
asdf install ruby 3.1.6
|
|
64
|
+
asdf set ruby 3.1.6
|
|
65
|
+
|
|
66
|
+
# Using rbenv
|
|
67
|
+
rbenv install 3.1.6
|
|
68
|
+
rbenv local 3.1.6
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
#### 4. GitHub Actions CI - Xcode SDK Header Conflict
|
|
72
|
+
|
|
73
|
+
**Error:**
|
|
74
|
+
```
|
|
75
|
+
error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
|
|
76
|
+
error: no member named 'finite' in namespace 'std::__math'
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Cause:** CMake finds Xcode SDK Ruby headers instead of `ruby/setup-ruby` installed headers.
|
|
80
|
+
|
|
81
|
+
**Solution:** Fixed in `extconf.rb` by explicitly passing Ruby paths to CMake.
|
|
82
|
+
|
|
83
|
+
### Ruby Version Compatibility
|
|
84
|
+
|
|
85
|
+
| Ruby Version | Build | Runtime | Notes |
|
|
86
|
+
|--------------|-------|---------|-------|
|
|
87
|
+
| 3.4.x | OK | FAIL | `Data` class conflict |
|
|
88
|
+
| 3.3.x | OK | FAIL | `Data` class conflict |
|
|
89
|
+
| 3.2.x | OK | FAIL | `Data` class conflict |
|
|
90
|
+
| 3.1.x | OK | OK | Recommended |
|
|
91
|
+
|
|
92
|
+
### Build Commands (macOS)
|
|
93
|
+
|
|
94
|
+
**Full Clean Build:**
|
|
95
|
+
```bash
|
|
96
|
+
rm -rf rdkit/build rdkit_chem
|
|
97
|
+
ruby ext/rdkit_chem/extconf.rb
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Resume Interrupted Build:**
|
|
101
|
+
```bash
|
|
102
|
+
cd rdkit/build
|
|
103
|
+
make -j8
|
|
104
|
+
make install
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Test Loading:**
|
|
108
|
+
```bash
|
|
109
|
+
DYLD_LIBRARY_PATH=$PWD/rdkit_chem/lib ruby -I $PWD/rdkit_chem/lib -e 'require "RDKitChem"; puts "Success!"'
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Additional Notes
|
|
113
|
+
|
|
114
|
+
- Full build takes ~20 minutes
|
|
115
|
+
- Some `BOOST_NO_CXX98_FUNCTION_BASE` warnings during build are harmless
|
|
116
|
+
- For detailed troubleshooting, see [MACOS_BUILD_NOTES.md](MACOS_BUILD_NOTES.md)
|
data/Rakefile
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'rake/testtask'
|
|
4
|
+
require 'fileutils'
|
|
5
|
+
require 'set'
|
|
6
|
+
|
|
7
|
+
# Load version
|
|
8
|
+
$LOAD_PATH.unshift File.expand_path('lib', __dir__)
|
|
9
|
+
require 'rdkit_chem/version'
|
|
10
|
+
|
|
11
|
+
VERSION = RDKitChem::GEMVERSION
|
|
12
|
+
NATIVE_DIR = 'rdkit_chem/lib'
|
|
13
|
+
|
|
14
|
+
# System libraries that need to be bundled for portability
|
|
15
|
+
BUNDLED_SYSTEM_LIBS = %w[
|
|
16
|
+
libboost_serialization.so*
|
|
17
|
+
libboost_iostreams.so*
|
|
18
|
+
].freeze
|
|
19
|
+
|
|
20
|
+
desc 'Run tests'
|
|
21
|
+
Rake::TestTask.new(:test) do |t|
|
|
22
|
+
t.libs << 'lib'
|
|
23
|
+
t.libs << 'test'
|
|
24
|
+
t.pattern = 'test/**/*_test.rb,test/**/test_*.rb'
|
|
25
|
+
t.verbose = true
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
desc 'Build source gem (requires compilation on install)'
|
|
29
|
+
task :build do
|
|
30
|
+
sh 'gem build rdkit_chem.gemspec'
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
desc 'Build pre-compiled gem for current platform'
|
|
34
|
+
task :build_native do
|
|
35
|
+
ext_so = File.join(NATIVE_DIR, 'RDKitChem.so')
|
|
36
|
+
ext_bundle = File.join(NATIVE_DIR, 'RDKitChem.bundle')
|
|
37
|
+
|
|
38
|
+
unless File.exist?(ext_so) || File.exist?(ext_bundle)
|
|
39
|
+
abort "ERROR: Native extension not found at #{NATIVE_DIR}/RDKitChem.{so,bundle}\n" \
|
|
40
|
+
"Run 'cd ext/rdkit_chem && ruby extconf.rb' first to compile."
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Get Ruby version for directory structure
|
|
44
|
+
ruby_version = "#{RUBY_VERSION.split('.')[0..1].join('.')}.0"
|
|
45
|
+
target_dir = "lib/rdkit_chem/#{ruby_version}"
|
|
46
|
+
|
|
47
|
+
puts "Packaging pre-compiled gem for Ruby #{ruby_version}..."
|
|
48
|
+
|
|
49
|
+
# Create target directory
|
|
50
|
+
FileUtils.mkdir_p(target_dir)
|
|
51
|
+
|
|
52
|
+
# Copy native extension and all shared libraries
|
|
53
|
+
# Linux: *.so*, macOS: *.bundle and *.dylib
|
|
54
|
+
lib_patterns = ["#{NATIVE_DIR}/*.so*", "#{NATIVE_DIR}/*.bundle", "#{NATIVE_DIR}/*.dylib"]
|
|
55
|
+
|
|
56
|
+
lib_patterns.each do |pattern|
|
|
57
|
+
Dir.glob(pattern).each do |lib|
|
|
58
|
+
# Skip symlinks first pass, copy only real files
|
|
59
|
+
next if File.symlink?(lib)
|
|
60
|
+
dest = File.join(target_dir, File.basename(lib))
|
|
61
|
+
FileUtils.cp(lib, dest, verbose: true)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Also copy symlinks (they're needed for library resolution)
|
|
66
|
+
# This includes both .so -> .so.1 and .so.1 -> .so.1.version symlinks
|
|
67
|
+
lib_patterns.each do |pattern|
|
|
68
|
+
Dir.glob(pattern).each do |lib|
|
|
69
|
+
next unless File.symlink?(lib)
|
|
70
|
+
link_target = File.readlink(lib)
|
|
71
|
+
dest = File.join(target_dir, File.basename(lib))
|
|
72
|
+
FileUtils.rm_f(dest)
|
|
73
|
+
FileUtils.ln_s(link_target, dest, verbose: true)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Build the platform-specific gem
|
|
78
|
+
ENV['RDKIT_PRECOMPILED'] = '1'
|
|
79
|
+
sh 'gem build rdkit_chem.gemspec'
|
|
80
|
+
ENV.delete('RDKIT_PRECOMPILED')
|
|
81
|
+
|
|
82
|
+
# Clean up
|
|
83
|
+
FileUtils.rm_rf(target_dir)
|
|
84
|
+
|
|
85
|
+
puts "\nBuilt: rdkit_chem-#{VERSION}-#{Gem::Platform.local}.gem"
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
desc 'Bundle system libraries (Boost) into native directory'
|
|
89
|
+
task :bundle_system_libs do
|
|
90
|
+
so_file = File.join(NATIVE_DIR, 'RDKitChem.so')
|
|
91
|
+
unless File.exist?(so_file)
|
|
92
|
+
abort "ERROR: #{so_file} not found"
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
puts "Finding and bundling system library dependencies..."
|
|
96
|
+
|
|
97
|
+
# Find library paths using ldd
|
|
98
|
+
ldd_output = `ldd #{so_file} 2>/dev/null`
|
|
99
|
+
|
|
100
|
+
BUNDLED_SYSTEM_LIBS.each do |lib_pattern|
|
|
101
|
+
lib_name = lib_pattern.gsub('*', '')
|
|
102
|
+
# Extract actual library path from ldd output
|
|
103
|
+
match = ldd_output.match(/#{Regexp.escape(lib_name)}[^\s]* => ([^\s]+)/)
|
|
104
|
+
if match
|
|
105
|
+
src_path = match[1]
|
|
106
|
+
if File.exist?(src_path)
|
|
107
|
+
dest = File.join(NATIVE_DIR, File.basename(src_path))
|
|
108
|
+
unless File.exist?(dest)
|
|
109
|
+
FileUtils.cp(src_path, dest, verbose: true)
|
|
110
|
+
else
|
|
111
|
+
puts "Already exists: #{dest}"
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
else
|
|
115
|
+
puts "WARNING: Could not find #{lib_pattern} in ldd output"
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
puts "Done bundling system libraries."
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
desc 'Apply RPATH fix to existing native extension (no recompile needed)'
|
|
123
|
+
task :fix_rpath do
|
|
124
|
+
so_file = File.join(NATIVE_DIR, 'RDKitChem.so')
|
|
125
|
+
unless File.exist?(so_file)
|
|
126
|
+
abort "ERROR: #{so_file} not found"
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# Check if patchelf is available
|
|
130
|
+
unless system('which patchelf > /dev/null 2>&1')
|
|
131
|
+
abort "ERROR: patchelf not installed. Run: sudo apt install patchelf"
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# Fix RPATH on all shared libraries (including versioned ones like *.so.1.2026.03.1pre)
|
|
135
|
+
puts "Setting RPATH to $ORIGIN on all shared libraries..."
|
|
136
|
+
count = 0
|
|
137
|
+
Dir.glob("#{NATIVE_DIR}/*.so*").each do |lib|
|
|
138
|
+
next if File.symlink?(lib) # Skip symlinks
|
|
139
|
+
next if lib.end_with?('.a') # Skip static libraries
|
|
140
|
+
system("patchelf --set-rpath '$ORIGIN' '#{lib}' 2>/dev/null")
|
|
141
|
+
count += 1
|
|
142
|
+
end
|
|
143
|
+
puts "Fixed RPATH on #{count} libraries"
|
|
144
|
+
|
|
145
|
+
# Verify main extension
|
|
146
|
+
puts "\nVerifying RPATH on #{so_file}:"
|
|
147
|
+
sh "readelf -d #{so_file} | grep -E '(RPATH|RUNPATH)' || echo 'No RPATH found'"
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
desc 'Repair: bundle system libraries and fix RPATH'
|
|
151
|
+
task :repair do
|
|
152
|
+
Rake::Task['bundle_system_libs'].invoke
|
|
153
|
+
Rake::Task['fix_rpath'].invoke
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
MACOS_SYSTEM_LIBRARY_PREFIXES = ['/usr/lib/', '/System/'].freeze
|
|
157
|
+
MACOS_DEFAULT_SEARCH_PATHS = ['/opt/homebrew/lib', '/usr/local/lib'].freeze
|
|
158
|
+
|
|
159
|
+
def macos_shared_libraries(libs_dir)
|
|
160
|
+
Dir.glob("#{libs_dir}/*.dylib") + Dir.glob("#{libs_dir}/*.bundle")
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
def macos_dependencies(lib)
|
|
164
|
+
otool_output = `otool -L '#{lib}' 2>/dev/null`
|
|
165
|
+
otool_output.lines.drop(1).map { |line| line.strip.split(' ').first }.compact
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def macos_system_library?(path)
|
|
169
|
+
MACOS_SYSTEM_LIBRARY_PREFIXES.any? { |prefix| path.start_with?(prefix) }
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def macos_resolve_dependency(dep, libs_dir)
|
|
173
|
+
return dep if dep.start_with?('/') && File.exist?(dep)
|
|
174
|
+
|
|
175
|
+
basename = File.basename(dep)
|
|
176
|
+
candidates = [File.join(libs_dir, basename)] +
|
|
177
|
+
MACOS_DEFAULT_SEARCH_PATHS.map { |dir| File.join(dir, basename) }
|
|
178
|
+
candidates.find { |path| File.exist?(path) }
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
desc 'Repair for macOS (bundle deps and fix install names)'
|
|
182
|
+
task :repair_macos do
|
|
183
|
+
libs_dir = File.expand_path(NATIVE_DIR)
|
|
184
|
+
libs = macos_shared_libraries(libs_dir)
|
|
185
|
+
abort "ERROR: no macOS libraries found in #{libs_dir}" if libs.empty?
|
|
186
|
+
|
|
187
|
+
queue = libs.dup
|
|
188
|
+
processed = Set.new
|
|
189
|
+
copied = 0
|
|
190
|
+
|
|
191
|
+
until queue.empty?
|
|
192
|
+
lib = queue.shift
|
|
193
|
+
next if processed.include?(lib)
|
|
194
|
+
processed.add(lib)
|
|
195
|
+
|
|
196
|
+
macos_dependencies(lib).each do |dep|
|
|
197
|
+
next if macos_system_library?(dep)
|
|
198
|
+
|
|
199
|
+
dep_path = macos_resolve_dependency(dep, libs_dir)
|
|
200
|
+
next if dep_path.nil?
|
|
201
|
+
|
|
202
|
+
dest = File.join(libs_dir, File.basename(dep_path))
|
|
203
|
+
unless File.exist?(dest)
|
|
204
|
+
FileUtils.cp(dep_path, dest, verbose: true)
|
|
205
|
+
copied += 1
|
|
206
|
+
end
|
|
207
|
+
queue << dest if File.exist?(dest)
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
macos_shared_libraries(libs_dir).each do |lib|
|
|
212
|
+
lib_name = File.basename(lib)
|
|
213
|
+
system("install_name_tool -id @loader_path/#{lib_name} '#{lib}' 2>/dev/null") if lib.end_with?('.dylib')
|
|
214
|
+
|
|
215
|
+
macos_dependencies(lib).each do |dep|
|
|
216
|
+
next if macos_system_library?(dep)
|
|
217
|
+
|
|
218
|
+
dep_basename = File.basename(dep)
|
|
219
|
+
system("install_name_tool -change '#{dep}' '@loader_path/#{dep_basename}' '#{lib}' 2>/dev/null")
|
|
220
|
+
end
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
puts "Bundled #{copied} macOS dependencies."
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
desc 'Test that native extension loads without LD_LIBRARY_PATH'
|
|
227
|
+
task :test_native do
|
|
228
|
+
so_dir = File.expand_path(NATIVE_DIR, __dir__)
|
|
229
|
+
puts "Testing native extension loading from #{so_dir}..."
|
|
230
|
+
|
|
231
|
+
# Test without LD_LIBRARY_PATH
|
|
232
|
+
result = system("ruby -I#{so_dir} -Ilib -e \"require 'rdkit_chem'; puts 'SUCCESS: RDKitChem loaded'\"")
|
|
233
|
+
|
|
234
|
+
if result
|
|
235
|
+
puts "\nNative extension loads correctly without LD_LIBRARY_PATH!"
|
|
236
|
+
else
|
|
237
|
+
puts "\nFAILED: Still requires LD_LIBRARY_PATH. Run 'rake fix_rpath' first."
|
|
238
|
+
exit 1
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
desc 'Install gem locally'
|
|
243
|
+
task :install => :build do
|
|
244
|
+
sh "gem install rdkit_chem-#{VERSION}.gem"
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
desc 'Clean build artifacts'
|
|
248
|
+
task :clean do
|
|
249
|
+
FileUtils.rm_f(Dir.glob('*.gem'))
|
|
250
|
+
FileUtils.rm_rf('lib/rdkit_chem/3.0')
|
|
251
|
+
FileUtils.rm_rf('lib/rdkit_chem/3.1')
|
|
252
|
+
FileUtils.rm_rf('lib/rdkit_chem/3.2')
|
|
253
|
+
FileUtils.rm_rf('lib/rdkit_chem/3.3')
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
task default: :test
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
cmake_minimum_required(VERSION 3.8)
|
|
2
|
+
|
|
3
|
+
# Apple: Don't modify install_name when touching RPATH.
|
|
4
|
+
if(POLICY CMP0068)
|
|
5
|
+
cmake_policy(SET CMP0068 NEW)
|
|
6
|
+
endif()
|
|
7
|
+
# target_sources: use absolute path for INTERFACE_SOURCES.
|
|
8
|
+
if(POLICY CMP0076)
|
|
9
|
+
cmake_policy(SET CMP0076 NEW)
|
|
10
|
+
endif()
|
|
11
|
+
# SWIG: use standard target name.
|
|
12
|
+
if(POLICY CMP0078)
|
|
13
|
+
cmake_policy(SET CMP0078 NEW)
|
|
14
|
+
endif()
|
|
15
|
+
# SWIG: use SWIG_MODULE_NAME property.
|
|
16
|
+
if(POLICY CMP0086)
|
|
17
|
+
cmake_policy(SET CMP0086 NEW)
|
|
18
|
+
endif()
|
|
19
|
+
|
|
20
|
+
project (GraphMolRuby)
|
|
21
|
+
|
|
22
|
+
include_directories( ${RDKit_ExternalDir} )
|
|
23
|
+
|
|
24
|
+
find_package(Ruby REQUIRED)
|
|
25
|
+
|
|
26
|
+
INCLUDE_DIRECTORIES(${RDKit_INCLUDE_DIR} ${RUBY_INCLUDE_PATH})
|
|
27
|
+
|
|
28
|
+
SET_SOURCE_FILES_PROPERTIES(GraphMolRuby.i PROPERTIES CPLUSPLUS ON )
|
|
29
|
+
|
|
30
|
+
SET(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_SOURCE_DIR}/swig_ruby )
|
|
31
|
+
|
|
32
|
+
if(RDK_BUILD_INCHI_SUPPORT)
|
|
33
|
+
SET(CMAKE_SWIG_FLAGS "-DRDK_BUILD_INCHI_SUPPORT" ${CMAKE_SWIG_FLAGS} )
|
|
34
|
+
endif()
|
|
35
|
+
if(RDK_BUILD_AVALON_SUPPORT)
|
|
36
|
+
SET(CMAKE_SWIG_FLAGS "-DRDK_BUILD_AVALON_SUPPORT" ${CMAKE_SWIG_FLAGS} )
|
|
37
|
+
endif()
|
|
38
|
+
if(RDK_USE_BOOST_IOSTREAMS)
|
|
39
|
+
SET(CMAKE_SWIG_FLAGS "-DRDK_USE_BOOST_IOSTREAMS" ${CMAKE_SWIG_FLAGS} )
|
|
40
|
+
endif()
|
|
41
|
+
|
|
42
|
+
FILE(GLOB SWIG_SRC_FILES "${CMAKE_CURRENT_SOURCE_DIR}/../*.i")
|
|
43
|
+
|
|
44
|
+
# we added all source files, now remove the ones that we're not supporting in this build:
|
|
45
|
+
if(NOT RDK_BUILD_AVALON_SUPPORT)
|
|
46
|
+
LIST(REMOVE_ITEM SWIG_SRC_FILES "${CMAKE_CURRENT_SOURCE_DIR}/../AvalonLib.i")
|
|
47
|
+
endif()
|
|
48
|
+
|
|
49
|
+
if(NOT RDK_BUILD_INCHI_SUPPORT)
|
|
50
|
+
LIST(REMOVE_ITEM SWIG_SRC_FILES "${CMAKE_CURRENT_SOURCE_DIR}/../Inchi.i")
|
|
51
|
+
endif()
|
|
52
|
+
|
|
53
|
+
SET(SWIG_MODULE_RDKitChem_EXTRA_DEPS ${SWIG_SRC_FILES} )
|
|
54
|
+
SET(CMAKE_SWIG_FLAGS -small -naturalvar -autorename)
|
|
55
|
+
|
|
56
|
+
SWIG_ADD_LIBRARY(RDKitChem TYPE MODULE LANGUAGE ruby SOURCES GraphMolRuby.i)
|
|
57
|
+
|
|
58
|
+
# it doesnt seem like the threading libs should need to be here, but
|
|
59
|
+
# as of Oct 2012 using boost 1.51 under at least ubuntu 12.04 we get a
|
|
60
|
+
# link error if they aren't there.
|
|
61
|
+
SWIG_LINK_LIBRARIES(RDKitChem
|
|
62
|
+
${RDKit_Wrapper_Libs}
|
|
63
|
+
${Boost_SERIALIZATION_LIBRARY}
|
|
64
|
+
${RDKit_THREAD_LIBS})
|
|
65
|
+
|
|
66
|
+
MESSAGE("serial: ${Boost_SERIALIZATION_LIBRARY}")
|
|
67
|
+
MESSAGE("THREAD: ${RDKit_THREAD_LIBS}")
|
|
68
|
+
|
|
69
|
+
INSTALL(TARGETS RDKitChem LIBRARY DESTINATION lib)
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'fileutils'
|
|
4
|
+
require 'rbconfig'
|
|
5
|
+
require 'mkmf'
|
|
6
|
+
|
|
7
|
+
main_dir = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
|
|
8
|
+
rdkit_dir = File.join(main_dir, 'rdkit')
|
|
9
|
+
install_dir = File.join(main_dir, 'rdkit_chem')
|
|
10
|
+
src_dir = rdkit_dir
|
|
11
|
+
build_dir = File.join(src_dir, 'build')
|
|
12
|
+
|
|
13
|
+
begin
|
|
14
|
+
nr_processors = `getconf _NPROCESSORS_ONLN`.to_i # should be POSIX compatible
|
|
15
|
+
rescue StandardError
|
|
16
|
+
nr_processors = 1
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def run_command(command, description)
|
|
20
|
+
puts description if description
|
|
21
|
+
success = system(command)
|
|
22
|
+
abort "ERROR: #{description || command} failed" unless success
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
FileUtils.mkdir_p rdkit_dir
|
|
26
|
+
Dir.chdir main_dir do
|
|
27
|
+
FileUtils.rm_rf src_dir
|
|
28
|
+
run_command('git clone https://github.com/rdkit/rdkit.git', 'Downloading RDKit sources')
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
Dir.chdir(src_dir) do
|
|
32
|
+
run_command('git checkout c2e48f41d88ddc15c6e1f818d1c4ced70b7f20d1', 'Checking out RDKit sources')
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
FileUtils.cp_r(
|
|
36
|
+
File.join(main_dir, 'Code'),
|
|
37
|
+
File.join(rdkit_dir),
|
|
38
|
+
remove_destination: true
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
FileUtils.cp_r(
|
|
42
|
+
File.join(main_dir, 'CMakeLists.txt'),
|
|
43
|
+
File.join(rdkit_dir),
|
|
44
|
+
remove_destination: true
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
host_os = RbConfig::CONFIG['host_os']
|
|
48
|
+
is_linux = host_os =~ /linux/
|
|
49
|
+
is_mac = host_os =~ /darwin/
|
|
50
|
+
ld_path = ''
|
|
51
|
+
|
|
52
|
+
# macOS-specific compiler flags to fix Ruby header compatibility issues
|
|
53
|
+
extra_cmake_flags = ''
|
|
54
|
+
if is_mac
|
|
55
|
+
# -Wno-register: Ruby headers use deprecated 'register' keyword (removed in C++17)
|
|
56
|
+
# -DHAVE_ISFINITE=1: Prevents Ruby's finite() from conflicting with std::isfinite
|
|
57
|
+
cxx_flags = '-std=c++17 -stdlib=libc++ -Wno-register -DHAVE_ISFINITE=1'
|
|
58
|
+
extra_cmake_flags = " -DCMAKE_CXX_FLAGS='#{cxx_flags}'"
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Explicitly specify Ruby paths to avoid CMake finding system Ruby headers
|
|
62
|
+
# This is critical on macOS where Xcode SDK contains incompatible Ruby headers
|
|
63
|
+
ruby_executable = RbConfig.ruby
|
|
64
|
+
ruby_include_dir = RbConfig::CONFIG['rubyhdrdir']
|
|
65
|
+
ruby_arch_include_dir = RbConfig::CONFIG['rubyarchhdrdir']
|
|
66
|
+
|
|
67
|
+
extra_cmake_flags += " -DRuby_EXECUTABLE=#{ruby_executable}"
|
|
68
|
+
extra_cmake_flags += " -DRuby_INCLUDE_DIR=#{ruby_include_dir}"
|
|
69
|
+
extra_cmake_flags += " -DRuby_CONFIG_INCLUDE_DIR=#{ruby_arch_include_dir}" if ruby_arch_include_dir
|
|
70
|
+
extra_cmake_flags += " -DCMAKE_IGNORE_PREFIX_PATH='/Applications/Xcode.app;/Applications/Xcode_*.app'" if is_mac
|
|
71
|
+
|
|
72
|
+
if is_linux || is_mac
|
|
73
|
+
ld_string = is_linux ? 'LD_LIBRARY_PATH' : 'DYLD_LIBRARY_PATH'
|
|
74
|
+
ld_path = "#{ld_string}=#{install_dir}/lib"
|
|
75
|
+
env_ld = ENV[ld_string] || ''
|
|
76
|
+
|
|
77
|
+
ld_path += ":#{env_ld}" unless env_ld.empty?
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
FileUtils.mkdir_p build_dir
|
|
81
|
+
Dir.chdir build_dir do
|
|
82
|
+
cmake = "#{ld_path} cmake #{src_dir} -DRDK_INSTALL_INTREE=OFF " \
|
|
83
|
+
"-DCMAKE_INSTALL_PREFIX=#{install_dir} " \
|
|
84
|
+
'-DCMAKE_BUILD_TYPE=Release -DRDK_BUILD_PYTHON_WRAPPERS=OFF ' \
|
|
85
|
+
'-DRDK_BUILD_SWIG_WRAPPERS=ON -DRDK_BUILD_INCHI_SUPPORT=OFF ' \
|
|
86
|
+
"-DBoost_NO_BOOST_CMAKE=ON -DRDK_USE_BOOST_IOSTREAMS=OFF#{extra_cmake_flags}"
|
|
87
|
+
run_command(cmake, 'Configuring RDKit')
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# local installation in gem directory
|
|
91
|
+
Dir.chdir build_dir do
|
|
92
|
+
run_command("#{ld_path} make -j#{nr_processors}", 'Compiling RDKit sources')
|
|
93
|
+
run_command("#{ld_path} make install", 'Installing RDKit sources')
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Remove compiled file, free spaces
|
|
97
|
+
FileUtils.remove_dir(rdkit_dir)
|
|
98
|
+
|
|
99
|
+
# create a fake Makefile
|
|
100
|
+
File.open(File.join(File.dirname(__FILE__), 'Makefile'), 'w+') do |makefile|
|
|
101
|
+
makefile.puts "all:\n\ttrue\n\ninstall:\n\ttrue\n"
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
$makefile_created = true
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitAbbreviations.2026.03.1pre.dylib
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitAbbreviations.1.dylib
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitAlignment.2026.03.1pre.dylib
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitAlignment.1.dylib
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitCIPLabeler.2026.03.1pre.dylib
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitCIPLabeler.1.dylib
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitCatalogs.2026.03.1pre.dylib
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitCatalogs.1.dylib
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitChemDraw.2026.03.1pre.dylib
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitChemDraw.1.dylib
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitChemReactions.2026.03.1pre.dylib
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitChemReactions.1.dylib
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitChemTransforms.2026.03.1pre.dylib
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitChemTransforms.1.dylib
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitChemicalFeatures.2026.03.1pre.dylib
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitChemicalFeatures.1.dylib
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitDataStructs.2026.03.1pre.dylib
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitDataStructs.1.dylib
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitDepictor.2026.03.1pre.dylib
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitDepictor.1.dylib
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitDeprotect.2026.03.1pre.dylib
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitDeprotect.1.dylib
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitDescriptors.2026.03.1pre.dylib
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitDescriptors.1.dylib
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitDistGeomHelpers.2026.03.1pre.dylib
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitDistGeomHelpers.1.dylib
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
libRDKitDistGeometry.2026.03.1pre.dylib
|