rdkit_chem 2025.09.3.6-x86_64-linux → 2025.09.3.13-x86_64-linux

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 (287) hide show
  1. checksums.yaml +4 -4
  2. data/Code/RubyWrappers/MolOps.i +1 -1
  3. data/Code/RubyWrappers/gmwrapper/CMakeLists.txt +6 -0
  4. data/README.md +92 -0
  5. data/Rakefile +102 -16
  6. data/ext/rdkit_chem/extconf.rb +37 -17
  7. data/lib/rdkit_chem/{3.3.0 → 3.1.0}/RDKitChem.so +0 -0
  8. data/lib/rdkit_chem/3.1.0/libRDKitAbbreviations.so.1.2026.03.1pre +0 -0
  9. data/lib/rdkit_chem/3.1.0/libRDKitAlignment.so.1.2026.03.1pre +0 -0
  10. data/lib/rdkit_chem/3.1.0/libRDKitCIPLabeler.so.1.2026.03.1pre +0 -0
  11. data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitCatalogs.so.1.2026.03.1pre +0 -0
  12. data/lib/rdkit_chem/3.1.0/libRDKitChemDraw.so.1.2026.03.1pre +0 -0
  13. data/lib/rdkit_chem/3.1.0/libRDKitChemReactions.so.1.2026.03.1pre +0 -0
  14. data/lib/rdkit_chem/3.1.0/libRDKitChemTransforms.so.1.2026.03.1pre +0 -0
  15. data/lib/rdkit_chem/3.1.0/libRDKitChemicalFeatures.so.1.2026.03.1pre +0 -0
  16. data/lib/rdkit_chem/3.1.0/libRDKitDataStructs.so.1.2026.03.1pre +0 -0
  17. data/lib/rdkit_chem/3.1.0/libRDKitDepictor.so.1.2026.03.1pre +0 -0
  18. data/lib/rdkit_chem/3.1.0/libRDKitDeprotect.so.1.2026.03.1pre +0 -0
  19. data/lib/rdkit_chem/3.1.0/libRDKitDescriptors.so.1.2026.03.1pre +0 -0
  20. data/lib/rdkit_chem/3.1.0/libRDKitDistGeomHelpers.so.1.2026.03.1pre +0 -0
  21. data/lib/rdkit_chem/3.1.0/libRDKitDistGeometry.so.1.2026.03.1pre +0 -0
  22. data/lib/rdkit_chem/3.1.0/libRDKitEigenSolvers.so.1.2026.03.1pre +0 -0
  23. data/lib/rdkit_chem/3.1.0/libRDKitEnumerateStereoisomers.so.1.2026.03.1pre +0 -0
  24. data/lib/rdkit_chem/3.1.0/libRDKitFMCS.so.1.2026.03.1pre +0 -0
  25. data/lib/rdkit_chem/3.1.0/libRDKitFileParsers.so.1.2026.03.1pre +0 -0
  26. data/lib/rdkit_chem/3.1.0/libRDKitFilterCatalog.so.1.2026.03.1pre +0 -0
  27. data/lib/rdkit_chem/3.1.0/libRDKitFingerprints.so.1.2026.03.1pre +0 -0
  28. data/lib/rdkit_chem/3.1.0/libRDKitForceField.so.1.2026.03.1pre +0 -0
  29. data/lib/rdkit_chem/3.1.0/libRDKitForceFieldHelpers.so.1.2026.03.1pre +0 -0
  30. data/lib/rdkit_chem/3.1.0/libRDKitFragCatalog.so.1.2026.03.1pre +0 -0
  31. data/lib/rdkit_chem/3.1.0/libRDKitGeneralizedSubstruct.so.1.2026.03.1pre +0 -0
  32. data/lib/rdkit_chem/3.1.0/libRDKitGenericGroups.so.1.2026.03.1pre +0 -0
  33. data/lib/rdkit_chem/3.1.0/libRDKitGraphMol.so.1.2026.03.1pre +0 -0
  34. data/lib/rdkit_chem/3.1.0/libRDKitInfoTheory.so.1.2026.03.1pre +0 -0
  35. data/lib/rdkit_chem/3.1.0/libRDKitMMPA.so.1.2026.03.1pre +0 -0
  36. data/lib/rdkit_chem/3.1.0/libRDKitMarvinParser.so.1.2026.03.1pre +0 -0
  37. data/lib/rdkit_chem/3.1.0/libRDKitMolAlign.so.1.2026.03.1pre +0 -0
  38. data/lib/rdkit_chem/3.1.0/libRDKitMolCatalog.so.1.2026.03.1pre +0 -0
  39. data/lib/rdkit_chem/3.1.0/libRDKitMolChemicalFeatures.so.1.2026.03.1pre +0 -0
  40. data/lib/rdkit_chem/3.1.0/libRDKitMolDraw2D.so.1.2026.03.1pre +0 -0
  41. data/lib/rdkit_chem/3.1.0/libRDKitMolEnumerator.so.1.2026.03.1pre +0 -0
  42. data/lib/rdkit_chem/3.1.0/libRDKitMolHash.so.1.2026.03.1pre +0 -0
  43. data/lib/rdkit_chem/3.1.0/libRDKitMolInteractionFields.so.1.2026.03.1pre +0 -0
  44. data/lib/rdkit_chem/3.1.0/libRDKitMolInterchange.so.1.2026.03.1pre +0 -0
  45. data/lib/rdkit_chem/3.1.0/libRDKitMolProcessing.so.1.2026.03.1pre +0 -0
  46. data/lib/rdkit_chem/3.1.0/libRDKitMolStandardize.so.1.2026.03.1pre +0 -0
  47. data/lib/rdkit_chem/3.1.0/libRDKitMolTransforms.so.1.2026.03.1pre +0 -0
  48. data/lib/rdkit_chem/3.1.0/libRDKitO3AAlign.so.1.2026.03.1pre +0 -0
  49. data/lib/rdkit_chem/3.1.0/libRDKitOptimizer.so.1.2026.03.1pre +0 -0
  50. data/lib/rdkit_chem/3.1.0/libRDKitPartialCharges.so.1.2026.03.1pre +0 -0
  51. data/lib/rdkit_chem/3.1.0/libRDKitPubChemShape.so.1.2026.03.1pre +0 -0
  52. data/lib/rdkit_chem/3.1.0/libRDKitRDChemDrawLib.so.1.2026.03.1pre +0 -0
  53. data/lib/rdkit_chem/3.1.0/libRDKitRDChemDrawReactionLib.so.1.2026.03.1pre +0 -0
  54. data/lib/rdkit_chem/3.1.0/libRDKitRDGeneral.so.1.2026.03.1pre +0 -0
  55. data/lib/rdkit_chem/3.1.0/libRDKitRDGeometryLib.so.1.2026.03.1pre +0 -0
  56. data/lib/rdkit_chem/{3.3.0/libRDKitOptimizer.so.1.2026.03.1pre → 3.1.0/libRDKitRDStreams.so.1.2026.03.1pre} +0 -0
  57. data/lib/rdkit_chem/3.1.0/libRDKitRGroupDecomposition.so.1.2026.03.1pre +0 -0
  58. data/lib/rdkit_chem/3.1.0/libRDKitRascalMCES.so.1.2026.03.1pre +0 -0
  59. data/lib/rdkit_chem/3.1.0/libRDKitReducedGraphs.so.1.2026.03.1pre +0 -0
  60. data/lib/rdkit_chem/3.1.0/libRDKitRingDecomposerLib.so.1.2026.03.1pre +0 -0
  61. data/lib/rdkit_chem/3.1.0/libRDKitSLNParse.so.1.2026.03.1pre +0 -0
  62. data/lib/rdkit_chem/3.1.0/libRDKitScaffoldNetwork.so.1.2026.03.1pre +0 -0
  63. data/lib/rdkit_chem/3.1.0/libRDKitShapeHelpers.so.1.2026.03.1pre +0 -0
  64. data/lib/rdkit_chem/3.1.0/libRDKitSimDivPickers.so.1.2026.03.1pre +0 -0
  65. data/lib/rdkit_chem/3.1.0/libRDKitSmilesParse.so.1.2026.03.1pre +0 -0
  66. data/lib/rdkit_chem/3.1.0/libRDKitSubgraphs.so.1.2026.03.1pre +0 -0
  67. data/lib/rdkit_chem/3.1.0/libRDKitSubstructLibrary.so.1.2026.03.1pre +0 -0
  68. data/lib/rdkit_chem/3.1.0/libRDKitSubstructMatch.so.1.2026.03.1pre +0 -0
  69. data/lib/rdkit_chem/3.1.0/libRDKitSynthonSpaceSearch.so.1.2026.03.1pre +0 -0
  70. data/lib/rdkit_chem/3.1.0/libRDKitTautomerQuery.so.1.2026.03.1pre +0 -0
  71. data/lib/rdkit_chem/3.1.0/libRDKitTrajectory.so.1.2026.03.1pre +0 -0
  72. data/lib/rdkit_chem/3.1.0/libRDKitcoordgen.so.1.2026.03.1pre +0 -0
  73. data/lib/rdkit_chem/3.1.0/libRDKitga.so.1.2026.03.1pre +0 -0
  74. data/lib/rdkit_chem/3.1.0/libRDKithc.so.1.2026.03.1pre +0 -0
  75. data/lib/rdkit_chem/3.1.0/libRDKitmaeparser.so.1.2026.03.1pre +0 -0
  76. data/lib/rdkit_chem/3.1.0/libRDKitpubchem_align3d.so.1.2026.03.1pre +0 -0
  77. data/lib/rdkit_chem/3.1.0/libboost_serialization.so.1.83.0 +0 -0
  78. data/lib/rdkit_chem/version.rb +2 -2
  79. data/lib/rdkit_chem.rb +21 -12
  80. metadata +215 -213
  81. data/lib/rdkit_chem/3.3.0/libRDKitAbbreviations.so.1.2026.03.1pre +0 -0
  82. data/lib/rdkit_chem/3.3.0/libRDKitAlignment.so.1.2026.03.1pre +0 -0
  83. data/lib/rdkit_chem/3.3.0/libRDKitCIPLabeler.so.1.2026.03.1pre +0 -0
  84. data/lib/rdkit_chem/3.3.0/libRDKitChemDraw.so.1.2026.03.1pre +0 -0
  85. data/lib/rdkit_chem/3.3.0/libRDKitChemReactions.so.1.2026.03.1pre +0 -0
  86. data/lib/rdkit_chem/3.3.0/libRDKitChemTransforms.so.1.2026.03.1pre +0 -0
  87. data/lib/rdkit_chem/3.3.0/libRDKitChemicalFeatures.so.1.2026.03.1pre +0 -0
  88. data/lib/rdkit_chem/3.3.0/libRDKitDataStructs.so.1.2026.03.1pre +0 -0
  89. data/lib/rdkit_chem/3.3.0/libRDKitDepictor.so.1.2026.03.1pre +0 -0
  90. data/lib/rdkit_chem/3.3.0/libRDKitDeprotect.so.1.2026.03.1pre +0 -0
  91. data/lib/rdkit_chem/3.3.0/libRDKitDescriptors.so.1.2026.03.1pre +0 -0
  92. data/lib/rdkit_chem/3.3.0/libRDKitDistGeomHelpers.so.1.2026.03.1pre +0 -0
  93. data/lib/rdkit_chem/3.3.0/libRDKitDistGeometry.so.1.2026.03.1pre +0 -0
  94. data/lib/rdkit_chem/3.3.0/libRDKitEigenSolvers.so.1.2026.03.1pre +0 -0
  95. data/lib/rdkit_chem/3.3.0/libRDKitEnumerateStereoisomers.so.1.2026.03.1pre +0 -0
  96. data/lib/rdkit_chem/3.3.0/libRDKitFMCS.so.1.2026.03.1pre +0 -0
  97. data/lib/rdkit_chem/3.3.0/libRDKitFileParsers.so.1.2026.03.1pre +0 -0
  98. data/lib/rdkit_chem/3.3.0/libRDKitFilterCatalog.so.1.2026.03.1pre +0 -0
  99. data/lib/rdkit_chem/3.3.0/libRDKitFingerprints.so.1.2026.03.1pre +0 -0
  100. data/lib/rdkit_chem/3.3.0/libRDKitForceField.so.1.2026.03.1pre +0 -0
  101. data/lib/rdkit_chem/3.3.0/libRDKitForceFieldHelpers.so.1.2026.03.1pre +0 -0
  102. data/lib/rdkit_chem/3.3.0/libRDKitFragCatalog.so.1.2026.03.1pre +0 -0
  103. data/lib/rdkit_chem/3.3.0/libRDKitGeneralizedSubstruct.so.1.2026.03.1pre +0 -0
  104. data/lib/rdkit_chem/3.3.0/libRDKitGenericGroups.so.1.2026.03.1pre +0 -0
  105. data/lib/rdkit_chem/3.3.0/libRDKitGraphMol.so.1.2026.03.1pre +0 -0
  106. data/lib/rdkit_chem/3.3.0/libRDKitInfoTheory.so.1.2026.03.1pre +0 -0
  107. data/lib/rdkit_chem/3.3.0/libRDKitMMPA.so.1.2026.03.1pre +0 -0
  108. data/lib/rdkit_chem/3.3.0/libRDKitMarvinParser.so.1.2026.03.1pre +0 -0
  109. data/lib/rdkit_chem/3.3.0/libRDKitMolAlign.so.1.2026.03.1pre +0 -0
  110. data/lib/rdkit_chem/3.3.0/libRDKitMolCatalog.so.1.2026.03.1pre +0 -0
  111. data/lib/rdkit_chem/3.3.0/libRDKitMolChemicalFeatures.so.1.2026.03.1pre +0 -0
  112. data/lib/rdkit_chem/3.3.0/libRDKitMolDraw2D.so.1.2026.03.1pre +0 -0
  113. data/lib/rdkit_chem/3.3.0/libRDKitMolEnumerator.so.1.2026.03.1pre +0 -0
  114. data/lib/rdkit_chem/3.3.0/libRDKitMolHash.so.1.2026.03.1pre +0 -0
  115. data/lib/rdkit_chem/3.3.0/libRDKitMolInteractionFields.so.1.2026.03.1pre +0 -0
  116. data/lib/rdkit_chem/3.3.0/libRDKitMolInterchange.so.1.2026.03.1pre +0 -0
  117. data/lib/rdkit_chem/3.3.0/libRDKitMolProcessing.so.1.2026.03.1pre +0 -0
  118. data/lib/rdkit_chem/3.3.0/libRDKitMolStandardize.so.1.2026.03.1pre +0 -0
  119. data/lib/rdkit_chem/3.3.0/libRDKitMolTransforms.so.1.2026.03.1pre +0 -0
  120. data/lib/rdkit_chem/3.3.0/libRDKitO3AAlign.so.1.2026.03.1pre +0 -0
  121. data/lib/rdkit_chem/3.3.0/libRDKitPartialCharges.so.1.2026.03.1pre +0 -0
  122. data/lib/rdkit_chem/3.3.0/libRDKitPubChemShape.so.1.2026.03.1pre +0 -0
  123. data/lib/rdkit_chem/3.3.0/libRDKitRDChemDrawLib.so.1.2026.03.1pre +0 -0
  124. data/lib/rdkit_chem/3.3.0/libRDKitRDChemDrawReactionLib.so.1.2026.03.1pre +0 -0
  125. data/lib/rdkit_chem/3.3.0/libRDKitRDGeneral.so.1.2026.03.1pre +0 -0
  126. data/lib/rdkit_chem/3.3.0/libRDKitRDGeometryLib.so.1.2026.03.1pre +0 -0
  127. data/lib/rdkit_chem/3.3.0/libRDKitRDStreams.so.1.2026.03.1pre +0 -0
  128. data/lib/rdkit_chem/3.3.0/libRDKitRGroupDecomposition.so.1.2026.03.1pre +0 -0
  129. data/lib/rdkit_chem/3.3.0/libRDKitRascalMCES.so.1.2026.03.1pre +0 -0
  130. data/lib/rdkit_chem/3.3.0/libRDKitReducedGraphs.so.1.2026.03.1pre +0 -0
  131. data/lib/rdkit_chem/3.3.0/libRDKitRingDecomposerLib.so.1.2026.03.1pre +0 -0
  132. data/lib/rdkit_chem/3.3.0/libRDKitSLNParse.so.1.2026.03.1pre +0 -0
  133. data/lib/rdkit_chem/3.3.0/libRDKitScaffoldNetwork.so.1.2026.03.1pre +0 -0
  134. data/lib/rdkit_chem/3.3.0/libRDKitShapeHelpers.so.1.2026.03.1pre +0 -0
  135. data/lib/rdkit_chem/3.3.0/libRDKitSimDivPickers.so.1.2026.03.1pre +0 -0
  136. data/lib/rdkit_chem/3.3.0/libRDKitSmilesParse.so.1.2026.03.1pre +0 -0
  137. data/lib/rdkit_chem/3.3.0/libRDKitSubgraphs.so.1.2026.03.1pre +0 -0
  138. data/lib/rdkit_chem/3.3.0/libRDKitSubstructLibrary.so.1.2026.03.1pre +0 -0
  139. data/lib/rdkit_chem/3.3.0/libRDKitSubstructMatch.so.1.2026.03.1pre +0 -0
  140. data/lib/rdkit_chem/3.3.0/libRDKitSynthonSpaceSearch.so.1.2026.03.1pre +0 -0
  141. data/lib/rdkit_chem/3.3.0/libRDKitTautomerQuery.so.1.2026.03.1pre +0 -0
  142. data/lib/rdkit_chem/3.3.0/libRDKitTrajectory.so.1.2026.03.1pre +0 -0
  143. data/lib/rdkit_chem/3.3.0/libRDKitcoordgen.so.1.2026.03.1pre +0 -0
  144. data/lib/rdkit_chem/3.3.0/libRDKitga.so.1.2026.03.1pre +0 -0
  145. data/lib/rdkit_chem/3.3.0/libRDKithc.so.1.2026.03.1pre +0 -0
  146. data/lib/rdkit_chem/3.3.0/libRDKitmaeparser.so.1.2026.03.1pre +0 -0
  147. data/lib/rdkit_chem/3.3.0/libRDKitpubchem_align3d.so.1.2026.03.1pre +0 -0
  148. data/lib/rdkit_chem/3.3.0/libboost_iostreams.so.1.83.0 +0 -0
  149. data/lib/rdkit_chem/3.3.0/libboost_serialization.so.1.83.0 +0 -0
  150. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitAbbreviations.so +0 -0
  151. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitAbbreviations.so.1 +0 -0
  152. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitAlignment.so +0 -0
  153. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitAlignment.so.1 +0 -0
  154. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitCIPLabeler.so +0 -0
  155. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitCIPLabeler.so.1 +0 -0
  156. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitCatalogs.so +0 -0
  157. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitCatalogs.so.1 +0 -0
  158. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitChemDraw.so +0 -0
  159. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitChemDraw.so.1 +0 -0
  160. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitChemReactions.so +0 -0
  161. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitChemReactions.so.1 +0 -0
  162. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitChemTransforms.so +0 -0
  163. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitChemTransforms.so.1 +0 -0
  164. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitChemicalFeatures.so +0 -0
  165. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitChemicalFeatures.so.1 +0 -0
  166. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitDataStructs.so +0 -0
  167. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitDataStructs.so.1 +0 -0
  168. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitDepictor.so +0 -0
  169. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitDepictor.so.1 +0 -0
  170. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitDeprotect.so +0 -0
  171. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitDeprotect.so.1 +0 -0
  172. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitDescriptors.so +0 -0
  173. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitDescriptors.so.1 +0 -0
  174. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitDistGeomHelpers.so +0 -0
  175. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitDistGeomHelpers.so.1 +0 -0
  176. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitDistGeometry.so +0 -0
  177. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitDistGeometry.so.1 +0 -0
  178. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitEigenSolvers.so +0 -0
  179. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitEigenSolvers.so.1 +0 -0
  180. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitEnumerateStereoisomers.so +0 -0
  181. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitEnumerateStereoisomers.so.1 +0 -0
  182. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitFMCS.so +0 -0
  183. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitFMCS.so.1 +0 -0
  184. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitFileParsers.so +0 -0
  185. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitFileParsers.so.1 +0 -0
  186. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitFilterCatalog.so +0 -0
  187. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitFilterCatalog.so.1 +0 -0
  188. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitFingerprints.so +0 -0
  189. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitFingerprints.so.1 +0 -0
  190. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitForceField.so +0 -0
  191. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitForceField.so.1 +0 -0
  192. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitForceFieldHelpers.so +0 -0
  193. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitForceFieldHelpers.so.1 +0 -0
  194. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitFragCatalog.so +0 -0
  195. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitFragCatalog.so.1 +0 -0
  196. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitGeneralizedSubstruct.so +0 -0
  197. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitGeneralizedSubstruct.so.1 +0 -0
  198. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitGenericGroups.so +0 -0
  199. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitGenericGroups.so.1 +0 -0
  200. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitGraphMol.so +0 -0
  201. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitGraphMol.so.1 +0 -0
  202. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitInfoTheory.so +0 -0
  203. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitInfoTheory.so.1 +0 -0
  204. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMMPA.so +0 -0
  205. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMMPA.so.1 +0 -0
  206. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMarvinParser.so +0 -0
  207. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMarvinParser.so.1 +0 -0
  208. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolAlign.so +0 -0
  209. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolAlign.so.1 +0 -0
  210. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolCatalog.so +0 -0
  211. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolCatalog.so.1 +0 -0
  212. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolChemicalFeatures.so +0 -0
  213. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolChemicalFeatures.so.1 +0 -0
  214. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolDraw2D.so +0 -0
  215. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolDraw2D.so.1 +0 -0
  216. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolEnumerator.so +0 -0
  217. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolEnumerator.so.1 +0 -0
  218. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolHash.so +0 -0
  219. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolHash.so.1 +0 -0
  220. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolInteractionFields.so +0 -0
  221. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolInteractionFields.so.1 +0 -0
  222. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolInterchange.so +0 -0
  223. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolInterchange.so.1 +0 -0
  224. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolProcessing.so +0 -0
  225. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolProcessing.so.1 +0 -0
  226. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolStandardize.so +0 -0
  227. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolStandardize.so.1 +0 -0
  228. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolTransforms.so +0 -0
  229. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitMolTransforms.so.1 +0 -0
  230. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitO3AAlign.so +0 -0
  231. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitO3AAlign.so.1 +0 -0
  232. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitOptimizer.so +0 -0
  233. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitOptimizer.so.1 +0 -0
  234. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitPartialCharges.so +0 -0
  235. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitPartialCharges.so.1 +0 -0
  236. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitPubChemShape.so +0 -0
  237. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitPubChemShape.so.1 +0 -0
  238. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitRDChemDrawLib.so +0 -0
  239. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitRDChemDrawLib.so.1 +0 -0
  240. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitRDChemDrawReactionLib.so +0 -0
  241. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitRDChemDrawReactionLib.so.1 +0 -0
  242. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitRDGeneral.so +0 -0
  243. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitRDGeneral.so.1 +0 -0
  244. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitRDGeometryLib.so +0 -0
  245. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitRDGeometryLib.so.1 +0 -0
  246. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitRDStreams.so +0 -0
  247. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitRDStreams.so.1 +0 -0
  248. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitRGroupDecomposition.so +0 -0
  249. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitRGroupDecomposition.so.1 +0 -0
  250. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitRascalMCES.so +0 -0
  251. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitRascalMCES.so.1 +0 -0
  252. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitReducedGraphs.so +0 -0
  253. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitReducedGraphs.so.1 +0 -0
  254. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitRingDecomposerLib.so +0 -0
  255. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitRingDecomposerLib.so.1 +0 -0
  256. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitSLNParse.so +0 -0
  257. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitSLNParse.so.1 +0 -0
  258. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitScaffoldNetwork.so +0 -0
  259. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitScaffoldNetwork.so.1 +0 -0
  260. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitShapeHelpers.so +0 -0
  261. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitShapeHelpers.so.1 +0 -0
  262. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitSimDivPickers.so +0 -0
  263. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitSimDivPickers.so.1 +0 -0
  264. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitSmilesParse.so +0 -0
  265. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitSmilesParse.so.1 +0 -0
  266. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitSubgraphs.so +0 -0
  267. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitSubgraphs.so.1 +0 -0
  268. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitSubstructLibrary.so +0 -0
  269. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitSubstructLibrary.so.1 +0 -0
  270. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitSubstructMatch.so +0 -0
  271. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitSubstructMatch.so.1 +0 -0
  272. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitSynthonSpaceSearch.so +0 -0
  273. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitSynthonSpaceSearch.so.1 +0 -0
  274. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitTautomerQuery.so +0 -0
  275. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitTautomerQuery.so.1 +0 -0
  276. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitTrajectory.so +0 -0
  277. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitTrajectory.so.1 +0 -0
  278. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitcoordgen.so +0 -0
  279. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitcoordgen.so.1 +0 -0
  280. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitga.so +0 -0
  281. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitga.so.1 +0 -0
  282. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKithc.so +0 -0
  283. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKithc.so.1 +0 -0
  284. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitmaeparser.so +0 -0
  285. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitmaeparser.so.1 +0 -0
  286. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitpubchem_align3d.so +0 -0
  287. /data/lib/rdkit_chem/{3.3.0 → 3.1.0}/libRDKitpubchem_align3d.so.1 +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 341c2a7eba1ec7f087857db35280e4678526c73432c53908067d7738adf5db2c
4
- data.tar.gz: bd18c6db368ddfa06997ead4f0cab61dd4e371dfea8b18f179c879fd2f0df35d
3
+ metadata.gz: 0cacf75cce91a8b8dc5c4db95ac1e571fd4cc82bd7b66a4bf0eddf77c93b58da
4
+ data.tar.gz: bea62b57958b2ed44b826f8554f8d884cf3a6982acdf45b262a35ba00076b191
5
5
  SHA512:
6
- metadata.gz: 91bb0ea9b3a5caa8653400a55ad217ffb4bdcc4836590daecb62ea53ff0cdd8809dd0fe8345cfcd570e4ea5eba86893c6bb32c36dfc79a9ed9fde6cdb3ac6479
7
- data.tar.gz: 2c0e49bd5a58e40dd247080c04dc7d36d96dd7770e19fe33663951d53154cf2625d5b2831cc2ef40864f57a75c269e9c210528e4d72c37567dc55fcab08f6ebc
6
+ metadata.gz: 2c338e2000b175beff58ddaccb20101829c0bf30f6e1482dce7e359c1ad965d86d85cd9004badd6f4b405a5834ad77b671c461fe35c32360d941ec43ab75071e
7
+ data.tar.gz: f5cf656b1dd3c64ff5ea517634bd32075d891eb75e5cd90719b0be9584b4f0560710b1eecb92bc4d3d724e815202a50edc6e6371e314447cb9973d3a903ed531
@@ -56,7 +56,7 @@
56
56
  // Only ONE definition needed - default parameter handles both use cases
57
57
  int sanitizeMol(RDKit::RWMol &mol, int sanitizeOps=RDKit::MolOps::SANITIZE_ALL){
58
58
  unsigned int opThatFailed;
59
- try{
59
+ try {
60
60
  RDKit::MolOps::sanitizeMol(mol, opThatFailed,
61
61
  static_cast<unsigned int>(sanitizeOps));
62
62
  } catch(...) {
@@ -55,6 +55,12 @@ SET(CMAKE_SWIG_FLAGS -small -naturalvar -autorename)
55
55
 
56
56
  SWIG_ADD_LIBRARY(RDKitChem TYPE MODULE LANGUAGE ruby SOURCES GraphMolRuby.i)
57
57
 
58
+ if(APPLE)
59
+ set_target_properties(RDKitChem PROPERTIES
60
+ LINK_FLAGS "-undefined dynamic_lookup"
61
+ SUFFIX ".bundle")
62
+ endif()
63
+
58
64
  # it doesnt seem like the threading libs should need to be here, but
59
65
  # as of Oct 2012 using boost 1.51 under at least ubuntu 12.04 we get a
60
66
  # link error if they aren't there.
data/README.md CHANGED
@@ -22,3 +22,95 @@ GEM for [RDKIT](http://rdkit.org/), an Open-Source Cheminformatics Software
22
22
  It downloads the sources, compiles and installs RDKIT with the ruby bindings.
23
23
  The installation may last very long - please be patient.
24
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 CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'rake/testtask'
4
4
  require 'fileutils'
5
+ require 'set'
5
6
 
6
7
  # Load version
7
8
  $LOAD_PATH.unshift File.expand_path('lib', __dir__)
@@ -29,12 +30,14 @@ task :build do
29
30
  sh 'gem build rdkit_chem.gemspec'
30
31
  end
31
32
 
32
- desc 'Build pre-compiled gem for current platform (x86_64-linux)'
33
+ desc 'Build pre-compiled gem for current platform'
33
34
  task :build_native do
34
- # Check that native libraries exist
35
- unless File.exist?(File.join(NATIVE_DIR, 'RDKitChem.so'))
36
- abort "ERROR: Native extension not found at #{NATIVE_DIR}/RDKitChem.so\n" \
37
- "Run 'gem install rdkit_chem' first to compile, or build manually."
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."
38
41
  end
39
42
 
40
43
  # Get Ruby version for directory structure
@@ -47,21 +50,28 @@ task :build_native do
47
50
  FileUtils.mkdir_p(target_dir)
48
51
 
49
52
  # Copy native extension and all shared libraries
50
- Dir.glob("#{NATIVE_DIR}/*.so*").each do |lib|
51
- # Skip symlinks, copy only real files
52
- next if File.symlink?(lib)
53
- dest = File.join(target_dir, File.basename(lib))
54
- FileUtils.cp(lib, dest, verbose: true)
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
55
63
  end
56
64
 
57
65
  # Also copy symlinks (they're needed for library resolution)
58
66
  # This includes both .so -> .so.1 and .so.1 -> .so.1.version symlinks
59
- Dir.glob("#{NATIVE_DIR}/*.so*").each do |lib|
60
- next unless File.symlink?(lib)
61
- link_target = File.readlink(lib)
62
- dest = File.join(target_dir, File.basename(lib))
63
- FileUtils.rm_f(dest)
64
- FileUtils.ln_s(link_target, dest, verbose: true)
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
65
75
  end
66
76
 
67
77
  # Build the platform-specific gem
@@ -137,6 +147,82 @@ task :fix_rpath do
137
147
  sh "readelf -d #{so_file} | grep -E '(RPATH|RUNPATH)' || echo 'No RPATH found'"
138
148
  end
139
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
+
140
226
  desc 'Test that native extension loads without LD_LIBRARY_PATH'
141
227
  task :test_native do
142
228
  so_dir = File.expand_path(NATIVE_DIR, __dir__)
@@ -16,17 +16,20 @@ rescue StandardError
16
16
  nr_processors = 1
17
17
  end
18
18
 
19
- # FileUtils.mkdir_p rdkit_dir
20
- # Dir.chdir main_dir do
21
- # FileUtils.rm_rf src_dir
22
- # puts 'Downloading RDKit sources'
23
- # git = 'git clone https://github.com/rdkit/rdkit.git'
24
- # system git
25
- # end
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
26
30
 
27
31
  Dir.chdir(src_dir) do
28
- checkout = 'git checkout c2e48f41d88ddc15c6e1f818d1c4ced70b7f20d1'
29
- system checkout
32
+ run_command('git checkout c2e48f41d88ddc15c6e1f818d1c4ced70b7f20d1', 'Checking out RDKit sources')
30
33
  end
31
34
 
32
35
  FileUtils.cp_r(
@@ -46,6 +49,26 @@ is_linux = host_os =~ /linux/
46
49
  is_mac = host_os =~ /darwin/
47
50
  ld_path = ''
48
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
+
49
72
  if is_linux || is_mac
50
73
  ld_string = is_linux ? 'LD_LIBRARY_PATH' : 'DYLD_LIBRARY_PATH'
51
74
  ld_path = "#{ld_string}=#{install_dir}/lib"
@@ -56,25 +79,22 @@ end
56
79
 
57
80
  FileUtils.mkdir_p build_dir
58
81
  Dir.chdir build_dir do
59
- puts 'Configuring RDKit'
60
-
61
82
  cmake = "#{ld_path} cmake #{src_dir} -DRDK_INSTALL_INTREE=OFF " \
62
83
  "-DCMAKE_INSTALL_PREFIX=#{install_dir} " \
63
84
  '-DCMAKE_BUILD_TYPE=Release -DRDK_BUILD_PYTHON_WRAPPERS=OFF ' \
64
85
  '-DRDK_BUILD_SWIG_WRAPPERS=ON -DRDK_BUILD_INCHI_SUPPORT=OFF ' \
65
- '-DBoost_NO_BOOST_CMAKE=ON'
66
- system cmake
86
+ "-DBoost_NO_BOOST_CMAKE=ON -DRDK_USE_BOOST_IOSTREAMS=OFF#{extra_cmake_flags}"
87
+ run_command(cmake, 'Configuring RDKit')
67
88
  end
68
89
 
69
90
  # local installation in gem directory
70
91
  Dir.chdir build_dir do
71
- puts 'Compiling RDKit sources.'
72
- system "#{ld_path} make -j#{nr_processors}"
73
- system "#{ld_path} make install"
92
+ run_command("#{ld_path} make -j#{nr_processors}", 'Compiling RDKit sources')
93
+ run_command("#{ld_path} make install", 'Installing RDKit sources')
74
94
  end
75
95
 
76
96
  # Remove compiled file, free spaces
77
- # FileUtils.remove_dir(rdkit_dir)
97
+ FileUtils.remove_dir(rdkit_dir)
78
98
 
79
99
  # create a fake Makefile
80
100
  File.open(File.join(File.dirname(__FILE__), 'Makefile'), 'w+') do |makefile|
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RDKitChem
4
- VERSION = "2025.09.3"
5
- GEMVERSION = "#{VERSION}.6"
4
+ VERSION = '2025.09.3'
5
+ GEMVERSION = "#{VERSION}.13"
6
6
  end
data/lib/rdkit_chem.rb CHANGED
@@ -8,22 +8,31 @@ require 'rdkit_chem/version'
8
8
 
9
9
  def find_rdkit_native_extension
10
10
  ruby_version = "#{RUBY_VERSION.split('.')[0..1].join('.')}.0"
11
-
12
- # Location 1: Pre-compiled gem (platform-specific)
13
- precompiled_path = File.expand_path("rdkit_chem/#{ruby_version}", __dir__)
14
- if File.directory?(precompiled_path)
15
- return precompiled_path
11
+ base_dir = File.expand_path('rdkit_chem', __dir__)
12
+
13
+ # Location 1: Pre-compiled gem - exact Ruby version match
14
+ precompiled_path = File.join(base_dir, ruby_version)
15
+ return precompiled_path if File.directory?(precompiled_path) && has_native_extension?(precompiled_path)
16
+
17
+ # Location 2: Pre-compiled gem - any available Ruby version (fallback)
18
+ # This handles cases where gem was built with different Ruby minor version
19
+ if File.directory?(base_dir)
20
+ Dir.glob(File.join(base_dir, '*.0')).sort.reverse.each do |version_dir|
21
+ return version_dir if has_native_extension?(version_dir)
22
+ end
16
23
  end
17
24
 
18
- # Location 2: Source-compiled gem (legacy rdkit_chem/lib/)
25
+ # Location 3: Source-compiled gem (legacy rdkit_chem/lib/)
19
26
  source_compiled_path = File.expand_path('../rdkit_chem/lib', __dir__)
20
- if File.exist?(File.join(source_compiled_path, 'RDKitChem.so')) ||
21
- File.exist?(File.join(source_compiled_path, 'RDKitChem.bundle'))
22
- return source_compiled_path
23
- end
27
+ return source_compiled_path if has_native_extension?(source_compiled_path)
28
+
29
+ raise LoadError, 'Cannot find RDKitChem native extension. ' \
30
+ "Searched in:\n - #{precompiled_path}\n - #{base_dir}/*.0\n - #{source_compiled_path}"
31
+ end
24
32
 
25
- raise LoadError, "Cannot find RDKitChem native extension. " \
26
- "Searched in:\n - #{precompiled_path}\n - #{source_compiled_path}"
33
+ def has_native_extension?(dir)
34
+ File.exist?(File.join(dir, 'RDKitChem.so')) ||
35
+ File.exist?(File.join(dir, 'RDKitChem.bundle'))
27
36
  end
28
37
 
29
38
  native_path = find_rdkit_native_extension