The new concretizer does not respect hashes of installed packages in the spec. With the old concretizer, it was possible to reuse previously-installed packages by explicitly specifying the hash of the package. This is no longer possible with the new concretizer.
Steps to reproduce the issue
spack install B, keep track of the hash of this installation
- Add a new variant to package B
spack install A ^B/hash for a package A that depends on B
Error Message
Here is an example with Python. Note that since the time Python was installed, the openssl dependency added a new ~docs variant:
$ spack find -lvd /3auqbnq
==> 1 installed package
-- darwin-catalina-x86_64 / apple-clang@12.0.0 ------------------
3auqbnq python@3.8.7+bz2+ctypes+dbm~debug+libxml2+lzma~nis~optimizations+pic+pyexpat+pythoncmd+readline+shared+sqlite3+ssl~tix~tkinter~ucs4+uuid+zlib patches=0d98e93189bc278fbc37a50ed7f183bd8aaf249a8e1670a465f0db6bb4f8cf87
bdm4oka apple-libuuid@1353.100.2
6ntaixw bzip2@1.0.8+shared
s5jmr4n expat@2.2.10~libbsd
df3hxmr gdbm@1.18.1
4d3hjqd readline@8.0
eli4aax ncurses@6.2~symlinks+termlib
dti2z6r gettext@0.21+bzip2+curses+git~libunistring+libxml2+tar+xz
xrjlxcv libiconv@1.16
dqzlvh6 libxml2@2.9.10~python
gfa5h76 xz@5.2.5~pic
x2anksg zlib@1.2.11+optimize+pic+shared
dc675hk tar@1.32
5ye4c7r libffi@3.3 patches=26f26c6f29a7ce9bf370ad3ab2610f99365b4bdd7b82e7c31df41a3370d685c0
2qhvtbw openssl@1.1.1j+systemcerts
u72xuye sqlite@3.34.0+column_metadata+fts~functions~rtree
$ spack spec -lI py-setuptools ^/3auqbnq
Input spec
--------------------------------
- py-setuptools
[+] ^python@3.8.7%apple-clang@12.0.0+bz2+ctypes+dbm~debug+libxml2+lzma~nis~optimizations+pic+pyexpat+pythoncmd+readline+shared+sqlite3+ssl~tix~tkinter~ucs4+uuid+zlib patches=0d98e93189bc278fbc37a50ed7f183bd8aaf249a8e1670a465f0db6bb4f8cf87 arch=darwin-catalina-x86_64
[+] ^apple-libuuid@1353.100.2%apple-clang@12.0.0 arch=darwin-catalina-x86_64
[+] ^bzip2@1.0.8%apple-clang@12.0.0+shared arch=darwin-catalina-x86_64
[+] ^expat@2.2.10%apple-clang@12.0.0~libbsd arch=darwin-catalina-x86_64
[+] ^gdbm@1.18.1%apple-clang@12.0.0 arch=darwin-catalina-x86_64
[+] ^readline@8.0%apple-clang@12.0.0 arch=darwin-catalina-x86_64
[+] ^ncurses@6.2%apple-clang@12.0.0~symlinks+termlib arch=darwin-catalina-x86_64
[+] ^gettext@0.21%apple-clang@12.0.0+bzip2+curses+git~libunistring+libxml2+tar+xz arch=darwin-catalina-x86_64
[+] ^libiconv@1.16%apple-clang@12.0.0 arch=darwin-catalina-x86_64
[+] ^libxml2@2.9.10%apple-clang@12.0.0~python arch=darwin-catalina-x86_64
[+] ^xz@5.2.5%apple-clang@12.0.0~pic arch=darwin-catalina-x86_64
[+] ^zlib@1.2.11%apple-clang@12.0.0+optimize+pic+shared arch=darwin-catalina-x86_64
[+] ^tar@1.32%apple-clang@12.0.0 arch=darwin-catalina-x86_64
[+] ^libffi@3.3%apple-clang@12.0.0 patches=26f26c6f29a7ce9bf370ad3ab2610f99365b4bdd7b82e7c31df41a3370d685c0 arch=darwin-catalina-x86_64
[+] ^openssl@1.1.1j%apple-clang@12.0.0+systemcerts arch=darwin-catalina-x86_64
[+] ^sqlite@3.34.0%apple-clang@12.0.0+column_metadata+fts~functions~rtree arch=darwin-catalina-x86_64
Concretized
--------------------------------
- ghaihoj py-setuptools@50.3.2%apple-clang@12.0.0 arch=darwin-catalina-x86_64
- hw2eka5 ^python@3.8.7%apple-clang@12.0.0+bz2+ctypes+dbm~debug+libxml2+lzma~nis~optimizations+pic+pyexpat+pythoncmd+readline+shared+sqlite3+ssl~tix~tkinter~ucs4+uuid+zlib patches=0d98e93189bc278fbc37a50ed7f183bd8aaf249a8e1670a465f0db6bb4f8cf87 arch=darwin-catalina-x86_64
[+] bdm4oka ^apple-libuuid@1353.100.2%apple-clang@12.0.0 arch=darwin-catalina-x86_64
[+] 6ntaixw ^bzip2@1.0.8%apple-clang@12.0.0+shared arch=darwin-catalina-x86_64
[+] 6xq3pjn ^diffutils@3.7%apple-clang@12.0.0 arch=darwin-catalina-x86_64
[+] xrjlxcv ^libiconv@1.16%apple-clang@12.0.0 arch=darwin-catalina-x86_64
[+] s5jmr4n ^expat@2.2.10%apple-clang@12.0.0~libbsd arch=darwin-catalina-x86_64
[+] df3hxmr ^gdbm@1.18.1%apple-clang@12.0.0 arch=darwin-catalina-x86_64
[+] 4d3hjqd ^readline@8.0%apple-clang@12.0.0 arch=darwin-catalina-x86_64
[+] eli4aax ^ncurses@6.2%apple-clang@12.0.0~symlinks+termlib arch=darwin-catalina-x86_64
[+] zhcbxzn ^pkgconf@1.7.3%apple-clang@12.0.0 arch=darwin-catalina-x86_64
[+] dti2z6r ^gettext@0.21%apple-clang@12.0.0+bzip2+curses+git~libunistring+libxml2+tar+xz arch=darwin-catalina-x86_64
[+] dqzlvh6 ^libxml2@2.9.10%apple-clang@12.0.0~python arch=darwin-catalina-x86_64
[+] gfa5h76 ^xz@5.2.5%apple-clang@12.0.0~pic arch=darwin-catalina-x86_64
[+] x2anksg ^zlib@1.2.11%apple-clang@12.0.0+optimize+pic+shared arch=darwin-catalina-x86_64
[+] dc675hk ^tar@1.32%apple-clang@12.0.0 arch=darwin-catalina-x86_64
[+] 5ye4c7r ^libffi@3.3%apple-clang@12.0.0 patches=26f26c6f29a7ce9bf370ad3ab2610f99365b4bdd7b82e7c31df41a3370d685c0 arch=darwin-catalina-x86_64
[+] 6p633mh ^openssl@1.1.1j%apple-clang@12.0.0~docs+systemcerts arch=darwin-catalina-x86_64
[+] b7bd5lo ^perl@5.32.1%apple-clang@12.0.0+cpanm+shared+threads arch=darwin-catalina-x86_64
[+] shevodc ^berkeley-db@18.1.40%apple-clang@12.0.0~docs patches=b231fcc4d5cff05e5c3a4814f6a5af0e9a966428dc2176540d2c05aff41de522 arch=darwin-catalina-x86_64
[+] u72xuye ^sqlite@3.34.0%apple-clang@12.0.0+column_metadata+fts~functions~rtree arch=darwin-catalina-x86_64
Information on your system
- Spack: 0.16.1-1942-f9cc073be0
- Python: 3.8.7
- Platform: darwin-catalina-ivybridge
- Concretizer: clingo
Additional information
The new concretizer does not respect hashes of installed packages in the spec. With the old concretizer, it was possible to reuse previously-installed packages by explicitly specifying the hash of the package. This is no longer possible with the new concretizer.
Steps to reproduce the issue
spack install B, keep track of the hash of this installationspack install A ^B/hashfor a package A that depends on BError Message
Here is an example with Python. Note that since the time Python was installed, the
openssldependency added a new~docsvariant:Information on your system
Additional information
spack debug reportand reported the version of Spack/Python/Platform