Use lock files and relative dependency cooldowns
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 42/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Área
- build-system, release
Línea de trabajo
Empieza leyendo pyproject.toml y tools/configure_macos_env.sh; después, revisa cómo cibuildwheel obtiene actualmente las dependencias de compilación. Compara los enfoques de archivos de bloqueo de uv y pixi, incluidos los periodos de enfriamiento relativos de las dependencias y la gestión de libomp en macOS; se considera terminado cuando las dependencias de compilación, sdist y pruebas están bloqueadas explícitamente y las actualizaciones están automatizadas.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I think the use of requirements files with X.Y.Z pinned version constraints is good but not enough to ensure full reproducibility of the builds (there can be .post0 markers after the .Z component for instance). I think we should use an explicit lock file to manage:
- the cibuildwheel dependency itself (this will transitively lock the version of cibuildwheel's own dependencies as per the "pinned" policy documented in https://cibuildwheel.pypa.io/en/stable/options/#dependency-versions)
- the sdist build dependencies;
- the test dependencies.
The lockfile(s) should be automatically refreshed, e.g. on a monthly basis with a relative dependency cooldown policy of a week to reduce the exposure of the release process to ongoing OSS Supply Chain attacks.
The lockfile(s) in the release repo could either be managed via uv or pixi. I don't think it matters much because we don't need conda-forge for the build and testing process in this repo. All the Python-level builds dependencies are fetched from pypi.org and the rest come from the system image (e.g. manylinux). EDIT: actually we do fetch a fixed binary for libomp on macOS, so maybe we could use pixi and a lock file to do that more automatically.
When the lock files are updated, we should use relative dependency cooldowns such as uv's exclude-newer config or pixi's exlude-newer config).
Ideally, the build dependencies should also be locked explicitly in the repo as for the other dependencies. According to cibuildwheel's doc, the pip wheel command is used under the hood to setup the build env automatically. By default, it will install dependencies from the pyproject.toml file. However, it should be possible to pass an explicit pylock.toml export of a proper uv managed lockfile to pip wheel -r. Alternatively, we configure cibuildwheel's before-build hook to run a script to explicitly prepare the build environment manually using uv or pixi commands and disable build isolation and run pip wheel --no-build-isolation --no-deps.
- Lenguaje dominante
- Shell
- Estrellas
- 2
- Forks
- 5
- Merge medio
- 24 min
- PR fusionados (30 d)
- 4
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de scikit-learn/scikit-learn-release
-
Check wheels before uploadAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
scikit-learn/scikit-learn-release#7 · 9 comentarios ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
scikit-learn/scikit-learn-release#6 · 1 comentario ·
Todos los issues de scikit-learn/scikit-learn-release
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
-
flac's CMake config is brokenAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
msys2/MINGW-packages#33356 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Misleading 'Update → Config → Hyprland' menu item silently resets user configs without confirmationPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
ekalinin/github-markdown-toc#204 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100