-
-
Notifications
You must be signed in to change notification settings - Fork 5k
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
Notes and request for advice on Perl bioconda => conda-forge migration #25110
Comments
cc @conda-forge/bioconda-recipes |
requirements:
build:
- {{ compiler('c') }}
- make # [not win]
- m2-make # [win]
# Run exports are used now
host:
- perl
- perl-dbi
run:
- perl
#- perl-dbi So, although I know |
9. Platform-specific make? I noticed build:
- make # [not win]
- m2-make # [win] Is this as it should be? I take it |
10. Build number For bioconda packages where the version is not changing, should |
11. No license: Somewhat surprisingly I'm running into packages with no license whatsoever. Can these even be included in conda-forge? If so, what should be used for the |
I'm not a perl or bioconda reviewer but just to answer your more general comments:
|
@BastianZim thanks for the reply.
Given that there are roughly 450 packages in need of migration, my plan right now would be to start in batches of 10 or so and see how that goes. Much can be automated but not everything (at least not without making more work).
Thanks -- on gitter I just got advice that this was not needed because of strict channel priority, so all migrated packages should start fresh at
That's what I suspected. I will try to contact authors as much as possible when this comes up. Unfortunately at least one I've come across so far has some rather widely-used dependencies in my field. |
I see; that is substantial. In that case (and depending how much work you want to invest) it might make sense to make PRs to the respective toolings such as skeleton, Grayskull etc. and add everything that you find from there. That way, it will be easier for you to create recipes. But that's up to you and how you want to approach it.
Yes I saw, that is correct, and newer setups should have strict channel priority enabled. In fact, we explicitly mention it in all of our guides and set up instructions, so there should be few cases where that is not set. To answer your question, no, there is no harm, and if you want to be on the safe side, you can do that. It could be though, that some bioconda recipes already have an increased build number which might have to be handled. Just note, that increased build numbers don't guarantee either that that is chosen. It just means that it is preferred.
Hmm that is annoying. Unfortunately, that is the current legal opinion so I'm not sure if we can go around that. But I understand the pain... :) |
Okay, I will just reset to zero. I had some code to extract the current build number from the bioconda recipe and increment it, but given the advice it makes sense to start fresh.
Good news on this front, for the instances encountered so far I've been able to find licensing statements either in comments in the source or else in the README/docs. Not ideal but satisfactory, and the LICENSE file can be added to the recipe. Very commonly for Perl packages the license is
|
Hi, how do I get help on a perl module that would have been in bioconda but is now a PR for conda-forge? If this passes the tests and gets accepted, then this will have been my first conda contribution and so I appreciate any help. |
Hi Lee, I just commented on your |
General comment:
Hello,
I would like to continue and build upon the efforts of others to bulk migrate bioconda Perl packages to conda-forge. I fully realize that general interest in this will fall somewhere in the range of weak to nonexistent, but I'd like to make sure that it is done properly the first time. https://conda-forge.org/docs/orga/guidelines.html#transferring-to-conda-forge provides some guidelines that will be followed wherever possible.
Below is a list of rules/observations/questions that have resulted from my initial exploration of the migration process. Some of them are Perl-specific and some are more general. Any advice on how to proceed with any of them is welcome and appreciated.
(mostly opinion) simple build scripts should be moved from
build.sh
to thescript
section ofmeta.yaml
. I don't know that there is any official guidance on this, but it makes sense to me.Architecture: Packages should be
noarch: generic
wherever possible. When this is not appropriate, packages should be built for as many platforms as is conveniently possible.Core modules: There are, according to my tabulation, 74
perl-*
recipes (some conda-forge, some bioconda) which are for Perl packages that are part of the "core" distribution for any moderately recent version of Perl, including all of those for which conda packages exist. These should not be needed as external dependencies (i.e. requiring 'perl' should be enough). During migration, I would remove these as dependencies in recipes, and also work on removing them from existing conda-forge recipes. If all reverse dependencies are migrated with these dependencies removed, then the packages themselves can be removed from bioconda without migrating them to conda-forge.run_exports: The
conda skeleton cpan
output containsrun_exports: weak: {{ name }} ={{ version }}
. Many existing recipes do not includerun_exports
at all. In bioconda, this is now required to be including in all recipes by their linting, and I have using{{ pin_subpackage(name, max_pin="x") }}
as a generic entry based on some of the bioconda docs. Personally, I don't want to introduce unnecessary restrictions on the solver. I would appreciate advice on what, if any,run_exports
should be specified by default.Jinja: All migrated recipes will use Jinja variables for, at a minimum,
version
andsha256
. I don't see a real need to use aname
variable as some recipes do, as this should never change (right?).Testing: All migrated recipes will include, at a minimum,
imports
statements for all of the modules included in the package (based on MetaCPAN API). Additional tests included in existing bioconda recipes will be transferred as well.Dependency chain: Conda-forge docs state
The order of migration will therefore need to be chosen such that only packages with no reverse-dependencies not in conda-forge will be migrated first, and so forth. The table below should help with this ordering.
More points may be added to this comment as issues arise. I hope that another thing to arise out of this is completion and merging of PR conda-forge/conda-forge.github.io#1790 based on any discussions here.
Here conda_perl_packages.20240121.csv is a table with information that I have compiled from conda-forge, bioconda, and MetaCPAN (linked rather than embedded as it is rather long). A few of the entries may be incomplete as in rare cases my code couldn't match the conda recipe names with top-level packages in CPAN. I think that most of the columns are self-explanatory, but I can add details as needed. The "river_bucket" column is a way that MetaCPAN uses to indicate how far up the CPAN dependency chain a package exists -- the higher the bucket the more downstream dependencies a package has. It may be a way to rank importance of migration, although the actual number of conda reverse-dependencies may be a more important criterion.
The text was updated successfully, but these errors were encountered: