bluescarni / piranha

The Piranha computer algebra system.
GNU General Public License v3.0
101 stars 25 forks source link

cannot find BOOST during build #148

Open d-vyd opened 5 years ago

d-vyd commented 5 years ago

Hello, I'm building on Windows 10 64-bit using msys64/mingw64. I've used the pacman package manager to load all piranha dependencies, including this Boost:

mingw64/mingw-w64-x86_64-boost 1.70.0-2 [installed]

I've tried many permutations of environment variables, such as:

export BOOST_ROOT="/c/msys64/mingw64/bin/" export BOOST_ROOT="/c/msys64/mingw64/bin/" export BOOST_INCLUDEDIR="/c/msys64/mingw64/include/boost/"

I also tried replacing "/c/.." with the more common windows variant "c:/..." Perhaps if I show you what files are in what directories, you might be able to tell me what the build manager is looking for?

david@LAPTOP-PMFFJPJS MSYS /c/msys64/mingw64/lib $ dir

icu libboost_python37-mt.a libboost_atomic-mt.a libboost_python37-mt.dll.a libboost_atomic-mt.dll.a libboost_random-mt.a libboost_chrono-mt.a libboost_random-mt.dll.a libboost_chrono-mt.dll.a libboost_regex-mt.a libboost_container-mt.a libboost_regex-mt.dll.a libboost_container-mt.dll.a libboost_serialization-mt.a libboost_context-mt.a libboost_serialization-mt.dll.a libboost_context-mt.dll.a libboost_stacktrace_noop-mt.a libboost_contract-mt.a libboost_stacktrace_noop-mt.dll.a libboost_contract-mt.dll.a libboost_stacktrace_windbg-mt.a libboost_coroutine-mt.a libboost_stacktrace_windbg-mt.dll.a libboost_coroutine-mt.dll.a libboost_system-mt.a libboost_date_time-mt.a libboost_system-mt.dll.a libboost_date_time-mt.dll.a libboost_test_exec_monitor-mt.a libboost_exception-mt.a libboost_thread-mt.a libboost_filesystem-mt.a libboost_thread-mt.dll.a libboost_filesystem-mt.dll.a libboost_timer-mt.a libboost_graph-mt.a libboost_timer-mt.dll.a libboost_graph-mt.dll.a libboost_type_erasure-mt.a libboost_iostreams-mt.a libboost_type_erasure-mt.dll.a libboost_iostreams-mt.dll.a libboost_unit_test_framework-mt.a libboost_locale-mt.a libboost_unit_test_framework-mt.dll.a libboost_locale-mt.dll.a libboost_wave-mt.a libboost_log_setup-mt.a libboost_wave-mt.dll.a libboost_log_setup-mt.dll.a libboost_wserialization-mt.a libboost_log-mt.a libboost_wserialization-mt.dll.a libboost_log-mt.dll.a libbz2.a libboost_math_c99f-mt.a libbz2.dll.a libboost_math_c99f-mt.dll.a libgmp.a libboost_math_c99l-mt.a libgmp.dll.a libboost_math_c99l-mt.dll.a libgmpxx.a libboost_math_c99-mt.a libgmpxx.dll.a libboost_math_c99-mt.dll.a libicudt.a libboost_math_tr1f-mt.a libicudt.dll.a libboost_math_tr1f-mt.dll.a libicuin.a libboost_math_tr1l-mt.a libicuin.dll.a libboost_math_tr1l-mt.dll.a libicuio.a libboost_math_tr1-mt.a libicuio.dll.a libboost_math_tr1-mt.dll.a libicutest.a libboost_numpy27-mt.a libicutest.dll.a libboost_numpy27-mt.dll.a libicutu.a libboost_numpy37-mt.a libicutu.dll.a libboost_numpy37-mt.dll.a libicuuc.a libboost_prg_exec_monitor-mt.a libicuuc.dll.a libboost_prg_exec_monitor-mt.dll.a libmpc.a libboost_program_options-mt.a libmpfr.a libboost_program_options-mt.dll.a libz.a libboost_python27-mt.a libz.dll.a libboost_python27-mt.dll.a pkgconfig

david@LAPTOP-PMFFJPJS MSYS /c/msys64/mingw64/include/boost $ dir accumulators make_default.hpp algorithm make_shared.hpp align make_unique.hpp align.hpp math aligned_storage.hpp math_fwd.hpp any.hpp mem_fn.hpp archive memory_order.hpp array.hpp metaparse asio metaparse.hpp asio.hpp move assert.hpp mp11 assign mp11.hpp assign.hpp mpi atomic mpi.hpp atomic.hpp mpl beast msm beast.hpp multi_array bimap multi_array.hpp bimap.hpp multi_index bind multi_index_container.hpp bind.hpp multi_index_container_fwd.hpp blank.hpp multiprecision blank_fwd.hpp next_prior.hpp call_traits.hpp non_type.hpp callable_traits noncopyable.hpp callable_traits.hpp nondet_random.hpp cast.hpp none.hpp cerrno.hpp none_t.hpp checked_delete.hpp numeric chrono operators.hpp chrono.hpp operators_v1.hpp circular_buffer optional circular_buffer.hpp optional.hpp circular_buffer_fwd.hpp outcome compatibility outcome.hpp compressed_pair.hpp parameter compute parameter.hpp compute.hpp pending concept phoenix concept_archetype.hpp phoenix.hpp concept_check pointee.hpp concept_check.hpp pointer_cast.hpp config pointer_to_other.hpp config.hpp poly_collection container polygon container_hash polymorphic_cast.hpp context polymorphic_pointer_cast.hpp contract pool contract.hpp predef contract_macro.hpp predef.h convert preprocessor convert.hpp preprocessor.hpp core process coroutine process.hpp coroutine2 program_options crc.hpp program_options.hpp cregex.hpp progress.hpp cstdfloat.hpp property_map cstdint.hpp property_tree cstdlib.hpp proto current_function.hpp ptr_container cxx11_char_types.hpp python date_time python.hpp date_time.hpp qvm detail random dll random.hpp dll.hpp range dynamic_bitset range.hpp dynamic_bitset.hpp ratio dynamic_bitset_fwd.hpp ratio.hpp enable_shared_from_this.hpp rational.hpp endian ref.hpp exception regex exception_ptr.hpp regex.h fiber regex.hpp filesystem regex_fwd.hpp filesystem.hpp safe_numerics flyweight scope_exit.hpp flyweight.hpp scoped_array.hpp foreach.hpp scoped_ptr.hpp foreach_fwd.hpp serialization format shared_array.hpp format.hpp shared_container_iterator.hpp function shared_ptr.hpp function.hpp signals2 function_equal.hpp signals2.hpp function_output_iterator.hpp smart_ptr function_types smart_ptr.hpp functional sort functional.hpp spirit fusion spirit.hpp generator_iterator.hpp stacktrace geometry stacktrace.hpp geometry.hpp statechart get_pointer.hpp static_assert.hpp gil swap.hpp gil.hpp system graph test hana thread hana.hpp thread.hpp heap throw_exception.hpp histogram timer histogram.hpp timer.hpp hof token_functions.hpp hof.hpp token_iterator.hpp icl tokenizer.hpp implicit_cast.hpp tti indirect_reference.hpp tuple integer type.hpp integer.hpp type_erasure integer_fwd.hpp type_index integer_traits.hpp type_index.hpp interprocess type_traits intrusive type_traits.hpp intrusive_ptr.hpp typeof io units io_fwd.hpp unordered iostreams unordered_map.hpp is_placeholder.hpp unordered_set.hpp iterator utility iterator.hpp utility.hpp iterator_adaptors.hpp uuid lambda variant lexical_cast variant.hpp lexical_cast.hpp version.hpp limits.hpp visit_each.hpp local_function vmd local_function.hpp wave locale wave.hpp locale.hpp weak_ptr.hpp lockfree winapi log xpressive logic yap

