-
Notifications
You must be signed in to change notification settings - Fork 134
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
Update the bioconductor skeleton to pin to packages in the same bioco… #353
Update the bioconductor skeleton to pin to packages in the same bioco… #353
Conversation
@nturaga If you have a way to get package descriptions without actually downloading the package tarballs please let us know. When I tested generating all of the bioconductor 3.8 skeletons it took quite a while simply because the various BSgenome and similar packages take a while to download. |
I think |
One thing that should probably be changed with this is that |
Hi @dpryan79 ,
|
A way to get a list of all the packages is,
The files there list all the packages in RELEASE_3_8, which you'll need to create/update all packages for R-3.5.1. |
@nturaga Thanks, but I think fetching |
Oh, Views I missed, thanks! |
I've updated this to use VIEWS instead of packages. Now tarballs are only downloaded if a package requires compilation (to try and determine which compilers are actually needed). This is still being tested. |
The tests only failed due to a time out, maybe someone can rerun that. |
1. how the bioconductor versions are obtained. It is a more straightforward way. 2. refractor 'latest_bioconductor_version()' to 'latest_bioconductor_release_version()' which is more accurate. 3. add 'latest_bioconductor_devel_version()' for future purposes.
Minor changes which fix,
I suspect conda-build will need to be updated. I've found a recipe ( @nturaga For packages requiring compilation, is there any way to determine what language they're written in (C, C++, fortran, etc.) without downloading the packages and looking? As an aside, the single slowest step in skeleton creation is checking URLs for tarballs. For some reason, some of the servers seem to sporadically delay for 15-20 minutes before replying to a |
… HG_ from summaries.
Further changes
I've updated the PR to replace instances of |
FYI, I count about 200 CRAN packages that will need to be updated/added in conda-forge if we use |
HI @dpryan79 , The package |
There are a number of CRAN packages in bioconda, it's mostly a matter of how "directly related to biology" we consider that package to be. I agree that it's probably best to put it in conda-forge, but then again it's then the only part of the bioconductor ecosystem that's not then part of bioconda. |
I believe @mtmorgan might be able to provide some suggestion for this. I understand your point of view and agree that it since it's part of the bioconductor ecosystem it should be part of bioconda. My understanding while using conda is, we install packages only through bioconda/conda-forge via
I'm not sure if this will create any problems, but it is worth checking to see if it does. i.e make sure they are both installing in the same R-lib (this can be checked with the command Regarding your other comment, I believe it is worth updating all the conda-forge recipes which need to be updated as a result of the |
I can't comment on how well it works to mix conda and traditional installation methods for packages, that's often a recipe for headaches for other languages (e.g., python). I was also surprised to see some bioconductor recipes depending on biocmanager, I wonder if they're incorrectly listing it. I'm happy to add/update the relevant CRAN packages. For what it's worth, I haven't checked to see how many bioc packages actually specify versions for all of their CRAN dependencies (when they do we specify that in the recipe). |
If you capture 'Suggests:' in the recipe then authors will often use BiocManager() in an (unevaluated) code chunk to illustrate installation; a few packages, including core packages maintained by us, do actually try to install, e.g., annotation packages 'for' the user; not a very good practice! I think of BiocManager as a Bioconductor package that happens to be hosted on CRAN for expediency (to avoid users copy / pasting URLs into their sessions). |
They're not from |
Hi @dpryan79 , I've looked for ways if this is possible. It seems like the answer is no. There is no way to figure it out without downloading the package. |
@nturaga Too bad, but understandable. That might be something to think about for future bioconductor releases (I guess you'd just copy over that info from here, since it's then already been done). |
SystemRequirements in the DESCRIPTION file provide dependencies which are usually not fulfilled by the bioconductor-skeleton.py. These usually represent external dependencies. Take for instance the package 'rsbml', which has the SystemRequirement, libsbml (==5.10.2). This is not fulfilled by this script, and should throw a warning to the user that there is a recipe for libsbml is also needed. There are many packages which have such SystemRequirements with Bioconductor, as shown in this gist. https://gist.github.com/nturaga/39185116b8681264e7405b868e00d405 If there are suggestions from the Bioconda team to standardizing the format of SystemRequirements, I could try to get them standardized across Bioconductor packages, so we have a better chance of fulfilling them automatically. I'm cc-ing @mtmorgan, and @vobencha to help answer add context if needed.
Add check for SystemRequirements,
This is now updated with the most recent PR from @nturaga. It additionally includes Example from DESeq2:
And from rsbml:
Obviously both can appear. |
Hi @dpryan79, Just wanted to bring another issue to notice. In a fresh environment, i'm trying to install
Is there a reason this is happening which i'm not thinking about? My initial guess was, it is because |
I have no clue how conda prioritizes packages when there are two equal versions. If you specified "r-base==3.5.1" in addition this wouldn't happen. |
Actually, the 3.4.1 version may have been uploaded slightly later, so it's likely that suffices to be considered the "newest" version (when the actual versions are otherwise the same). |
Regarding the SystemRequirements, i'm going to take a look at these two packages to find out if they are of use to us in standardizing the installation of these libraries to ensure the package installation succeeds. https://github.com/r-hub/sysreqs https://github.com/r-hub/sysreqsdb Do you know if there is an easy way to find conda recipes for the requirements mentioned in the |
Most packages have the same name. For finding just a few packages |
@bioconda/core I think @nturaga are both happy with the current state of things, so as long as he/you all agree this can get merged and we can start the build for bioconductor 3.8. |
I concur with @dpryan79. We can deal with the |
Will look at it now .... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Given a package name, return the version pin string. | ||
|
||
For example, if version 1.2.3 is in the current bioconductor release, | ||
then return >=1.2.0,<1.4.0. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dpryan79 If I understand correctly, odd minor version numbers are used in Bioconductor for development versions, so wouldn't it be safer to pin >=1.2.0,<1.3.0
(i.e. use + 1
in line 527) ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could go either way on that. In practice development versions aren't released, but at least with the current set up if someone makes a package for one it'll use the at-the-time most-recent bioconductor release rather than one that hasn't come out yet. I don't really have a preference there myself, but obviously if @nturaga and the bioconductor folks would prefer a narrower pinning we can easily make that happen.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ignore this comment, if its too confusing:
We could also define run_exports
for every bioc package like, https://github.com/conda-forge/qd-feedstock/blob/ca38df9a1c4bd61ed32dce2e83807cf37e85bd51/recipe/meta.yaml#L15
This would give us the correct pinning also for other package (not only bioc).
However, the current approach is more explicit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, we'll narrow the pinning, that's not a problem at all.
If we want to avoid users mixing packages from different bioconductor releases, we could have a meta-package |
I don't think this is needed, we currently take the Bioconductor release version information from https://bioconductor.org/config.yaml, which is kept up to date by the Bioconductor team. This is how the skeleton works in this PR, so going forward the release is not something that is hard-coded. |
…nductor release. This closes bioconda/bioconda-recipes#11456 as best I can tell.
This also adds the ability to update/create all bioconductor packages in a single command, which is quite handy when new bioconductor releases come out. Further, this changes the
r_base
pinning project wide to 3.5.1. The update process for bioconductor 3.7 really drove home that we should just build for the most recent R release, since otherwise it's a massive annoyance to track down the various packages that need a customconda_build_config.yaml
.