-
-
Notifications
You must be signed in to change notification settings - Fork 28
Description
Through conda-forge/conda-forge.github.io#2595, we ended up with compilers gcc / gxx / clang / clangxx that are useable "out of the box", without having to rely on {{ compiler("foo") }} or gxx_linux-64 or similar.
It'd be nice to have something similar for windows (vs? msvc?). To my knowledge, windows does not offer such extensive customization features as clang's .cfg files or GCC's spec files. But at least from a packaging standpoint, we could create an output that contains less flags.
There's one aspect where this goes beyond convenience; for packages that rely on having a compiler at runtime (not that many, but some that do JIT-compilation etc.), this makes it ~impossible to cross-compile, if that package is also needed in the build: environment.
This can be seen in conda-forge/root-feedstock#331 for example, where the build section of a package consuming root might look like
build:
- ${{ stdlib('c') }}
- ${{ compiler('c') }}
- ${{ compiler('cxx') }}
- cmake
- make
- if: build_platform != host_platform
then:
- cross-python_${{ host_platform }}
- python
- root_base # currently run-depends on {{ compiler("cxx") }}By run-depending on an activated compiler (necessarily matching the build platform), this then leads to conflicting activations in the build environment
│ │ │ gcc_linux-64 ┆ 14.3.0 ┆ h298d278_15 ┆ conda-forge ┆ 28.15 KiB │
│ │ │ gcc_linux-aarch64 ┆ 14.3.0 ┆ hc6a817b_15 ┆ conda-forge ┆ 28.15 KiB │
This is solved by gxx for the linux side, but once the windows-arm64 migration advances far enough that we have to deal with cases like root, the absence of minimally activated compilers would run into the same issue.