conda-forge / msprime-feedstock

A conda-smithy repository for msprime.
BSD 3-Clause "New" or "Revised" License
1 stars 4 forks source link

Missing symbols in gsl #20

Closed jeromekelleher closed 5 years ago

jeromekelleher commented 5 years ago

Issue:

Traceback (most recent call last):
  File "/home/jk/miniconda3/bin/msp", line 7, in <module>
    from msprime.cli import msp_main
  File "/home/jk/miniconda3/lib/python3.6/site-packages/msprime/__init__.py", line 26, in <module>
    from _msprime import FORWARD  # NOQA
ImportError: /home/jk/miniconda3/lib/python3.6/site-packages/../../libgsl.so.23: undefined symbol: cblas_dasum

Looks like this is because GSL is being pulled from upstream and not from conda-forge

  attrs              conda-forge/noarch::attrs-18.2.0-py_0
  blas               pkgs/main/linux-64::blas-1.0-mkl
  gsl                pkgs/main/linux-64::gsl-2.4-h14c3975_4
  h5py               conda-forge/linux-64::h5py-2.9.0-nompi_py36hf008753_1102
  hdf5               conda-forge/linux-64::hdf5-1.10.4-nompi_h11e915b_1105
  intel-openmp       pkgs/main/linux-64::intel-openmp-2019.1-144
  jsonschema         conda-forge/linux-64::jsonschema-3.0.0a3-py36_1000
  libgfortran-ng     conda-forge/linux-64::libgfortran-ng-7.2.0-hdf63c60_3
  mkl                pkgs/main/linux-64::mkl-2019.1-144
  mkl_fft            conda-forge/linux-64::mkl_fft-1.0.10-py36h14c3975_1
  mkl_random         conda-forge/linux-64::mkl_random-1.0.2-py36h637b7d7_2
  msprime            conda-forge/linux-64::msprime-0.6.2-py36hf3f1cc3_0
  numpy              pkgs/main/linux-64::numpy-1.15.4-py36h7e9f1db_0
  numpy-base         pkgs/main/linux-64::numpy-base-1.15.4-py36hde5b4d6_0
  pyparsing          conda-forge/noarch::pyparsing-2.3.1-py_0
  pyrsistent         conda-forge/linux-64::pyrsistent-0.14.9-py36h14c3975_1000
  six                conda-forge/linux-64::six-1.12.0-py36_1000
  svgwrite           conda-forge/noarch::svgwrite-1.2.1-py_0

Originally reported in https://github.com/tskit-dev/msprime/issues/694

jeromekelleher commented 5 years ago

The problem is down to us pulling in blas from mkl instead of openblas. A workaround for now seems to be to run conda install "blas=*=openblas" for a new environment.

Will see if it's possible for us to specify that msprime requires blas_openblas, hopefully sorting the mess out.

jeromekelleher commented 5 years ago

This is a common problem with features: see here and here

jeromekelleher commented 5 years ago

See also this

jeromekelleher commented 5 years ago

The problem is all to do with the solver trying to minimise features. This causes it to pull in packages from defaults, even though they are at higher priority: the conda-forge numpy and GSL packages have the openblas feature, but the defaults ones don't.

jeromekelleher commented 5 years ago

Finally tracked the features documentation to here

jeromekelleher commented 5 years ago

Nope, here:

https://github.com/conda/conda-build/blob/7dac1cbad5195f719bde1eaeb0d5795186dc0eb0/docs/source/features.rst

jeromekelleher commented 5 years ago

I think this might be fixed now, after putting in hard requirements to openblas. Would you mind trying the latest package please @alimanfoo? This should be something like msprime-0.6.2-py36hf3f1cc3_3.tar.bz2

alimanfoo commented 5 years ago

Rebuilding environment now with 0.6.2, CI running here: https://github.com/malariagen/binder/pull/33

jeromekelleher commented 5 years ago

Hmm, still not quite right I think @alimanfoo. Looks like the solver doesn't like the current requirements somehow, so it won't install the latest build unless you force it with conda install msprime==0.6.2=py36hf3f1cc3_3. It works fine when you do this though --- very frustrating.

jeromekelleher commented 5 years ago

Should be resolved now we're explicitly pulling in openblas.