Closed thermokarst closed 5 years ago
Hi! This is the friendly automated conda-forge-linting service.
I wanted to let you know that I linted all conda-recipes in your PR (recipe
) and found some lint.
Here's what I've got...
For recipe:
Here's a little more context on the situation after exploring how tbb-feedstock works.
The version used there uses a more recent version of TBB which probes the compiler using shell $(CONLY)
. This of course works fine with conda build compiler toolchains since they know to set variables such that Make does the right thing.
However because RcppParallel statically links and vendors TBB, it's not using the latest version. As seen in @thermokarst's link above, shell gcc
was used in TBB version 2017.7.
We could write a patch to use the more recent "make include" files which would probe correctly, however we're not maintainers of RcppParallel and we don't know the ramifications of that. In a perfect world RcppParallel would be using the latest TBB, but that would of course require actual code changes.
In the meanwhile, updating $PATH
was the most obvious way to ensure the old Makefile probing worked as expected. Looking around it doesn't seem that there is a way for conda build to rename the compiler toolchain used on the fly, as it generally expects the Makefiles to do the right thing (which old TBB does not).
Ultimately this all boils down to the original issue with TBB and GCC6+ and the -flifetime-dse
flag to disable the compiler elision. This is the most obvious failure as it causes a segfault in RcppParallel, but there may be other issues, and given the size and complexity of the build system inside TBB, we're not super eager to start patching that without a lot more context.
Nice trick! Looks good. Intending to merge this. Thanks
The feedstock is now also updated to version 4.4.2, which also includes the fix. Maybe it makes sense to open an issue over there https://github.com/RcppCore/RcppParallel/issues and paste all the collected information here and the reverenced dada2 discussions to make RcppParallel upstream aware about it.
Checklist
conda-smithy
(Use the phrase code>@<space/conda-forge-admin, please rerender in a comment in this PR for automated rerendering)While working on a sneaky segfault bug with DADA2, we learned that this package vendors the TBB package. The TBB Makefiles perform a handful of compile-time probes to learn things about the compiler, in particular, one probe handles the zero-initiation problem that we tracked as the root of our segfault woes. However, in conda-build -land, these probes will never be successful, because the probe is hardcoded to search for an executable called
gcc
in thePATH
. Okay, so this changeset attempts to remedy this by supplementing thePATH
, but, we are totally open to other (more idiomatic?) ways of solving the issue, just let us know.Thanks so much!
cc @epruesse cc @benjjneb cc @ebolyen