Example #1
0
    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
                })
Example #2
0
File: setup.py Project: delicb/tea
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')
Example #3
0
    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})
Example #4
0
 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})