'Gives specs of all packages that provide virtual packages
with the supplied specs.'

def providers_for(self, *vpkg_specs):

    providers = set()
    for vspec in vpkg_specs:
        if (type(vspec) == str):
            vspec = spack.spec.Spec(vspec)
        if (vspec.name in self.providers):
            for (p_spec, spec_set) in self.providers[vspec.name].items():
                if p_spec.satisfies(vspec, deps=False):
                    providers.update(spec_set)
    return sorted((s.copy() for s in providers))
