local Pipeline(image, version, arch, depinstall, extra, gccExtra, clangExtra, tccExtra) = { kind: "pipeline", type: "docker", name: image+"-"+version+"-"+arch, platform: { os: "linux", arch: arch }, steps: [ { name: "build-gcc", image: image+":"+version, commands: [ depinstall+" make "+extra+" "+gccExtra, "make clean", "make CC=gcc all" ] }, { name: "build-clang", image: image+":"+version, commands: [ depinstall+" make "+extra+" "+clangExtra, "make clean", "make CC=clang all" ] } ] + (if tccExtra != "" then [ { name: "build-tcc", image: image+":"+version, commands: [ depinstall+" make "+extra+" "+tccExtra, "make clean", "make CC=tcc all" ] } ] else [] ) }; local AptPipeline(image, version, arch, extra="", gccExtra="gcc", clangExtra="clang", tccExtra="tcc") = Pipeline(image, version, arch, "apt update && DEBIAN_FRONTEND=noninteractive apt install -y", extra, gccExtra, clangExtra, tccExtra); local PacManPipeline(image, version, arch, extra="", gccExtra="gcc", clangExtra="clang", tccExtra="tcc") = Pipeline(image, version, arch, "pacman -Syy && pacman --noconfirm -S", extra, gccExtra, clangExtra, tccExtra); local ApkPipeline(image, version, arch, extra="musl-dev linux-headers", gccExtra="gcc", clangExtra="gcc clang", tccExtra="") = Pipeline(image, version, arch, "apk add --update", extra, gccExtra, clangExtra, tccExtra); local YumPipeline(image, version, arch, extra="", gccExtra="gcc", clangExtra="clang", tccExtra="") = Pipeline(image, version, arch, "yum install -y", extra, gccExtra, clangExtra, tccExtra); local XbpsPipeline(image, version, arch, extra="", gccExtra="gcc", clangExtra="clang", tccExtra="tcc glibc-devel") = Pipeline(image, version, arch, "xbps-install -Sy", extra, gccExtra, clangExtra, tccExtra); # [ AptPipeline("ubuntu", "20.04", "amd64"), AptPipeline("ubuntu", "20.04", "arm64"), AptPipeline("ubuntu", "18.04", "amd64"), AptPipeline("debian", "bullseye", "amd64"), AptPipeline("debian", "bullseye", "arm64"), AptPipeline("debian", "buster", "amd64"), AptPipeline("debian", "stretch", "amd64"), AptPipeline("debian", "jessie", "amd64", "", "gcc", "clang", ""), YumPipeline("fedora", "latest", "amd64", "", "gcc", "clang", ""), YumPipeline("fedora", "latest", "arm64"), PacManPipeline("archlinux", "latest", "amd64"), ApkPipeline("alpine", "latest", "amd64"), ApkPipeline("alpine", "latest", "arm64"), XbpsPipeline("voidlinux/voidlinux", "latest", "amd64"), ]