Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds multiple PERL packages to support biber #29370

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

anjos
Copy link
Contributor

@anjos anjos commented Mar 7, 2025

Checklist

  • Title of this PR is meaningful: e.g. "Adding my_nifty_package", not "updated meta.yaml".
  • License file is packaged (see here for an example).
  • Source is from official source.
  • Package does not vendor other packages. (If a package uses the source of another package, they should be separate packages or the licenses of all packages need to be packaged).
  • If static libraries are linked in, the license of the static library is packaged.
  • Package does not ship static libraries. If static libraries are needed, follow CFEP-18.
  • Build number is 0.
  • A tarball (url) rather than a repo (e.g. git_url) is used in your recipe (see here for more details).
  • GitHub users listed in the maintainer section have posted a comment confirming they are willing to be listed there.
  • When in trouble, please check our knowledge base documentation before pinging a team.

Here is the first set of 5 packages no arch to build support for biber at conda-forge, as per discussion in
plk/biber#485 (comment)

ping @danielnachun

Copy link
Contributor

github-actions bot commented Mar 7, 2025

Hi! This is the staged-recipes linter and I found some lint.

File-specific lints and/or hints:

  • recipes/perl-class-singleton/recipe.yaml:

    • lints:
      • The following maintainers have not yet confirmed that they are willing to be listed here: conda-forge/perl-packagers. Please ask them to comment on this PR if they are.
    • hints:
      • Recipe with the same name exists in bioconda: please discuss with @conda-forge/bioconda-recipes.
  • recipes/perl-data-dump/recipe.yaml:

    • lints:
      • The following maintainers have not yet confirmed that they are willing to be listed here: conda-forge/perl-packagers. Please ask them to comment on this PR if they are.
    • hints:
      • Recipe with the same name exists in bioconda: please discuss with @conda-forge/bioconda-recipes.
  • recipes/perl-data-uniqid/recipe.yaml:

    • lints:
      • The following maintainers have not yet confirmed that they are willing to be listed here: conda-forge/perl-packagers. Please ask them to comment on this PR if they are.
  • recipes/perl-class-accessor/recipe.yaml:

    • lints:
      • The following maintainers have not yet confirmed that they are willing to be listed here: conda-forge/perl-packagers. Please ask them to comment on this PR if they are.
    • hints:
      • Recipe with the same name exists in bioconda: please discuss with @conda-forge/bioconda-recipes.
  • recipes/perl-class-inspector/recipe.yaml:

    • lints:
      • The following maintainers have not yet confirmed that they are willing to be listed here: conda-forge/perl-packagers. Please ask them to comment on this PR if they are.
    • hints:
      • Recipe with the same name exists in bioconda: please discuss with @conda-forge/bioconda-recipes.

@conda-forge-admin
Copy link
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 (recipes/perl-class-accessor/recipe.yaml, recipes/perl-data-dump/recipe.yaml, recipes/perl-class-inspector/recipe.yaml, recipes/perl-data-uniqid/recipe.yaml, recipes/perl-class-singleton/recipe.yaml) and found some lint.

Here's what I've got...

For recipes/perl-class-accessor/recipe.yaml:

  • ❌ license_file entry is missing, but is required.
  • requirements: host: perl=5.32 must contain a space between the name and the pin, i.e. perl =5.32
  • requirements: run: perl>=5.32 must contain a space between the name and the pin, i.e. perl >=5.32

For recipes/perl-class-accessor/recipe.yaml:

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

Documentation on acceptable licenses can be found here.

For recipes/perl-data-dump/recipe.yaml:

  • ❌ The recipe must have some tests.
  • ❌ license_file entry is missing, but is required.
  • requirements: host: perl=5.32 must contain a space between the name and the pin, i.e. perl =5.32
  • requirements: run: perl>=5.32 must contain a space between the name and the pin, i.e. perl >=5.32

For recipes/perl-data-dump/recipe.yaml:

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

Documentation on acceptable licenses can be found here.

For recipes/perl-class-inspector/recipe.yaml:

  • ❌ license_file entry is missing, but is required.
  • requirements: host: perl=5.32 must contain a space between the name and the pin, i.e. perl =5.32
  • requirements: run: perl>=5.32 must contain a space between the name and the pin, i.e. perl >=5.32

For recipes/perl-class-inspector/recipe.yaml:

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

Documentation on acceptable licenses can be found here.

For recipes/perl-data-uniqid/recipe.yaml:

  • requirements: host: perl=5.32 must contain a space between the name and the pin, i.e. perl =5.32
  • requirements: run: perl>=5.32 must contain a space between the name and the pin, i.e. perl >=5.32

For recipes/perl-class-singleton/recipe.yaml:

  • ❌ license_file entry is missing, but is required.

For recipes/perl-class-singleton/recipe.yaml:

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

Documentation on acceptable licenses can be found here.

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

@Varun786223
Copy link

@anjos

Hi Anjos, great work kicking off this PR—adding these Perl packages to get Biber running on conda-forge is a fantastic step! Linking it to plk/biber#485 really helps tie it together. The linter’s flagged a few things, so here’s a quick rundown to smooth it out.

To get this rolling:

License File: Could you add a license_file entry to each recipe.yaml? It’s usually LICENSE or COPYING from the package tarball—conda-forge needs that packaged.
Spacing Fix: Adjust perl=5.32 to perl =5.32 and perl>=5.32 to perl >=5.32 in the requirements—bot’s strict about spaces.
Tests: perl-data-dump needs a test section—something like perl -MData::Dump -e 'print "ok"' should work to verify it loads.
SPDX Licenses: The licenses (like “Perl Artistic”) aren’t SPDX identifiers yet—maybe map them to Artistic-1.0 or GPL-1.0-or-later? Check the SPDX list for matches.
Also, the bot flagged these overlap with bioconda—might be worth a quick chat with @conda-forge/bioconda-recipes to avoid stepping on toes. And @danielnachun, could you confirm you’re good being listed as a maintainer here? Just a quick nod if you’re in!

Once these are sorted, CI should light up green—super excited to see Biber land! Let me know if you’d like help tweaking the recipes. Happy to pitch in—great stuff so far! 😊

Copy link
Contributor

@danielnachun danielnachun left a comment

Choose a reason for hiding this comment

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

Thank you for initiating this process. These recipes in my repo were kind of a mess so I've made suggestions to "standardize" them correctly. Let's see how things look after these changes have been made to these 5 recipes.

Comment on lines 1 to 2
schema_version: 1

Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
schema_version: 1

We don't want these lines in the recipe, they are leftovers from my automatic conversion

- Class::Accessor::Faster

about:
license: perl_5
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
license: perl_5
license: Artistic-1.0 OR GPL-1.0-or-later
license_file:
- perlartistic.1
- perlgpl.1

This is the proper license metadata for the perl_5 licenses. Before using this, we need to check for each module in the "Browse" section in CPAN if it includes its own LICENSE file, which should take priority over the generic perl_5 license. For reasons I don't fully understand, a significant fraction of CPAN modules incorrectly leave the License field in the metadata as perl_5 despite providing their own LICENSE file.

Comment on lines 19 to 23
script:
- perl Makefile.PL INSTALLDIRS=site NO_PERLLOCAL=1 NO_PACKLIST=1
- make
- make test
- make install
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
script:
- perl Makefile.PL INSTALLDIRS=site NO_PERLLOCAL=1 NO_PACKLIST=1
- make
- make test
- make install
script: |
perl Makefile.PL INSTALLDIRS=site NO_PERLLOCAL=1 NO_PACKLIST=1
make
make test
make install
cp ${PREFIX}/man/man1/perlartistic.1 .
cp ${PREFIX}/man/man1/perlgpl.1 .

Let's this format for the script to improve readability. The last two lines are only needed if we need the perl_5 license - if the package has its own LICENSE file, we don't copy anything.

schema_version: 1

context:
name: perl-class-accessor
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
name: perl-class-accessor

We don't need to set name in the context because it's not used elsewhere.

sha256: bf12a3e5de5a2c6e8a447b364f4f5a050bf74624c56e315022ae7992ff2f411c

package:
name: ${{ name }}
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
name: ${{ name }}
name: perl-class-accessor

context:
name: perl-class-accessor
version: 0.51
sha256: bf12a3e5de5a2c6e8a447b364f4f5a050bf74624c56e315022ae7992ff2f411c
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
sha256: bf12a3e5de5a2c6e8a447b364f4f5a050bf74624c56e315022ae7992ff2f411c

Similarly, we don't need to use this in context, since its only used once further down.


source:
url: https://cpan.metacpan.org/authors/id/K/KA/KASEI/Class-Accessor-${{ version }}.tar.gz
sha256: ${{ sha256 }}
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
sha256: ${{ sha256 }}
sha256: bf12a3e5de5a2c6e8a447b364f4f5a050bf74624c56e315022ae7992ff2f411c

extra:
recipe-maintainers:
- danielnachun
- anjos

This comment was marked as resolved.

@Varun786223
Copy link

@anjos @danielnachun

Hi Anjos, thanks for kicking this off and being open to sprucing up these recipes—starting messy and refining is totally the way to go! These Perl packages for Biber are a great addition, and I’m glad we’re getting them dialed in. Daniel, your suggestions are spot-on for standardizing—really appreciate the detailed cleanup!

Anjos, here’s what I’d suggest folding in from Daniel’s notes to get this humming:

Trim the Fat: Drop schema_version and the context stuff (name, sha256)—just hardcode name: perl-class-accessor and sha256: bf12a3e5... in the package and source sections. Keeps it lean since they’re only used once.
License Fix: Swap perl_5 to license: Artistic-1.0 OR GPL-1.0-or-later and add license_file: [perlartistic.1, perlgpl.1]—Daniel’s right about SPDX. Quick CPAN check per module for custom LICENSE files is smart; if they’ve got one, use that instead and skip the generic copies.
Script Polish: Use the script: | format for readability—e.g., perl Makefile.PL ..., make, etc. Add those cp ${PREFIX}/man/man1/perlartistic.1 . lines only if we’re sticking with the perl_5 license fallback.
Maintainers: Toss in conda-forge/perl-packagers alongside you and Daniel—future-proofs it nicely.
These should clear up the lint noise (spacing’s still a thing—perl =5.32, perl >=5.32) and getmuches up most of the tests too—perl-data-dump still needs a test, but the rest should pass CI once cisagov/molecule-iam-user-tf-module#62 lands. Ping @conda-forge/bioconda-recipes about the overlap too, just to keep things smooth. Daniel, any thoughts on next steps once these are in?

Comment on lines 27 to 30
host:
- perl=5.32
run:
- perl>=5.32
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
host:
- perl=5.32
run:
- perl>=5.32
host:
- perl
run:
- perl

We don't have a noarch: perl equivalent to noarch: python, so I think even for noarch: generic packages, we can't just set minimum version. We need to update the perl feedstock to fill in all the newer versions we are missing, and then we can update the feedstock pinnings to cover all supported Perl versions. And eventually it would be great to properly implement a noarch: perl so that we don't have to build separate noarch packages for each version of Perl.

Copy link
Contributor

Choose a reason for hiding this comment

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

This should apply to all recipes as well - I meant to apply to the first one like the other comments!

- perl=5.32
run:
- perl>=5.32

This comment was marked as resolved.

@Varun786223
Copy link

Hi Daniel, thanks for the thorough reviews—your suggestions to standardize these Perl recipes are spot-on and will really help clean things up! I’ve looked into your changes, and they make a lot of sense. Dropping the perl=5.32 pinning to just perl for perl-class-inspector (and all recipes) is a smart move, especially with the goal of a noarch: perl down the line. The test block for perl-data-dump is a great simplification too—swapping run_test.pl for that test section should streamline things.

