def handle(self, platform, configuration, build_number, no_deps, delete, *args, **kwargs): repos = [] # Build dependency graph, or not if no_deps: for repo in self.config.repositories: b = utils.load_build(repo) repos.append(b) else: all_repos = {} for repo in self.config.all_repositories: # Remove explicitly skipped skipped = self.config.get('options.skipped_repositories') or [] if repo.name not in skipped: b = utils.load_build(repo) all_repos[b.name] = b dg = DependencyGraph(all_repos.values()) for repo in dg.get_in_order( map(lambda x: all_repos[x.name].id, self.config.repositories), None): repos.append(repo) config = utils.BuildConfig(self.config, platform, configuration, build_number) # if --delete if delete and os.path.exists(config.output_path): if not shutil.remove(config.output_path): self.ui.error('Abort: "%s" could not be deleted' % config.output_path) return # create output path if not exist if not os.path.exists(config.output_path): shutil.mkdir(config.output_path) # Build for repo in repos: self.ui.info(str(repo)) for project in repo.projects: status, output, error = project.build(config) self.save_log(project, output + '\n\n\n' + error) self.ui.report(' %s' % project, status, { 'output': output, 'error': error })
def setup(module, target='zip', output_path=None, data_dir=None): dist = os.path.abspath('dist') try: if target == 'zip': assert er('setup.py', 'install', '--no-compile', '--install-lib', os.path.join(dist, 'lib'), '--install-scripts', os.path.join(dist), *(['--install-data', os.path.join(dist, data_dir)] if data_dir is not None else [])) with shutil.goto(dist) as ok: assert ok assert compress.mkzip('%s.zip' % module, glob.glob(os.path.join('lib', '*'))) assert shutil.remove('lib') elif target == 'exe': assert er('setup.py', 'install', '--no-compile', '--install-lib', os.path.join(dist, 'lib', 'python'), '--install-scripts', os.path.join(dist, 'scripts'), *(['--install-data', os.path.join(dist, data_dir)] if data_dir is not None else [])) with shutil.goto(dist) as ok: assert ok modules = list(filter(os.path.exists, ['lib', 'scripts'] + ( [data_dir] if data_dir is not None else []))) assert compress.seven_zip('%s.exe' % module, modules, self_extracting=True) # Cleanup for module in modules: assert shutil.remove(module) if output_path is not None: output_path = os.path.abspath(output_path) if output_path != dist: if not os.path.isdir(output_path): assert shutil.mkdir(output_path) for filename in shutil.search(dist, '*'): output = os.path.join(output_path, filename.replace(dist, '', 1) .strip('\\/')) assert shutil.move(filename, output) return 0 except AssertionError as e: print(e) return 1 finally: # Cleanup if output_path != dist: shutil.remove(dist) if os.path.isdir('build'): shutil.remove('build')
def handle(self, platform, configuration, build_number, no_deps, delete, *args, **kwargs): repos = [] # Build dependency graph, or not if no_deps: for repo in self.config.repositories: b = utils.load_build(repo) repos.append(b) else: all_repos = {} for repo in self.config.all_repositories: # Remove explicitly skipped skipped = self.config.get('options.skipped_repositories') or [] if repo.name not in skipped: b = utils.load_build(repo) all_repos[b.name] = b dg = DependencyGraph(all_repos.values()) for repo in dg.get_in_order(map(lambda x: all_repos[x.name].id, self.config.repositories), None): repos.append(repo) config = utils.BuildConfig(self.config, platform, configuration, build_number) # if --delete if delete and os.path.exists(config.output_path): if not shutil.remove(config.output_path): self.ui.error('Abort: "%s" could not be deleted' % config.output_path) return # create output path if not exist if not os.path.exists(config.output_path): shutil.mkdir(config.output_path) # Build for repo in repos: self.ui.info(str(repo)) for project in repo.projects: status, output, error = project.build(config) self.save_log(project, output + '\n\n\n' + error) self.ui.report(' %s' % project, status, {'output': output, 'error': error})
def handle(self, delete=False, *args, **kwargs): if delete and os.path.exists(self.config.active_path): shutil.remove(self.config.active_path) for repo in self.config.repositories: status, output, error = repo.clone() self.ui.report(repo, status, {'output': output, 'error': error})