commands: add spack resource command to inspect downloadable files
- currently just looks at patches - allows you to find out which package applied a patch to a spec - intended to work with tarballs and resources in the future. - add tab completion for `spack resource` and subcommands
This commit is contained in:
@@ -1422,6 +1422,73 @@ with all packages in Spack, a patched dependency library can coexist with
|
||||
other versions of that library. See the `section on depends_on
|
||||
<dependency_dependency_patching_>`_ for more details.
|
||||
|
||||
.. _patch_inspecting_patches:
|
||||
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
Inspecting patches
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
If you want to better understand the patches that Spack applies to your
|
||||
packages, you can do that using ``spack spec``, ``spack find``, and other
|
||||
query commands. Let's look at ``m4``. If you run ``spack spec m4``, you
|
||||
can see the patches that would be applied to ``m4``::
|
||||
|
||||
$ spack spec m4
|
||||
Input spec
|
||||
--------------------------------
|
||||
m4
|
||||
|
||||
Concretized
|
||||
--------------------------------
|
||||
m4@1.4.18%clang@9.0.0-apple patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=darwin-highsierra-x86_64
|
||||
^libsigsegv@2.11%clang@9.0.0-apple arch=darwin-highsierra-x86_64
|
||||
|
||||
You can also see patches that have been applied to installed packages
|
||||
with ``spack find -v``::
|
||||
|
||||
$ spack find -v m4
|
||||
==> 1 installed package
|
||||
-- darwin-highsierra-x86_64 / clang@9.0.0-apple -----------------
|
||||
m4@1.4.18 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv
|
||||
|
||||
.. _cmd-spack-resource:
|
||||
|
||||
In both cases above, you can see that the patches' sha256 hashes are
|
||||
stored on the spec as a variant. As mentioned above, this means that you
|
||||
can have multiple, differently-patched versions of a package installed at
|
||||
once.
|
||||
|
||||
You can look up a patch by its sha256 hash (or a short version of it)
|
||||
using the ``spack resource show`` command::
|
||||
|
||||
$ spack resource show 3877ab54
|
||||
3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00
|
||||
path: /home/spackuser/src/spack/var/spack/repos/builtin/packages/m4/gnulib-pgi.patch
|
||||
applies to: builtin.m4
|
||||
|
||||
``spack resource show`` looks up downloadable resources from package
|
||||
files by hash and prints out information about them. Above, we see that
|
||||
the ``3877ab54`` patch applies to the ``m4`` package. The output also
|
||||
tells us where to find the patch.
|
||||
|
||||
Things get more interesting if you want to know about dependency
|
||||
patches. For example, when ``dealii`` is built with ``boost@1.68.0``, it
|
||||
has to patch boost to work correctly. If you didn't know this, you might
|
||||
wonder where the extra boost patches are coming from::
|
||||
|
||||
$ spack spec dealii ^boost@1.68.0 ^hdf5+fortran | grep '\^boost'
|
||||
^boost@1.68.0
|
||||
^boost@1.68.0%clang@9.0.0-apple+atomic+chrono~clanglibcpp cxxstd=default +date_time~debug+exception+filesystem+graph~icu+iostreams+locale+log+math~mpi+multithreaded~numpy patches=2ab6c72d03dec6a4ae20220a9dfd5c8c572c5294252155b85c6874d97c323199,b37164268f34f7133cbc9a4066ae98fda08adf51e1172223f6a969909216870f ~pic+program_options~python+random+regex+serialization+shared+signals~singlethreaded+system~taggedlayout+test+thread+timer~versionedlayout+wave arch=darwin-highsierra-x86_64
|
||||
$ spack resource show b37164268
|
||||
b37164268f34f7133cbc9a4066ae98fda08adf51e1172223f6a969909216870f
|
||||
path: /home/spackuser/src/spack/var/spack/repos/builtin/packages/dealii/boost_1.68.0.patch
|
||||
applies to: builtin.boost
|
||||
patched by: builtin.dealii
|
||||
|
||||
Here you can see that the patch is applied to ``boost`` by ``dealii``,
|
||||
and that it lives in ``dealii``'s directory in Spack's ``builtin``
|
||||
package repository.
|
||||
|
||||
.. _handling_rpaths:
|
||||
|
||||
---------------
|
||||
|
||||
Reference in New Issue
Block a user