Skip to content

Commit 6c30c8a

Browse files
committed
revert #1946 & follow-ups
1 parent cb7ab6e commit 6c30c8a

File tree

1 file changed

+10
-87
lines changed

1 file changed

+10
-87
lines changed

src/maintainer/infrastructure.rst

Lines changed: 10 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -281,22 +281,16 @@ Compilers and Runtimes
281281

282282
Conda-forge builds and maintains its own set of compilers for various languages
283283
and/or systems (e.g., ``C``, ``FORTRAN``, ``C++``, ``CUDA``, etc.). These are used
284-
in all of our CI builds to build essentially all artefacts published by conda-forge.
285-
286-
In the past, compiler upgrades often required full rebuilds of basically all of
287-
conda-forge due to potential ABI breaks. These breaks have become much rarer in
288-
frequency and scope, so it is not a current concern. However, we keep our policies
289-
for such ABI breaks in place for the next time it should occur.
290-
291-
While we do not have any promises of support for a generation of ABI-compatible
284+
in all of our CI builds to build both core dependencies (e.g., ``Python``) and maintainer-contributed
285+
packages. While we do not have any formal policies or promises of support for these
292286
compilers, we have historically maintained them according to the following (non-binding)
293287
principles.
294288

295289
* The authoritative source of the current compilers and versions for various languages
296290
and platforms is the `conda_build_config.yaml <https://github.com/conda-forge/conda-forge-pinning-feedstock/blob/master/recipe/conda_build_config.yaml>`_
297291
in the `conda-forge/conda-forge-pinning-feedstock <https://github.com/conda-forge/conda-forge-pinning-feedstock>`_
298292
as described in :ref:`globally_pinned_packages`.
299-
* We provide no support of any kind in terms of the long-term stability / support of a given compiler generation.
293+
* We provide no support of any kind in terms of the long-term stability of these pinnings.
300294
* We upgrade them in an ad-hoc manner on a periodic basis as we have the time and energy to do so.
301295
Note that because of the way we enforce runtime constraints, these compiler upgrades will not break
302296
existing packages. However, if you are using the compilers outside of ``conda``, then you may find issues.
@@ -307,86 +301,15 @@ principles.
307301
1) the degree of disruption to the ecosystem, 2) the amount of work for the ``core`` team,
308302
and 3) the amount of time it will cost our (volunteer) feedstock maintainers.
309303

310-
These compiler generations may or may not have some unofficial names for our
311-
internal use (e.g. ``comp7``). We note again that the existence of these names
312-
does not imply any level of support or stability for the compilers
304+
We do use some unofficial names for our compiler stack internally. Note however that
305+
the existence of these names does not imply any level of support or stability for the compilers
313306
that form the given stack.
314307

315-
The more recent status quo is that compilers can be upgraded in an ABI-compatible manner,
316-
meaning that we can just increase the version in our global pinning, and it will slowly
317-
roll out in a compatible manner to the ecosystem as feedstocks get rerendered.
318-
For such ABI-compatible upgrades, similar but looser principles apply:
319-
320-
* The pins are similarly in the global pinning, see :ref:`globally_pinned_packages`.
321-
* We provide no support of any kind in terms of the long-term availability of a given compiler generation.
322-
* We generally provide notice in the form of an announcement when a compiler is going to be upgraded.
323-
* In general, our compilers on Linux and OSX are using very recent compilers, whereas
324-
on windows, we generally use the last supported VS version.
325-
326-
Despite the lack of explicit support, we try to keep the compilers in their various versions
327-
working also outside of conda-forge, and even provide an easy way to install them
328-
(through the `compilers <https://github.com/conda-forge/compilers-feedstock>`_ feedstock).
329-
330-
In more detail, our default compiler stack is made up very differently on each platform.
331-
More specifically, each compiler uses an _activation_ package that makes the difference
332-
between it being merely present in a build environment, and it being used by default.
333-
These will be installed when using ``{{ compiler('xyz') }}`` in ``meta.yaml``, where
334-
``'xyz'`` is one of ``'c', 'cxx', 'fortran', 'cuda', 'rust', 'go-cgo', 'go-nocgo'``.
335-
336-
Linux (GCC):
337-
338-
* [C, C++, Fortran] Activation: https://github.com/conda-forge/ctng-compiler-activation-feedstock/
339-
* [C, C++, Fortran] Implementation: https://github.com/conda-forge/ctng-compilers-feedstock
340-
* Note that when used in conjunction with CUDA, compiler versions are restricted by the
341-
maximum GCC version supported by nvcc (which is also reflected in the global pinning).
342-
343-
OSX (Clang):
344-
345-
* [C, C++] Activation: https://github.com/conda-forge/clang-compiler-activation-feedstock/
346-
* [C, C++] Required feedstocks:
347-
`llvmdev <https://github.com/conda-forge/llvmdev-feedstock>`_,
348-
`clangdev <https://github.com/conda-forge/clangdev-feedstock>`_,
349-
`compiler-rt <https://github.com/conda-forge/compiler-rt-feedstock>`_,
350-
`libcxx <https://github.com/conda-forge/libcxx-feedstock>`_,
351-
`openmp <https://github.com/conda-forge/openmp-feedstock>`_,
352-
`lld <https://github.com/conda-forge/lld-feedstock>`_,
353-
`cctools <https://github.com/conda-forge/cctools-and-ld64-feedstock>`_
354-
* [Fortran] Activation: https://github.com/conda-forge/gfortran_osx-64-feedstock/
355-
* [Fortran] Implementation: https://github.com/conda-forge/gfortran_impl_osx-64-feedstock/
356-
357-
Windows (MSVC):
358-
359-
* [C, C++] Activation: https://github.com/conda-forge/vc-feedstock
360-
(we cannot redistribute the actual MSVC compilers due to licensing constraints)
361-
* [Fortran] Activation & Implementation: https://github.com/conda-forge/flang-feedstock
362-
363-
There exists an alternative, MinGW-based, compiler stack on windows, which is available
364-
with a ``m2w64_`` prefix (e.g. ``{{ compiler('m2w64_c') }}``). However, it is falling out
365-
of use now that most projects will natively support compilation also with MSVC, in addition
366-
to several complications arising from mixing compiler stacks.
367-
368-
Additionally, there is a possibility to use clang as a compiler on Linux & Windows:
369-
370-
* Activation (Linux): https://github.com/conda-forge/clang-compiler-activation-feedstock/
371-
* Activation (Windows): https://github.com/conda-forge/clang-win-activation-feedstock/
372-
373-
Aside from the main C/C++/Fortran compilers, these are the feedstocks for the other compilers:
374-
375-
* [CUDA] https://github.com/conda-forge/nvcc-feedstock (CUDA infra currently being overhauled)
376-
* [Rust] `Activation <https://github.com/conda-forge/rust-activation-feedstock>`_
377-
and `Implementation <https://github.com/conda-forge/rust-feedstock>`_
378-
* [Go] https://github.com/conda-forge/go-feedstock
379-
380-
To upgrade the compiler version of our default compilers in the global pinning for
381-
Linux or OSX, ensure that the respective above-mentioned feedstocks have been rebuilt
382-
for the new major version, that all interrelated versions are lifted at the same time,
383-
and obviously that the compilers work (e.g. by testing them on some feedstocks by
384-
specifying the new version through the feedstock-local `conda_build_config.yaml`).
385-
386-
For Windows, we stay on older compilers for longer, because using a newer toolchain
387-
would force everyone wanting to locally develop with conda-forge artefacts to use
388-
a toolchain that's at least as new. A more in-depth explanation can be found
389-
`here <https://github.com/conda-forge/conda-forge.github.io/issues/1732>`_.
308+
* Our current compiler stack is referred to internally as ``comp7``.
309+
* The previous compiler stack based in part on the various ``toolchain_*`` packages
310+
was sometimes referred to as ``comp4``. On linux the ``toolchain_*`` compilers were
311+
GCC 4.8.2 as packaged in the devtoolset-2 software collection. On osx, we use clang from
312+
Apple's Xcode in the ``toolchain_*`` packages.
390313

391314
CentOS ``sysroot`` for ``linux-*`` Platforms
392315
---------------------------------------------

0 commit comments

Comments
 (0)