Skip to content

Show to user which packages might be relocated #9188

@alalazo

Description

@alalazo

As a packager I want spack buildcache to be able to analyze the DAG of an installed package and show which nodes are relocatable so that I could get a quantitative idea on how many packages encode their install prefix in e.g. .rodata.

Rationale

This is a follow up from #7123 (comment) and discussion below. The proposal basically boils down to have a new sub-command:

$ spack buildcache preview <installed package>

that shows to users which nodes are relocatable and which are not.

Description

An example output might be something like:

$ spack buildcache --help
usage: spack buildcache [-h] SUBCOMMAND ...

create, download and install binary packages

positional arguments:
  SUBCOMMAND  buildcache sub-commands
    create    create a binary package from an existing install
    install   install from a binary package
    list      list binary packages available from mirrors
    preview   analyzes an installed package and reports whether 
              executables and libraries are relocatable
    keys      get public keys available on mirrors

optional arguments:
  -h, --help  show this help message and exit

$ spack buildcache preview hdf5 ^mpich
Relocatable packages
--------------------------------
[+]  hdf5@1.10.3%gcc@8.0.1~cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu18.04-x86_64 
[+]      ^mpich@3.2.1%gcc@8.0.1 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu18.04-x86_64 
[-]      ^zlib@1.2.11%gcc@8.0.1+optimize+pic+shared arch=linux-ubuntu18.04-x86_64 

meaning that hdf5 and mpich are relocatable, while zlib is not. Note that the example is a mock and I didn't look for real into these three packages as I did for pkgconf and ncurses.

Additional information

Waiting for feedback before implementing this. Feel free to close if you consider this not necessary.

@gartung @tgamblin @scheibelp @becker33 @mathstuf @bryonbean

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions