spack/spack

ompss broken spec

viniciusvgp opened this issue · 6 comments


The spec of the ompss package seems to be broken.

Expected Result

ompss and dependencies properly installed

Actual Result

multiple conflicts in dependencies

==> Error: An unsatisfiable version constraint has been detected for spec:

    hwloc@2.0.1%gcc@7.3.0~cairo~cuda+libxml2+pci+shared arch=linux-ubuntu18.04-x86_64 
        ^libpciaccess
            ^libtool
                ^m4@1.4.18%gcc@7.3.0+sigsegv arch=linux-ubuntu18.04-x86_64 
                    ^libsigsegv
            ^pkgconf@1.4.0%gcc@7.3.0 arch=linux-ubuntu18.04-x86_64 
            ^util-macros
        ^libxml2@2.9.4%gcc@7.3.0~python arch=linux-ubuntu18.04-x86_64 
            ^xz@5.2.3%gcc@7.3.0 arch=linux-ubuntu18.04-x86_64 
            ^zlib@1.2.11%gcc@7.3.0+optimize+pic+shared arch=linux-ubuntu18.04-x86_64 


while trying to concretize the partial spec:

    openmpi@3.0.1%gcc@7.3.0~cuda fabrics= ~java~memchecker~pmi schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu18.04-x86_64 


openmpi requires hwloc version :1.999, but spec asked for 2.0.1

Steps to reproduce the issue

$ spack install -v ompss

Information on your system

I have tried with gcc 7.3.0, gcc 6.4.0 and clang 6.0.0 on ubuntu 18.04, 17.10 and 16.04.


This is a known bug in the concretizer. The problem is that ompss claims to work with any version of hwloc and mpi, but openmpi doesn't work with hwloc@2. Spack eagerly decides to use the latest version of hwloc before realizing that openmpi can't handle it.

To workaround this bug, you can be more explicit about what version of hwloc you want to use:

$ spack install ompss ^hwloc@1.11.9

In the long run, this bug should be fixed by the new concretizer that @tgamblin is working on.

thank you @adamjstewart
with spack install ompss ^hwloc@1.11.9 I can start the install, but other dependencies (e.g., flex, elfutils) are also broken. I will open another issue since that issues are not related to the concretization step.

I got this error for hwloc 1.999 instead:

==> Warning: Spack will not check SSL certificates. You need to update your Python to enable certificate verification.
==> Cannot find version 1.999 in url_list
==> Error: FetchError: All fetchers failed for spack-stage-hwloc-1.999-cej27e2n5nthw3m7gjisqbnmqjmgk6sb

/data/gpfs/Projects/CSE_hpda/condall/spack/lib/spack/spack/package.py:1110, in do_fetch:
       1107                raise FetchError("Will not fetch %s" %
       1108                                 self.spec.format('{name}{@version}'), ck_msg)
       1109
  >>   1110        self.stage.create()
       1111        self.stage.fetch(mirror_only)
       1112        self._fetch_time = time.time() - start_time
       1113

OpenMPI requires this hwloc version:

openmpi requires hwloc version :1.999, but spec asked for 2.1.0

cc @bvanessen

hwloc 1.999 does not exist, this line has to be modified:

In your local spack repo you can modify the line to see if it corrects the problem. You would want it to read depends_on('hwloc@:1.999', when='@:3.0.0')

That worked for me. I was attempting to install VTK when this issue occurred.

spack install vtk@8.1.2 build_type=Release -opengl2 +osmesa +python

<trimmed>

openmpi requires hwloc version :1.999, but spec asked for 2.2.0

Applying your change solved my issue:

--- a/var/spack/repos/builtin/packages/openmpi/package.py
+++ b/var/spack/repos/builtin/packages/openmpi/package.py
@@ -262,7 +262,7 @@ class Openmpi(AutotoolsPackage):
     # "configure: error: OMPI does not currently support hwloc v2 API"
     # Future ompi releases may support it, needs to be verified.
     # See #7483 for context.
-    depends_on('hwloc@:1.999')
+    depends_on('hwloc@:1.999', when='@:3.0.0')
 
     depends_on('hwloc +cuda', when='+cuda')
     depends_on('java', when='+java')