I agree we need to update the Perl feedstock to cover all supported versions before this fully works—otherwise, we might hit build issues. I’d suggest applying these changes across all five recipes:

Update host and run to perl (no version) with a comment like # Requires Perl feedstock update for all versions.
Add the test block to perl-data-dump as you outlined, and maybe extend it to the others (e.g., Class::Inspector for perl-class-inspector).
Here’s a quick example for perl-class-inspector:

yaml

host:

  • perl # Requires Perl feedstock update for all versions
    run:
  • perl
    test:
  • perl:
    uses:
    - Class::Inspector
    And for perl-data-dump:

yaml

test:

  • perl:
    uses:
    - Data::Dump
    - Data::Dump::FilterContext
    - Data::Dump::Filtered
    - Data::Dump::Trace
    I’d be happy to open a PR with these updates and file a feedstock issue to kickstart that Perl version work. Anjos, if you’re good with this, I can roll it out—maybe test with both rattler-build and conda-build to catch any quirks. Daniel, any other tweaks before we go? @conda-forge/staged-recipes, thoughts on this plan to get CI green?

Copy link
Contributor

github-actions bot commented Mar 7, 2025

To help direct your pull request to the best reviewers, please mention a topic-specifc team if your recipe matches any of the following: conda-forge/help-c-cpp, conda-forge/help-cdts, conda-forge/help-go, conda-forge/help-java, conda-forge/help-julia, conda-forge/help-nodejs, conda-forge/help-perl, conda-forge/help-python, conda-forge/help-python-c, conda-forge/help-r, conda-forge/help-ruby,or conda-forge/help-rust. Thanks!

@anjos
Copy link
Contributor Author

anjos commented Mar 7, 2025

@Varun786223 - you want to close this PR and open a new one with these package fixed? If so, please go ahead!

Do not hesitate in picking up further packages from plk/biber#485 (comment). It is going to be a large set of PRs.

@danielnachun
Copy link
Contributor

I'm also happy to resubmit these as they were originally my recipes and I know all the quirks!

@anjos
Copy link
Contributor Author

anjos commented Mar 7, 2025

No problem, @danielnachun - please go ahead! Let me know how to help.

@anjos
Copy link
Contributor Author

anjos commented Mar 8, 2025

Meanwhile, I implemented all required changes (I think) on the latest push.

@conda-forge-admin
Copy link
Contributor

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

I just wanted to let you know that I linted all conda-recipes in your PR (recipes/perl-class-singleton/recipe.yaml, recipes/perl-data-uniqid/recipe.yaml, recipes/perl-data-dump/recipe.yaml, recipes/perl-class-inspector/recipe.yaml, recipes/perl-class-accessor/recipe.yaml) and found it was in an excellent condition.

@conda-forge-admin
Copy link
Contributor

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

I failed to even lint the recipe, probably because of a conda-smithy bug 😢. This likely indicates a problem in your meta.yaml, though. To get a traceback to help figure out what's going on, install conda-smithy and run conda smithy recipe-lint --conda-forge . from the recipe directory. You can also examine the workflow logs for more detail.

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

Comment on lines +39 to +40
- ${{ environ["PREFIX"] }}/man/man1/perlartistic.1
- ${{ environ["PREFIX"] }}/man/man1/perlgpl.1
Copy link
Contributor

@danielnachun danielnachun Mar 9, 2025

Choose a reason for hiding this comment

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

Suggested change
- ${{ environ["PREFIX"] }}/man/man1/perlartistic.1
- ${{ environ["PREFIX"] }}/man/man1/perlgpl.1

Unfortunately this doesn't seem to work with ratter recipes. For these noarch recipes, I think we don't need to worry about avoiding Unix commands because we only build them on Windows anyway. And for the native recipes, I want to skip Windows for now because there are some issues with path handling of Perl packages on Windows anyway.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.

4 participants