Skip to content
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

(experimental) add Conda Recipe for OS X #151

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

ahmadia
Copy link
Contributor

@ahmadia ahmadia commented Jul 17, 2016

Don't merge this yet, working on my box but needs testing (and porting to Linux).

You can test this by downloading/installing conda (via Anaconda or Miniconda), then installing elemental with something like the following:

conda install -c elemental -c conda-forge elemental

Then the python should have access to elemental, and the library will be installed into the conda environment.

@poulson - I registered the elemental account on Anaconda.org so you would own the namespace, I can set you up with permissions on it once you have an Anaconda.org account.

@poulson
Copy link
Member

poulson commented Jul 17, 2016

This should be very helpful, thanks!

I assume that it is conda.recipe/cmake_parmetis.patch that needs to be generalized (as it has some hardcoded paths)?

@ahmadia
Copy link
Contributor Author

ahmadia commented Jul 17, 2016

Yeah those patches shouldn't be needed at all but something is fishy with cmake build on conda OS X. Linux recipe should be straightforward. Nice thing is it takes about five minutes to get a working install depending on your Internet speed.

@ahmadia
Copy link
Contributor Author

ahmadia commented Jul 17, 2016

And that patch is on the build side, it's not needed in the conda package itself. May need to write a short line of sed to do the fix in a slightly better way.

@gidiko
Copy link

gidiko commented Jul 17, 2016

Very-very recently we are seeing success in exposing libskylark as a set of conda recipes

Our most critical dependency is libelemental and so we put together for our needs a working recipe for linux64 available here

We pinned libelemental to a somewhat recent hash (just for the moment to insulate ourselves from any API changes). Let us know how we could help.

@ahmadia
Copy link
Contributor Author

ahmadia commented Jul 18, 2016

Awesome, I will start from there (and noticed a few mistakes in my recipe).

@poulson
Copy link
Member

poulson commented Jul 28, 2016

This PR seems to have generated a significant portion of the traffic to the project. The Python Effect is real.

@poulson
Copy link
Member

poulson commented Aug 20, 2016

@ahmadia It seems this PR might have lost steam. I assume it is still not meant to be merged?

@pzwang
Copy link

pzwang commented Sep 21, 2016

Hey guys, we have received a nudge from DARPA to try to get elemental (and its dependent packages like SmallK) built as conda packages, and made available on Anaconda Cloud... Any updates on this PR? @gidiko does your recipe/this recipe have any particular gotchas that we should be aware of? Otherwise, should we try to push forward on getting this added to conda-forge?

@gidiko
Copy link

gidiko commented Sep 22, 2016

Hi guys... @pzwang our recipe for libelemental works fine for libskylark purposes on linux-x86_64 (have quickly checked with some recent ubuntu, debian, centos flavors) so I see no immediate gotchas there.
In fact we are very happy with the conda approach, also because by simply adding constructor on top of the freshly built artifacts we additionally got a single file installer, ready to easily share our dependency-heavy software. No mac around now to see how the recipe here (i.e. the mac one) works for our needs in particular (btw, this would also mean mac versions for our other recipe dependencies, we also had to put together - which again work nicely together for linux-x86_64, ... but no mac versions there yet).

It would be super to have all these packages in conda-forge, so let's also share pointers on best practices on let's say "minigotchas" ( ala "miniconda" :) ) like the following and move forward:

  1. How to deal with hard-coding build options. For example one of our dependencies is boost, however needed to be built with the "using mpi;" option. We had to do this already for the sake of libskylark, but does conda have a recommended way to mark this in a "version-like" tagging of the resulting binaries? Or we just have more descriptive names for the packages? Have not checked recently how people tend to do this.
  2. How to deal with API evolving software. OK, we can (again) hardwire a commit hash (like for libelemental) but maybe there is a nicer way to do it (perhaps related to the previous bullet).
  3. How to deal with GPL-licensed dependencies, I mean if there is an issue e.g. with (dynamically) linking to them (i.e. also having their depending recipes for them up in conda-forge).

@poulson
Copy link
Member

poulson commented Sep 25, 2016

@gidiko For what it's worth, Elemental has no GPL'd dependencies, though there are several (mostly optional) LGPL'd dependencies. The closest to mandatory are my reimplementations/extensions of Tim Davis's Sparse LDL package to handle real and complex matrices for arbitrary datatypes. But this could eventually be replaced with a clean room implementation without the LGPL license if necessary.

@poulson
Copy link
Member

poulson commented Nov 23, 2016

Now that there is an official release (https://github.com/elemental/Elemental/releases/tag/v0.87.4) and there are two Ubuntu packages, perhaps it is time to revisit anaconda support.

@gidiko gidiko mentioned this pull request Dec 1, 2016
benson31 pushed a commit to benson31/Elemental that referenced this pull request May 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants