def compile(self):
        debug('build: compile called')
        self.flush()
        self.generator = Runner.Parallel(self, Options.options.jobs)

        def dw(on=True):
            if Options.options.progress_bar:
                if on: sys.stderr.write(Logs.colors.cursor_on)
                else: sys.stderr.write(Logs.colors.cursor_off)

        debug('build: executor starting')
        back = os.getcwd()
        os.chdir(self.bldnode.abspath())
        try:
            try:
                dw(on=False)
                self.generator.start()
            except KeyboardInterrupt:
                dw()
                self.save()
                raise
            except Exception:
                dw()
                raise
            else:
                dw()
                self.save()
            if self.generator.error:
                raise BuildError(self, self.task_manager.tasks_done)
        finally:
            os.chdir(back)
示例#2
0
文件: Build.py 项目: farthought/waf15
	def compile(self):
		"""The cache file is not written if nothing was build at all (build is up to date)"""
		debug('build: compile called')

		"""
		import cProfile, pstats
		cProfile.run("import Build\nBuild.bld.flush()", 'profi.txt')
		p = pstats.Stats('profi.txt')
		p.sort_stats('cumulative').print_stats(80)
		"""
		self.flush()
		#"""

		self.generator = Runner.Parallel(self, Options.options.jobs)

		def dw(on=True):
			if Options.options.progress_bar:
				if on: sys.stderr.write(Logs.colors.cursor_on)
				else: sys.stderr.write(Logs.colors.cursor_off)

		debug('build: executor starting')

		back = os.getcwd()
		os.chdir(self.bldnode.abspath())

		try:
			try:
				dw(on=False)
				self.generator.start()
			except KeyboardInterrupt:
				dw()
				# if self.generator.processed != 1: TODO
				self.save()
				raise
			except Exception:
				dw()
				# do not store anything, for something bad happened
				raise
			else:
				dw()
				#if self.generator.processed != 1: TODO
				self.save()

			if self.generator.error:
				raise BuildError(self, self.task_manager.tasks_done)

		finally:
			os.chdir(back)