#!/usr/bin/python architectures = """ kfreebsd-amd64 i386 kfreebsd-i386 mips mips64el mipsel powerpc ppc64 s390x sparc sparc64 x32 """.split() mono_architectures = """ armel armhf kfreebsd-armhf arm64 arm64ilp32 hurd-amd64 musl-linux-armhf musl-linux-arm64 alpha hppa hurd-i386 musl-linux-i386 m68k mips64 mips64r6el mipsr6el musl-linux-mips musl-linux-mipsel nios2 powerpcel powerpcspe ppc64el riscv64 sh3 sh4 tilegx """.split() release_architectures = """ armel armhf arm64 i386 mips mips64el mipsel powerpc ppc64el s390x """.split() architectures += mono_architectures gcc_versions = ("7","8") diffoscope_gcc_versions = ("7",) print(""" - defaults: name: rebootstrap project-type: freestyle properties: - sidebar: url: https://jenkins.debian.net/userContent/about.html text: About jenkins.debian.net icon: /userContent/images/debian-swirl-24x24.png - sidebar: url: https://jenkins.debian.net/view/rebootstrap/ text: All rebootstrap jobs icon: /userContent/images/debian-jenkins-24x24.png - sidebar: url: http://www.profitbricks.co.uk text: Sponsored by Profitbricks icon: /userContent/images/profitbricks-24x24.png - priority-sorter: priority: '150' - throttle: max-total: 5 max-per-node: 5 enabled: true option: category categories: - rebootstrap description: '{my_description}{do_not_edit}' logrotate: daysToKeep: 90 numToKeep: 10 artifactDaysToKeep: -1 artifactNumToKeep: -1 scm: - git: url: 'git://anonscm.debian.org/users/helmutg/rebootstrap.git' branches: - '{my_branchname}' builders: - shell: '{my_wrapper} {my_branchname} HOST_ARCH={my_arch} {my_params}' publishers: - email: recipients: 'jenkins+debian-bootstrap helmutg@debian.org' - naginator: progressive-delay-increment: 5 progressive-delay-maximum: 15 max-failed-builds: 5 regular-expression: 'Caused by: hudson.plugins.git.GitException: Command "git fetch' triggers: - pollscm: cron: '*/6 * * * *' node: '{my_node}' """) for arch in sorted(architectures): for gccver in sorted(gcc_versions): for nobiarch in ["", "_nobiarch"]: if nobiarch and arch in mono_architectures: continue for supported in ["", "_supported"]: if (nobiarch or arch.startswith("musl-linux-") or arch.startswith("hurd-") or arch.startswith("kfreebsd-")) and supported: continue for diffoscope in ["", "_diffoscope"]: if diffoscope and (arch not in release_architectures or gccver not in diffoscope_gcc_versions): continue print(""" - job-template: defaults: rebootstrap name: '{name}_%(arch)s_gcc%(gccshortver)s%(nobiarch)s%(supported)s%(diffoscope)s'""" % dict(arch=arch, gccshortver=gccver.replace(".", ""), nobiarch=nobiarch, supported=supported, diffoscope=diffoscope)) print(""" - project: name: rebootstrap do_not_edit: '

Job configuration source is rebootstrap.yaml.py.' jobs:""") for arch in sorted(architectures): for gccver in sorted(gcc_versions): for nobiarch in (False, True): if nobiarch and arch in mono_architectures: continue for supported in (False, True): if (nobiarch or arch.startswith("musl-linux-") or arch.startswith("hurd-") or arch.startswith("kfreebsd-")) and supported: continue for diffoscope in (False, True): if diffoscope and (arch not in release_architectures or gccver not in diffoscope_gcc_versions): continue print( """ - '{name}_%(suffix)s': my_arch: '%(arch)s' my_params: 'GCC_VER=%(gccver)s ENABLE_MULTILIB=%(multilib_value)s ENABLE_MULTIARCH_GCC=%(multiarch_gcc_value)s ENABLE_DIFFOSCOPE=%(diffoscope_value)s' my_description: 'Verify bootstrappability of Debian using gcc-%(gccver)s%(nobiarch_comment)s for %(arch)s%(supported_comment)s%(diffoscope_comment)s' my_branchname: 'jenkins_%(suffix)s' my_node: '%(node)s' my_wrapper: '/srv/jenkins/bin/jenkins_master_wrapper.sh'""" % dict(arch=arch, suffix=arch + "_gcc" + gccver.replace(".", "") + ("_nobiarch" if nobiarch else "") + ("_supported" if supported else "") + ("_diffoscope" if diffoscope else ""), gccver=gccver, multilib_value="no" if nobiarch else "yes", nobiarch_comment=" without multilib" if nobiarch else "", multiarch_gcc_value="no" if supported else "yes", supported_comment=" using the supported method" if supported else "", diffoscope_value="yes" if diffoscope else "no", diffoscope_comment=" showing diffoscopes" if diffoscope else "", node="profitbricks9"))