david@LAPTOP-PMFFJPJS MSYS /c/msys64/mingw64/bin $ dir b2.exe libboost_math_tr1l-mt.dll bjam.exe libboost_math_tr1-mt.dll bunzip2.exe libboost_numpy27-mt.dll bzcat.exe libboost_numpy37-mt.dll bzcmp libboost_prg_exec_monitor-mt.dll bzdiff libboost_program_options-mt.dll bzegrep libboost_python27-mt.dll bzfgrep libboost_python37-mt.dll bzgrep libboost_random-mt.dll bzip2.exe libboost_regex-mt.dll bzip2recover.exe libboost_serialization-mt.dll bzless libboost_stacktrace_noop-mt.dll bzmore libboost_stacktrace_windbg-mt.dll derb.exe libboost_system-mt.dll genbrk.exe libboost_thread-mt.dll gencfu.exe libboost_timer-mt.dll gencnval.exe libboost_type_erasure-mt.dll gendict.exe libboost_unit_test_framework-mt.dll genrb.exe libboost_wave-mt.dll icu-config libboost_wserialization-mt.dll icuinfo.exe libbz2-1.dll libatomic-1.dll libgcc_s_seh-1.dll libboost_atomic-mt.dll libgmp-10.dll libboost_chrono-mt.dll libgmpxx-4.dll libboost_container-mt.dll libgomp-1.dll libboost_context-mt.dll libicudt64.dll libboost_contract-mt.dll libicuin64.dll libboost_coroutine-mt.dll libicuio64.dll libboost_date_time-mt.dll libicutest64.dll libboost_filesystem-mt.dll libicutu64.dll libboost_graph-mt.dll libicuuc64.dll libboost_iostreams-mt.dll libquadmath-0.dll libboost_locale-mt.dll libssp-0.dll libboost_log_setup-mt.dll libstdc++-6.dll libboost_log-mt.dll libwinpthread-1.dll libboost_math_c99f-mt.dll makeconv.exe libboost_math_c99l-mt.dll pkgdata.exe libboost_math_c99-mt.dll uconv.exe libboost_math_tr1f-mt.dll zlib1.dll

bluescarni commented 5 years ago

@d-vyd I don't normally work on Windows, but MinGW 64 should work. I noticed that you tried:

export BOOST_INCLUDEDIR="/c/msys64/mingw64/include/boost/"

Have you tried setting Boost_INCLUDE_DIR instead? (note the casing and the extra underscore).

I have been working on a revamp of the piranha codebase: https://github.com/bluescarni/piranha-tng It's still very early, but it has first-class support for Windows, via either MSVC 2019 or clang+MSVC 2015/2017 (and MinGW64 down the line as well, even though I haven't tried that yet).

What parts of piranha are you interested in for your application? I might look into prioritizing the implementation of some features over others in the new codebase if I know that someone might need them...

bluescarni commented 5 years ago

@d-vyd Also, those variables should be passed to CMake rather than being set in the environment. E.g.,

cmake -DBoost_INCLUDE_DIR=...
d-vyd commented 5 years ago

Thank you Francesco. I'll try those suggestions this weekend, probably Sunday. My first task with Piranha will be getting SMTPlan running (kcl-planning.github.io/SMTPlan/). I'm testing a few action planners in a project to create computer generated/assisted narratives.

-david

d-vyd commented 5 years ago

Hi Francesco,

Cmake suggests "Please set BOOST_ROOT to the root directory containing Boost or BOOST_INCLUDEDIR to the directory containing Boost's headers." As you suggested, I tried BOOST_INCLUDE_DIR too. I tried prefixing the path with "C:" and "/cygdrive/c/" since it is unclear how cygwin makes Unix-like paths available to Windows 10. I also tried directing BOOST_ROOT to Boost's DLL files. My command-line looked like this:

cmake -DBOOST_INCLUDE_DIR="/cygdrive/c/msys64/mingw64/include/boost/" ../

No matter what I do, I keep getting the same error, "unable to find the boost header files". Do you know anyone who compiled on Windows 10? Perhaps I could contact him or her? Otherwise, I'll wait for the new version in the hope that it is easier for me to compile. I really appreciate all your doing making these tools available.

-david


From: Francesco Biscani notifications@github.com Sent: Friday, June 7, 2019 1:36 PM To: bluescarni/piranha Cc: d-vyd; Mention Subject: Re: [bluescarni/piranha] cannot find BOOST during build (#148)

@d-vydhttps://github.com/d-vyd I don't normally work on Windows, but MinGW 64 should work. I noticed that you tried:

export BOOST_INCLUDEDIR="/c/msys64/mingw64/include/boost/"

Have you tried setting Boost_INCLUDE_DIR instead? (note the casing and the extra underscore).

I have been working on a revamp of the piranha codebase: https://github.com/bluescarni/piranha-tng It's still very early, but it has first-class support for Windows, via either MSVC 2019 or clang+MSVC 2015/2017 (and MinGW64 down the line as well, even though I haven't tried that yet).

What parts of piranha are you interested in for your application? I might look into prioritizing the implementation of some features over others in the new codebase if I know that someone might need them...

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/bluescarni/piranha/issues/148?email_source=notifications&email_token=AGJMWF35Y4NPOF4SPUXORTLPZJP6RA5CNFSM4HTRCLUKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXF22WA#issuecomment-499887448, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AGJMWF7AG43VAMHIRMMWTT3PZJP6RANCNFSM4HTRCLUA.

bluescarni commented 5 years ago

@d-vyd CMake variables are case-sensitive. Does

cmake -DBoost_INCLUDE_DIR

change something with respect to

cmake -DBOOST_INCLUDE_DIR

?

d-vyd commented 5 years ago

Thanks Francesco. Unfortunately changing DBOOST to DBoost does not help. I've also tried more DOS and more UNIX versions of the path. I permuted these in all combinations (see below). The problem may be in my particular installation of Cygwin, Mysys64, etc, though it has worked for other packages. When will a BETA of your new version come out? Will it be backwards compatible?

-david

cmake -DBoost_INCLUDE_DIR="C:/msys64/mingw64/include/boost/" ../ cmake -DBoost_INCLUDE_DIR="C:\msys64\mingw64\include\boost\" ../ cmake -DBoost_INCLUDE_DIR="/cygdrive/c/msys64/mingw64/include/boost/" ../


From: Francesco Biscani notifications@github.com Sent: Thursday, June 13, 2019 11:42 AM To: bluescarni/piranha Cc: d-vyd; Mention Subject: Re: [bluescarni/piranha] cannot find BOOST during build (#148)

@d-vydhttps://github.com/d-vyd CMake variables are case-sensitive. Does

cmake -DBoost_INCLUDE_DIR

change something with respect to

cmake -DBOOST_INCLUDE_DIR

?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/bluescarni/piranha/issues/148?email_source=notifications&email_token=AGJMWFZVSFZZARMJGS7JHYDP2IXBNA5CNFSM4HTRCLUKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXTNMTY#issuecomment-501667407, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AGJMWF3BL3J6CQ2OJGL2A7TP2IXBNANCNFSM4HTRCLUA.

bluescarni commented 5 years ago

I think that you have to set Boost_INCLUDE_DIR C:/msys64/mingw64/include, and not C:/msys64/mingw64/include/boost.

When will a BETA of your new version come out? Will it be backwards compatible?

It's early to say at this point. A first version may come out in a couple of months or so, but it will not have the same feature set of the previous piranha version. It won't be totally API compatible as well, though many things will stay the same.

bluescarni commented 5 years ago

@d-vyd Note also that MinGW64/msys and Cygwin are different things: the former is a native compiler toolchain for Windows based on GCC, the latter is a POSIX emulation layer. Unless you absolutely need the POSIX emulation, you should try to use MinGW instead of Cygwin.

I never tested piranha with cygwin, but MinGW is explicitly supported.

d-vyd commented 5 years ago

OK. I'll focus on MinGW. Thanks.


From: Francesco Biscani notifications@github.com Sent: Friday, June 14, 2019 6:17 AM To: bluescarni/piranha Cc: d-vyd; Mention Subject: Re: [bluescarni/piranha] cannot find BOOST during build (#148)

@d-vydhttps://github.com/d-vyd Note also that MinGW64/msys and Cygwin are different things: the former is a native compiler toolchain for Windows based on GCC, the latter is a POSIX emulation layer. Unless you absolutely need the POSIX emulation, you should try to use MinGW instead of Cygwin.

I never tested piranha with cygwin, but MinGW is explicitly supported.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/bluescarni/piranha/issues/148?email_source=notifications&email_token=AGJMWFZAGHI3HAPZH6US3G3P2MZYRA5CNFSM4HTRCLUKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXV2QZQ#issuecomment-501983334, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AGJMWF7ZCTH3YSND5INVNZ3P2MZYRANCNFSM4HTRCLUA.