Skip to content
Snippets Groups Projects
builder.py 40.9 KiB
Newer Older
  • Learn to ignore specific revisions
  • 
            Args:
                max_threads: Maximum number of threads we expect to need.
    
                setup_git: True to set up a git repo clone
    
            builderthread.Mkdir(self._working_dir)
    
            for thread in range(max_threads):
    
                self._PrepareThread(thread, setup_git)
    
    
        def _PrepareOutputSpace(self):
            """Get the output directories ready to receive files.
    
            We delete any output directories which look like ones we need to
            create. Having left over directories is confusing when the user wants
            to check the output manually.
            """
            dir_list = []
            for commit_upto in range(self.commit_count):
                dir_list.append(self._GetOutputDir(commit_upto))
    
            for dirname in glob.glob(os.path.join(self.base_dir, '*')):
                if dirname not in dir_list:
                    shutil.rmtree(dirname)
    
    
        def BuildBoards(self, commits, board_selected, keep_outputs, verbose):
    
            """Build all commits for a list of boards
    
            Args:
                commits: List of commits to be build, each a Commit object
                boards_selected: Dict of selected boards, key is target name,
                        value is Board object
                keep_outputs: True to save build output files
    
                verbose: Display build results as they are completed
    
            self.commit_count = len(commits) if commits else 1
    
    
            self.ResetResultSummary(board_selected)
    
            builderthread.Mkdir(self.base_dir)
    
            self._PrepareWorkingSpace(min(self.num_threads, len(board_selected)),
                    commits is not None)
    
            self._PrepareOutputSpace()
            self.SetupBuild(board_selected, commits)
            self.ProcessResult(None)
    
            # Create jobs to build all commits for each board
            for brd in board_selected.itervalues():
    
                job = builderthread.BuilderJob()
    
                job.board = brd
                job.commits = commits
                job.keep_outputs = keep_outputs
                job.step = self._step
                self.queue.put(job)
    
            # Wait until all jobs are started
            self.queue.join()
    
            # Wait until we have processed all output
            self.out_queue.join()
            print
            self.ClearLine(0)