-
Notifications
You must be signed in to change notification settings - Fork 37
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
Decide strategy with respect to -dev releases (via labels or otherwise) over conda #539
Comments
Both the Linux and OS X packages on anaconda.org/omnia are built using the Travis CI associated with this repository. The OS X build process is actually simpler than the linux build, because there's no docker. On OS X, Travis's VMs run starting from this code in .travis.yml, which executes this script, which triggers a build of any recipe in this recipe which has been updated. Neither https://github.com/choderalab/openmoltools/blob/master/.travis.yml nor https://github.com/choderalab/openmoltools/blob/master/devtools/travis-ci/after_success.sh have anything to do with uploading compiled binaries to anaconda.org for Line 24 in https://github.com/choderalab/openmoltools/blob/master/devtools/travis-ci/after_success.sh does upload a package to anaconda.org, but that package is called "openmmtools-dev", not "openmmtools" and is never built on OS X (because https://github.com/choderalab/openmoltools/blob/master/.travis.yml doesn't tell travis to use OS X -- it's linux only). |
Sorry, I'm not to the omnia stage yet. I was just trying to figure out how Thanks for the pointer to the builds here though; I'll see if those recipes On Fri, Jun 10, 2016, 6:15 PM Robert T. McGibbon [email protected]
|
I think these -dev binaries are a bad idea, which is one of the reasons that they haven't been widely used. IMO conda is a useful tool for distributing released software to end users, which is what this repository is about. Conda is not well suited to distributing in-development snapshots to the developers themselves. Sent from my iPhone
|
To clarify -in this case really all I was trying to do was figure out how I should have made more clear that this wasn't an omnia question per se as Thanks. I think the clarification you provided helped. On Fri, Jun 10, 2016, 6:29 PM Robert T. McGibbon [email protected]
|
In that case, the key command you need to play with is just "conda build", and also possibly "anaconda upload". Sent from my iPhone
|
@rmcgibbo: We were thinking of phasing out the -dev packages in favor of
uploading a 0.0.0 package to the dev label. Do you think this is a bad idea
too?
If so, any suggestions for packages that need to test against multiple
dependencies on Omnia that are still evolving? Frequent point releases
instead?
|
The dev "label" is slightly better than the -dev package, but yes, I still think that the best tools for developing software are git and pip install -e, not conda. Sent from my iPhone
|
Right, I got those working earlier. I was just trying to understand how the Hopefully I can just move to getting a working recipe into omnia very soon Thanks. On Fri, Jun 10, 2016 at 6:47 PM, Robert T. McGibbon <
David Mobley |
Back to the philosophy issues a bit:
I do use the So, my take is there's room for conda-installable development versions, however we get access to them. We certainly use these a lot, in my group. |
I'm not sure what this shows -- the fact that your students use these conda binaries is not, in and of itself, evidence that conda is a good tool for distributing development snapshots. To the contrary, the conda parmed-dev files on anaconda.org are currently clearly outdated with respect to the master branch of the repository. The conda files appear to have been last uploaded over 1 month ago, while the latest commit to github.com/parmed/parmed was 7 days ago. On the other hand, |
Parmed-dev hasn't been updated because we had to disable the conda-dev-recipes when updates to conda-build-all broke that repo, you may recall. Fixing this is something we haven't had time to yet. Your pip install suggestion only works if all dependencies are automatically installable via pip, right? What if some packages are only available via conda? Or what is the difference between installing some packages via their conda vs pip versions? These are not even guaranteed to be synchronized. And is this the best thing to use for testing if it isn't guaranteed that you are getting the conda versions of dependencies? To me, the pip route sounds even WORSE than what we currently do, at least for packages that have dependencies in conda. |
The -dev recipes are seemingly always somewhat broken or disabled though, which is my point. The pip solution actually does work. Sent from my iPhone
|
Really?
Looks like this doesn't work at all. And how would it pull in I think we may have different definitions of "work". |
I think the |
When you're developing software, you don't have numpy installed? We're not talking about distributing software to end users, we're talking about developers by assumption. Sent from my iPhone
|
Apologies for being unclear: I'm talking about automated travis testing involving upstream packages that rapidly change. The current system is mostly broken, and we're evaluating a few options for fixing this:
|
I should probably have ParmEd declare numpy as an explicit dependency for pip to understand, so that's probably my fault. That said, once numpy is installed, ParmEd just works. If you need parts that need OpenMM, you'll be told to install OpenMM (which you can easily do via conda). I tend to agree with @rmcgibbo that, at least for packages that work well with pip at the source level (so not OpenMM, for instance), pip install from the head of the git tree beats the I've also never had problems with pip not understanding things that conda has installed, and vice versa. They will never use each other to satisfy dependencies, but they harmonize with each other just fine. So such a suggestion will not scale if you need to use lots of But if you're living on the bleeding edge for so many packages that sometimes using pip is too much of a pain, you're asking for a whole lot more problems than difficulty in resolving cross-package-manager dependencies. So if you just need to make sure you get the latest ParmEd instead of the stable conda package, just use pip. |
conda install parmed and then pip install master branch. conda will resolve all the dependencies and you'll get the latest parmed code. substitute parmed for anything |
I'm inclined to chime in on the side of conda over pip. I've had undergrads Matthew Harrigan's solution also sounds good. But certainly pip is not as On Sat, Jun 11, 2016 at 11:56 AM, Matthew Harrigan <[email protected]
David Mobley |
I'm not sure if making it easy for undergrads on Windows with no programming/computing experience to get bleeding-edge academic code running should be our priority. This use case seems much better suited to frequent releases, stable releases, or both |
Are you sure? There are no Windows binaries for Let me just run through the my memory of the sequence of events. When we started setting up conda-based buid infrastructure and continuous integration, IIRC a few of the PG projects like MDTraj and MSMBuilder changed their travis scripts to upload built binaries after testing to anaconda.org (then called binstar.org). John then began to use this pattern for some of his group's software as well. This was all done using travis-ci's linux build infrastructure. There were never any These binaries had a lot of problems, which led Matt and I to remove them for the packages that we worked on. Some of those problems, from my perspective, were.
John and David seem to be talking about two different use cases in this thread.
|
So, I realize OS X builds via travis are currently broken ( #537 ), but - could someone explain to me how they are normally (when not broken) generated via Travis-CI (?) (i.e. for
openmoltools
)?I'm trying to figure out how to get Travis to generate and upload builds to
anaconda.org
for my package, modeling it after whatopenmoltools
is doing in https://github.com/choderalab/openmoltools/blob/master/.travis.yml and https://github.com/choderalab/openmoltools/blob/master/devtools/travis-ci/after_success.sh, but this actually only seems to generate linux builds via Travis-CI (yet I canconda install openmoltools
on OS X) so I'm confused about where the OS X builds are coming from. I'm guessing the answer in this case is "not from travis", but if so, does someone have a working example of generating OS X builds from travis that I could consult?Thanks.
The text was updated successfully, but these errors were encountered: