Skip to content

Temporary disable all workflows except wheels#401

Open
mxamin wants to merge 14 commits intomasterfrom
improve-wheel-build
Open

Temporary disable all workflows except wheels#401
mxamin wants to merge 14 commits intomasterfrom
improve-wheel-build

Conversation

@mxamin
Copy link
Collaborator

@mxamin mxamin commented Nov 13, 2025

No description provided.

@mxamin mxamin force-pushed the improve-wheel-build branch 5 times, most recently from 9239acc to f431eca Compare November 13, 2025 15:29
@mxamin mxamin force-pushed the improve-wheel-build branch 10 times, most recently from 7dd10a9 to f001bd7 Compare February 15, 2026 21:33
Extract static dependency preparation into a reusable builder and wire CI to
reuse downloaded archives across jobs/platforms. This reduces duplicated build
logic, improves maintainability, and speeds up wheel/sdist workflows.

- Introduce `build_support/lib_xmlsec_dependency_builder.py`:
  - Centralize dependency version resolution, source/archive download, extract,
    and build steps for OpenSSL, zlib, libiconv, libxml2, libxslt, and xmlsec1.
  - Support both Unix and Windows dependency preparation paths.
  - Preserve cross-compilation handling via `CrossCompileInfo` (now a dataclass).
  - Expose resolved library versions for callers.

- Add `build_libs_xmlsec.py` CLI:
  - Provide a standalone entrypoint to prepare dependencies.
  - Support `--download-only`, custom `--libs-dir`, custom `--buildroot`,
    and target platform/plat-name overrides.

- Refactor `build_support/static_build.py`:
  - Delegate dependency preparation to `LibXmlsecDependencyBuilder`.
  - Keep extension configuration focused on platform-specific compiler/linker
    flags and include/lib wiring.
  - Preserve static-link behavior while removing duplicated dependency logic.

- Update `build_support/build_ext.py`:
  - Initialize build flags (`PYXMLSEC_ENABLE_DEBUG`, `PYXMLSEC_STATIC_DEPS`,
    `PYXMLSEC_OPTIMIZE_SIZE`) in `__init__`.
  - Keep build flow unchanged, but use the refactored static helper path.

- Modernize packaging metadata:
  - Move project metadata from `setup.py` into PEP 621 fields in
    `pyproject.toml` (`[project]`, `[project.urls]`, `[tool.setuptools]`).
  - Simplify `setup.py` to extension setup only.
  - Delete legacy `setup.cfg`.
  - Relax build-system pins and align build requirements with setuptools_scm>=8.
  - Bump `ruff[format]` in `requirements-test.txt` to `0.14.4`.

- Add reusable dependency-cache workflow:
  - New `.github/workflows/cache_libs.yml` workflow_call job that downloads and
    caches `libs/*.{xz,gz,zip}` per OS/arch/version inputs.
  - Export cache/version outputs for downstream jobs.
  - Validate expected Windows archive filenames.

- Rework wheel/manylinux CI to consume cached libs:
  - `manylinux.yml` now depends on `cache_libs`, restores cache, and runs build
    + test inside container via new script
    `.github/scripts/manylinux_build_and_test.sh`.
  - Script sets `PYTHONPATH` and `PYXMLSEC_LIBS_DIR` explicitly so isolated PEP
    517 builds can import local helpers and reuse cached archives.
  - `wheels.yml` now depends on `cache_libs`, restores cache before
    cibuildwheel, updates action versions, and refreshes matrix generation
    (`generate_wheels_matrix`) including ARM Linux runner mapping.
  - `sdist.yml` installs `setuptools_scm>=8` during build deps setup.

- Minor workflow hygiene updates:
  - Normalize formatting and small ordering/conditional tweaks in
    `linuxbrew.yml` and `macosx.yml`.
@mxamin mxamin force-pushed the improve-wheel-build branch from f001bd7 to f1d8dab Compare February 15, 2026 21:39
@mxamin mxamin marked this pull request as ready for review February 15, 2026 21:46
@mxamin mxamin requested a review from Copilot February 15, 2026 21:46
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR modernizes the Python packaging configuration by migrating from setup.py/setup.cfg to PEP 621-compliant pyproject.toml, refactors build tooling into a reusable dependency builder, and introduces a workflow caching system. Despite the title "Temporary disable all workflows except wheels," all workflows remain active.

Changes:

  • Migrated package metadata from setup.py/setup.cfg to pyproject.toml using PEP 621 standards
  • Refactored static dependency building into a standalone LibXmlsecDependencyBuilder class with CLI tool
  • Added cache_libs.yml workflow to pre-download and cache library dependencies across builds
  • Updated GitHub Actions workflows with dependency caching and manylinux containerized builds

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
pyproject.toml Migrated all package metadata to PEP 621 format; added project URLs pointing to xmlsec org; configured setuptools_scm>=8
setup.py Simplified to only define extension module; removed all metadata (now in pyproject.toml); changed to relative paths
setup.cfg Completely removed; functionality migrated to pyproject.toml
requirements-test.txt Updated ruff from 0.13.0 to 0.14.4
build_support/static_build.py Refactored to delegate dependency building to LibXmlsecDependencyBuilder; simplified from 282 to 116 lines
build_support/lib_xmlsec_dependency_builder.py New 401-line module extracting dependency building logic; supports download-only mode; includes platform-specific version defaults
build_support/build_ext.py Moved instance variable initialization to init; added type hints
build_libs_xmlsec.py New CLI tool for downloading/building dependencies outside main build process
.github/workflows/cache_libs.yml New reusable workflow for caching library dependencies across platforms
.github/workflows/wheels.yml Updated actions versions; added cache_libs dependency; switched to ARM runner labels for aarch64
.github/workflows/manylinux.yml Refactored to use cache_libs workflow; moved build/test into containerized script
.github/workflows/sdist.yml Minor formatting and dependency updates
.github/workflows/macosx.yml Formatting improvements; reordered codecov step
.github/workflows/linuxbrew.yml Formatting improvements only
.github/scripts/manylinux_build_and_test.sh New shell script to run manylinux builds inside containers

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@mxamin mxamin force-pushed the improve-wheel-build branch from b846125 to bcfe41d Compare February 16, 2026 09:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant