Skip to content

Convert to rattler-build recipe; make ghostscript an extra (optional dependency group) - #385

Draft
jonashaag wants to merge 1 commit into
conda-forge:mainfrom
jonashaag:recipe-v1-extras
Draft

Convert to rattler-build recipe; make ghostscript an extra (optional dependency group)#385
jonashaag wants to merge 1 commit into
conda-forge:mainfrom
jonashaag:recipe-v1-extras

Conversation

@jonashaag

@jonashaag jonashaag commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Use v3 repo data to ship Ghostscript as optional dependency

This converts the recipe to the rattler-build v1 format and uses the new repodata v3 optional dependency groups (CEP under vote, open until 2026-08-20) to make ghostscript an explicit opt-in for the permissive variants:

  • agpl variant: unchanged — keeps the unconditional ghostscript run dependency (it links libgs, which is what makes it AGPL).
  • imagemagick variant: no longer hard-depends on ghostscript at runtime. It never links libgs (the existing test asserts gslib is absent from delegates); gs was only used as an external delegate subprocess. Users who want gs-backed PDF/PS/EPS conversion opt in via imagemagick[extras=[ghostscript]] (or by installing ghostscript themselves).

Default solves are unaffected: the +100 build-number offset still makes solvers prefer the agpl variant, which behaves exactly as before. Only users explicitly pinning build=imagemagick_* are affected, and for them shipping the AGPL gs binary implicitly arguably contradicts the point of that variant.

Draft because: requirements.extras requires rattler-build's --v3 flag, which conda-forge does not enable yet. Rendering was validated locally with rattler-build build --render-only --v3 against conda_build_config.yaml; both variants render with the expected build strings (agpl_h*_101, imagemagick_h*_1), run dependencies, and the extras group. Once conda-forge rolls out v3 output this can be un-drafted and rerendered.

Checklist

  • Used a personal fork of the feedstock to propose changes
  • Bumped the build number (if the version is unchanged)
  • Reset the build number to 0 (if the version changed)
  • Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
  • Ensured the license file is being packaged.

The permissive variants never link libgs; ghostscript is only an
external delegate. Drop the hard run dependency for them and declare a
'ghostscript' optional dependency group instead, so gs-backed PDF/PS/EPS
conversion becomes an explicit opt-in: imagemagick[extras=[ghostscript]].
The agpl variant keeps the unconditional run dependency.

Blocked on repodata v3 support in conda-forge (conda/ceps#146).

Closes conda-forgegh-326
@conda-forge-admin

Copy link
Copy Markdown
Contributor

Hi! This is the friendly automated conda-forge-linting service.

I wanted to let you know that I linted all conda-recipes in your PR (recipe/recipe.yaml) and found some lint.

Here's what I've got...

For recipe/recipe.yaml:

  • ❌ The recipe license should not include the word "License".

For recipe/recipe.yaml:

  • ℹ️ License is not an SPDX identifier (or a custom LicenseRef) nor an SPDX license expression.

Documentation on acceptable licenses can be found conda-forge.org > Docs > Maintainer Documentation > Contributing packages > SPDX Identifiers and Expressions.

  • ℹ️ Found bld.bat in recipe directory, but this is a recipe v1 (rattler-build recipe). rattler-build uses build.bat instead of bld.bat for Windows builds. Consider renaming bld.bat to build.bat.

This message was generated by GitHub Actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/31179030685. Examine the logs at this URL for more detail.

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.

2 participants