rdkit / conda-rdkit

Conda build recipe for the rdkit
50 stars 30 forks source link

Fixes broken PostgreSQL cartridge build on Windows #86

Closed ptosco closed 4 years ago

ptosco commented 4 years ago

Currently the conda build of the PostgreSQL cartridge is broken on Windows. This PR allows building the PostgreSQL cartridge on WIndows.

ptosco commented 4 years ago

I have had a look at the build failure. Not sure what I can do to fix it - the meta.yaml file has no version specifications in it. The build works fine on my laptop.

greglandrum commented 4 years ago

@ptosco : this fails for me on windows with a link error. It's not able to find Boost::iostreams.lib

ptosco commented 4 years ago

@greglandrum I wonder if this depends on the Boost version. The build works for me using Boost 1.70:

-- The C compiler identification is MSVC 19.16.27034.0
-- The CXX compiler identification is MSVC 19.16.27034.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
Enabling RDK_INSTALL_STATIC_LIBS because RDK_PGSQL_STATIC is set.
-- Check if the system is big endian
-- Searching 16 bit integer
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of unsigned short
-- Check size of unsigned short - done
-- Using unsigned short
-- Check if the system is big endian - little endian
-- Catch not found in C:/a3/conda-bld/rdkit-postgresql_1578325985532/work/External/catch/catch
Downloading https://github.com/catchorg/Catch2/archive/v2.1.2.tar.gz...
CATCH: C:/a3/conda-bld/rdkit-postgresql_1578325985532/work/External/catch/catch/single_include
-- Could NOT find InChI in system locations (missing: INCHI_INCLUDE_DIR) 
Downloading http://www.inchi-trust.org/download/105/INCHI-1-SRC.zip...
-- Found Boost 1.70.0 at C:/a3/Library/lib/cmake/Boost-1.70.0
--   Requested configuration: QUIET REQUIRED
-- Found boost_headers 1.70.0 at C:/a3/Library/lib/cmake/boost_headers-1.70.0
-- Boost 1.56.0 found.
-- Found Eigen3: C:/a3/conda-bld/rdkit-postgresql_1578325985532/_h_env/Library/include (Required is at least version "2.91.0") 
-- Looking for pthread.h
-- Looking for pthread.h - not found
-- Found Threads: TRUE  
-- Found PostgreSQL: C:/a3/conda-bld/rdkit-postgresql_1578325985532/_h_env/Library/lib/libpq.lib (found version "10.5") 
== Using strict rotor definition
Downloading http://sourceforge.net/projects/avalontoolkit/files/AvalonToolkit_1.2/AvalonToolkit_1.2.0.source.tar...
-- Found Boost 1.70.0 at C:/a3/Library/lib/cmake/Boost-1.70.0
--   Requested configuration: QUIET REQUIRED COMPONENTS system;iostreams
-- Found boost_system 1.70.0 at C:/a3/Library/lib/cmake/boost_system-1.70.0
--   libboost_system.lib
-- Adding boost_system dependencies: headers
-- Found boost_iostreams 1.70.0 at C:/a3/Library/lib/cmake/boost_iostreams-1.70.0
--   libboost_iostreams.lib
-- Adding boost_iostreams dependencies: headers
-- Boost 1.56.0 found.
-- Found Boost components:
   system;iostreams
-- Found Boost 1.70.0 at C:/a3/Library/lib/cmake/Boost-1.70.0
--   Requested configuration: QUIET COMPONENTS zlib
-- Boost 1.58.0 found.
-- Found Boost components:
   zlib
-- maeparser include dir set as 'maeparser_INCLUDE_DIRS-NOTFOUND'
-- maeparser libraries set as 'C:/a3/Library/lib/maeparser.lib'
-- Could NOT find maeparser (missing: maeparser_INCLUDE_DIRS) 
Downloading https://github.com/schrodinger/maeparser/archive/v1.2.2.tar.gz...
-- coordgen include dir set as coordgen_INCLUDE_DIRS-NOTFOUND
-- coordgen libraries set as 'C:/a3/Library/lib/coordgen.lib'
-- coordgen templates file set as 'coordgen_TEMPLATE_FILE-NOTFOUND'
-- Could NOT find coordgen (missing: coordgen_INCLUDE_DIRS coordgen_TEMPLATE_FILE) 
Downloading https://github.com/schrodinger/coordgenlibs/archive/v1.3.2.tar.gz...
Downloading https://github.com/rareylab/RingDecomposerLib/archive/v1.1.3_rdkit.tar.gz...
-- Found Boost 1.70.0 at C:/a3/Library/lib/cmake/Boost-1.70.0
--   Requested configuration: QUIET REQUIRED COMPONENTS system;iostreams
-- Found boost_system 1.70.0 at C:/a3/Library/lib/cmake/boost_system-1.70.0
--   libboost_system.lib
-- Adding boost_system dependencies: headers
-- Found boost_iostreams 1.70.0 at C:/a3/Library/lib/cmake/boost_iostreams-1.70.0
--   libboost_iostreams.lib
-- Adding boost_iostreams dependencies: headers
-- Boost 1.56.0 found.
-- Found Boost components:
   system;iostreams
-- Found Boost 1.70.0 at C:/a3/Library/lib/cmake/Boost-1.70.0
--   Requested configuration: QUIET COMPONENTS zlib
-- Boost 1.58.0 found.
-- Found Boost components:
   zlib
-- Found Boost 1.70.0 at C:/a3/Library/lib/cmake/Boost-1.70.0
--   Requested configuration: QUIET REQUIRED COMPONENTS system;iostreams
-- Found boost_system 1.70.0 at C:/a3/Library/lib/cmake/boost_system-1.70.0
--   libboost_system.lib
-- Adding boost_system dependencies: headers
-- Found boost_iostreams 1.70.0 at C:/a3/Library/lib/cmake/boost_iostreams-1.70.0
--   libboost_iostreams.lib
-- Adding boost_iostreams dependencies: headers
-- Boost 1.56.0 found.
-- Found Boost components:
   system;iostreams
-- Found Boost 1.70.0 at C:/a3/Library/lib/cmake/Boost-1.70.0
--   Requested configuration: QUIET COMPONENTS zlib
-- Boost 1.56.0 found.
-- Found Boost components:
   zlib
== Making EnumerateLibrary without boost Serialization support
== Making FilterCatalog without boost Serialization support
-- Found PythonInterp: C:/a3/conda-bld/rdkit-postgresql_1578325985532/_build_env/python.exe (found version "3.7.5") 
== Updating Filters.cpp from pains file
== Done updating pains files
== Making SubstructLibrary without boost Serialization support
Downloading https://github.com/Tencent/rapidjson/archive/v1.1.0.tar.gz...
-- Found Boost 1.70.0 at C:/a3/Library/lib/cmake/Boost-1.70.0
--   Requested configuration: QUIET REQUIRED COMPONENTS iostreams
-- Found boost_iostreams 1.70.0 at C:/a3/Library/lib/cmake/boost_iostreams-1.70.0
--   boost_iostreams.lib
-- Adding boost_iostreams dependencies: headers
-- Boost 1.56.0 found.
-- Found Boost components:
   iostreams
postgres: C:/a3/conda-bld/rdkit-postgresql_1578325985532/_h_env/Library/include;C:/a3/conda-bld/rdkit-postgresql_1578325985532/_h_env/Library/include/server

=====================================================================
After building, check
C:/a3/conda-bld/rdkit-postgresql_1578325985532/work/build/Code/PgSQL/rdkit/pgsql_install.bat
for correctness of installation paths. If everything is OK, gain 
administrator privileges, stop the PostgreSQL service, run
C:/a3/conda-bld/rdkit-postgresql_1578325985532/work/build/Code/PgSQL/rdkit/pgsql_install.bat
to install the PostgreSQL RDKit cartridge, then start again
the PostgreSQL service
=====================================================================

and passes all tests:

test 1
    Start 1: testPgSQL

1: Test command: %SRC_DIR%\build\Code\PgSQL\rdkit\pgsql_regress.bat
1: Test timeout computed to be: 10000000
1: 
1: (%BUILD_PREFIX%) CLINK CLINK %SRC_DIR%\build\Code\PgSQL\rdkit>cd "%SRC_DIR%\build\Code\PgSQL\rdkit\" 
1: 
1: (%BUILD_PREFIX%) CLINK CLINK %SRC_DIR%\build\Code\PgSQL\rdkit>"C:\a3\CONDA-~2\RD87FB~1\_h_env\Library\lib\..\bin\pg_regress.exe" --inputdir=sql --bindir="C:/a3/CONDA-~2/RD87FB~1/_h_env/Library/lib/../bin" rdkit-91 props btree molgist bfpgist-91 sfpgist slfpgist fps reaction avalon inchi 
1: (using postmaster on localhost, port 54321)
1: ============== dropping database "regression"         ==============
1: NOTICE:  database "regression" does not exist, skipping
1: DROP DATABASE
1: ============== creating database "regression"         ==============
1: CREATE DATABASE
1: ALTER DATABASE
1: ============== running regression test queries        ==============
1: test rdkit-91                 ... ok
1: test props                    ... ok
1: test btree                    ... ok
1: test molgist                  ... ok
1: test bfpgist-91               ... ok
1: test sfpgist                  ... ok
1: test slfpgist                 ... ok
1: test fps                      ... ok
1: test reaction                 ... ok
1: test avalon                   ... ok
1: test inchi                    ... ok
1: 
1: ======================
1:  All 11 tests passed. 
1: ======================
1: 
1/1 Test #1: testPgSQL ........................   Passed   12.90 sec

100% tests passed, 0 tests failed out of 1

Total Test time (real) =  12.91 sec

What Boost version are you using?

ptosco commented 4 years ago

@greglandrum Could you please send me the output of

conda list | grep boost
boost                     1.70.0           py37h79cbd7a_1    conda-forge
boost-cpp                 1.70.0               h6a4c333_2    conda-forge

Thanks.

greglandrum commented 4 years ago

@ptosco I'm pretty sure that whatever happens during a conda-build should not be influenced by what I have locally installed. The build process is supposed to create its own conda env and use that.

ptosco commented 4 years ago

@greglandrum I agree, but if you look at my cmake log above you will see that CMake somehow found the "global" Boost located in C:/a3/Library/lib/cmake:

-- Found Boost 1.70.0 at C:/a3/Library/lib/cmake/Boost-1.70.0

I will figure out how I can avoid that.

greglandrum commented 4 years ago

Yeah, I saw that. It’s still wrong :-)

ptosco commented 4 years ago

@greglandrum I have verified that the rdkit-postgresql Windows build was failing also for me on a fresh, clean miniconda installation. Now the build works for me, but still fails on Travis. Could you please check if now it works for you on your Windows machine? Thanks a lot!

greglandrum commented 4 years ago

@ptosco : yep, that did it. Thanks!