-
Notifications
You must be signed in to change notification settings - Fork 140
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
Conda Installer recipe #417
Conversation
It looks like ssl_match_hostname, beautifulsoup, pyramid, weberror and zope.deprecation are in the base repos and can be removes from this PR. |
Also, the sphinx stuff can probably be removed, since that's just for building the docs. |
I'm not super familiar with conda, is there a generic place where we could just submit the binaries of our dependencies so that we don't need to host them? If we can make sure this is stable moving forward I am happy to merge this in. Last few action items:
Thanks so much @rmcgibbo! |
yes, that place is binstar.org. after building the binaries, you can upload them with |
Awesome, if you want to minify the reqs of custom binaries I'm happy to pull this in. Thanks again. |
I just tweeted at some of the conda developers, so there might be a possibility that some of the dependencies could be incorporated into the base conda repos. |
Sweet! Thanks @rmcgibbo! |
|
||
source: | ||
git_url: https://github.com/Yelp/MOE.git | ||
git_tag: v0.2.1 |
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.
Could you add a note in:
docs/contributing.rst
to bump these version numbers when we tag new MOE releases? Also, are there any other steps needed to make your conda build system pick up the new changes?
lastly, if we need to bump versions of dependencies, is that as simple as editing the related yaml file?
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.
The conda-recipe/moe/meta.yaml
can list version numbers on the dependencies, similar to the requirements.txt
file. If no version is listed, the conda install
resolver will just grab the latest.
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.
Hm, then it'd be nice to auto-generate these so reqs are multiply specified. todo for later
One question:
would be able to eliminate one dependency, I think (or do you know if some simplejson-specific functionality is used?) |
Yeah, we can move back to |
do you want the try-except import, or just to use the stdlib's |
That link indicates it's preferable to use |
We tell people to use python 2.6+ so there shouldn't be an issue with json not being in the stdlib. But I guess the try/except allows us to get the latest and greatest simplejson (although we would only benefit from speed boosts since we don't do anything special). |
Er, I meant the json in the python 2.6/2.7 stdlib will not be updated in the future. So if we want to keep up with new developments, we should keep the requirement? Will simplejson and json remain compatible for all time? Just seems simpler to leave it around; I don't think it adds much to the build time/complexity. |
okay, np. I won't mess with it. |
Okay. I think this is ready for someone else to take a spin with. I added a Vagrantfile that sets up the build environment for the binaries. |
Excellent. I'll give it a shot tomorrow and we can merge it in. Thanks again @rmcgibbo! |
# https://github.com/rmcgibbo/conda-cheminformatics/tree/master/boost | ||
conda config --add channels https://conda.binstar.org/rmcgibbo | ||
|
||
git clone https://github.com/rmcgibbo/conda-moe.git |
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.
Can you update the README to reflect where the relevant files/folders will live inside the MOE repo?
Yeah, I'm happy to use a different one. I just didn't want to introduce an external dependency into the conda install, security-wise. |
Hey @rmcgibbo, I'm having trouble building conda on a ubuntu 14.04 system with the pull as-is. It looks like you copy libstrc++.so explicitly from /usr/lib, but I have that nested within different version directories (gcc-4.7, gcc-4.8 etc). This may be just an ubuntu version issue, but is there a standard way for conda to find dependencies like this, regardless of where they are? |
You should only need to build the package once, and the build needs to be done on a really old linux to ensure compatibility -- thus the vagrantfile using ubuntu 10.04 |
When you build binaries on a later version of linux, because of the way the symbols in libc are versioned, you'll only be able to run those binaries on that version of linux or later, or you get things like |
Gotcha, I was reading the docs wrong... Testing the install now. Sorry for the confusion! |
@rmcgibbo can the boost thing be configured? like default to using the prebuilt package but optionally build-from-scratch if the user is concerned? I would hope people aren't uploading 'virused' libraries but I guess in principle it's possible. |
The user doesn't build anything from scratch -- the people who do the packaging (developers, etc) build the binaries once and then the users just install them. Conda has the concept of "channels" which are kind of like like Ubuntu PPAs -- there are the base channels published by the company that backs conda (ContinuumIO), and then there are binstar channels where you can put your stuff up, and users have to opt in for your channel. Boost isn't included in the base channels. So if hypothetically yelp were to put up a binstar channel at |
It would be possible, for instance, to download mutirri's boost binaries and re-upload them into yelp's binstar channel. Or the install docs could say, "first add our binstar channel. then also add mutirri's. and then you can But all of these binaries only need to be built once. When you come out with a new version of MOE, you probably don't need to update to the very latest version of boost (?), so you wouldn't need to build new packages for boost. |
D'oh, sorry about the super late follow-up on this :( I don't think we're going to be able to set up a yelp binstar channel. Maybe we can create one just for MOE. But for now I'm merging this in so people can use it as a 'curated' build with 'long term support' plans through our own channel to come later. Sound reasonable to you? Thanks again for setting up conda for us @rmcgibbo! I'm going to go ahead and merge this later today or tomorrow. Adding a short TODO for myself here:
|
cc #416. As I said there, I'm not sure if you guys really want to maintain the installers for the whole dependency stack. It's possible that I was a little overzealous here -- there might be a couple packages that are included in the base conda repos [1] that aren't necessary here.
[1] http://repo.continuum.io/pkgs/free/linux-64/index.html