コード例 #1
0
ファイル: command.py プロジェクト: ronan22/obs-service-gbs
def main(argv=None):
    """Main function"""

    ret = 0
    try:
        args = parse_args(argv)
        args.outdir = os.path.abspath(args.outdir)

        if args.verbose == 'yes':
            gbplog.setup(color='auto', verbose=True)
            LOGGER.setLevel(gbplog.DEBUG)
            gbp_repocache.LOGGER.setLevel(gbplog.DEBUG)
            gbs_log.setup(verbose=True)
        else:
            gbplog.setup(color='auto', verbose=False)
            gbs_log.setup(verbose=False)

        LOGGER.info('Starting GBS source service')

        config = read_config(args.config)
        # Create / update cached repository
        repo = CachedRepo(config['repo-cache-dir'], args.url)
        args.revision = repo.update_working_copy(args.revision,
                                                 submodules=False)
        # Create outdir
        try:
            os.makedirs(args.outdir)
        except OSError as err:
            if err.errno != os.errno.EEXIST:
                raise ServiceError('Failed to create outdir: %s' % err, 1)
        os.chdir(repo.repodir)
        LOGGER.info('args.spec %s' % args.spec)
        if args.spec is None:
            spec_name=os.path.basename(args.url)
            if spec_name.endswith(".git"):
                  spec_name=spec_name[:-4]
            args.spec = findBestSpecFile('./packaging', spec_name)
        else:
            args.spec = findBestSpecFile('./packaging', args.spec)
        if args.spec is None:
            LOGGER.error('no spec file available in packaging'
                                                         ' directory')
            return 2

        read_localconf(".")
        # Export sources with GBS
        gbs_export(repo, args)

    except ServiceError as err:
        LOGGER.error(err[0])
        ret = err[1]
    except CachedRepoError as err:
        LOGGER.error('RepoCache: %s' % err)
        ret = 1

    return ret
コード例 #2
0
def main(argv=None):
    """Main function"""

    args = parse_args(argv)

    LOGGER.info('Starting git-buildpackage source service')
    if args.verbose == 'yes':
        gbplog.setup(color='auto', verbose=True)
        LOGGER.setLevel(gbplog.DEBUG)
        gbp_repocache.LOGGER.setLevel(gbplog.DEBUG)

    config = read_config(args.config)

    # Create / update cached repository
    try:
        repo = CachedRepo(config['repo-cache-dir'], args.url)
        args.revision = repo.update_working_copy(args.revision)
    except CachedRepoError as err:
        LOGGER.error('RepoCache: %s' % str(err))
        return 1

    # Export sources with GBP
    rpm_args, deb_args = construct_gbp_args(args)
    orig_dir = os.path.abspath(os.curdir)
    try:
        os.chdir(repo.repodir)
        if args.rpm in ['yes','auto']:
            if args.spec is None:
                specs_path = get_spec('.')
            else:
                specs_path = get_spec('.', name=args.spec)
            if specs_path is None:
                LOGGER.error('no spec file available in packaging'
                                                         ' directory')
                return 2
            rpm_args.append('--git-spec-file=%s' % specs_path)
            LOGGER.info('Exporting RPM packaging files with GBP')
            LOGGER.debug('git-buildpackage-rpm args: %s' % ' '.join(rpm_args))
            ret = gbp_rpm(rpm_args)
            if ret:
                LOGGER.error('Git-buildpackage-rpm failed, unable to export '
                             'RPM packaging files')
                return 2
        if args.deb == 'yes' or (args.deb== 'auto' and os.path.isdir('debian')):
            LOGGER.info('Exporting Debian source package with GBP')
            LOGGER.debug('git-buildpackage args: %s' % ' '.join(deb_args))
            ret = gbp_deb(deb_args)
            if ret:
                LOGGER.error('Git-buildpackage failed, unable to export Debian '
                             'sources package files')
                return 3
    finally:
        os.chdir(orig_dir)

    return 0
コード例 #3
0
def main(argv=None):
    """Main function"""

    args = parse_args(argv)

    logging.basicConfig(level=logging.INFO,
                        format='%(name)s:%(levelname)s: %(message)s')
    LOGGER.info('Starting git-buildpackage source service')
    if args.verbose == 'yes':
        gbplog.setup(color='auto', verbose=True)
        logging.root.setLevel(logging.DEBUG)

    config = read_config(args.config)

    # Create / update cached repository
    refs_hack = str_to_bool(config['repo-cache-refs-hack'])
    try:
        repo = CachedRepo(config['repo-cache-dir'], args.url,
                          refs_hack=refs_hack)
        args.revision = repo.update_working_copy(args.revision)
    except CachedRepoError as err:
        LOGGER.error('RepoCache: %s', str(err))
        return 1

    # Run GBP
    try:
        gbp_export(repo, args, config)

        # Write git meta file
        if args.git_meta:
            write_treeish_meta(repo.repo, args.revision, args.outdir,
                               args.git_meta)
    except ExportError as err:
        LOGGER.error(err[0])
        ret = err[1]
    except GbpServiceError as err:
        LOGGER.error(err)
        ret = EXIT_ERR_SERVICE
    else:
        ret = EXIT_OK
    return ret
コード例 #4
0
def main(argv=None):
    """Main function"""

    ret = EXIT_OK
    args = parse_args(argv)
    args.outdir = os.path.abspath(args.outdir)

    if args.verbose == 'yes':
        gbplog.setup(color='auto', verbose=True)
        LOGGER.setLevel(gbplog.DEBUG)
        gbp_repocache.LOGGER.setLevel(gbplog.DEBUG)
        gbs_log.setup(verbose=True)
    else:
        gbplog.setup(color='auto', verbose=False)
        gbs_log.setup(verbose=False)
    # Add a new handler writing to a tempfile into the root logger
    file_log = tempfile.NamedTemporaryFile(prefix='gbs-service_')
    file_handler = gbplog.GbpStreamHandler(file_log)
    gbplog.getLogger().addHandler(file_handler)

    LOGGER.info('Starting GBS source service')

    # Create outdir
    try:
        os.makedirs(args.outdir)
    except OSError as err:
        if err.errno != os.errno.EEXIST:
            LOGGER.error('Failed to create outdir: %s', err)
            return EXIT_ERR_SERVICE

    try:
        config = read_config(args.config)
        # Create / update cached repository
        refs_hack = str_to_bool(config['repo-cache-refs-hack'])
        try:
            repo = CachedRepo(config['repo-cache-dir'],
                              args.url,
                              refs_hack=refs_hack)
            args.revision = repo.update_working_copy(args.revision,
                                                     submodules=False)
        except CachedRepoError as err:
            raise ServiceError('RepoCache: %s' % err, EXIT_ERR_SERVICE)

        # Export sources with GBS
        gbs_export(repo, args, config)

        # Write git-meta
        if args.git_meta:
            try:
                write_treeish_meta(repo.repo, args.revision, args.outdir,
                                   args.git_meta)
            except GbpServiceError as err:
                raise ServiceError(str(err), EXIT_ERR_SERVICE)
    except ServiceError as err:
        LOGGER.error(err[0])
        if err[1] in args.error_pkg:
            file_handler.flush()
            error_fn = os.path.join(args.outdir, 'service-error')
            shutil.copy2(file_log.name, error_fn)
            with open(error_fn + '.spec', 'w') as error_spec:
                error_spec.write(ERROR_PKG_SPEC)
            ret = EXIT_OK
        else:
            ret = err[1]
    finally:
        gbplog.getLogger().removeHandler(file_handler)
        file_log.close()

    return ret
コード例 #5
0
ファイル: command.py プロジェクト: 01org/obs-service-gbs
def main(argv=None):
    """Main function"""

    ret = EXIT_OK
    args = parse_args(argv)
    args.outdir = os.path.abspath(args.outdir)

    if args.verbose == 'yes':
        gbplog.setup(color='auto', verbose=True)
        LOGGER.setLevel(gbplog.DEBUG)
        gbp_repocache.LOGGER.setLevel(gbplog.DEBUG)
        gbs_log.setup(verbose=True)
    else:
        gbplog.setup(color='auto', verbose=False)
        gbs_log.setup(verbose=False)
    # Add a new handler writing to a tempfile into the root logger
    file_log = tempfile.NamedTemporaryFile(prefix='gbs-service_')
    file_handler = gbplog.GbpStreamHandler(file_log)
    gbplog.getLogger().addHandler(file_handler)

    LOGGER.info('Starting GBS source service')

    # Create outdir
    try:
        os.makedirs(args.outdir)
    except OSError as err:
        if err.errno != os.errno.EEXIST:
            LOGGER.error('Failed to create outdir: %s', err)
            return EXIT_ERR_SERVICE

    try:
        config = read_config(args.config)
        # Create / update cached repository
        refs_hack = str_to_bool(config['repo-cache-refs-hack'])
        try:
            repo = CachedRepo(config['repo-cache-dir'], args.url,
                              refs_hack=refs_hack)
            args.revision = repo.update_working_copy(args.revision,
                                                     submodules=False)
        except CachedRepoError as err:
            raise ServiceError('RepoCache: %s' % err, EXIT_ERR_SERVICE)

        # Export sources with GBS
        gbs_export(repo, args, config)

        # Write git-meta
        if args.git_meta:
            try:
                write_treeish_meta(repo.repo, args.revision, args.outdir,
                                   args.git_meta)
            except GbpServiceError as err:
                raise ServiceError(str(err), EXIT_ERR_SERVICE)
    except ServiceError as err:
        LOGGER.error(err[0])
        if err[1] in args.error_pkg:
            file_handler.flush()
            error_fn = os.path.join(args.outdir, 'service-error')
            shutil.copy2(file_log.name, error_fn)
            with open(error_fn + '.spec', 'w') as error_spec:
                error_spec.write(ERROR_PKG_SPEC)
            ret = EXIT_OK
        else:
            ret = err[1]
    finally:
        gbplog.getLogger().removeHandler(file_handler)
        file_log.close()

    return ret