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.
Files changed (308) hide show
  1. checksums.yaml +7 -0
  2. data/CMakeLists.txt +713 -0
  3. data/Code/CMakeLists.txt +44 -0
  4. data/Code/RubyWrappers/Abbreviations.i +19 -0
  5. data/Code/RubyWrappers/AddHs.i +34 -0
  6. data/Code/RubyWrappers/Atom.i +165 -0
  7. data/Code/RubyWrappers/AtomIterators.i +77 -0
  8. data/Code/RubyWrappers/AtomPairs.i +95 -0
  9. data/Code/RubyWrappers/AvalonLib.i +41 -0
  10. data/Code/RubyWrappers/BitOps.i +72 -0
  11. data/Code/RubyWrappers/Bond.i +87 -0
  12. data/Code/RubyWrappers/BondIterators.i +61 -0
  13. data/Code/RubyWrappers/CMakeLists.txt +67 -0
  14. data/Code/RubyWrappers/Canon.i +40 -0
  15. data/Code/RubyWrappers/ChemDraw.i +81 -0
  16. data/Code/RubyWrappers/ChemReactions.i +166 -0
  17. data/Code/RubyWrappers/ChemTransforms.i +126 -0
  18. data/Code/RubyWrappers/Conformer.i +69 -0
  19. data/Code/RubyWrappers/Descriptors.i +64 -0
  20. data/Code/RubyWrappers/Dict.i +45 -0
  21. data/Code/RubyWrappers/DistGeom.i +217 -0
  22. data/Code/RubyWrappers/DiversityPick.h +49 -0
  23. data/Code/RubyWrappers/DiversityPick.i +10 -0
  24. data/Code/RubyWrappers/ErrorGenerator.i +73 -0
  25. data/Code/RubyWrappers/ExplicitBitVect.i +76 -0
  26. data/Code/RubyWrappers/FMCS.i +63 -0
  27. data/Code/RubyWrappers/FilterCatalog.i +154 -0
  28. data/Code/RubyWrappers/Fingerprints.i +56 -0
  29. data/Code/RubyWrappers/ForceField.i +161 -0
  30. data/Code/RubyWrappers/GeneralizedSubstruct.i +38 -0
  31. data/Code/RubyWrappers/GenericRDKitException.h +27 -0
  32. data/Code/RubyWrappers/Inchi.i +38 -0
  33. data/Code/RubyWrappers/MolBundle.i +16 -0
  34. data/Code/RubyWrappers/MolDraw2D.i +117 -0
  35. data/Code/RubyWrappers/MolEnumerator.i +45 -0
  36. data/Code/RubyWrappers/MolHash.i +25 -0
  37. data/Code/RubyWrappers/MolOps.i +76 -0
  38. data/Code/RubyWrappers/MolStandardize.i +37 -0
  39. data/Code/RubyWrappers/MolSupplier.i +83 -0
  40. data/Code/RubyWrappers/MolTransforms.i +39 -0
  41. data/Code/RubyWrappers/MolWriters.i +41 -0
  42. data/Code/RubyWrappers/MonomerInfo.i +42 -0
  43. data/Code/RubyWrappers/MorganFingerprints.h +21 -0
  44. data/Code/RubyWrappers/MorganFingerprints.i +66 -0
  45. data/Code/RubyWrappers/PeriodicTable.i +44 -0
  46. data/Code/RubyWrappers/Queries.i +289 -0
  47. data/Code/RubyWrappers/QueryAtom.i +47 -0
  48. data/Code/RubyWrappers/QueryBond.i +47 -0
  49. data/Code/RubyWrappers/QueryOps.i +44 -0
  50. data/Code/RubyWrappers/RDKitExceptions.i +75 -0
  51. data/Code/RubyWrappers/RDLogger.i +74 -0
  52. data/Code/RubyWrappers/RDProps.i +44 -0
  53. data/Code/RubyWrappers/RGroupDecomposition.i +52 -0
  54. data/Code/RubyWrappers/ROMol.i +703 -0
  55. data/Code/RubyWrappers/RWMol.i +262 -0
  56. data/Code/RubyWrappers/RascalMCES.i +71 -0
  57. data/Code/RubyWrappers/ReactionFingerprints.i +37 -0
  58. data/Code/RubyWrappers/RingInfo.i +40 -0
  59. data/Code/RubyWrappers/Rings.i +40 -0
  60. data/Code/RubyWrappers/SanitException.i +100 -0
  61. data/Code/RubyWrappers/ScaffoldNetwork.i +28 -0
  62. data/Code/RubyWrappers/SmartsWrite.i +38 -0
  63. data/Code/RubyWrappers/SmilesParse.i +40 -0
  64. data/Code/RubyWrappers/SmilesWrite.i +42 -0
  65. data/Code/RubyWrappers/StereoGroup.i +16 -0
  66. data/Code/RubyWrappers/Streams.i +67 -0
  67. data/Code/RubyWrappers/Subgraphs.i +53 -0
  68. data/Code/RubyWrappers/Subset.i +75 -0
  69. data/Code/RubyWrappers/SubstanceGroup.i +91 -0
  70. data/Code/RubyWrappers/SubstructLibrary.i +80 -0
  71. data/Code/RubyWrappers/TautomerQuery.i +19 -0
  72. data/Code/RubyWrappers/Trajectory.i +34 -0
  73. data/Code/RubyWrappers/boost_tuple.i +64 -0
  74. data/Code/RubyWrappers/extend_std_vector.i +10 -0
  75. data/Code/RubyWrappers/gmwrapper/CMakeLists.txt +75 -0
  76. data/Code/RubyWrappers/gmwrapper/GraphMolRuby.i +431 -0
  77. data/Code/RubyWrappers/gmwrapper/std_list.i +65 -0
  78. data/Code/RubyWrappers/point.i +56 -0
  79. data/Code/RubyWrappers/transforms.i +60 -0
  80. data/Code/RubyWrappers/types.i +40 -0
  81. data/README.md +116 -0
  82. data/Rakefile +256 -0
  83. data/ext/rdkit_chem/CMakeLists.txt +69 -0
  84. data/ext/rdkit_chem/Makefile +5 -0
  85. data/ext/rdkit_chem/extconf.rb +104 -0
  86. data/lib/rdkit_chem/3.1.0/RDKitChem.bundle +0 -0
  87. data/lib/rdkit_chem/3.1.0/libRDKitAbbreviations.1.dylib +1 -0
  88. data/lib/rdkit_chem/3.1.0/libRDKitAbbreviations.2026.03.1pre.dylib +0 -0
  89. data/lib/rdkit_chem/3.1.0/libRDKitAbbreviations.dylib +1 -0
  90. data/lib/rdkit_chem/3.1.0/libRDKitAlignment.1.dylib +1 -0
  91. data/lib/rdkit_chem/3.1.0/libRDKitAlignment.2026.03.1pre.dylib +0 -0
  92. data/lib/rdkit_chem/3.1.0/libRDKitAlignment.dylib +1 -0
  93. data/lib/rdkit_chem/3.1.0/libRDKitCIPLabeler.1.dylib +1 -0
  94. data/lib/rdkit_chem/3.1.0/libRDKitCIPLabeler.2026.03.1pre.dylib +0 -0
  95. data/lib/rdkit_chem/3.1.0/libRDKitCIPLabeler.dylib +1 -0
  96. data/lib/rdkit_chem/3.1.0/libRDKitCatalogs.1.dylib +1 -0
  97. data/lib/rdkit_chem/3.1.0/libRDKitCatalogs.2026.03.1pre.dylib +0 -0
  98. data/lib/rdkit_chem/3.1.0/libRDKitCatalogs.dylib +1 -0
  99. data/lib/rdkit_chem/3.1.0/libRDKitChemDraw.1.dylib +1 -0
  100. data/lib/rdkit_chem/3.1.0/libRDKitChemDraw.2026.03.1pre.dylib +0 -0
  101. data/lib/rdkit_chem/3.1.0/libRDKitChemDraw.dylib +1 -0
  102. data/lib/rdkit_chem/3.1.0/libRDKitChemReactions.1.dylib +1 -0
  103. data/lib/rdkit_chem/3.1.0/libRDKitChemReactions.2026.03.1pre.dylib +0 -0
  104. data/lib/rdkit_chem/3.1.0/libRDKitChemReactions.dylib +1 -0
  105. data/lib/rdkit_chem/3.1.0/libRDKitChemTransforms.1.dylib +1 -0
  106. data/lib/rdkit_chem/3.1.0/libRDKitChemTransforms.2026.03.1pre.dylib +0 -0
  107. data/lib/rdkit_chem/3.1.0/libRDKitChemTransforms.dylib +1 -0
  108. data/lib/rdkit_chem/3.1.0/libRDKitChemicalFeatures.1.dylib +1 -0
  109. data/lib/rdkit_chem/3.1.0/libRDKitChemicalFeatures.2026.03.1pre.dylib +0 -0
  110. data/lib/rdkit_chem/3.1.0/libRDKitChemicalFeatures.dylib +1 -0
  111. data/lib/rdkit_chem/3.1.0/libRDKitDataStructs.1.dylib +1 -0
  112. data/lib/rdkit_chem/3.1.0/libRDKitDataStructs.2026.03.1pre.dylib +0 -0
  113. data/lib/rdkit_chem/3.1.0/libRDKitDataStructs.dylib +1 -0
  114. data/lib/rdkit_chem/3.1.0/libRDKitDepictor.1.dylib +1 -0
  115. data/lib/rdkit_chem/3.1.0/libRDKitDepictor.2026.03.1pre.dylib +0 -0
  116. data/lib/rdkit_chem/3.1.0/libRDKitDepictor.dylib +1 -0
  117. data/lib/rdkit_chem/3.1.0/libRDKitDeprotect.1.dylib +1 -0
  118. data/lib/rdkit_chem/3.1.0/libRDKitDeprotect.2026.03.1pre.dylib +0 -0
  119. data/lib/rdkit_chem/3.1.0/libRDKitDeprotect.dylib +1 -0
  120. data/lib/rdkit_chem/3.1.0/libRDKitDescriptors.1.dylib +1 -0
  121. data/lib/rdkit_chem/3.1.0/libRDKitDescriptors.2026.03.1pre.dylib +0 -0
  122. data/lib/rdkit_chem/3.1.0/libRDKitDescriptors.dylib +1 -0
  123. data/lib/rdkit_chem/3.1.0/libRDKitDistGeomHelpers.1.dylib +1 -0
  124. data/lib/rdkit_chem/3.1.0/libRDKitDistGeomHelpers.2026.03.1pre.dylib +0 -0
  125. data/lib/rdkit_chem/3.1.0/libRDKitDistGeomHelpers.dylib +1 -0
  126. data/lib/rdkit_chem/3.1.0/libRDKitDistGeometry.1.dylib +1 -0
  127. data/lib/rdkit_chem/3.1.0/libRDKitDistGeometry.2026.03.1pre.dylib +0 -0
  128. data/lib/rdkit_chem/3.1.0/libRDKitDistGeometry.dylib +1 -0
  129. data/lib/rdkit_chem/3.1.0/libRDKitEigenSolvers.1.dylib +1 -0
  130. data/lib/rdkit_chem/3.1.0/libRDKitEigenSolvers.2026.03.1pre.dylib +0 -0
  131. data/lib/rdkit_chem/3.1.0/libRDKitEigenSolvers.dylib +1 -0
  132. data/lib/rdkit_chem/3.1.0/libRDKitEnumerateStereoisomers.1.dylib +1 -0
  133. data/lib/rdkit_chem/3.1.0/libRDKitEnumerateStereoisomers.2026.03.1pre.dylib +0 -0
  134. data/lib/rdkit_chem/3.1.0/libRDKitEnumerateStereoisomers.dylib +1 -0
  135. data/lib/rdkit_chem/3.1.0/libRDKitFMCS.1.dylib +1 -0
  136. data/lib/rdkit_chem/3.1.0/libRDKitFMCS.2026.03.1pre.dylib +0 -0
  137. data/lib/rdkit_chem/3.1.0/libRDKitFMCS.dylib +1 -0
  138. data/lib/rdkit_chem/3.1.0/libRDKitFileParsers.1.dylib +1 -0
  139. data/lib/rdkit_chem/3.1.0/libRDKitFileParsers.2026.03.1pre.dylib +0 -0
  140. data/lib/rdkit_chem/3.1.0/libRDKitFileParsers.dylib +1 -0
  141. data/lib/rdkit_chem/3.1.0/libRDKitFilterCatalog.1.dylib +1 -0
  142. data/lib/rdkit_chem/3.1.0/libRDKitFilterCatalog.2026.03.1pre.dylib +0 -0
  143. data/lib/rdkit_chem/3.1.0/libRDKitFilterCatalog.dylib +1 -0
  144. data/lib/rdkit_chem/3.1.0/libRDKitFingerprints.1.dylib +1 -0
  145. data/lib/rdkit_chem/3.1.0/libRDKitFingerprints.2026.03.1pre.dylib +0 -0
  146. data/lib/rdkit_chem/3.1.0/libRDKitFingerprints.dylib +1 -0
  147. data/lib/rdkit_chem/3.1.0/libRDKitForceField.1.dylib +1 -0
  148. data/lib/rdkit_chem/3.1.0/libRDKitForceField.2026.03.1pre.dylib +0 -0
  149. data/lib/rdkit_chem/3.1.0/libRDKitForceField.dylib +1 -0
  150. data/lib/rdkit_chem/3.1.0/libRDKitForceFieldHelpers.1.dylib +1 -0
  151. data/lib/rdkit_chem/3.1.0/libRDKitForceFieldHelpers.2026.03.1pre.dylib +0 -0
  152. data/lib/rdkit_chem/3.1.0/libRDKitForceFieldHelpers.dylib +1 -0
  153. data/lib/rdkit_chem/3.1.0/libRDKitFragCatalog.1.dylib +1 -0
  154. data/lib/rdkit_chem/3.1.0/libRDKitFragCatalog.2026.03.1pre.dylib +0 -0
  155. data/lib/rdkit_chem/3.1.0/libRDKitFragCatalog.dylib +1 -0
  156. data/lib/rdkit_chem/3.1.0/libRDKitGeneralizedSubstruct.1.dylib +1 -0
  157. data/lib/rdkit_chem/3.1.0/libRDKitGeneralizedSubstruct.2026.03.1pre.dylib +0 -0
  158. data/lib/rdkit_chem/3.1.0/libRDKitGeneralizedSubstruct.dylib +1 -0
  159. data/lib/rdkit_chem/3.1.0/libRDKitGenericGroups.1.dylib +1 -0
  160. data/lib/rdkit_chem/3.1.0/libRDKitGenericGroups.2026.03.1pre.dylib +0 -0
  161. data/lib/rdkit_chem/3.1.0/libRDKitGenericGroups.dylib +1 -0
  162. data/lib/rdkit_chem/3.1.0/libRDKitGraphMol.1.dylib +1 -0
  163. data/lib/rdkit_chem/3.1.0/libRDKitGraphMol.2026.03.1pre.dylib +0 -0
  164. data/lib/rdkit_chem/3.1.0/libRDKitGraphMol.dylib +1 -0
  165. data/lib/rdkit_chem/3.1.0/libRDKitInfoTheory.1.dylib +1 -0
  166. data/lib/rdkit_chem/3.1.0/libRDKitInfoTheory.2026.03.1pre.dylib +0 -0
  167. data/lib/rdkit_chem/3.1.0/libRDKitInfoTheory.dylib +1 -0
  168. data/lib/rdkit_chem/3.1.0/libRDKitMMPA.1.dylib +1 -0
  169. data/lib/rdkit_chem/3.1.0/libRDKitMMPA.2026.03.1pre.dylib +0 -0
  170. data/lib/rdkit_chem/3.1.0/libRDKitMMPA.dylib +1 -0
  171. data/lib/rdkit_chem/3.1.0/libRDKitMarvinParser.1.dylib +1 -0
  172. data/lib/rdkit_chem/3.1.0/libRDKitMarvinParser.2026.03.1pre.dylib +0 -0
  173. data/lib/rdkit_chem/3.1.0/libRDKitMarvinParser.dylib +1 -0
  174. data/lib/rdkit_chem/3.1.0/libRDKitMolAlign.1.dylib +1 -0
  175. data/lib/rdkit_chem/3.1.0/libRDKitMolAlign.2026.03.1pre.dylib +0 -0
  176. data/lib/rdkit_chem/3.1.0/libRDKitMolAlign.dylib +1 -0
  177. data/lib/rdkit_chem/3.1.0/libRDKitMolCatalog.1.dylib +1 -0
  178. data/lib/rdkit_chem/3.1.0/libRDKitMolCatalog.2026.03.1pre.dylib +0 -0
  179. data/lib/rdkit_chem/3.1.0/libRDKitMolCatalog.dylib +1 -0
  180. data/lib/rdkit_chem/3.1.0/libRDKitMolChemicalFeatures.1.dylib +1 -0
  181. data/lib/rdkit_chem/3.1.0/libRDKitMolChemicalFeatures.2026.03.1pre.dylib +0 -0
  182. data/lib/rdkit_chem/3.1.0/libRDKitMolChemicalFeatures.dylib +1 -0
  183. data/lib/rdkit_chem/3.1.0/libRDKitMolDraw2D.1.dylib +1 -0
  184. data/lib/rdkit_chem/3.1.0/libRDKitMolDraw2D.2026.03.1pre.dylib +0 -0
  185. data/lib/rdkit_chem/3.1.0/libRDKitMolDraw2D.dylib +1 -0
  186. data/lib/rdkit_chem/3.1.0/libRDKitMolEnumerator.1.dylib +1 -0
  187. data/lib/rdkit_chem/3.1.0/libRDKitMolEnumerator.2026.03.1pre.dylib +0 -0
  188. data/lib/rdkit_chem/3.1.0/libRDKitMolEnumerator.dylib +1 -0
  189. data/lib/rdkit_chem/3.1.0/libRDKitMolHash.1.dylib +1 -0
  190. data/lib/rdkit_chem/3.1.0/libRDKitMolHash.2026.03.1pre.dylib +0 -0
  191. data/lib/rdkit_chem/3.1.0/libRDKitMolHash.dylib +1 -0
  192. data/lib/rdkit_chem/3.1.0/libRDKitMolInteractionFields.1.dylib +1 -0
  193. data/lib/rdkit_chem/3.1.0/libRDKitMolInteractionFields.2026.03.1pre.dylib +0 -0
  194. data/lib/rdkit_chem/3.1.0/libRDKitMolInteractionFields.dylib +1 -0
  195. data/lib/rdkit_chem/3.1.0/libRDKitMolInterchange.1.dylib +1 -0
  196. data/lib/rdkit_chem/3.1.0/libRDKitMolInterchange.2026.03.1pre.dylib +0 -0
  197. data/lib/rdkit_chem/3.1.0/libRDKitMolInterchange.dylib +1 -0
  198. data/lib/rdkit_chem/3.1.0/libRDKitMolProcessing.1.dylib +1 -0
  199. data/lib/rdkit_chem/3.1.0/libRDKitMolProcessing.2026.03.1pre.dylib +0 -0
  200. data/lib/rdkit_chem/3.1.0/libRDKitMolProcessing.dylib +1 -0
  201. data/lib/rdkit_chem/3.1.0/libRDKitMolStandardize.1.dylib +1 -0
  202. data/lib/rdkit_chem/3.1.0/libRDKitMolStandardize.2026.03.1pre.dylib +0 -0
  203. data/lib/rdkit_chem/3.1.0/libRDKitMolStandardize.dylib +1 -0
  204. data/lib/rdkit_chem/3.1.0/libRDKitMolTransforms.1.dylib +1 -0
  205. data/lib/rdkit_chem/3.1.0/libRDKitMolTransforms.2026.03.1pre.dylib +0 -0
  206. data/lib/rdkit_chem/3.1.0/libRDKitMolTransforms.dylib +1 -0
  207. data/lib/rdkit_chem/3.1.0/libRDKitO3AAlign.1.dylib +1 -0
  208. data/lib/rdkit_chem/3.1.0/libRDKitO3AAlign.2026.03.1pre.dylib +0 -0
  209. data/lib/rdkit_chem/3.1.0/libRDKitO3AAlign.dylib +1 -0
  210. data/lib/rdkit_chem/3.1.0/libRDKitOptimizer.1.dylib +1 -0
  211. data/lib/rdkit_chem/3.1.0/libRDKitOptimizer.2026.03.1pre.dylib +0 -0
  212. data/lib/rdkit_chem/3.1.0/libRDKitOptimizer.dylib +1 -0
  213. data/lib/rdkit_chem/3.1.0/libRDKitPartialCharges.1.dylib +1 -0
  214. data/lib/rdkit_chem/3.1.0/libRDKitPartialCharges.2026.03.1pre.dylib +0 -0
  215. data/lib/rdkit_chem/3.1.0/libRDKitPartialCharges.dylib +1 -0
  216. data/lib/rdkit_chem/3.1.0/libRDKitPubChemShape.1.dylib +1 -0
  217. data/lib/rdkit_chem/3.1.0/libRDKitPubChemShape.2026.03.1pre.dylib +0 -0
  218. data/lib/rdkit_chem/3.1.0/libRDKitPubChemShape.dylib +1 -0
  219. data/lib/rdkit_chem/3.1.0/libRDKitRDChemDrawLib.1.dylib +1 -0
  220. data/lib/rdkit_chem/3.1.0/libRDKitRDChemDrawLib.2026.03.1pre.dylib +0 -0
  221. data/lib/rdkit_chem/3.1.0/libRDKitRDChemDrawLib.dylib +1 -0
  222. data/lib/rdkit_chem/3.1.0/libRDKitRDChemDrawReactionLib.1.dylib +1 -0
  223. data/lib/rdkit_chem/3.1.0/libRDKitRDChemDrawReactionLib.2026.03.1pre.dylib +0 -0
  224. data/lib/rdkit_chem/3.1.0/libRDKitRDChemDrawReactionLib.dylib +1 -0
  225. data/lib/rdkit_chem/3.1.0/libRDKitRDGeneral.1.dylib +1 -0
  226. data/lib/rdkit_chem/3.1.0/libRDKitRDGeneral.2026.03.1pre.dylib +0 -0
  227. data/lib/rdkit_chem/3.1.0/libRDKitRDGeneral.dylib +1 -0
  228. data/lib/rdkit_chem/3.1.0/libRDKitRDGeometryLib.1.dylib +1 -0
  229. data/lib/rdkit_chem/3.1.0/libRDKitRDGeometryLib.2026.03.1pre.dylib +0 -0
  230. data/lib/rdkit_chem/3.1.0/libRDKitRDGeometryLib.dylib +1 -0
  231. data/lib/rdkit_chem/3.1.0/libRDKitRDStreams.1.dylib +1 -0
  232. data/lib/rdkit_chem/3.1.0/libRDKitRDStreams.2026.03.1pre.dylib +0 -0
  233. data/lib/rdkit_chem/3.1.0/libRDKitRDStreams.dylib +1 -0
  234. data/lib/rdkit_chem/3.1.0/libRDKitRGroupDecomposition.1.dylib +1 -0
  235. data/lib/rdkit_chem/3.1.0/libRDKitRGroupDecomposition.2026.03.1pre.dylib +0 -0
  236. data/lib/rdkit_chem/3.1.0/libRDKitRGroupDecomposition.dylib +1 -0
  237. data/lib/rdkit_chem/3.1.0/libRDKitRascalMCES.1.dylib +1 -0
  238. data/lib/rdkit_chem/3.1.0/libRDKitRascalMCES.2026.03.1pre.dylib +0 -0
  239. data/lib/rdkit_chem/3.1.0/libRDKitRascalMCES.dylib +1 -0
  240. data/lib/rdkit_chem/3.1.0/libRDKitReducedGraphs.1.dylib +1 -0
  241. data/lib/rdkit_chem/3.1.0/libRDKitReducedGraphs.2026.03.1pre.dylib +0 -0
  242. data/lib/rdkit_chem/3.1.0/libRDKitReducedGraphs.dylib +1 -0
  243. data/lib/rdkit_chem/3.1.0/libRDKitRingDecomposerLib.1.dylib +1 -0
  244. data/lib/rdkit_chem/3.1.0/libRDKitRingDecomposerLib.2026.03.1pre.dylib +0 -0
  245. data/lib/rdkit_chem/3.1.0/libRDKitRingDecomposerLib.dylib +1 -0
  246. data/lib/rdkit_chem/3.1.0/libRDKitSLNParse.1.dylib +1 -0
  247. data/lib/rdkit_chem/3.1.0/libRDKitSLNParse.2026.03.1pre.dylib +0 -0
  248. data/lib/rdkit_chem/3.1.0/libRDKitSLNParse.dylib +1 -0
  249. data/lib/rdkit_chem/3.1.0/libRDKitScaffoldNetwork.1.dylib +1 -0
  250. data/lib/rdkit_chem/3.1.0/libRDKitScaffoldNetwork.2026.03.1pre.dylib +0 -0
  251. data/lib/rdkit_chem/3.1.0/libRDKitScaffoldNetwork.dylib +1 -0
  252. data/lib/rdkit_chem/3.1.0/libRDKitShapeHelpers.1.dylib +1 -0
  253. data/lib/rdkit_chem/3.1.0/libRDKitShapeHelpers.2026.03.1pre.dylib +0 -0
  254. data/lib/rdkit_chem/3.1.0/libRDKitShapeHelpers.dylib +1 -0
  255. data/lib/rdkit_chem/3.1.0/libRDKitSimDivPickers.1.dylib +1 -0
  256. data/lib/rdkit_chem/3.1.0/libRDKitSimDivPickers.2026.03.1pre.dylib +0 -0
  257. data/lib/rdkit_chem/3.1.0/libRDKitSimDivPickers.dylib +1 -0
  258. data/lib/rdkit_chem/3.1.0/libRDKitSmilesParse.1.dylib +1 -0
  259. data/lib/rdkit_chem/3.1.0/libRDKitSmilesParse.2026.03.1pre.dylib +0 -0
  260. data/lib/rdkit_chem/3.1.0/libRDKitSmilesParse.dylib +1 -0
  261. data/lib/rdkit_chem/3.1.0/libRDKitSubgraphs.1.dylib +1 -0
  262. data/lib/rdkit_chem/3.1.0/libRDKitSubgraphs.2026.03.1pre.dylib +0 -0
  263. data/lib/rdkit_chem/3.1.0/libRDKitSubgraphs.dylib +1 -0
  264. data/lib/rdkit_chem/3.1.0/libRDKitSubstructLibrary.1.dylib +1 -0
  265. data/lib/rdkit_chem/3.1.0/libRDKitSubstructLibrary.2026.03.1pre.dylib +0 -0
  266. data/lib/rdkit_chem/3.1.0/libRDKitSubstructLibrary.dylib +1 -0
  267. data/lib/rdkit_chem/3.1.0/libRDKitSubstructMatch.1.dylib +1 -0
  268. data/lib/rdkit_chem/3.1.0/libRDKitSubstructMatch.2026.03.1pre.dylib +0 -0
  269. data/lib/rdkit_chem/3.1.0/libRDKitSubstructMatch.dylib +1 -0
  270. data/lib/rdkit_chem/3.1.0/libRDKitSynthonSpaceSearch.1.dylib +1 -0
  271. data/lib/rdkit_chem/3.1.0/libRDKitSynthonSpaceSearch.2026.03.1pre.dylib +0 -0
  272. data/lib/rdkit_chem/3.1.0/libRDKitSynthonSpaceSearch.dylib +1 -0
  273. data/lib/rdkit_chem/3.1.0/libRDKitTautomerQuery.1.dylib +1 -0
  274. data/lib/rdkit_chem/3.1.0/libRDKitTautomerQuery.2026.03.1pre.dylib +0 -0
  275. data/lib/rdkit_chem/3.1.0/libRDKitTautomerQuery.dylib +1 -0
  276. data/lib/rdkit_chem/3.1.0/libRDKitTrajectory.1.dylib +1 -0
  277. data/lib/rdkit_chem/3.1.0/libRDKitTrajectory.2026.03.1pre.dylib +0 -0
  278. data/lib/rdkit_chem/3.1.0/libRDKitTrajectory.dylib +1 -0
  279. data/lib/rdkit_chem/3.1.0/libRDKitcoordgen.1.dylib +1 -0
  280. data/lib/rdkit_chem/3.1.0/libRDKitcoordgen.2026.03.1pre.dylib +0 -0
  281. data/lib/rdkit_chem/3.1.0/libRDKitcoordgen.dylib +1 -0
  282. data/lib/rdkit_chem/3.1.0/libRDKitga.1.dylib +1 -0
  283. data/lib/rdkit_chem/3.1.0/libRDKitga.2026.03.1pre.dylib +0 -0
  284. data/lib/rdkit_chem/3.1.0/libRDKitga.dylib +1 -0
  285. data/lib/rdkit_chem/3.1.0/libRDKithc.1.dylib +1 -0
  286. data/lib/rdkit_chem/3.1.0/libRDKithc.2026.03.1pre.dylib +0 -0
  287. data/lib/rdkit_chem/3.1.0/libRDKithc.dylib +1 -0
  288. data/lib/rdkit_chem/3.1.0/libRDKitmaeparser.1.dylib +1 -0
  289. data/lib/rdkit_chem/3.1.0/libRDKitmaeparser.2026.03.1pre.dylib +0 -0
  290. data/lib/rdkit_chem/3.1.0/libRDKitmaeparser.dylib +1 -0
  291. data/lib/rdkit_chem/3.1.0/libRDKitpubchem_align3d.1.dylib +1 -0
  292. data/lib/rdkit_chem/3.1.0/libRDKitpubchem_align3d.2026.03.1pre.dylib +0 -0
  293. data/lib/rdkit_chem/3.1.0/libRDKitpubchem_align3d.dylib +1 -0
  294. data/lib/rdkit_chem/3.1.0/libboost_iostreams.dylib +0 -0
  295. data/lib/rdkit_chem/3.1.0/libboost_random.dylib +0 -0
  296. data/lib/rdkit_chem/3.1.0/libboost_regex.dylib +0 -0
  297. data/lib/rdkit_chem/3.1.0/libboost_serialization.dylib +0 -0
  298. data/lib/rdkit_chem/3.1.0/libfreetype.6.dylib +0 -0
  299. data/lib/rdkit_chem/3.1.0/libicudata.78.dylib +0 -0
  300. data/lib/rdkit_chem/3.1.0/libicui18n.78.dylib +0 -0
  301. data/lib/rdkit_chem/3.1.0/libicuuc.78.dylib +0 -0
  302. data/lib/rdkit_chem/3.1.0/liblzma.5.dylib +0 -0
  303. data/lib/rdkit_chem/3.1.0/libpng16.16.dylib +0 -0
  304. data/lib/rdkit_chem/3.1.0/libzstd.1.dylib +0 -0
  305. data/lib/rdkit_chem/version.rb +6 -0
  306. data/lib/rdkit_chem.rb +32 -0
  307. data/test/test_rdkit_chem.rb +99 -0
  308. 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,5 @@
1
+ all:
2
+ true
3
+
4
+ install:
5
+ true
@@ -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
@@ -0,0 +1 @@
1
+ libRDKitAbbreviations.2026.03.1pre.dylib
@@ -0,0 +1 @@
1
+ libRDKitAbbreviations.1.dylib
@@ -0,0 +1 @@
1
+ libRDKitAlignment.2026.03.1pre.dylib
@@ -0,0 +1 @@
1
+ libRDKitAlignment.1.dylib
@@ -0,0 +1 @@
1
+ libRDKitCIPLabeler.2026.03.1pre.dylib
@@ -0,0 +1 @@
1
+ libRDKitCIPLabeler.1.dylib
@@ -0,0 +1 @@
1
+ libRDKitCatalogs.2026.03.1pre.dylib
@@ -0,0 +1 @@
1
+ libRDKitCatalogs.1.dylib
@@ -0,0 +1 @@
1
+ libRDKitChemDraw.2026.03.1pre.dylib
@@ -0,0 +1 @@
1
+ libRDKitChemDraw.1.dylib
@@ -0,0 +1 @@
1
+ libRDKitChemReactions.2026.03.1pre.dylib
@@ -0,0 +1 @@
1
+ libRDKitChemReactions.1.dylib
@@ -0,0 +1 @@
1
+ libRDKitChemTransforms.2026.03.1pre.dylib
@@ -0,0 +1 @@
1
+ libRDKitChemTransforms.1.dylib
@@ -0,0 +1 @@
1
+ libRDKitChemicalFeatures.2026.03.1pre.dylib
@@ -0,0 +1 @@
1
+ libRDKitChemicalFeatures.1.dylib
@@ -0,0 +1 @@
1
+ libRDKitDataStructs.2026.03.1pre.dylib
@@ -0,0 +1 @@
1
+ libRDKitDataStructs.1.dylib
@@ -0,0 +1 @@
1
+ libRDKitDepictor.2026.03.1pre.dylib
@@ -0,0 +1 @@
1
+ libRDKitDepictor.1.dylib
@@ -0,0 +1 @@
1
+ libRDKitDeprotect.2026.03.1pre.dylib
@@ -0,0 +1 @@
1
+ libRDKitDeprotect.1.dylib
@@ -0,0 +1 @@
1
+ libRDKitDescriptors.2026.03.1pre.dylib
@@ -0,0 +1 @@
1
+ libRDKitDescriptors.1.dylib
@@ -0,0 +1 @@
1
+ libRDKitDistGeomHelpers.2026.03.1pre.dylib
@@ -0,0 +1 @@
1
+ libRDKitDistGeomHelpers.1.dylib
@@ -0,0 +1 @@
1
+ libRDKitDistGeometry.2026.03.1pre.dylib