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)

Sub-issues

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