rlorigro / GFAse

Tool for globally phasing diploid assembly graphs with orthogonal data
Mozilla Public License 2.0
36 stars 4 forks source link

No rule to make target '../external/bdsg//lib/libbdsg.so' #22

Open hoppo opened 9 months ago

hoppo commented 9 months ago

Hi,

I have tried to build GFAse on linux (Rocky Linux release 8.8) and get the following error:- make[2]: *** No rule to make target '../external/bdsg//lib/libbdsg.so', needed by 'split_connected_components'. Stop.

I then searched under ..GFAse/external/bdsg and see that there are two lib directories created (lib and lib64). However, there is no libbdsg.so under the ../external/bdsg/lib/ directory, but it is under the ../external/bdsg/lib64 directory.

I then tried to download and build libbdsg (separately) and it built without a problem and only contained the lib directory.

As a workaround, I rename the ../external/bdsg/lib64 directory to ../external/bdsg/lib and this appeared to at least allow the build to finish and build the executables. I haven't extensively tested GFAse yet.

Is there something unique to my OS that builds GFAse incorrectly?

Thank you.

rlorigro commented 9 months ago

Hi @hoppo, yes unfortunately this lib vs lib64 is a common point of divergence among operating systems, we've seen the same thing occur with CentOS.

Obviously my first recommendation is to just use Ubuntu if possible, but as a more general alternative, it appears that it may be possible to to check explicitly for it based on this post using if("${CMAKE_INSTALL_LIBDIR}" STREQUAL "lib64") in our CMakeLists.txt..

rlorigro commented 9 months ago

If you wouldn't minding testing this on your OS as a positive example, you could try by adding the following line to your CMakeLists.txt:

message(STATUS "CMAKE_INSTALL_LIBDIR: " ${CMAKE_INSTALL_LIBDIR})

And see what it prints by running cmake. My Ubuntu OS returns lib.

hoppo commented 9 months ago

In my case, it is empty.. .... -- Detecting CXX compile features - done -- CMAKE_INSTALL_LIBDIR: -- CMAKE_CXX_COMPILER_ID: GNU ....

If I add the following:- include(GNUInstallDirs)

it returns lib64

And yes, we plan to move to ubuntu, but for the moment our cluster is still red hat linux.

rlorigro commented 9 months ago

OK, I made an untested commit to branch lib64, would you mind trying it out on your linux OS and see if it works? may need to remove the external dir

hoppo commented 9 months ago

Hi, Unfortunately, it doesn't seem to fix the issue. I still see two lib directories; lib and lib64

The contents of lib:- libgtest.so
libgtest_main.so
libsdsl.so -> libsdsl.so.3 libsdsl.so.2.3.0
libsdsl.so.3 -> libsdsl.so.2.3.0 pkgconfig

lib64:- libbdsg.so
libdivsufsort.so -> libdivsufsort.so.3 libdivsufsort.so.3 -> libdivsufsort.so.3.0.1 libdivsufsort.so.3.0.1
libdivsufsort64.so -> libdivsufsort64.so.3 libdivsufsort64.so.3 -> libdivsufsort64.so.3.0.1 libdivsufsort64.so.3.0.1
libhandlegraph.a
libhandlegraph.so
pkgconfig

Interestingly, when I build libbdsg independently, it only creates a lib directory. In the CMakeLists.txt, it has the following entry:- set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib)

Thanks, Marie.