Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build step fails for manta-1.6.0-GCC-10.2.0-Python-2.7.18.eb #13337

Closed
boegel opened this issue Jul 4, 2021 · 7 comments · Fixed by #13338
Closed

build step fails for manta-1.6.0-GCC-10.2.0-Python-2.7.18.eb #13337

boegel opened this issue Jul 4, 2021 · 7 comments · Fixed by #13338

Comments

@boegel
Copy link
Member

boegel commented Jul 4, 2021

In file included from /software/Boost/1.74.0-GCC-10.2.0/include/boost/detail/workaround.hpp:8,
                 from /software/Boost/1.74.0-GCC-10.2.0/include/boost/serialization/level.hpp:20,
                 from /software/Boost/1.74.0-GCC-10.2.0/include/boost/serialization/nvp.hpp:33,
                 from /tmp/easybuild_build/manta/1.6.0/GCC-10.2.0-Python-2.7.18/manta-1.6.0/src/c++/lib/appstats/SVFinderStats.hpp:26,
                 from /tmp/easybuild_build/manta/1.6.0/GCC-10.2.0-Python-2.7.18/manta-1.6.0/src/c++/lib/appstats/SVFinderStats.cpp:24:
/software/Boost/1.74.0-GCC-10.2.0/include/boost/type_traits/detail/config.hpp:85:69: error: "__clang_major___WORKAROUND_GUARD" is not defined, evaluates to 0 [-Werror=undef]
   85 |       && !BOOST_WORKAROUND(BOOST_MSVC, < 1900) && !BOOST_WORKAROUND(__clang_major__, <= 4)
      |                                                                     ^~~~~~~~~~~~~~~

manta-1.6.0-GCC-10.2.0-Python-2.7.18.eb installs fine with EasyBuild, even on top of a Boost that was installed with the enhanced easyblock from easybuilders/easybuild-easyblocks#2456.

It looks like this issue could be related to the changes in easybuilders/easybuild-easyblocks#2461...

@boegel
Copy link
Member Author

boegel commented Jul 4, 2021

Installation of manta-1.6.0-GCC-10.2.0-Python-2.7.18.eb works fine with current develop on top of old Boost installation (with EasyBuild 4.3.4).

So the problem seems to be that -DBoost_NO_BOOST_CMAKE=ON is no longer being used.

@boegel boegel added this to the next release (4.4.1) milestone Jul 4, 2021
@boegel
Copy link
Member Author

boegel commented Jul 4, 2021

When using -DBoost_NO_BOOST_CMAKE=ON, the CMake output includes:

-- Found Boost: /software/Boost/1.74.0-GCC-10.2.0/include (found suitable version "1.74.0", minimum required is "1.58.0")

and then the compiler command for AlignmentUtil.cpp (which fails in the failing build) includes -isystem /software/Boost/1.74.0-GCC-10.2.0/include.

In the failing build, without -DBoost_NO_BOOST_CMAKE=ON the CMake output is different:

- Found Boost: /software/Boost/1.74.0-GCC-10.2.0/lib64/cmake/Boost-1.74.0/BoostConfig.cmake (found suitable version "1.74.0", minimum required is "1.58.0")

And then there's no -isystem flag in the compilation command for AlignmentUtil.cpp.

So an obvious fix would be to add -DBoost_NO_BOOST_CMAKE=ON to the manta easyconfig, but it would be good to figure out why it fails without that...

cc @akesandgren @Flamefire @zao

@boegel
Copy link
Member Author

boegel commented Jul 4, 2021

Some more info: "__clang_major___WORKAROUND_GUARD" is not defined is only popping up because manta hard injects -Wundef as compiler flag, which makes the compiler trip over undefined stuff...

Also, this problem is not popping up at all with manta-1.6.0-gompi-2019b-Python-2.7.16.eb or manta-1.6.0-gompi-2020a-Python-2.7.18.eb, so this smells a lot like bug in CMake or Boost (probably the latter) to me...

And yep: boostorg/type_traits#107

So I'll just work around this by adding -DBoost_NO_BOOST_CMAKE=ON to manta-1.6.0-GCC-10.2.0-Python-2.7.18.eb...

@Flamefire
Copy link
Contributor

Flamefire commented Jul 4, 2021

So I'll just work around this by adding -DBoost_NO_BOOST_CMAKE=ON to manta-1.6.0-GCC-10.2.0-Python-2.7.18.eb...

I don't think this is an appropriate fix because it only does a workaround which happens to work.

The actual problems in order are:

  • Boost uses an undefined preprocessor macro -> "Bug" in Boost (one can argue here)
  • manta adds -Wundef which makes the prior thing visible
  • manta also adds -Werror which turns the prior warning into a hard error
  • FindBoost adds boost as SYSTEM headers silencing all warnings from there -> Happens to succeed despite the above
  • BoostConfig (the new, better system to get boost libs) doesn't use SYSTEM to add headers -> Bug from Boost now an error
  • Edit: Seems to be the other way round

--> Better fix is to not enable Werror from manta by changing this here to false: https://github.com/Illumina/manta/blob/75b5c38d4fcd2f6961197b28a41eb61856f2d976/CMakeLists.txt#L56 as is done in their actual releases: https://github.com/Illumina/manta/blob/75b5c38d4fcd2f6961197b28a41eb61856f2d976/scratch/make_release_tarball.bash#L63

@Flamefire
Copy link
Contributor

@Flamefire
Copy link
Contributor

Flamefire commented Jul 4, 2021

@boegel

And then there's no -isystem flag in the compilation command for AlignmentUtil.cpp.

As per the design of the IMPORTED targets (i.e. for Boost_NO_BOOST_CMAKE=OFF) the include paths are always SYSTEM while they are NOT for the FindBoost versions. However due to some legacy targets they are BOTH added as SYSTEM. Or should be.
So something is odd here...

@Flamefire
Copy link
Contributor

Ok, it is a bug in manta: Illumina/manta#265

Anyway: Using the release builds will (likely) have worked but given their use of CMake the current solution is acceptable

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants