Exemplo n.º 1
0
def build_repository(self, repo, branch):
    logger.info('Fetching repository configuration and PKGBUILDs...')
    repo.source.pull(branch=branch)

    config = repo.config

    if not config:
        logger.error('Repository configuration not found: ' + repo.name)
        return

    logger.info('Creating PKGBUILDs...')
    config.gen_pkgbuilds()

    logger.info('Loading configuration...')
    config.load()

    logger.info('Downloading package sources...')
    config.download()

    logger.info('Loading package information...')
    config.refresh()

    logger.info('Building packages...')
    if os.path.exists(config.repo_dir):
        rmtree(config.repo_dir)
    for package in config.packages:
        package.build()

    logger.info('Saving build information...')
    for package in config.packages:
        config.buildinfo.get('packages')[package.name] = package.gitrev
    config.buildinfo['build_number'] = config.build_number
    save_yaml(os.path.join(config.workdir, 'buildinfo.yml'), config.buildinfo)

    logger.info('Committing build information...')
    repo.source.repo.index.add(['buildinfo.yml'] + ['packages/{}/PKGBUILD'.format(pkg.name)
                                                    for pkg in config.packages])
    repo.source.repo.index.commit('Build {} at {:%c}\n\n{}'.format(config.build_number,
                                                                   datetime.now(),
                                                                   config.changelog),
                                  author=Actor("Builder", "*****@*****.**"))
    repo.source.repo.remotes.origin.push()

    logger.info('Exporting built packages...')
    rsync(config.repo_dir, config.export_dir, sudo=True)
Exemplo n.º 2
0
def build_iso(self, iso, branch):
    logger.info('Fetching ISO configuration...')
    iso.source.checkout(branch=branch)

    config = iso.config

    if not config:
        logger.error('ISO configuration not found: ' + iso.name)
        return

    logger.info('Setting up the build directory...')
    rsync('/usr/share/archiso/configs/releng', config.workdir)

    logger.info('Preparing ISO configuration...')

    # Add any additional repos
    replace_in_file(config.path('pacman.conf'), r'\#\[testing\]',
                    '\n\n'.join(config.custom_repos) + '\n\n#[testing]')

    # Add the requested packages
    append_to_file(config.path('packages.both'), config.packages)
    append_to_file(config.path('packages.i686'), config.packages_i686)
    append_to_file(config.path('packages.x86_64'), config.packages_x86_64)

    # Add customizations
    append_to_file(config.path('airootfs/root/customize_airootfs.sh'), config.customizations)

    if config.graphical_target:
        replace_in_file(config.path('airootfs/root/customize_airootfs.sh'),
                        r'multi-user.target', 'graphical.target')

    logger.info('Building ISO...')
    cmd = [config.path('build.sh'), '-v']

    if config.name:
        cmd += ['-N ' + config.name]
    if config.version:
        cmd += ['-V ' + config.version]
    if config.label:
        cmd += ['-L ' + config.label]

    run(cmd, capture_stdout=False, sudo=True, workdir=config.workdir)
Exemplo n.º 3
0
 def create(self):
     self.create_base()
     rsync(self.base_dir, self.workdir, sudo=True)