def metadata_builder(column_data):
        distro, jobtype = column_data.split('_', 1)
        data = {
            'rosdistro': args.rosdistro,
            'rosdistro_short': args.rosdistro[0].upper(),
            'distro': distro,
            'distro_short': distro[0].upper(),
            'distro_ver': fedora_release_version(distro)
        }
        is_source = jobtype == 'SRPMS'
        if is_source:
            column_label = '{rosdistro_short}src{distro_short}'
            view_name = '{rosdistro_short}src'
        else:
            data['arch_short'] = {'x86_64': '64', 'i386': '32'}[jobtype]
            column_label = '{rosdistro_short}binF{distro_ver}x{arch_short}'
            view_name = '{rosdistro_short}binF{distro_ver}x{arch_short}'
        data['column_label'] = column_label.format(**data)
        data['view_url'] = 'http://151.159.91.137:8080/view/%s/' % view_name.format(**data)

        if is_source:
            job_name = 'ros-{rosdistro}-{{pkg}}_sourcerpm'
        else:
            data['arch'] = jobtype
            job_name = 'ros-{rosdistro}-{{pkg}}_binaryrpm_{distro}_{arch}'
        data['job_url'] = ('{view_url}job/%s/' % job_name).format(**data)

        return data
Ejemplo n.º 2
0
def dry_binaryrpm_jobs(stackname, dry_maintainers, rosdistro, distros, arches, fqdn, jobgraph, packages_for_sync):
    jenkins_config = jenkins_support.load_server_config_file(jenkins_support.get_default_catkin_rpms_config())
    package = redhatify_package_name(rosdistro, stackname)
    d = dict(
        FQDN=fqdn,
        PACKAGE=package,
        ROSDISTRO=rosdistro,
        STACK_NAME=stackname,
        NOTIFICATION_EMAIL=' '.join(dry_maintainers),
        USERNAME=jenkins_config.username,
        IS_METAPACKAGES=(stackname == 'metapackages'),
        PACKAGES_FOR_SYNC=str(packages_for_sync)
    )
    jobs = []
    for distro in distros:
        for arch in arches:
            d['ARCH'] = arch
            d['DISTRO'] = distro
            d['DISTRO_VER'] = fedora_release_version(distro)

            d["CHILD_PROJECTS"] = calc_child_jobs(package, distro, arch, jobgraph)
            d["DEPENDENTS"] = "True"
            config = create_dry_binaryrpm_config(d)
            #print(config)
            job_name = binaryrpm_job_name(package, distro, arch)
            jobs.append((job_name, config))
            #print ("config of %s is %s" % (job_name, config))
    return jobs
Ejemplo n.º 3
0
def compute_missing(distros, arches, fqdn, rosdistro, sourcerpm_only=False, wet_only=False):
    """ Compute what packages are missing from a repo based on the rosdistro files, both wet and dry. """

    repo_url = 'http://%s/smd-ros-building' % fqdn

    rd = Rosdistro(rosdistro)
    # We take the intersection of repo-specific targets with default
    # targets.

    if distros:
        target_distros = distros
    else:
        target_distros = rd.get_target_distros()

    missing = {}
    for short_package_name in rd.get_package_list():
        #print ('Analyzing WET stack "%s" for "%s"' % (r['url'], target_distros))

        # todo check if sourcerpm is present with the right version
        rpm_name = redhatify_package_name(rosdistro, short_package_name)
        expected_version = rd.get_version(short_package_name, full_version=True)

        missing[short_package_name] = []
        for d in target_distros:
            d_ver = fedora_release_version(d)
            if not repo.rpm_in_repo(repo_url, rpm_name, str(expected_version) + "\.fc" + d_ver, d, 'SRPMS'):
                missing[short_package_name].append((d, 'SRPMS'))
            if not sourcerpm_only:
                for a in arches:
                    if not repo.rpm_in_repo(repo_url, rpm_name, str(expected_version) + "\.fc" + d_ver, d, a):
                        missing[short_package_name].append((d, a))

    if not sourcerpm_only and not wet_only:
        #dry stacks
        # dry dependencies
        dist = load_distro(distro_uri(rosdistro))

        distro_arches = []
        for d in target_distros:
            for a in arches:
                distro_arches.append((d, a))

        for s in dist.stacks:
            #print ("Analyzing DRY job [%s]" % s)
            expected_version = dry_get_stack_version(s, dist)

            # sanitize undeclared versions for string substitution
            if not expected_version:
                expected_version = ''
            missing[s] = []
            # for each distro arch check if the RPM is present. If not trigger the build.
            for (d, a) in distro_arches:
                if not repo.rpm_in_repo(repo_url, redhatify_package_name(rosdistro, s), expected_version + "\.fc" + fedora_release_version(d), d, a):
                    missing[s].append((d, a))

    return missing
Ejemplo n.º 4
0
def sourcerpm_jobs(package, maintainer_emails, distros, fqdn, release_uri, child_projects, rosdistro, short_package_name):
    jenkins_config = jenkins_support.load_server_config_file(jenkins_support.get_default_catkin_rpms_config())

    d = dict(
        RELEASE_URI=release_uri,
        RELEASE_BRANCH='master',
        FQDN=fqdn,
        DISTROS=distros,
        CHILD_PROJECTS=child_projects,
        PACKAGE=package,
        NOTIFICATION_EMAIL=' '.join(maintainer_emails),
        ROSDISTRO=rosdistro,
        SHORT_PACKAGE_NAME=short_package_name,
        USERNAME=jenkins_config.username
    )
    jobs = []
    for distro in distros:
        d['DISTRO'] = distro
        d['DISTRO_VER'] = fedora_release_version(distro)
        jobs.append((sourcerpm_job_name(package, distro), create_sourcerpm_config(d)))
    return jobs
Ejemplo n.º 5
0
def binaryrpm_jobs(package, maintainer_emails, distros, arches, fqdn, jobgraph):
    jenkins_config = jenkins_support.load_server_config_file(jenkins_support.get_default_catkin_rpms_config())
    d = dict(
        DISTROS=distros,
        FQDN=fqdn,
        PACKAGE=package,
        NOTIFICATION_EMAIL=' '.join(maintainer_emails),
        USERNAME=jenkins_config.username
    )
    jobs = []
    for distro in distros:
        d['DISTRO'] = distro
        d['DISTRO_VER'] = fedora_release_version(distro)
        for arch in arches:
            d['ARCH'] = arch
            d["CHILD_PROJECTS"] = calc_child_jobs(package, distro, arch, jobgraph)
            d["DEPENDENTS"] = add_dependent_to_dict(package, jobgraph)
            config = create_binaryrpm_config(d)
            #print(config)
            job_name = binaryrpm_job_name(package, distro, arch)
            jobs.append((job_name, config))
    return jobs