workspace = args.repo_workspace
    if not workspace:
        workspace = os.path.join(tempfile.gettempdir(), 'repo-workspace-%s' % args.rosdistro)

    from buildfarm.ros_distro import Rosdistro
    rd = Rosdistro(args.rosdistro)
    from buildfarm import dependency_walker
    packages = dependency_walker.get_packages(workspace, rd, skip_update=args.skip_update)
    dependencies = dependency_walker.get_jenkins_dependencies(args.rosdistro, packages)

    yum_target_repository = rd._build_files[0].yum_target_repository
    if args.fqdn is None:
        fqdn_parts = urlsplit(yum_target_repository)
        args.fqdn = fqdn_parts.netloc
    if args.arches is None:
        args.arches = rd.get_arches()

    release_jobs.check_for_circular_dependencies(dependencies)

    # even for wet_only the dry packages need to be consider, else they are not added as downstream dependencies for the wet jobs
    stack_depends, dry_maintainers = release_jobs.dry_get_stack_dependencies(args.rosdistro)
    dry_jobgraph = release_jobs.dry_generate_jobgraph(args.rosdistro, dependencies, stack_depends)

    combined_jobgraph = {}
    for k, v in dependencies.iteritems():
        combined_jobgraph[k] = v
    for k, v in dry_jobgraph.iteritems():
        combined_jobgraph[k] = v

    # setup a job triggered by all other rpmjobs
    combined_jobgraph[rpmify_package_name(args.rosdistro, 'metapackages')] = combined_jobgraph.keys()
Exemplo n.º 2
0
        rd = Rosdistro(args.rosdistro)
        from buildfarm import dependency_walker
        packages = dependency_walker.get_packages(workspace,
                                                  rd,
                                                  skip_update=args.skip_update)
        dependencies = dependency_walker.get_jenkins_dependencies(
            args.rosdistro, packages)

        # TODO does only work with one build file
        build_config = rd._build_files[0].get_target_configuration()
        apt_target_repository = build_config['apt_target_repository']
        if args.fqdn is None:
            fqdn_parts = urlsplit(apt_target_repository)
            args.fqdn = fqdn_parts.netloc
        if args.arches is None:
            args.arches = rd.get_arches()

        # TODO does only work with one build file
        sourcedeb_timeout = rd._build_files[0].jenkins_sourcedeb_job_timeout
        binarydeb_timeout = rd._build_files[0].jenkins_binarydeb_job_timeout
    else:
        apt_target_repository = 'http://' + args.fqdn + '/repos/building'
        from buildfarm.ros_distro_fuerte import Rosdistro
        rd = Rosdistro(args.rosdistro)
        from buildfarm import dependency_walker_fuerte
        stacks = dependency_walker_fuerte.get_stacks(
            workspace,
            rd._repoinfo,
            args.rosdistro,
            skip_update=args.skip_update)
        dependencies = dependency_walker_fuerte.get_dependencies(