Conversation
|
Fantastic work, 👍 |
|
Regarding dependency pinning, +1 to |
|
@jxtx converted bx-python back to setuptools, so that one's done. |
|
This is going to be awesome! |
|
|
|
OS X wheels built with python.org builds of Python (which are multi-arch Intel builds using the 10.6 SDK) work on all later versions of OS X. I am starting to upload these to https://wheels.galaxyproject.org/ |
scripts/common_startup.sh
Outdated
There was a problem hiding this comment.
This currently checks out the repository again every time I run it. Changing to pip install -e git+https://github.com/natefoo/pip@linux-wheels#egg=pip allows it just to update.
@natefoo: Will it be possible to change all |
|
@nsoranzo In theory it should be possible to simply remove them. They should precede the name they are importing, which should now succeed since everything should be accessible on |
`{eggs,pkg_resources}.require`. Probably broke some stuff where we were
trying to be smart about whether a particular egg was available, but
Galaxy does at least start.
|
I thought I wrote this down somewhere but now I can't find it... The suggestion from @jxtx regarding pinning was to pin to exact versions but to automate checking for minor version updates, automatically build wheels, and then PR with the new versions so that tests are run. If tests pass, then we can merge the PR and have updated versions. This ensures that each stable release of Galaxy will have an exact set of versioned dependencies. |
|
@martenson Are our modifications to Whoosh forked somewhere? |
|
bx wheel fixed with galaxyproject/starforge@bcd773f |
|
Also, if anyone has any ideas on how to automate building wheels on OS X, I'd appreciate them since obviously we can't use docker-build there. @jxtx claims it's possible to virtualize OS X on non-Apple hardware these days? |
|
Definitely possible. Questionably legal. http://www.contrib.andrew.cmu.edu/~somlo/OSXKVM/ |
|
I've been working on the "figure out how to build psycopg2" option, and the plan that I like the best goes like this: Using galaxyproject/starforge#27 (and some stuff I still need to push to that PR) it'll be possible to build wheels on many different distros using docker. Right now I plan to build for both 32- and 64-bit Debian 6, 7, and 8, Ubuntu 12.04 and 14.04, and CentOS/RHEL 6 and 7. Also if anyone wants to add SLES/openSUSE support that would be good too. This means we get to dynamically link the vendor-provided libpq rather than our own statically-compiled and probably out-of-date-and-buggy version. There'll also be a fallback generic |
|
@natefoo :D |
|
SVGFig is now available here, and versioned tarballs are still accessible (as of now) from Google Code via this wiki page. So I downloaded the upstream 1.1.6 tarball, fixed the version number in |
|
@dannon can you re-enlighten me as to what version of sqlalchemy-migrate we need to use? IIRC it was just that we needed to use the version from git as opposed to the published version in PyPI? Because the version in PyPI is only a couple weeks old now so maybe it's good. |
whole reason we use a modified pysam is for the index_filename param...
|
@natefoo I can't find a reaction gif for how excited I am for this. Well done. |
|
So on a scale of -1 to +1, how do people feel about this? =D |
|
👍 |
|
This is going to break a lot of stuff, I would suggest we get drunk tonight
|
|
Works for me on:
Doesn't work for me on:
Untested:
|
|
@erasche Why fix later what I can fix now before I forget how everything works? @jmchilton +:100: |
|
Super exciting, but, for me on OSX, upgrading from existing install: Wiped out pre-existing .venv, same thing. |
|
@dannon What's your |
(brew installed python on El Capitan!) |
fair enough. :) |
|
@erasche Well why'd you type @dannon What if you start with If it works, that's gonna be a fun one to deal with. Perhaps we should |
|
@natefoo tested again with a correct URL, works. :) Edit: |
than an editable directly from github. Also, use `set -e` in scripts/common_startup.sh to fail if anything fails, rather than chaining a bunch of things with `&&` but not properly handling failure cases.
|
@natefoo With an unset pythonpath, there is no mercurial issue, but then I hit: |
|
Works for me... |
|
For the record, @erasche's problems were fixed with the addition of installing the Galaxy-modified |
|
+1 |




Smash Eggs
More importantly, replace all of our custom egg installation code with a very slightly modified version of pip. The modification is necessary if/until wheel is updated to include support for Linux wheels.
Other changes include
lib/pkg_resources.pyOn virtualenvs
scripts/common_startup.shwill create a virtualenv at$galaxy_root/.venvif one is not already active and wheels will be installed to here. Otherwise, Galaxy will use whatever virtualenv is currently active (in$VIRTUAL_ENV).Whatever virtualenv Galaxy is started under will be passed to jobs if a virtualenv is not already active in the job environment (and it exists at the same path on the compute resource). You can force jobs to use a different virtualenv using the
<env>tag in a job destination, e.g.:Galaxy needs to become installable in the traditional
python setup.py installmanner which will change some things about how virtualenvs are handled in the future (tl;dr, we don't need to "handle" them all unless you are running directly from source), but that is the next project. This was all recently done for Pulsar so Galaxy can steal from there. =)TODO
Get rid of the SVGFig dependencypip install git+https://works, but then it's a little trickier to correctly answer "Is sqlalchemy-migrate installed, and is it the right version?"and MySQL_Python(anyone using MySQL can justpip install MySQL-python(whichcommon-startup.shwill in fact attempt to do)ImportError: /home/nate/galaxy/galaxy/.venv/local/lib/python2.7/site-packages/pysam/calignmentfile.so: undefined symbol: hts_idx_load_literalImportError: No module named bigbed_filesdistfor everything on wheels.galaxyproject.orgrun.sh, ignore whatever virtualenv is active and use.venv. If you want to use something else, either start withoutrun.shor userun.sh --skip-venv. In the future, we won't mess with venvs at all since Galaxy should install in the standard Pythonic way.Questions
Should we pin exact versions of dependencies? I have a strong preference to say no, and as a concession say we should pin to "less than the next major version" e.g.I was won over by the argument that we should pin exact versions ("exact set of versioned dependencies for an exact version of Galaxy), but that we will:SQLAlchemy<1.1. Although this does present one small problem - we will have to ensure that we always have wheels built for every version published on PyPI (we can certainly automate this) or else pip will bypass the wheels and install from source, unless we usepip install --only-binary. However, if we use--only-binary, then we cannot trivially fall back to compiling from source on platforms that we do not have wheels for.$galaxy_root/.venvtake precedence over$VIRTUAL_ENV(since I keep installing all of Galaxy's wheels in my tox venv =P)?~~use--skip-venvif you don't want.venvto take precedence.