Skip to content

No CI job exercises pixi.toml, so the development environment can rot silently #1158

Description

@IvanaGyro

Problem

pixi.toml and pixi.lock describe the development environment contributors are pointed at from CONTRIBUTING.md, but nothing in CI touches them. ci-cmake_tests.yml installs its dependencies with apt and mamba and calls cmake directly, so every CI check can be green while:

  • a task is broken or renamed,
  • the lock no longer solves for a platform,
  • the lock has drifted from the manifest (pixi lock --check would fail),
  • a dependency needed to configure has been dropped.

A contributor finds out instead of a check.

Suggestion

A small workflow on ubuntu-latest:

- run: pixi lock --check     # manifest and lock agree
- run: pixi install
- run: pixi run test-cpp     # configure, build test_main, run the C++ suite

pixi run test-cpp covers setup and configure through its dependency chain, so a broken task in the middle fails the job. pixi lock --check is nearly free and catches the drift case on its own — worth running even if the build half is judged too expensive for every PR.

Two details that would decide the shape:

  • detached-environments. cytnx exports its LAPACKE include directory as a PUBLIC usage requirement, so with Pixi's default in-checkout layout CMake refuses to generate (INTERFACE_INCLUDE_DIRECTORIES ... which is prefixed in the source directory). The job needs pixi config set --local detached-environments true, the same step CONTRIBUTING.md documents, until Fix exported CMake usage requirements and relocatable dependencies #1120 removes the need.
  • Which preset. pixi run test-cpp defaults to openblas-cpu, matching the PyPI wheel. pixi run gate covers both debug-* CPU presets but roughly triples the runtime.

Caching the Pixi environment between runs would keep the cost down; the lock file is a natural cache key.

Context

Raised while reworking the Pixi setup so the preset is a task argument and one environment serves every preset. Deliberately left out of that PR to keep the diff scoped to the development environment rather than CI.

Activity

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

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