Closed peastman closed 8 years ago
We can tag issues for 7.0...
The openmm-dev
conda build is still broken on osx
:
Fixing linking of @rpath/libOpenMMPME.dylib in /Users/travis/anaconda/envs/_build/lib/plugins/libOpenMMPME.dylib
Fixing linking of @rpath/libOpenMM.dylib in /Users/travis/anaconda/envs/_build/lib/plugins/libOpenMMPME.dylib
Fixing linking of /usr/lib/libSystem.B.dylib in /Users/travis/anaconda/envs/_build/lib/plugins/libOpenMMPME.dylib
Fixing linking of @rpath/./libfftw3f.3.dylib in /Users/travis/anaconda/envs/_build/lib/plugins/libOpenMMPME.dylib
Fixing linking of @rpath/./libfftw3f_threads.3.dylib in /Users/travis/anaconda/envs/_build/lib/plugins/libOpenMMPME.dylib
Fixing linking of /usr/lib/libc++.1.dylib in /Users/travis/anaconda/envs/_build/lib/plugins/libOpenMMPME.dylib
install_name_tool -add_rpath @loader_path/../ /Users/travis/anaconda/envs/_build/lib/plugins/libOpenMMPME.dylib
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: object: /Users/travis/anaconda/envs/_build/lib/plugins/libOpenMMPME.dylib malformed object (load command 18 cmdsize is zero)
Error: install_name_tool failed with exit status 1
ERROR: File does not exist: /Users/travis/anaconda/conda-bld/osx-64/openmm-dev-0.0.0-py34_0.tar.bz2
Package failed to build (return code 1); will not upload.
We probably need to fix this before we are able to rebuild a new 7.0 release candidate.
When did it break? How did the beta get built?
When did it break?
Clicking on the travis badge on the conda-dev-recipes
page and going to "Build History" gets you the list of travis builds (which are performed nightly) where we can see that it broke in this build.
Unfortunately, I don't know what changes were made that caused this to break. Nobody besides me seemed to want to have these dev packages built by the openmm repo travis, so we're stuck with a case where you having to figure this out by looking through the openmm
, omnia-md/conda-dev-recipes
, and omnia-md/conda-recipes
commit histories.
How did the beta get built?
We built it before someone broke the dev builds, and now we have to unbreak it before we can build the release candidate.
Unfortunately, I don't know what changes were made that caused this to break
You can very easily get the git hashes of the last successful build and the first failing build from the travis logs
commit 9b5b52f2bf2e851efdd0733fed3e83a24d9f16af
Merge: b768ff4 71cb735
Author: peastman <peter.eastman@gmail.com>
Date: Fri Mar 4 12:54:01 2016 -0800
Merge pull request #1407 from peastman/coefficients
Updated default coefficients for extrapolated polarization
edit: cc #1419
Just to keep this up to date, there are currently two issues I know of that need to be resolved for 7.0: the error building the conda package (#1419) and the crashes with AMOEBA (#1427). As soon as those are resolved, I believe we can build the release candidate.
You can very easily get the git hashes of the last successful build and the first failing build from the travis logs
Thanks!
It looks like the AMOEBA crashes are probably from too large a time step, not from a bug. So as soon as #1442 is merged, I think we'll be ready to build the release candidate. Does that sound OK to everyone?
Sure.
Ok! I've created the tag 7.0rc1
. Let's build the release candidate!
Which recipe should I use to build the Windows conda installers?
Working on creating new conda recipes...
Which package/channel should these conda recipes get pushed to? Do we want
openmm
as 7.0rc1
so users get this by defaultopenmm
as 7.0rc1
but to pre
label so they would have to specify conda install -c omnia/label/pre openmm
to get it?openmm-dev
Users should not get this by default. Until it becomes the official release, conda install openmm
should continue to install 6.3.1. I don't much care what the exact command they do type to get it is though.
I've created a PR for conda-recipes
here. I believe @marscher's changes to conda-build-all
mean that we will see these appear with the pre
label, requiring the user to invoke
conda install -c omnia/label/pre openmm
to install. The advantage is that we won't have to have the user manually uninstall the existing openmm
package.
On 29.03.2016 01:34, John Chodera wrote:
I've created a PR for |conda-recipes| here. I believe @marscher https://github.com/marscher's changes to |conda-build-all| mean that we will see these appear with the |pre| label, requiring the user to invoke
conda install -c omnia/label/pre openmm
to install. The advantage is that we won't have to have the user manually uninstall the existing |openmm| package. Yes - you're right with all you said.
Thanks for the confirmation, @marscher!
The openmm
7.0rc1
package is now posted for linux
:
https://anaconda.org/omnia/openmm/files
Not sure why osx
didn't build. Looking into this.
Thanks to @marscher, osx
packages are up now too:
https://anaconda.org/omnia/openmm/files
I'll build the Jenkins tarballs now.
I've merged #1444 and moved the 7.0rc1
. Sorry for making you rebuild!
We really should just issue a new tag 7.0rc2. There's no drawback I can think of, and it has the benefit of disambiguating the previous tag and @jchodera 's packages he already built
I've merged #1444 and moved the 7.0rc1.
Wait, what? You moved the tag?
Move it back. We're on 7.0rc2 now. 7.0rc1 conda packages are already out in the wild.
"rc1" means "the first release candidate we release". If we only post one release candidate, and there are two different tags called rc1 and rc2, people won't be able to tell which one goes with the thing we actually released.
This is why I usually prefer to not add tags until after we've already posted the release (so we know what commit it actually went with). But @chodera gets upset when I do that.
Move it back. We're on 7.0rc2 now. 7.0rc1 conda packages are already out in the wild.
What are you talking about? I certainly haven't released anything yet, and you shouldn't have either! Once all the files are ready, I post everything at once.
Look: You asked me to build the 7.0rc1
conda packages. They were built and uploaded to binstar under the pre
tag. They may be on people's machines now, and the only want to make sure that we can update them and check that we have the right version is to build a release with a newer version number. Otherwise, we have to ask anyone who has the old 7.0rc1
to manually remove the package, clear their conda caches, and reinstall, which will just make things confusing. That's why we have version numbers here.
Don't worry, we won't run out of version numbers.
If you'd like to take over all the conda stuff instead of asking me to do things and then getting confused when I do them, that's fine. It's a huge time sink for me.
Alright, I'm trying very hard not to start screaming.
Here is how releases are going to happen. This applies to all official numbered releases, including ones with "beta" or "release candidate" in the title.
First, we will build and collect all installers, both zip installers and conda packages. Then we will do some minimal testing of them: basically making sure they can install correctly and the testInstallation script runs. Then and only then, we will post them all at once, both to simtk.org and to the appropriate conda channels. Until everything has been built and tested, nothing will be released in any way that end users might get it. That is how releases have always worked, and that is how they will continue to work.
You and me both.
I suggest you document this process here instead of asking us to read your mind: https://github.com/pandegroup/openmm/wiki/Cutting-an-OpenMM-release
Note that our conda build system doesn't support the scheme you describe. Once we commit the 7.0rc1
recipe to the omnia/conda-recipes
repo, it gets built and pushed to anaconda cloud with the pre
tag. Someone would need to explicitly request conda install --c omnia/labels/pre openmm
to install it at that point---it doesn't get picked up automatically. But if someone has done that here at MSK or elsewhere, I'd need to track them down and have them clean the package out with conda remove --yes openmm ; conda clean -plits --yes
in order to get rid of it. That was the situation I was hoping to avoid by having you increment to 7.0rc2
instead.
In your release cycle specification, it sounds like you want the conda packages to be built and tested before they go up to anaconda cloud. You are welcome to do this if you want---you can update the conda recipe locally, build locally with conda build openmm
, and test locally if you really don't want to even risk having the release candidate pre-build (???) up on anaconda cloud with the pre
label. We don't support this, however, so you'd be on your own for that.
You say that as if this were something new. This is precisely how every release we have ever done has happened. So please understand my frustration. It appears (from my point of view) that you just decided to change our release procedure without consulting anyone or telling anyone about it. We have always tested releases before posting them. This isn't something new.
Someone would need to explicitly request conda install --c omnia/labels/pre openmm to install it at that point
Ok, I don't think that's a big problem, especially since we haven't yet posted those instructions anywhere for end users. In the same way, people can always get the source from github, or the latest openmm-dev build. They don't expect that to be anything official. The important thing is anything we publicly advertise as "a release candidate of OpenMM 7.0".
In your release cycle specification, it sounds like you want the conda packages to be built and tested before they go up to anaconda cloud.
Correct. That's essential for any official release. But again, it isn't that they can't be anywhere in anaconda cloud. They just can't be somewhere that we've advertised to users as containing official releases.
One other important point: building and deploying necessarily need to be decoupled so that, once we accept a release candidate as the official release, we can post it to the main channel without rebuilding it. Because if we rebuild it, that creates more opportunities for something to go wrong, so it's a new release candidate.
One other important point: building and deploying necessarily need to be decoupled so that, once we accept a release candidate as the official release, we can post it to the main channel without rebuilding it. Because if we rebuild it, that creates more opportunities for something to go wrong, so it's a new release candidate.
This is an honorable goal. With the current setup, you'd need to re-build to change the version string
Because if we rebuild it, that creates more opportunities for something to go wrong
See fftw issue on macos x :)
See fftw issue on macos x :)
Exactly!
Moving tags around still seems like a no-no. Maybe it's not ideal, but at this point we need to start calling things rc2 or we will start having to say "the first rc1" and "the second rc1" when talking about builds and issues
Let's put aside tags for the moment then. We should currently be building revision f4339363dcc4c904b2baae05949dedc0676b3f50. Once it's actually posted and we're agreed on what it's called, we can make a tag to record that.
You say that as if this were something new. This is precisely how every release we have ever done has happened. So please understand my frustration. It appears (from my point of view) that you just decided to change our release procedure without consulting anyone or telling anyone about it. We have always tested releases before posting them. This isn't something new.
If it's not documented in detail, there is no standard procedure. I don't know what you did last time. I don't know what I did yesterday. We are very busy, but I can follow a sufficiently well-documented procedure.
Ok, I don't think that's a big problem, especially since we haven't yet posted those instructions anywhere for end users.
It isn't currently a big problem, but as @mpharrigan points out, moving tags around is VERY BAD. DO NOT DO THIS. It could get us in a situation in which we (1) don't know what code is in the wild and (2) have no way of forcing updates to the latest version.
Correct. That's essential for any official release. But again, it isn't that they can't be anywhere in anaconda cloud. They just can't be somewhere that we've advertised to users as containing official releases.
So you're OK with the release candidate packages going up into the pre
label?
One other important point: building and deploying necessarily need to be decoupled so that, once we accept a release candidate as the official release, we can post it to the main channel without rebuilding it. Because if we rebuild it, that creates more opportunities for something to go wrong, so it's a new release candidate.
Again: Are you OK with automatically building the release candidate conda packages onto the conda cloud with the pre
label?
Let's put aside tags for the moment then. We should currently be building revision f433936. Once it's actually posted and we're agreed on what it's called, we can make a tag to record that.
Two things here:
version
strings aren't correct?linux
osx
and source
packages for that particular git tag? Or build conda packages and send them to the pre
label? What precisely do you want us to be doing?Also, PLEASE DOCUMENT THIS PROCEDURE IN DETAIL. Make a checklist with clear roles for each person. I can follow checklists. I can't read your mind or remember what you did last time.
So you're OK with the release candidate packages going up into the pre label?
I don't know what that means. Here is what I am trying to say. Let me know if any of this is not sufficiently precise.
Is that sufficiently clear?
Thanks for being precise here, but please document the procedure as a checklist in the wiki we have for this purpose.
Builds are underway for the zip distributions.
conda packages: As I mentioned earlier, our current scheme does not support the building of conda packages without automatically uploading them to anaconda cloud. Currently, versions tagged as X.YrcZ
get uploaded to the pre
label on anaconda cloud (like 7.0rc1
was) which is a nice safe place that is not normally distributed to people since you have to specifically say conda install -c omnia/labels/pre openmm
to get it---that we do support and I would be happy to do that. Anything else you might want is up to you. I've previously suggested some alternatives that would let you test builds as potential release candidates we could eventually automate, but it would take some time, and you probably don't want to wait a few weeks to sort this out.
How about you put all of that in the wiki as a checklist?. I'm certainly not going to come here to look up this procedure next time.
please document the procedure as a checklist in the wiki we have for this purpose.
I'm on it!
Currently, versions tagged as X.YrcZ get uploaded to the pre label on anaconda cloud
Presumably we'd need a way to upload a version tagged as 7.0 (no rc) to the pre label, and when we're satisfied with it, move it to the "main" label. i.e. what it seems those labels were designed for:
http://docs.anaconda.org/using.html#UsingLabelsInTheDevelopmentCycle
What about adding a section to the meta.yaml
called label
where you can choose what label it should be uploaded under?
In fact, that sort of flow would be really useful for all the conda packages. We could have msmbuilder hanging out in pre
for a bit and then click a button to unleash it on the world (without building a potentially different binary a thousand times)
What about adding a section to the meta.yaml called label where you can choose what label it should be uploaded under?
Is this supported by conda build?
Is this supported by conda build?
We would have to add this capability to conda-build-all
.
Thanks! Looks good.
Some comments:
7.0rc1
) attached to a particular git revision?Is this supported by conda build?
We would have to add this capability to conda-build-all.
Can you add extraneous tags to meta.yaml
without conda build complaining?
I think we're getting close to being ready to build a release candidate of 7.0. I've been going through the tracker looking for anything that still needs to be resolved, and there's not much left. But I'd like to have everything in one place. So if there's anything you think still needs to be fixed for 7.0, please post it here.