from helpers.defs import * from helpers.enums import * # The default CI image SHAs to use, which can be specified per distro group and # can be overridden for individual distros, which is useful when debugging using # a locally built CI image. See https://github.com/XRPLF/ci for the images. DEBIAN_SHA = "sha-ca4517d" RHEL_SHA = "sha-ca4517d" UBUNTU_SHA = "sha-84afd81" # We only build a selection of configurations for the various triggers to reduce # pipeline runtime. Across all three operating systems we aim to cover all GCC # and Clang versions, while not duplicating configurations too much. See also # the README for more details. # The Debian distros to build configurations for. # # We have the following distros available: # - Debian Bullseye: GCC 12-15 # - Debian Bookworm: GCC 13-15, Clang 16-20 # - Debian Trixie: GCC 14-15, Clang 20-21 DEBIAN_DISTROS = [ Distro( os_name="debian", os_version="bullseye", compiler_name="gcc", compiler_version="14", image_sha=DEBIAN_SHA, specs=[ Spec( build_modes=[BuildMode.UNITY_OFF], build_types=[BuildType.DEBUG], publish_option=PublishOption.PACKAGE_ONLY, triggers=[Trigger.COMMIT, Trigger.LABEL], ), Spec( build_modes=[BuildMode.UNITY_OFF], build_types=[BuildType.PUBLISH], publish_option=PublishOption.PACKAGE_AND_IMAGE, triggers=[Trigger.MERGE], ), Spec( triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="debian", os_version="bullseye", compiler_name="gcc", compiler_version="15", image_sha=DEBIAN_SHA, specs=[ Spec( archs=[Arch.LINUX_ARM64], build_modes=[BuildMode.UNITY_ON], build_option=BuildOption.COVERAGE, build_types=[BuildType.DEBUG], triggers=[Trigger.COMMIT, Trigger.MERGE], ), Spec( triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="debian", os_version="bookworm", compiler_name="gcc", compiler_version="15", image_sha=DEBIAN_SHA, specs=[ Spec( archs=[Arch.LINUX_AMD64], triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="debian", os_version="bookworm", compiler_name="clang", compiler_version="16", image_sha=DEBIAN_SHA, specs=[ Spec( archs=[Arch.LINUX_AMD64], build_modes=[BuildMode.UNITY_OFF], build_option=BuildOption.VOIDSTAR, build_types=[BuildType.DEBUG], publish_option=PublishOption.IMAGE_ONLY, triggers=[Trigger.COMMIT], ), Spec( archs=[Arch.LINUX_ARM64], build_modes=[BuildMode.UNITY_ON], build_types=[BuildType.RELEASE], triggers=[Trigger.MERGE], ), Spec( triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="debian", os_version="bookworm", compiler_name="clang", compiler_version="17", image_sha=DEBIAN_SHA, specs=[ Spec( archs=[Arch.LINUX_AMD64], triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="debian", os_version="bookworm", compiler_name="clang", compiler_version="18", image_sha=DEBIAN_SHA, specs=[ Spec( archs=[Arch.LINUX_ARM64], triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="debian", os_version="bookworm", compiler_name="clang", compiler_version="19", image_sha=DEBIAN_SHA, specs=[ Spec( archs=[Arch.LINUX_AMD64], triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="debian", os_version="trixie", compiler_name="gcc", compiler_version="15", image_sha=DEBIAN_SHA, specs=[ Spec( archs=[Arch.LINUX_ARM64], triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="debian", os_version="trixie", compiler_name="clang", compiler_version="21", image_sha=DEBIAN_SHA, specs=[ Spec( archs=[Arch.LINUX_AMD64], build_modes=[BuildMode.UNITY_OFF], build_types=[BuildType.DEBUG], triggers=[Trigger.MERGE], ), Spec( archs=[Arch.LINUX_AMD64], triggers=[Trigger.SCHEDULE], ), ], ), ] # The RHEL distros to build configurations for. # # We have the following distros available: # - RHEL 8: GCC 14, Clang "any" # - RHEL 9: GCC 12-14, Clang "any" # - RHEL 10: GCC 14, Clang "any" RHEL_DISTROS = [ Distro( os_name="rhel", os_version="8", compiler_name="gcc", compiler_version="14", image_sha=RHEL_SHA, specs=[ Spec( archs=[Arch.LINUX_AMD64], triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="rhel", os_version="8", compiler_name="clang", compiler_version="any", image_sha=RHEL_SHA, specs=[ Spec( archs=[Arch.LINUX_AMD64], triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="rhel", os_version="9", compiler_name="gcc", compiler_version="12", image_sha=RHEL_SHA, specs=[ Spec( archs=[Arch.LINUX_AMD64], build_modes=[BuildMode.UNITY_ON], build_types=[BuildType.DEBUG], triggers=[Trigger.COMMIT], ), Spec( archs=[Arch.LINUX_AMD64], build_modes=[BuildMode.UNITY_ON], build_types=[BuildType.RELEASE], triggers=[Trigger.MERGE], ), Spec( archs=[Arch.LINUX_AMD64], triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="rhel", os_version="9", compiler_name="gcc", compiler_version="13", image_sha=RHEL_SHA, specs=[ Spec( archs=[Arch.LINUX_AMD64], triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="rhel", os_version="10", compiler_name="clang", compiler_version="any", image_sha=RHEL_SHA, specs=[ Spec( archs=[Arch.LINUX_AMD64], triggers=[Trigger.SCHEDULE], ), ], ), ] # The Ubuntu distros to build configurations for. # # We have the following distros available: # - Ubuntu Jammy (22.04): GCC 12 # - Ubuntu Noble (24.04): GCC 13-14, Clang 16-20 UBUNTU_DISTROS = [ Distro( os_name="ubuntu", os_version="jammy", compiler_name="gcc", compiler_version="12", image_sha=UBUNTU_SHA, specs=[ Spec( archs=[Arch.LINUX_ARM64], triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="ubuntu", os_version="noble", compiler_name="gcc", compiler_version="13", image_sha=UBUNTU_SHA, specs=[ Spec( archs=[Arch.LINUX_ARM64], build_modes=[BuildMode.UNITY_ON], build_types=[BuildType.RELEASE], triggers=[Trigger.MERGE], ), Spec( archs=[Arch.LINUX_ARM64], triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="ubuntu", os_version="noble", compiler_name="gcc", compiler_version="14", image_sha=UBUNTU_SHA, specs=[ Spec( archs=[Arch.LINUX_ARM64], triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="ubuntu", os_version="noble", compiler_name="clang", compiler_version="17", image_sha=UBUNTU_SHA, specs=[ Spec( archs=[Arch.LINUX_ARM64], build_modes=[BuildMode.UNITY_OFF], build_types=[BuildType.DEBUG], triggers=[Trigger.MERGE], ), Spec( archs=[Arch.LINUX_ARM64], triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="ubuntu", os_version="noble", compiler_name="clang", compiler_version="18", image_sha=UBUNTU_SHA, specs=[ Spec( archs=[Arch.LINUX_AMD64], triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="ubuntu", os_version="noble", compiler_name="clang", compiler_version="19", image_sha=UBUNTU_SHA, specs=[ Spec( archs=[Arch.LINUX_ARM64], triggers=[Trigger.SCHEDULE], ), ], ), Distro( os_name="ubuntu", os_version="noble", compiler_name="clang", compiler_version="20", image_sha=UBUNTU_SHA, specs=[ Spec( archs=[Arch.LINUX_AMD64], build_modes=[BuildMode.UNITY_ON], build_types=[BuildType.DEBUG], triggers=[Trigger.COMMIT], ), Spec( archs=[Arch.LINUX_AMD64], build_modes=[BuildMode.UNITY_OFF], build_types=[BuildType.RELEASE], triggers=[Trigger.MERGE], ), Spec( archs=[Arch.LINUX_AMD64], triggers=[Trigger.SCHEDULE], ), ], ), ]