Skip to content

Use Pixi in macOS-intel CI - #13704

Open
scott-huberty wants to merge 129 commits into
mne-tools:mainfrom
scott-huberty:pixi
Open

Use Pixi in macOS-intel CI#13704
scott-huberty wants to merge 129 commits into
mne-tools:mainfrom
scott-huberty:pixi

Conversation

@scott-huberty

Copy link
Copy Markdown
Contributor

I'm exploring the feasibility of using Pixi to resolve the virtual environment and run tests specifically for the MacOS Intel CI, which currently uses Mamba to create the virtual environment.

My initial strategy was to just to do pixi init --import environment.yml, so that we can leverage our already defined YAML config file to pull in all the necessary dependencies, as well as configuring prefix-dev/setup-pixi to automatically activate our virtual environment, so that we can run commands like pytest etc without having to prepend pixi run everywhere for the pixi CI...

Unfortunately the only way I could get this to work was to disable use of a login shell.. Which of course makes all the condo-like CI's fail!!

@scott-huberty
scott-huberty marked this pull request as draft February 28, 2026 00:28
@tsbinns

tsbinns commented Feb 28, 2026

Copy link
Copy Markdown
Contributor

Hey @scott-huberty, looking at the current diff I noticed you're setting up pixi without activating the env, initing with environment.yml, then setting up again with env activation.

Found when switching to uv for the old job that the env can be activated at setup with a given Python ver and then have the required packages installed in github_actions_dependencies.sh:

- uses: astral-sh/setup-uv@v7
with:
version: ">=0.9"
activate-environment: true
cache-dependency-glob: |
**/pylock.ci-old.toml
python-version: ${{ matrix.python }}
if: matrix.kind == 'old'
- run: bash ./tools/github_actions_dependencies.sh

Wondered if a similar thing could work for pixi rather than needing 2 setups. Haven't looked through diffs for all commits, so apologies if you tried this already.

Comment thread tools/write-pixi-toml.py Outdated
@drammock

Copy link
Copy Markdown
Member

@scott-huberty

scott-huberty commented Jul 29, 2026

Copy link
Copy Markdown
Contributor Author

possible problem: seems like environment is getting MNE stable release (not main/PR):

https://github.com/mne-tools/mne-python/actions/runs/30474035062/job/90651542841?pr=13704#step:18:61

probably because of this:

https://github.com/mne-tools/mne-python/actions/runs/30474035062/job/90651542841?pr=13704#step:9:372

hmm The pixi.lock file has: - conda: https://conda.anaconda.org/conda-forge/noarch/mne-base-1.12.1-pyh694c41f_200.conda

EDIT: Maybe because pixi.toml requests mne-qt-browser = "*" which pulls in MNE stable.

Comment thread tools/github_actions_download.sh Outdated
Comment thread tools/github_actions_env_vars.sh Outdated
Comment thread tools/github_actions_test.sh Outdated
@scott-huberty
scott-huberty marked this pull request as ready for review August 12, 2026 22:11
Comment thread tools/write-pixi-toml.py Outdated
scott-huberty and others added 4 commits August 13, 2026 08:13
Co-authored-by: Scott Huberty <52462026+scott-huberty@users.noreply.github.com>
@scott-huberty

Copy link
Copy Markdown
Contributor Author

OK @drammock - I think this is ready! FYI commits 16c7db7 and onward were added after our pair programming session yesterday.

@larsoner larsoner left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Just one tiny comment/idea from me!

@drammock let me know if you want to look again or if you're okay with me merging once my comment is addressed. If you pair-programmed you might already approve...

# Our cache_dir test has problems when the path is too long, so prevent it from getting too long
if [[ "$RUNNER_OS" == "macOS" ]]; then
echo "PYTEST_DEBUG_TEMPROOT=/tmp" | tee -a $GITHUB_ENV
fi

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

It would be great to have a MNE_TEST_ALLOW_SKIP in this branch to ensure only the examples you expect to be skipped are actually skipped. The old macOS job had this above ☝️ . You could try taking it directly, but maybe better to cross-reference it against the actual skips. (It might suggest and additional dependency or two that you could add to shrink the skip list.)

@drammock

Copy link
Copy Markdown
Member

Just one tiny comment/idea from me!

@drammock let me know if you want to look again or if you're okay with me merging once my comment is addressed. If you pair-programmed you might already approve...

+1 for merge if @larsoner is happy and the CI is green.

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.

5 participants