'Return a list of compilers found in the supplied paths.
This invokes the find() method for each Compiler class,
and appends the compilers detected to a list.'

def find_compilers(self, *paths):

    if (not paths):
        paths = get_path('PATH')
    filtered_path = []
    for p in paths:
        p = os.path.realpath(p)
        if (not os.path.isdir(p)):
            continue
        filtered_path.append(p)
        bin = join_path(p, 'bin')
        if os.path.isdir(bin):
            filtered_path.append(os.path.realpath(bin))
    import spack.compilers
    types = spack.compilers.all_compiler_types()
    compiler_lists = parmap((lambda cmp_cls: self.find_compiler(cmp_cls, *filtered_path)), types)
    clist = [comp for cl in compiler_lists for comp in cl]
    return clist
