'Build all the Spinnaker packages.'

def build_packages(self):

    all_subsystems = []
    all_subsystems.extend(SUBSYSTEM_LIST)
    all_subsystems.extend(ADDITIONAL_SUBSYSTEMS)
    if self.__options.build:
        weighted_processes = (self.__options.cpu_ratio * multiprocessing.cpu_count())
        pool = multiprocessing.pool.ThreadPool(processes=int(max(1, weighted_processes)))
        pool.map(self.__do_build, all_subsystems)
    self.__check_build_failures(SUBSYSTEM_LIST)
    if self.__options.nebula:
        return
    failed_components = [failure.component for failure in self.__build_failures]
    wait_on = set(all_subsystems).difference(set(failed_components))
    if (len(wait_on) > 0):
        pool = multiprocessing.pool.ThreadPool(processes=len(wait_on))
        print 'Copying    packages...'
        pool.map(self.__do_copy, wait_on)
    else:
        print 'Nothing    to    copy.'
    return
