'A spec is concrete if it can describe only ONE build of a package.
If any of the name, version, architecture, compiler,
variants, or depdenencies are ambiguous,then it is not concrete.'

@property
def concrete(self):

    if self._concrete:
        return True
    self._concrete = bool(((not self.virtual) and (self.namespace is not None) and self.versions.concrete and self.variants.concrete and self.architecture and self.architecture.concrete and self.compiler and self.compiler.concrete and self.compiler_flags.concrete and self._dependencies.concrete))
    return self._concrete
