Skip to content

Equivalent of "minimally activated" compilers for msvc #117

@h-vetinari

Description

@h-vetinari

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions