LLNL / MemSurfer

MemSurfer is a software tool to compute bilayer membrane surfaces.
GNU General Public License v3.0
24 stars 9 forks source link

Installation by Spack has unsatisfiable version constraints #7

Closed tamir-dingjan closed 4 years ago

tamir-dingjan commented 4 years ago

When attempting to install via Spack, an unsatisfiable version constraint is detected - see below for full error output:

$tamir> spack install memsurfer@develop %gcc@7.5.0 ==> Error: An unsatisfiable version constraint has been detected for spec:

python@2.7.16%gcc@7.5.0+bz2+ctypes+dbm~debug+libxml2+lzma~nis~optimizations+pic+pyexpat+pythoncmd+readline+shared+sqlite3+ssl~tix~tkinter~ucs4~uuid+zlib arch=linux-ubuntu18.04-skylake_avx512
    ^bzip2
        ^diffutils
            ^iconv
    ^expat
    ^gdbm@1.18.1%gcc@7.5.0 arch=linux-ubuntu18.04-skylake_avx512
        ^readline@8.0%gcc@7.5.0 arch=linux-ubuntu18.04-skylake_avx512
            ^ncurses@6.2%gcc@7.5.0~symlinks+termlib arch=linux-ubuntu18.04-skylake_avx512
                ^pkgconf@1.6.3%gcc@7.5.0 arch=linux-ubuntu18.04-skylake_avx512
    ^gettext+libxml2
        ^libxml2
            ^xz
            ^zlib@1.2.11%gcc@7.5.0+optimize+pic+shared arch=linux-ubuntu18.04-skylake_avx512
    ^libffi
    ^openssl
        ^perl@5.30.1%gcc@7.5.0+cpanm+shared+threads arch=linux-ubuntu18.04-skylake_avx512
    ^sqlite@3.0.8:

while trying to concretize the partial spec:

py-numpy@1.18.2%gcc@7.5.0+blas+lapack arch=linux-ubuntu18.04-skylake_avx512

py-numpy requires python version 3.5:, but spec asked for 2.7.16 $tamir>

bhatiaharsh commented 4 years ago

Hi, MemSurfer works with python3, and it looks like here you're installing with python2 (either from before or you just installed python2?). Regardless, you can force spack to use python3 by

spack install memsurfer@develop ^python@3.7.2 %gcc@7.5.0

tamir-dingjan commented 4 years ago

Hi, I'm still having problems with version constraints even using python3:

$tamir> python --version Python 3.7.2 $tamir> spack install memsurfer@develop ^python@3.7.2 %gcc@7.5.0 ==> Error: An unsatisfiable version constraint has been detected for spec:

python@3.7.2%gcc@7.5.0

while trying to concretize the partial spec:

memsurfer@develop

memsurfer requires python version 2.7.16, but spec asked for 3.7.2 $tamir>

bhatiaharsh commented 4 years ago

It looks like you may have an older version of spack -- perhaps you already use spack. MemSurfer with Python3 support was pulled into spack on Apr 15 (https://github.com/spack/spack/pull/15636). So, if you installed spack prior to that, you may not have the correct configurations. You can look at "git log" in the spack directory and see if your latest commit is before this date. If so, please do "git pull". then you should be able to install. Sorry about this. spack repository has its own standards and practices and its workflow is beyond my control

tamir-dingjan commented 4 years ago

Thank you - I'm still encountering problems with the latest spack:

$tamir> git log | head commit ca4de491bafbda92af7b15c442b33a2d84db969a Author: Toyohisa Kameyama kameyama@riken.jp Date: Mon Apr 27 12:09:06 2020 +0900

$tamir> spack install memsurfer@develop ^python@3.7.2 %gcc@7.5.0 ==> Error: An unsatisfiable variant constraint has been detected for spec:

hdf5@1.10.6%gcc@7.5.0~cxx~debug~fortran+hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu18.04-skylake_avx512
    ^mpi
    ^zlib@1.2.11%gcc@7.5.0+optimize+pic+shared arch=linux-ubuntu18.04-skylake_avx512

while trying to concretize the partial spec:

netcdf-c~mpi
    ^m4@1.4.18%gcc@7.5.0+sigsegv arch=linux-ubuntu18.04-skylake_avx512
        ^libsigsegv
    ^zlib@1.2.11%gcc@7.5.0+optimize+pic+shared arch=linux-ubuntu18.04-skylake_avx512

netcdf-c requires hdf5 variant ~mpi, but spec asked for +mpi $tamir>

tamir-dingjan commented 4 years ago

Just a bump - any thoughts on how to resolve these variant constraints?

Could you give the command you're using to install via spack, and version numbers of relevant compilers?

bhatiaharsh commented 4 years ago

Can you try this?

spack spec memsurfer@develop ^hdf5~mpi ^python@3.7.2 %gcc@7.5.0

The spack spec command checks the full dependency tree for a package (also the first step of install). If this works, you can continue the installation with the specific hdf5 from the spec command.

This appears to be a bit frustrating, since perhaps some default versioning in the dependency tree has changed and it creates constraint conflict for memsurfer. I installed it without the ^hdf5~mpi part, but now it seems it is needed. Anyway, please let me know if this works.

tamir-dingjan commented 4 years ago

Thank you, this makes a lot more progress. All of the dependencies install OK, except for OpenBLAS. So I think the hdf5~mpi dependency is correct now.

The error I'm encountering seems to be caused by a missing Fortran compiler. Could you check if you are using gfortran in addition to gcc? Is there an additional compiler required beyond those listed on the project readme?

bhatiaharsh commented 4 years ago

Hello. It looks like your spack setup needs more work. I assume you have a fortran compiler on your machine that comes with gcc@7.5.0. You can run spack compiler add. This should find all compilers on your machine. After this, please use spack compiler list to look at all compilers spack knows about, and then spack compiler info gcc@7.5.0 to make sure you have the correct fortran compiler.

Thanks for your patience. I am realizing that the spack route is not as simple as I imagined because it expects users to set up their spack correctly and then of course some other dependencies issues we talked about earlier. I should update spack instructions.

tamir-dingjan commented 4 years ago

Hello, thank you for pursuing these issues. I've adjusted my local compiler setup following your instructions:

$ spack compiler info gcc@7.5.0
gcc@7.5.0:
    paths:
        cc = /usr/bin/gcc-7
        cxx = /usr/bin/g++-7
        f77 = /usr/bin/gfortran
        fc = /usr/bin/gfortran
    modules  = []
    operating system  = ubuntu18.04
$

Currently, I'm encountering a different error relating to access to PyPoisson - but since it looks like the spack dependencies are fixed, I'll mark this issue as closed. Thank you for all the hard work.