COMBINE-lab / RapMap

Rapid sensitive and accurate read mapping via quasi-mapping
GNU General Public License v3.0
89 stars 23 forks source link

I'm failing to compile release 0.5 #39

Open darachm opened 7 years ago

darachm commented 7 years ago

I've got a several-year old installation of Arch, and I'm trying to compile RapMap to benchmark against some other aligners with in silico tests. I'm assessing accuracy and recall as "alignment/mapping overlaps origin of read" and "bedtools subtract".

Anyways, so to try and compile the 0.5 release of RapMap you linked here, I've got some errors.

gcc -v is

Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc-multilib/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --enable-multilib --disable-werror --enable-checking=release
Thread model: posix
gcc version 6.3.1 20170306 (GCC)

clang -v is

clang version 3.9.1 (tags/RELEASE_391/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.1
Found candidate GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/6.3.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-linux-gnu/6.3.1
Found candidate GCC installation: /usr/lib64/gcc/x86_64-pc-linux-gnu/6.3.1
Selected GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/6.3.1
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
clang-3.9: warning: argument unused during compilation: '-fPIE'
clang-3.9: warning: argument unused during compilation: '-pie'
clang-3.9: warning: argument unused during compilation: '-fstack-check'
clang-3.9: warning: argument unused during compilation: '-fstack-protector-strong'

cmake -V is 3.7.2


mkdir build && cd build of course works fine

cmake .. works fine, reports that it couldn't find Cereal or Jellyfish and will fetch and build both.

make reports errors and warnings. It seems to start at step

[ 65%] Building CXX object src/CMakeFiles/rapmap.dir/RapMapIndexer.cpp.o
cd /home/zed/labDarach/hstAlingers/rapmapWork/compileStuff/RapMap-0.5.0/build/src && /usr/lib/hardening-wrapper/bin/c++    -I/home/zed/labDarach/hstAlingers/rapmapWork/compileStuff/RapMap-0.5.0/include -I/home/zed/labDarach/hstAlingers/rapmapWork/compileStuff/RapMap-0.5.0/external -I/home/zed/labDarach/hstAlingers/rapmapWork/compileStuff/RapMap-0.5.0/external/cereal/include -I/home/zed/labDarach/hstAlingers/rapmapWork/compileStuff/RapMap-0.5.0/external/install/include -I/home/zed/labDarach/hstAlingers/rapmapWork/compileStuff/RapMap-0.5.0/external/install/include/jellyfish-2.2.6  -march=native -pthread -funroll-loops -fPIC -fomit-frame-pointer -O4 -DHAVE_ANSI_TERM -Wall -std=c++11 -static-libstdc++ -Wno-unknown-pragmas -Wreturn-type -Werror=return-type -Wno-unused-local-typedefs   -o CMakeFiles/rapmap.dir/RapMapIndexer.cpp.o -c /home/zed/labDarach/hstAlingers/rapmapWork/compileStuff/RapMap-0.5.0/src/RapMapIndexer.cpp
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/6.3.1/include-fixed/limits.h:168:0,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/6.3.1/include-fixed/syslimits.h: ,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/6.3.1/include-fixed/limits.h:34,
                 from /usr/include/c++/6.3.1/climits:42,
                 from /home/zed/labDarach/hstAlingers/rapmapWork/compileStuff/RapMap-0.5.0/include/concurrentqueue.h:69,
                 from /home/zed/labDarach/hstAlingers/rapmapWork/compileStuff/RapMap-0.5.0/include/FastxParser.hpp:17,
                 from /home/zed/labDarach/hstAlingers/rapmapWork/compileStuff/RapMap-0.5.0/src/RapMapIndexer.cpp:41:
/home/zed/labDarach/hstAlingers/rapmapWork/compileStuff/RapMap-0.5.0/include/spdlog/fmt/bundled/format.h: In member function ‘void fmt::internal::ArgFormatterBase<Impl, Char>::visit_char(int)’:
/home/zed/labDarach/hstAlingers/rapmapWork/compileStuff/RapMap-0.5.0/include/spdlog/fmt/bundled/format.h:2198:24: error: expected unqualified-id before numeric constant
         const unsigned CHAR_WIDTH = 1;
                        ^

There's quite a few warnings, and then it ends with:

make[2]: *** [src/CMakeFiles/rapmap.dir/build.make:90: src/CMakeFiles/rapmap.dir/RapMapIndexer.cpp.o] Error 1
make[2]: Leaving directory '/home/zed/labDarach/hstAlingers/rapmapWork/compileStuff/RapMap-0.5.0/build'
make[1]: *** [CMakeFiles/Makefile2:232: src/CMakeFiles/rapmap.dir/all] Error 2
make[1]: Leaving directory '/home/zed/labDarach/hstAlingers/rapmapWork/compileStuff/RapMap-0.5.0/build'
make: *** [Makefile:164: all] Error 2

Any ideas on how to debug this, and fix it on my end or in the release?

cljacobs commented 6 years ago

OK so I know I'm about a year late here, but I just ran into this myself. The problem here is that this version of RapMap (currently the most recent release) bundles an old version of spdlog, which in turn bundles fmt... which is what is actually causing the error here (see this issue for more details.)

The problem has been fixed in fmt and the fix has been included into more recent versions of spdlog. If anyone else runs into this problem, the way I fixed it was to checkout this spdlog commit and then replace the spdlog directory inside the RapMap source include directory with the new checkout version.

Unfortunately, simply updating to the latest version of spdlog doesn't work here, because RapMap relies on some of the older code and will throw other errors if you simply download a recent version of spdlog to update the include dir.

rob-p commented 6 years ago

Hi @cljacobs,

The active development has been going on in a different branch, and it seems that "bit rot" caused problems in master (and the 0.5.0 release). I've updated master to be consistent with the latest develop branches, and will tag a 0.6.0 release soon. Could you let me know if the current master works for you without patches?

Thanks! Rob

cljacobs commented 6 years ago

Hi @rob-p,

The current master appears to be incapable of building right now, because it requires libjellyfish-2.0.a to be in the external/install/lib sub-directory, but CMakeLists.txt no longer includes the rules for building this dependency (see this commit). Specifically, it appears thatsrc/CMakeLists.txt explicitly requires the library to be in the external sub-directory, so even an system version of Jellyfish won't satisfy this dependency.

After copying over the version of libjellyfish-2.0.a that was built by this tagged release into the proper sub-directory, building and testing proceeded just fine.

EDIT: Just fixed some typos.

rob-p commented 6 years ago

Ahh, thanks for finding this @cljacobs! I'll fix this in master before I tag this release; great catch.