Skip to content

[Epic] Add declarative configuration for common packaging tasks (resolver, sdist, modification) #936

@tiran

Description

@tiran

As of today, Fromager does not have declarative configuration options to solve problems like building a package from a git clone, resolving packages on Github / Gitlab, or structured patching. These are common tasks that currently require a Python plugin. In downstream, we have over 60 plugins. The majority of plugins are trivial and only deal with GitLabTagProvider, git clone, and some simple patching.

Some ideas:

Resolver

  • resolve on PyPI
  • resolve with GitHubTagProvider
  • resolve with GitLabTagProvider

Download / sdist

  • download sdist from PyPI
  • download tarball from URL
  • git clone
  • download artifact from GitHub / GitLab release
  • build sdist with PEP 517

Patching

  • apply patch from file
  • modify pyproject.toml build system requirement
  • version-specific pyproject.toml patching (e.g. only >-1.0,<1.1)
  • replace / delete line in a file (like Ansible's lineinfile)
  • fix sdist PKG-INFO
  • remove an install requirement from sdist metadata and wheel metadata (requires-dist field)
  • align install requirement with build environment (e.g. if package was built with Torch 2.9.1, force dependency on exactly Torch 2.9.1)

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions