Skip to content

gh-152384: pixi-packages: use flags to define variants#152385

Open
lucascolley wants to merge 1 commit into
python:mainfrom
lucascolley:pixi-flags
Open

gh-152384: pixi-packages: use flags to define variants#152385
lucascolley wants to merge 1 commit into
python:mainfrom
lucascolley:pixi-flags

Conversation

@lucascolley

@lucascolley lucascolley commented Jun 27, 2026

Copy link
Copy Markdown
Contributor

cc @wolfv @baszalmstra @jaimergp I'm very excited about this PR!

Pixi does still need some work: prefix-dev/pixi#6461

- `freethreading`
- `asan`: ASan-instrumented build
- `tsan-freethreading`: TSan-instrumented free-threading build
- `tsan_freethreading`: TSan-instrumented free-threading build

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it makes sense to remove the - from this variant name, given that it is invalid in the flags field: https://conda.org/learn/ceps/cep-0045#repodata-record-syntax

Comment on lines 84 to 88
run_exports:
noarch:
- python
weak:
- python_abi ${{ version }}.* *_${{ abi_tag }}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we could also define flags on python_abi and perhaps not need to rely on abi_tag as much? But I suppose we still want to keep abi_tag around at least while conda-forge does?

@lucascolley

Copy link
Copy Markdown
Contributor Author

@StanFromIreland this goes some way towards making the version update situation better by reducing duplication in the variant definition

Comment on lines +3 to +4
openssl:
- '3.5'

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

obviously you could download the current pinning file, yaml-load it and extract the openssl pin, but that's perhaps more complexity and dynamism than justified - an argument could be made that openssl is special enough to handle it separately... and although pins have a habit of going stale, staying on an LTS version probably makes sense here.

conda-forge will probably migrate to openssl 4 in the fall, but since AFAICT python has no other dependencies that are themselves openssl-dependent, this should not cause any conflicts (except in larger environments with the most recent builds, but that's not really relevant for the ASAN stuff).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

obviously you could download the current pinning file, yaml-load it and extract the openssl pin, but that's perhaps more complexity and dynamism than justified

an idea was floated at some point that variant configs themselves could be packaged as conda packages and Pixi could consume them that way. Not sure if anyone has thought about that recently.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mean, conda-forge-pinning is exactly that package. You'd still have to go parse the yaml though. 🤷

python.git = "https://github.com/python/cpython"
python.subdirectory = "Tools/pixi-packages/asan"
python.subdirectory = "Tools/pixi-packages"
python.flags = "asan"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
python.flags = "asan"
python.flags = ["asan"]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants