Skip to content

Commit 18fc1b0

Browse files
authored
Merge branch 'main' into how-to-versions
2 parents a1c30fb + 7efa299 commit 18fc1b0

File tree

24 files changed

+924
-167
lines changed

24 files changed

+924
-167
lines changed

.github/workflows/deploy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
name: deploy
1313
runs-on: "ubuntu-latest"
1414
steps:
15-
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
15+
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
1616

1717
- uses: conda-incubator/setup-miniconda@835234971496cad1653abb28a638a281cf32541f # v3.2.0
1818
with:

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ repos:
1515
- id: prettier
1616
types_or: [markdown, mdx, json, yaml, css, javascript]
1717
- repo: https://github.com/astral-sh/ruff-pre-commit
18-
rev: v0.14.3
18+
rev: v0.14.7
1919
hooks:
2020
- id: ruff-format
2121
ci:

blog/2025-11-21-gcc-macos.md

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
---
2+
authors:
3+
- isuruf
4+
tags: [infrastructure]
5+
---
6+
7+
# gcc, g++ builds on macos
8+
9+
On macOS, conda-forge has provided `clang`, `clangxx` as the sole compiler
10+
for C and C++ sources. We have also provided `gfortran` to compile FORTRAN
11+
sources. Unlike other package managers like homebrew we have not
12+
provided `gcc` nor `g++` on macos. The reason to not provide those have been
13+
to avoid incompatibility with the clang based toolchain and also the
14+
maintenance burden. There are two main incompatibilities. First,
15+
`clang++` uses `libc++` as the standard C++ library and `g++` uses
16+
`libstdc++` as the standard C++ library. Second, `clang` uses `libomp`
17+
as the OpenMP library whereas `gcc` uses `libgomp` as the OpenMP library.
18+
19+
Today, we announce the availability of `gcc`, `g++` compilers on macos.
20+
You can install them using
21+
22+
```bash
23+
conda install gcc gxx
24+
```
25+
26+
Currently we support only gcc 15 and will not support gcc 14 or previous
27+
versions.
28+
29+
The main difference between these packages and a vanilla gcc installation
30+
or the installation from Homebew is that they use `libomp` as the default
31+
OpenMP library and `libc++` as the default standard C++ library.
32+
This difference makes binaries compiled with `gcc`, `g++` compatible with
33+
binaries compiled with `clang`, `clang++`.
34+
35+
Another interesting consequence of the infrastructure work done to enable
36+
this is that this enables cross compilation of C/C++ sources using `gcc`,
37+
`g++` to cross-compile macOS binaries from Linux (previously only `clang`
38+
supported this) and also cross-compile windows binaries from macOS using
39+
the GCC/MinGW compilers.
40+
41+
To use them in conda-build recipes, you can use
42+
43+
```yaml
44+
requirements:
45+
build:
46+
- {{ compiler('gcc') }} # [osx]
47+
- {{ compiler('gxx') }} # [osx]
48+
- {{ stdlib('c') }}
49+
```
50+
51+
You can also do
52+
53+
```yaml
54+
c_compiler: # [osx]
55+
- gcc # [osx]
56+
c_compiler_version: # [osx]
57+
- 15 # [osx]
58+
cxx_compiler: # [osx]
59+
- gxx # [osx]
60+
cxx_compiler_version: # [osx]
61+
- 15 # [osx]
62+
```
63+
64+
in `conda_build_config.yaml` and continue to use the well-established
65+
`{{ compiler("c") }}` and `{{ compiler("cxx") }}` macros in the recipe;
66+
be aware that you're then responsible for updating the version roughly once
67+
per year (to keep pace with the rest of conda-forge).
68+
69+
When you are using `gcc` locally, similar to `clang`, we make some guesses
70+
about where the macOS SDK is located. This might fail sometimes and setting
71+
the environment variable `SDKROOT` to the root of the macOS SDK should make
72+
`gcc` look in that folder.
73+
74+
We also add by default `-L $CONDA_PREFIX/lib -Wl,-rpath,$CONDA_PREFIX/lib`
75+
when linkingfor local builds with the `conda-gcc-specs` package that is
76+
installed by deault with `gcc` package. If you want to avoid that you can
77+
install the `gcc-no-conda-specs` package alongside `gcc`.

blog/2025-11-22-r-support.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
authors:
3+
- r
4+
tags: [infrastructure]
5+
---
6+
7+
# R support in conda-forge
8+
9+
Earlier this month, Anaconda [announced](https://www.anaconda.com/blog/changes-to-anacondas-r-channel-support) that they are deprecating the `r` channel bundled in the `defaults` multichannel.
10+
This decision does _not_ impact R packages in conda-forge, which continue to be available without any changes.
11+
12+
<!-- truncate -->
13+
14+
The [`@conda-forge/r` team](https://github.com/conda-forge/r-feedstock/blob/7de3342693b3e1e98c2461d5385d8ebcce6b04db/recipe/meta.yaml#L30-L40) currently maintains [4.4K+ feedstocks](https://github.com/search?type=code&q=org%3Aconda-forge+%22-+conda-forge%2Fr%22+path%3Arecipe%2F) for the two latest minor R releases, and will continue to do so. At the time of writing, these are R 4.5 and R 4.4. Older versions are still available but won't receive any updates or rebuilds. When R 4.6 is released, 4.5 will still be maintained and 4.4 will stop receiving updates, and so on.
15+
16+
If you have any questions, please do not hesitate to open an issue in the [`r` feedstock](https://github.com/conda-forge/r-feedstock) or in [our Zulip chat instance](https://conda-forge.zulipchat.com/).

blog/authors.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ core:
33
title: The conda-forge core team
44
url: https://github.com/orgs/conda-forge/teams/core
55
image_url: https://github.com/conda-forge.png
6+
r:
7+
name: conda-forge/r
8+
title: The maintainers of the R ecosystem in conda-forge
9+
url: https://github.com/orgs/conda-forge/teams/r
10+
image_url: https://avatars.githubusercontent.com/t/2337964
611
beckermr:
712
name: Matthew R. Becker
813
title: Member of conda-forge/core

community/minutes/2017-11-16.md

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -28,38 +28,41 @@ Scheduled time: 9 AM central. Meeting link: https://anaconda.webex.com/anaconda
2828
- toolchain: https://github.com/conda-forge/toolchain-feedstock/blob/master/recipe/activate.sh
2929
- toolchain3: https://github.com/conda-forge/toolchain3-feedstock/blob/master/recipe/activate.sh
3030
- anaconda: https://github.com/AnacondaRecipes/aggregate/blob/master/ctng-compilers-activation-feedstock/recipe/conda_build_config.cos6.x86_64.yaml#L41-L54
31-
| Variable | toolchain only | anaconda only | |
32-
| -------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | |
33-
| CFLAGS | -m${ARCH} | march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe | |
34-
| CPPFLAGS | | -D_FORTIFY_SOURCE=2 -O2 | |
35-
| CXXFLAGS | -DBOOST_MATH_DISABLE_FLOAT128 -m${ARCH} | -fvisibility-inlines-hidden -std=c++17 -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe | |
36-
| LDFLAGS | -Wl,-rpath,$PREFIX/lib | Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now | |
31+
32+
| Variable | toolchain only | anaconda only |
33+
| -------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
34+
| CFLAGS | -m${ARCH} | march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe |
35+
| CPPFLAGS | | -D_FORTIFY_SOURCE=2 -O2 |
36+
| CXXFLAGS | -DBOOST_MATH_DISABLE_FLOAT128 -m${ARCH} | -fvisibility-inlines-hidden -std=c++17 -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe |
37+
| LDFLAGS | -Wl,-rpath,$PREFIX/lib | Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now |
3738

3839
- LLVM/clang
3940
- toolchain: https://github.com/conda-forge/toolchain-feedstock/blob/master/recipe/activate.sh
4041
- toolchain3: https://github.com/conda-forge/toolchain3-feedstock/blob/master/recipe/activate.sh
4142
- anaconda: https://github.com/AnacondaRecipes/aggregate/blob/master/clang/build.sh
42-
| Variable | toolchain only | anaconda only |
43-
| ---------- | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
44-
| CPPFLAGS | | -mmacosx-version-min=${MACOSX_VERSION_MIN} |
45-
| CFLAGS | -mmacosx-version-min=${MACOSX_VERSION_MIN} -m${ARCH} | -march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe |
46-
| CXXFLAGS | -mmacosx-version-min=${MACOSX_VERSION_MIN} -m${ARCH} | -march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -stdlib=libc++ -fvisibility-inlines-hidden -std=c++14 -fmessage-length=0 |
47-
| LDFLAGS | -mmacosx-version-min=${MACOSX_VERSION_MIN} -lc++ -Wl,-rpath,$PREFIX/lib | -pie |
48-
| LDFLAGS_CC | | -Wl,-pie -Wl,-headerpad_max_install_names |
49-
| | | |
43+
44+
| Variable | toolchain only | anaconda only |
45+
| ---------- | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
46+
| CPPFLAGS | | -mmacosx-version-min=${MACOSX_VERSION_MIN} |
47+
| CFLAGS | -mmacosx-version-min=${MACOSX_VERSION_MIN} -m${ARCH} | -march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe |
48+
| CXXFLAGS | -mmacosx-version-min=${MACOSX_VERSION_MIN} -m${ARCH} | -march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -stdlib=libc++ -fvisibility-inlines-hidden -std=c++14 -fmessage-length=0 |
49+
| LDFLAGS | -mmacosx-version-min=${MACOSX_VERSION_MIN} -lc++ -Wl,-rpath,$PREFIX/lib | -pie |
50+
| LDFLAGS_CC | | -Wl,-pie -Wl,-headerpad_max_install_names |
5051

5152
- Fortran
5253
- toolchain: (not set)
5354
- toolchain3: (not set)
5455
- anaconda:
5556
- Linux: https://github.com/AnacondaRecipes/aggregate/blob/master/ctng-compilers-activation-feedstock/recipe/conda_build_config.cos6.x86_64.yaml#L46
5657
- Mac: https://github.com/AnacondaRecipes/aggregate/blob/master/gfortran-feedstock/recipe/build.sh#L5
58+
5759
- Windows: flags that affect some things (cmake)
58-
| Variable | anaconda value |
59-
| -------------- | ------------------------------- |
60-
| CFLAGS | %CFLAGS% -MD -GL |
61-
| CXXFLAGS | %CXXFLAGS% -MD -GL |
62-
| LDFLAGS_SHARED | %LDFLAGS_SHARED% -LTCG ucrt.lib |
60+
61+
| Variable | anaconda value |
62+
| -------------- | ------------------------------- |
63+
| CFLAGS | %CFLAGS% -MD -GL |
64+
| CXXFLAGS | %CXXFLAGS% -MD -GL |
65+
| LDFLAGS_SHARED | %LDFLAGS_SHARED% -LTCG ucrt.lib |
6366

6467

6568
Overall: everyone receptive to new compilers. Mike to provide way of keeping host and build prefix separate, even when not cross compiling. This would avoid need for things like "always_include_files" and would facilitate conda-forge keeping their llvmdev recipe as is (for cling usage).

0 commit comments

Comments
 (0)