]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
CI: Temporarily enabling cross-platform deb build
authorMaria Matejka <mq@ucw.cz>
Mon, 8 Dec 2025 09:42:13 +0000 (10:42 +0100)
committerMaria Matejka <mq@ucw.cz>
Tue, 9 Dec 2025 21:15:58 +0000 (22:15 +0100)
This commit is a temporary measure. We'll refactor the CI and make the
builds more systematic.

.gitlab-ci.yml
misc/gitlab/data.yml.j2
misc/gitlab/template.yml.j2

index 3355bee6029277ca8f9645b24b227678090dba69..966344270dcdaf76b905dfe129d2703de103cc68 100644 (file)
@@ -1,3 +1,4 @@
+
 ###########################################################
 #####                                                 #####
 #####       DO  NOT  EDIT  THIS  FILE  BY  HAND       #####
@@ -16,6 +17,7 @@ variables:
   DOCKER_CMD: docker --config="$HOME/.docker/$CI_JOB_ID/"
   IMG_BASE: registry.nic.cz/labs/bird
   TOOLS_DIR: /home/gitlab-runner/bird-tools
+  PBUILDER_DIR: /home/gitlab-runner/pbuilder
   STAYRTR_BINARY: /usr/local/bin/stayrtr
 
 stages:
@@ -134,203 +136,163 @@ docker-docbuilder:
   variables:
     IMG_NAME: "docbuilder"
   <<: *docker-build
-
 docker-centos-7-amd64:
   variables:
     IMG_NAME: "centos-7-amd64"
   <<: *docker-build
-
 docker-centos-8-amd64:
   variables:
     IMG_NAME: "centos-8-amd64"
   <<: *docker-build
-
 docker-rocky-08-amd64:
   variables:
     IMG_NAME: "rocky-08-amd64"
   <<: *docker-build
-
 docker-rocky-09-amd64:
   variables:
     IMG_NAME: "rocky-09-amd64"
   <<: *docker-build
-
 docker-oracle-08-amd64:
   variables:
     IMG_NAME: "oracle-08-amd64"
   <<: *docker-build
-
 docker-oracle-09-amd64:
   variables:
     IMG_NAME: "oracle-09-amd64"
   <<: *docker-build
-
 docker-oracle-10-amd64:
   variables:
     IMG_NAME: "oracle-10-amd64"
   <<: *docker-build
-
 docker-fedora-32-amd64:
   variables:
     IMG_NAME: "fedora-32-amd64"
   <<: *docker-build
-
 docker-fedora-33-amd64:
   variables:
     IMG_NAME: "fedora-33-amd64"
   <<: *docker-build
-
 docker-opensuse-15.0-amd64:
   variables:
     IMG_NAME: "opensuse-15.0-amd64"
   <<: *docker-build
-
 docker-opensuse-15.1-amd64:
   variables:
     IMG_NAME: "opensuse-15.1-amd64"
   <<: *docker-build
-
 docker-opensuse-15.2-amd64:
   variables:
     IMG_NAME: "opensuse-15.2-amd64"
   <<: *docker-build
-
 docker-opensuse-15.3-amd64:
   variables:
     IMG_NAME: "opensuse-15.3-amd64"
   <<: *docker-build
-
 docker-opensuse-15.4-amd64:
   variables:
     IMG_NAME: "opensuse-15.4-amd64"
   <<: *docker-build
-
 docker-opensuse-15.5-amd64:
   variables:
     IMG_NAME: "opensuse-15.5-amd64"
   <<: *docker-build
-
 docker-fedora-34-amd64:
   variables:
     IMG_NAME: "fedora-34-amd64"
   <<: *docker-build
-
 docker-fedora-35-amd64:
   variables:
     IMG_NAME: "fedora-35-amd64"
   <<: *docker-build
-
 docker-fedora-36-amd64:
   variables:
     IMG_NAME: "fedora-36-amd64"
   <<: *docker-build
-
 docker-fedora-37-amd64:
   variables:
     IMG_NAME: "fedora-37-amd64"
   <<: *docker-build
-
 docker-fedora-38-amd64:
   variables:
     IMG_NAME: "fedora-38-amd64"
   <<: *docker-build
-
 docker-fedora-39-amd64:
   variables:
     IMG_NAME: "fedora-39-amd64"
   <<: *docker-build
-
 docker-fedora-40-amd64:
   variables:
     IMG_NAME: "fedora-40-amd64"
   <<: *docker-build
-
 docker-fedora-41-amd64:
   variables:
     IMG_NAME: "fedora-41-amd64"
   <<: *docker-build
-
 docker-fedora-42-amd64:
   variables:
     IMG_NAME: "fedora-42-amd64"
   <<: *docker-build
-
 docker-fedora-43-amd64:
   variables:
     IMG_NAME: "fedora-43-amd64"
   <<: *docker-build
-
 docker-ubuntu-18.04-amd64:
   variables:
     IMG_NAME: "ubuntu-18.04-amd64"
   <<: *docker-build
-
-docker-debian-11-i386:
+docker-ubuntu-20.04-amd64:
   variables:
-    IMG_NAME: "debian-11-i386"
+    IMG_NAME: "ubuntu-20.04-amd64"
   <<: *docker-build
-
 docker-debian-11-amd64:
   variables:
     IMG_NAME: "debian-11-amd64"
   <<: *docker-build
-
+docker-debian-11-i386:
+  variables:
+    IMG_NAME: "debian-11-i386"
+  <<: *docker-build
 docker-debian-12-amd64:
   variables:
     IMG_NAME: "debian-12-amd64"
   <<: *docker-build
-
 docker-debian-12-i386:
   variables:
     IMG_NAME: "debian-12-i386"
   <<: *docker-build
-
 docker-debian-13-amd64:
   variables:
     IMG_NAME: "debian-13-amd64"
   <<: *docker-build
-
 docker-debian-13-i386:
   variables:
     IMG_NAME: "debian-13-i386"
   <<: *docker-build
-
 docker-debian-testing-amd64:
   variables:
     IMG_NAME: "debian-testing-amd64"
   <<: *docker-build
-
 docker-debian-testing-i386:
   variables:
     IMG_NAME: "debian-testing-i386"
   <<: *docker-build
-
-docker-ubuntu-20.04-amd64:
-  variables:
-    IMG_NAME: "ubuntu-20.04-amd64"
-  <<: *docker-build
-
 docker-ubuntu-22.04-amd64:
   variables:
     IMG_NAME: "ubuntu-22.04-amd64"
   <<: *docker-build
-
 docker-ubuntu-24.04-amd64:
   variables:
     IMG_NAME: "ubuntu-24.04-amd64"
   <<: *docker-build
-
 docker-ubuntu-25.04-amd64:
   variables:
     IMG_NAME: "ubuntu-25.04-amd64"
   <<: *docker-build
-
 docker-ubuntu-25.10-amd64:
   variables:
     IMG_NAME: "ubuntu-25.10-amd64"
   <<: *docker-build
 
-
 #####################################################
 ## Linux distro build tests inside Docker builders ##
 #####################################################
@@ -395,266 +357,228 @@ build-centos-7-amd64:
   variables:
     CC: /opt/rh/devtoolset-8/root/usr/bin/gcc
     LC_ALL: en_US.UTF-8
-
 build-centos-8-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-centos-8-amd64
       optional: true
   image: registry.nic.cz/labs/bird:centos-8-amd64
-
 build-rocky-08-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-rocky-08-amd64
       optional: true
   image: registry.nic.cz/labs/bird:rocky-08-amd64
-
 build-rocky-09-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-rocky-09-amd64
       optional: true
   image: registry.nic.cz/labs/bird:rocky-09-amd64
-
 build-oracle-08-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-oracle-08-amd64
       optional: true
   image: registry.nic.cz/labs/bird:oracle-08-amd64
-
 build-oracle-09-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-oracle-09-amd64
       optional: true
   image: registry.nic.cz/labs/bird:oracle-09-amd64
-
 build-oracle-10-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-oracle-10-amd64
       optional: true
   image: registry.nic.cz/labs/bird:oracle-10-amd64
-
 build-fedora-32-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-fedora-32-amd64
       optional: true
   image: registry.nic.cz/labs/bird:fedora-32-amd64
-
 build-fedora-33-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-fedora-33-amd64
       optional: true
   image: registry.nic.cz/labs/bird:fedora-33-amd64
-
 build-opensuse-15.0-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-opensuse-15.0-amd64
       optional: true
   image: registry.nic.cz/labs/bird:opensuse-15.0-amd64
-
 build-opensuse-15.1-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-opensuse-15.1-amd64
       optional: true
   image: registry.nic.cz/labs/bird:opensuse-15.1-amd64
-
 build-opensuse-15.2-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-opensuse-15.2-amd64
       optional: true
   image: registry.nic.cz/labs/bird:opensuse-15.2-amd64
-
 build-opensuse-15.3-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-opensuse-15.3-amd64
       optional: true
   image: registry.nic.cz/labs/bird:opensuse-15.3-amd64
-
 build-opensuse-15.4-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-opensuse-15.4-amd64
       optional: true
   image: registry.nic.cz/labs/bird:opensuse-15.4-amd64
-
 build-opensuse-15.5-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-opensuse-15.5-amd64
       optional: true
   image: registry.nic.cz/labs/bird:opensuse-15.5-amd64
-
 build-fedora-34-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-fedora-34-amd64
       optional: true
   image: registry.nic.cz/labs/bird:fedora-34-amd64
-
 build-fedora-35-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-fedora-35-amd64
       optional: true
   image: registry.nic.cz/labs/bird:fedora-35-amd64
-
 build-fedora-36-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-fedora-36-amd64
       optional: true
   image: registry.nic.cz/labs/bird:fedora-36-amd64
-
 build-fedora-37-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-fedora-37-amd64
       optional: true
   image: registry.nic.cz/labs/bird:fedora-37-amd64
-
 build-fedora-38-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-fedora-38-amd64
       optional: true
   image: registry.nic.cz/labs/bird:fedora-38-amd64
-
 build-fedora-39-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-fedora-39-amd64
       optional: true
   image: registry.nic.cz/labs/bird:fedora-39-amd64
-
 build-fedora-40-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-fedora-40-amd64
       optional: true
   image: registry.nic.cz/labs/bird:fedora-40-amd64
-
 build-fedora-41-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-fedora-41-amd64
       optional: true
   image: registry.nic.cz/labs/bird:fedora-41-amd64
-
 build-fedora-42-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-fedora-42-amd64
       optional: true
   image: registry.nic.cz/labs/bird:fedora-42-amd64
-
 build-fedora-43-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-fedora-43-amd64
       optional: true
   image: registry.nic.cz/labs/bird:fedora-43-amd64
-
 build-ubuntu-18.04-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-ubuntu-18.04-amd64
       optional: true
   image: registry.nic.cz/labs/bird:ubuntu-18.04-amd64
-
-build-debian-11-i386:
+build-ubuntu-20.04-amd64:
   <<: *build-docker-linux-amd64
   needs:
-    - job: docker-debian-11-i386
+    - job: docker-ubuntu-20.04-amd64
       optional: true
-  image: registry.nic.cz/labs/bird:debian-11-i386
-
+  image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64
 build-debian-11-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-debian-11-amd64
       optional: true
   image: registry.nic.cz/labs/bird:debian-11-amd64
-
+build-debian-11-i386:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-debian-11-i386
+      optional: true
+  image: registry.nic.cz/labs/bird:debian-11-i386
 build-debian-12-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-debian-12-amd64
       optional: true
   image: registry.nic.cz/labs/bird:debian-12-amd64
-
 build-debian-12-i386:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-debian-12-i386
       optional: true
   image: registry.nic.cz/labs/bird:debian-12-i386
-
 build-debian-13-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-debian-13-amd64
       optional: true
   image: registry.nic.cz/labs/bird:debian-13-amd64
-
 build-debian-13-i386:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-debian-13-i386
       optional: true
   image: registry.nic.cz/labs/bird:debian-13-i386
-
 build-debian-testing-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-debian-testing-amd64
       optional: true
   image: registry.nic.cz/labs/bird:debian-testing-amd64
-
 build-debian-testing-i386:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-debian-testing-i386
       optional: true
   image: registry.nic.cz/labs/bird:debian-testing-i386
-
-build-ubuntu-20.04-amd64:
-  <<: *build-docker-linux-amd64
-  needs:
-    - job: docker-ubuntu-20.04-amd64
-      optional: true
-  image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64
-
 build-ubuntu-22.04-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-ubuntu-22.04-amd64
       optional: true
   image: registry.nic.cz/labs/bird:ubuntu-22.04-amd64
-
 build-ubuntu-24.04-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-ubuntu-24.04-amd64
       optional: true
   image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
-
 build-ubuntu-25.04-amd64:
   <<: *build-docker-linux-amd64
   needs:
     - job: docker-ubuntu-25.04-amd64
       optional: true
   image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
-
 build-ubuntu-25.10-amd64:
   <<: *build-docker-linux-amd64
   needs:
@@ -662,7 +586,6 @@ build-ubuntu-25.10-amd64:
       optional: true
   image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
 
-
 #######################################################
 ## A special task for preparing the release archives ##
 #######################################################
@@ -754,7 +677,6 @@ pkg-centos-7-amd64:
   variables:
     CC: /opt/rh/devtoolset-8/root/usr/bin/gcc
     LC_ALL: en_US.UTF-8
-
 pkg-centos-8-amd64:
   <<: *pkg-rpm-wa
   needs:
@@ -762,7 +684,6 @@ pkg-centos-8-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:centos-8-amd64
-
 pkg-rocky-08-amd64:
   <<: *pkg-rpm-wa
   needs:
@@ -770,7 +691,6 @@ pkg-rocky-08-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:rocky-08-amd64
-
 pkg-rocky-09-amd64:
   <<: *pkg-rpm-wa
   needs:
@@ -778,7 +698,6 @@ pkg-rocky-09-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:rocky-09-amd64
-
 pkg-oracle-08-amd64:
   <<: *pkg-rpm-wa
   needs:
@@ -786,7 +705,6 @@ pkg-oracle-08-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:oracle-08-amd64
-
 pkg-oracle-09-amd64:
   <<: *pkg-rpm-wa
   needs:
@@ -794,7 +712,6 @@ pkg-oracle-09-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:oracle-09-amd64
-
 pkg-oracle-10-amd64:
   <<: *pkg-rpm-wa
   needs:
@@ -802,7 +719,6 @@ pkg-oracle-10-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:oracle-10-amd64
-
 pkg-fedora-32-amd64:
   <<: *pkg-rpm-wa
   needs:
@@ -810,7 +726,6 @@ pkg-fedora-32-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:fedora-32-amd64
-
 pkg-fedora-33-amd64:
   <<: *pkg-rpm-wa
   needs:
@@ -818,7 +733,6 @@ pkg-fedora-33-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:fedora-33-amd64
-
 pkg-opensuse-15.0-amd64:
   <<: *pkg-rpm-wa
   needs:
@@ -826,7 +740,6 @@ pkg-opensuse-15.0-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:opensuse-15.0-amd64
-
 pkg-opensuse-15.1-amd64:
   <<: *pkg-rpm-wa
   needs:
@@ -834,7 +747,6 @@ pkg-opensuse-15.1-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:opensuse-15.1-amd64
-
 pkg-opensuse-15.2-amd64:
   <<: *pkg-rpm-wa
   needs:
@@ -842,7 +754,6 @@ pkg-opensuse-15.2-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:opensuse-15.2-amd64
-
 pkg-opensuse-15.3-amd64:
   <<: *pkg-rpm-wa
   needs:
@@ -850,7 +761,6 @@ pkg-opensuse-15.3-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:opensuse-15.3-amd64
-
 pkg-opensuse-15.4-amd64:
   <<: *pkg-rpm-wa
   needs:
@@ -858,7 +768,6 @@ pkg-opensuse-15.4-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:opensuse-15.4-amd64
-
 pkg-opensuse-15.5-amd64:
   <<: *pkg-rpm-wa
   needs:
@@ -866,7 +775,6 @@ pkg-opensuse-15.5-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:opensuse-15.5-amd64
-
 pkg-fedora-34-amd64:
   <<: *pkg-rpm
   needs:
@@ -874,7 +782,6 @@ pkg-fedora-34-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:fedora-34-amd64
-
 pkg-fedora-35-amd64:
   <<: *pkg-rpm
   needs:
@@ -882,7 +789,6 @@ pkg-fedora-35-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:fedora-35-amd64
-
 pkg-fedora-36-amd64:
   <<: *pkg-rpm
   needs:
@@ -890,7 +796,6 @@ pkg-fedora-36-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:fedora-36-amd64
-
 pkg-fedora-37-amd64:
   <<: *pkg-rpm
   needs:
@@ -898,7 +803,6 @@ pkg-fedora-37-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:fedora-37-amd64
-
 pkg-fedora-38-amd64:
   <<: *pkg-rpm
   needs:
@@ -906,7 +810,6 @@ pkg-fedora-38-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:fedora-38-amd64
-
 pkg-fedora-39-amd64:
   <<: *pkg-rpm
   needs:
@@ -914,7 +817,6 @@ pkg-fedora-39-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:fedora-39-amd64
-
 pkg-fedora-40-amd64:
   <<: *pkg-rpm
   needs:
@@ -922,7 +824,6 @@ pkg-fedora-40-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:fedora-40-amd64
-
 pkg-fedora-41-amd64:
   <<: *pkg-rpm
   needs:
@@ -930,7 +831,6 @@ pkg-fedora-41-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:fedora-41-amd64
-
 pkg-fedora-42-amd64:
   <<: *pkg-rpm
   needs:
@@ -938,7 +838,6 @@ pkg-fedora-42-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:fedora-42-amd64
-
 pkg-fedora-43-amd64:
   <<: *pkg-rpm
   needs:
@@ -946,31 +845,34 @@ pkg-fedora-43-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:fedora-43-amd64
-
 pkg-ubuntu-18.04-amd64:
-  <<: *pkg-deb-legacy
+  <<: *pkg-deb
   needs:
     - job: build-ubuntu-18.04-amd64
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:ubuntu-18.04-amd64
-
-pkg-debian-11-i386:
-  <<: *pkg-deb-legacy
+pkg-ubuntu-20.04-amd64:
+  <<: *pkg-deb
   needs:
-    - job: build-debian-11-i386
+    - job: build-ubuntu-20.04-amd64
       artifacts: false
     - job: build-release
-  image: registry.nic.cz/labs/bird:debian-11-i386
-
+  image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64
 pkg-debian-11-amd64:
-  <<: *pkg-deb-legacy
+  <<: *pkg-deb
   needs:
     - job: build-debian-11-amd64
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:debian-11-amd64
-
+pkg-debian-11-i386:
+  <<: *pkg-deb
+  needs:
+    - job: build-debian-11-i386
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-11-i386
 pkg-debian-12-amd64:
   <<: *pkg-deb
   needs:
@@ -978,7 +880,6 @@ pkg-debian-12-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:debian-12-amd64
-
 pkg-debian-12-i386:
   <<: *pkg-deb
   needs:
@@ -986,7 +887,6 @@ pkg-debian-12-i386:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:debian-12-i386
-
 pkg-debian-13-amd64:
   <<: *pkg-deb
   needs:
@@ -994,7 +894,6 @@ pkg-debian-13-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:debian-13-amd64
-
 pkg-debian-13-i386:
   <<: *pkg-deb
   needs:
@@ -1002,7 +901,6 @@ pkg-debian-13-i386:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:debian-13-i386
-
 pkg-debian-testing-amd64:
   <<: *pkg-deb
   needs:
@@ -1010,7 +908,6 @@ pkg-debian-testing-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:debian-testing-amd64
-
 pkg-debian-testing-i386:
   <<: *pkg-deb
   needs:
@@ -1018,15 +915,6 @@ pkg-debian-testing-i386:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:debian-testing-i386
-
-pkg-ubuntu-20.04-amd64:
-  <<: *pkg-deb
-  needs:
-    - job: build-ubuntu-20.04-amd64
-      artifacts: false
-    - job: build-release
-  image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64
-
 pkg-ubuntu-22.04-amd64:
   <<: *pkg-deb
   needs:
@@ -1034,7 +922,6 @@ pkg-ubuntu-22.04-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:ubuntu-22.04-amd64
-
 pkg-ubuntu-24.04-amd64:
   <<: *pkg-deb
   needs:
@@ -1042,7 +929,6 @@ pkg-ubuntu-24.04-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
-
 pkg-ubuntu-25.04-amd64:
   <<: *pkg-deb
   needs:
@@ -1050,7 +936,6 @@ pkg-ubuntu-25.04-amd64:
       artifacts: false
     - job: build-release
   image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
-
 pkg-ubuntu-25.10-amd64:
   <<: *pkg-deb
   needs:
@@ -1059,7 +944,6 @@ pkg-ubuntu-25.10-amd64:
     - job: build-release
   image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
 
-
 ## Package installability checks
 
 .install-deb: &install-deb
@@ -1114,235 +998,986 @@ install-centos-7-amd64:
   needs:
     - job: pkg-centos-7-amd64
   image: registry.nic.cz/labs/bird:centos-7-amd64
-
 install-centos-8-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-centos-8-amd64
   image: registry.nic.cz/labs/bird:centos-8-amd64
-
 install-rocky-08-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-rocky-08-amd64
   image: registry.nic.cz/labs/bird:rocky-08-amd64
-
 install-rocky-09-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-rocky-09-amd64
   image: registry.nic.cz/labs/bird:rocky-09-amd64
-
 install-oracle-08-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-oracle-08-amd64
   image: registry.nic.cz/labs/bird:oracle-08-amd64
-
 install-oracle-09-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-oracle-09-amd64
   image: registry.nic.cz/labs/bird:oracle-09-amd64
-
 install-oracle-10-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-oracle-10-amd64
   image: registry.nic.cz/labs/bird:oracle-10-amd64
-
 install-fedora-32-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-fedora-32-amd64
   image: registry.nic.cz/labs/bird:fedora-32-amd64
-
 install-fedora-33-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-fedora-33-amd64
   image: registry.nic.cz/labs/bird:fedora-33-amd64
-
 install-opensuse-15.0-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-opensuse-15.0-amd64
   image: registry.nic.cz/labs/bird:opensuse-15.0-amd64
-
 install-opensuse-15.1-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-opensuse-15.1-amd64
   image: registry.nic.cz/labs/bird:opensuse-15.1-amd64
-
 install-opensuse-15.2-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-opensuse-15.2-amd64
   image: registry.nic.cz/labs/bird:opensuse-15.2-amd64
-
 install-opensuse-15.3-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-opensuse-15.3-amd64
   image: registry.nic.cz/labs/bird:opensuse-15.3-amd64
-
 install-opensuse-15.4-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-opensuse-15.4-amd64
   image: registry.nic.cz/labs/bird:opensuse-15.4-amd64
-
 install-opensuse-15.5-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-opensuse-15.5-amd64
   image: registry.nic.cz/labs/bird:opensuse-15.5-amd64
-
 install-fedora-34-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-fedora-34-amd64
   image: registry.nic.cz/labs/bird:fedora-34-amd64
-
 install-fedora-35-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-fedora-35-amd64
   image: registry.nic.cz/labs/bird:fedora-35-amd64
-
 install-fedora-36-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-fedora-36-amd64
   image: registry.nic.cz/labs/bird:fedora-36-amd64
-
 install-fedora-37-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-fedora-37-amd64
   image: registry.nic.cz/labs/bird:fedora-37-amd64
-
 install-fedora-38-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-fedora-38-amd64
   image: registry.nic.cz/labs/bird:fedora-38-amd64
-
 install-fedora-39-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-fedora-39-amd64
   image: registry.nic.cz/labs/bird:fedora-39-amd64
-
 install-fedora-40-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-fedora-40-amd64
   image: registry.nic.cz/labs/bird:fedora-40-amd64
-
 install-fedora-41-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-fedora-41-amd64
   image: registry.nic.cz/labs/bird:fedora-41-amd64
-
 install-fedora-42-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-fedora-42-amd64
   image: registry.nic.cz/labs/bird:fedora-42-amd64
-
 install-fedora-43-amd64:
   <<: *install-rpm
   needs:
     - job: pkg-fedora-43-amd64
   image: registry.nic.cz/labs/bird:fedora-43-amd64
-
 install-ubuntu-18.04-amd64:
   <<: *install-deb
   needs:
     - job: pkg-ubuntu-18.04-amd64
   image: registry.nic.cz/labs/bird:ubuntu-18.04-amd64
-
-install-debian-11-i386:
+install-ubuntu-20.04-amd64:
   <<: *install-deb
   needs:
-    - job: pkg-debian-11-i386
-  image: registry.nic.cz/labs/bird:debian-11-i386
-
+    - job: pkg-ubuntu-20.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64
 install-debian-11-amd64:
   <<: *install-deb
   needs:
     - job: pkg-debian-11-amd64
   image: registry.nic.cz/labs/bird:debian-11-amd64
-
+install-debian-11-i386:
+  <<: *install-deb
+  needs:
+    - job: pkg-debian-11-i386
+  image: registry.nic.cz/labs/bird:debian-11-i386
 install-debian-12-amd64:
   <<: *install-deb
   needs:
     - job: pkg-debian-12-amd64
   image: registry.nic.cz/labs/bird:debian-12-amd64
-
 install-debian-12-i386:
   <<: *install-deb
   needs:
     - job: pkg-debian-12-i386
   image: registry.nic.cz/labs/bird:debian-12-i386
-
 install-debian-13-amd64:
   <<: *install-deb
   needs:
     - job: pkg-debian-13-amd64
   image: registry.nic.cz/labs/bird:debian-13-amd64
-
 install-debian-13-i386:
   <<: *install-deb
   needs:
     - job: pkg-debian-13-i386
   image: registry.nic.cz/labs/bird:debian-13-i386
-
 install-debian-testing-amd64:
   <<: *install-deb
   needs:
     - job: pkg-debian-testing-amd64
   image: registry.nic.cz/labs/bird:debian-testing-amd64
-
 install-debian-testing-i386:
   <<: *install-deb
   needs:
     - job: pkg-debian-testing-i386
   image: registry.nic.cz/labs/bird:debian-testing-i386
-
-install-ubuntu-20.04-amd64:
-  <<: *install-deb
-  needs:
-    - job: pkg-ubuntu-20.04-amd64
-  image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64
-
 install-ubuntu-22.04-amd64:
   <<: *install-deb
   needs:
     - job: pkg-ubuntu-22.04-amd64
   image: registry.nic.cz/labs/bird:ubuntu-22.04-amd64
-
 install-ubuntu-24.04-amd64:
   <<: *install-deb
   needs:
     - job: pkg-ubuntu-24.04-amd64
   image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
-
 install-ubuntu-25.04-amd64:
   <<: *install-deb
   needs:
     - job: pkg-ubuntu-25.04-amd64
   image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
-
 install-ubuntu-25.10-amd64:
   <<: *install-deb
   needs:
     - job: pkg-ubuntu-25.10-amd64
   image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
 
+###################################
+## DEB Cross-builds by pbuilder  ##
+###################################
+
+.crossbuild-deb-image: &crossbuild-deb-image
+  stage: image
+  script:
+    - mkdir -p $PBUILDER_DIR/$IMAGE.cache
+    - sudo pbuilder create --architecture $ARCH --distribution $CODE --basetgz $PBUILDER_DIR/$IMAGE.tgz --aptcache $PBUILDER_DIR/$IMAGE.cache --autocleanaptcache --extrapackages "bison flex libncurses-dev m4 quilt xsltproc debhelper docbook-xsl"  --mirror $MIRROR --components "$COMPONENTS"
+  tags:
+    - crossbuilder
+  rules:
+    # Never rebuild for WIP commits
+  - *never-wip
+
+    # Never rebuild for tags
+  - if: '$CI_COMMIT_TAG'
+    when: never
+
+    # Never rebuild for new branches
+  - if: $CI_COMMIT_BEFORE_SHA == "0000000000000000000000000000000000000000"
+    when: never
+
+  - if: $CI_COMMIT_MESSAGE =~ /^PBuilder-init[:] all$/m
+    when: always
+
+  - when: never
+
+.crossbuild-deb-pkg: &crossbuild-deb-pkg
+  stage: pkg
+  script:
+    - sudo pbuilder build --architecture $ARCH --distribution $CODE --basetgz $PBUILDER_DIR/$IMAGE.tgz --aptcache $PBUILDER_DIR/$IMAGE.cache --autocleanaptcache --buildresult pkg/pkgs/*/*/ --binary-arch pkg/srcpkgs/*/*/*.dsc --debbuildopts "-j4" --mirror $MIRROR --components "$COMPONENTS"
+  tags:
+    - crossbuilder
+  artifacts:
+    paths:
+      - pkg/pkgs/*/*/*-cznic*_*.*
+
+
+crossbuild-image-debian-12-arm64:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: debian-12-arm64
+    ARCH: arm64
+    CODE: bookworm
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-pkg-debian-12-arm64:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-debian-12-arm64
+      optional: true
+    - job: pkg-debian-12-amd64
+  variables:
+    IMAGE: debian-12-arm64
+    ARCH: arm64
+    CODE: bookworm
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-image-debian-12-armel:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: debian-12-armel
+    ARCH: armel
+    CODE: bookworm
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-pkg-debian-12-armel:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-debian-12-armel
+      optional: true
+    - job: pkg-debian-12-amd64
+  variables:
+    IMAGE: debian-12-armel
+    ARCH: armel
+    CODE: bookworm
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-image-debian-12-armhf:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: debian-12-armhf
+    ARCH: armhf
+    CODE: bookworm
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-pkg-debian-12-armhf:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-debian-12-armhf
+      optional: true
+    - job: pkg-debian-12-amd64
+  variables:
+    IMAGE: debian-12-armhf
+    ARCH: armhf
+    CODE: bookworm
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-image-debian-12-mips64el:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: debian-12-mips64el
+    ARCH: mips64el
+    CODE: bookworm
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-pkg-debian-12-mips64el:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-debian-12-mips64el
+      optional: true
+    - job: pkg-debian-12-amd64
+  variables:
+    IMAGE: debian-12-mips64el
+    ARCH: mips64el
+    CODE: bookworm
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-image-debian-12-s390x:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: debian-12-s390x
+    ARCH: s390x
+    CODE: bookworm
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-pkg-debian-12-s390x:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-debian-12-s390x
+      optional: true
+    - job: pkg-debian-12-amd64
+  variables:
+    IMAGE: debian-12-s390x
+    ARCH: s390x
+    CODE: bookworm
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-image-debian-13-arm64:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: debian-13-arm64
+    ARCH: arm64
+    CODE: trixie
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-pkg-debian-13-arm64:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-debian-13-arm64
+      optional: true
+    - job: pkg-debian-13-amd64
+  variables:
+    IMAGE: debian-13-arm64
+    ARCH: arm64
+    CODE: trixie
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-image-debian-13-armel:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: debian-13-armel
+    ARCH: armel
+    CODE: trixie
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-pkg-debian-13-armel:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-debian-13-armel
+      optional: true
+    - job: pkg-debian-13-amd64
+  variables:
+    IMAGE: debian-13-armel
+    ARCH: armel
+    CODE: trixie
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-image-debian-13-armhf:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: debian-13-armhf
+    ARCH: armhf
+    CODE: trixie
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-pkg-debian-13-armhf:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-debian-13-armhf
+      optional: true
+    - job: pkg-debian-13-amd64
+  variables:
+    IMAGE: debian-13-armhf
+    ARCH: armhf
+    CODE: trixie
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-image-debian-13-riscv64:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: debian-13-riscv64
+    ARCH: riscv64
+    CODE: trixie
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-pkg-debian-13-riscv64:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-debian-13-riscv64
+      optional: true
+    - job: pkg-debian-13-amd64
+  variables:
+    IMAGE: debian-13-riscv64
+    ARCH: riscv64
+    CODE: trixie
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-image-debian-13-s390x:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: debian-13-s390x
+    ARCH: s390x
+    CODE: trixie
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-pkg-debian-13-s390x:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-debian-13-s390x
+      optional: true
+    - job: pkg-debian-13-amd64
+  variables:
+    IMAGE: debian-13-s390x
+    ARCH: s390x
+    CODE: trixie
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-image-debian-testing-arm64:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: debian-testing-arm64
+    ARCH: arm64
+    CODE: testing
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-pkg-debian-testing-arm64:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-debian-testing-arm64
+      optional: true
+    - job: pkg-debian-testing-amd64
+  variables:
+    IMAGE: debian-testing-arm64
+    ARCH: arm64
+    CODE: testing
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-image-debian-testing-armhf:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: debian-testing-armhf
+    ARCH: armhf
+    CODE: testing
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-pkg-debian-testing-armhf:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-debian-testing-armhf
+      optional: true
+    - job: pkg-debian-testing-amd64
+  variables:
+    IMAGE: debian-testing-armhf
+    ARCH: armhf
+    CODE: testing
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-image-debian-testing-riscv64:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: debian-testing-riscv64
+    ARCH: riscv64
+    CODE: testing
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-pkg-debian-testing-riscv64:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-debian-testing-riscv64
+      optional: true
+    - job: pkg-debian-testing-amd64
+  variables:
+    IMAGE: debian-testing-riscv64
+    ARCH: riscv64
+    CODE: testing
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-image-debian-testing-s390x:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: debian-testing-s390x
+    ARCH: s390x
+    CODE: testing
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-pkg-debian-testing-s390x:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-debian-testing-s390x
+      optional: true
+    - job: pkg-debian-testing-amd64
+  variables:
+    IMAGE: debian-testing-s390x
+    ARCH: s390x
+    CODE: testing
+    MIRROR: http://deb.debian.org/debian
+    COMPONENTS: main
+
+crossbuild-image-ubuntu-22.04-arm64:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-22.04-arm64
+    ARCH: arm64
+    CODE: jammy
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-22.04-arm64:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-22.04-arm64
+      optional: true
+    - job: pkg-ubuntu-22.04-amd64
+  variables:
+    IMAGE: ubuntu-22.04-arm64
+    ARCH: arm64
+    CODE: jammy
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-22.04-armhf:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-22.04-armhf
+    ARCH: armhf
+    CODE: jammy
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-22.04-armhf:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-22.04-armhf
+      optional: true
+    - job: pkg-ubuntu-22.04-amd64
+  variables:
+    IMAGE: ubuntu-22.04-armhf
+    ARCH: armhf
+    CODE: jammy
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-22.04-ppc64el:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-22.04-ppc64el
+    ARCH: ppc64el
+    CODE: jammy
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-22.04-ppc64el:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-22.04-ppc64el
+      optional: true
+    - job: pkg-ubuntu-22.04-amd64
+  variables:
+    IMAGE: ubuntu-22.04-ppc64el
+    ARCH: ppc64el
+    CODE: jammy
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-22.04-riscv64:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-22.04-riscv64
+    ARCH: riscv64
+    CODE: jammy
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-22.04-riscv64:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-22.04-riscv64
+      optional: true
+    - job: pkg-ubuntu-22.04-amd64
+  variables:
+    IMAGE: ubuntu-22.04-riscv64
+    ARCH: riscv64
+    CODE: jammy
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-22.04-s390x:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-22.04-s390x
+    ARCH: s390x
+    CODE: jammy
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-22.04-s390x:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-22.04-s390x
+      optional: true
+    - job: pkg-ubuntu-22.04-amd64
+  variables:
+    IMAGE: ubuntu-22.04-s390x
+    ARCH: s390x
+    CODE: jammy
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-24.04-arm64:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-24.04-arm64
+    ARCH: arm64
+    CODE: noble
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-24.04-arm64:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-24.04-arm64
+      optional: true
+    - job: pkg-ubuntu-24.04-amd64
+  variables:
+    IMAGE: ubuntu-24.04-arm64
+    ARCH: arm64
+    CODE: noble
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-24.04-armhf:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-24.04-armhf
+    ARCH: armhf
+    CODE: noble
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-24.04-armhf:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-24.04-armhf
+      optional: true
+    - job: pkg-ubuntu-24.04-amd64
+  variables:
+    IMAGE: ubuntu-24.04-armhf
+    ARCH: armhf
+    CODE: noble
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-24.04-ppc64el:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-24.04-ppc64el
+    ARCH: ppc64el
+    CODE: noble
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-24.04-ppc64el:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-24.04-ppc64el
+      optional: true
+    - job: pkg-ubuntu-24.04-amd64
+  variables:
+    IMAGE: ubuntu-24.04-ppc64el
+    ARCH: ppc64el
+    CODE: noble
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-24.04-riscv64:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-24.04-riscv64
+    ARCH: riscv64
+    CODE: noble
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-24.04-riscv64:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-24.04-riscv64
+      optional: true
+    - job: pkg-ubuntu-24.04-amd64
+  variables:
+    IMAGE: ubuntu-24.04-riscv64
+    ARCH: riscv64
+    CODE: noble
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-24.04-s390x:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-24.04-s390x
+    ARCH: s390x
+    CODE: noble
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-24.04-s390x:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-24.04-s390x
+      optional: true
+    - job: pkg-ubuntu-24.04-amd64
+  variables:
+    IMAGE: ubuntu-24.04-s390x
+    ARCH: s390x
+    CODE: noble
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-25.04-arm64:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-25.04-arm64
+    ARCH: arm64
+    CODE: plucky
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-25.04-arm64:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-25.04-arm64
+      optional: true
+    - job: pkg-ubuntu-25.04-amd64
+  variables:
+    IMAGE: ubuntu-25.04-arm64
+    ARCH: arm64
+    CODE: plucky
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-25.04-armhf:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-25.04-armhf
+    ARCH: armhf
+    CODE: plucky
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-25.04-armhf:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-25.04-armhf
+      optional: true
+    - job: pkg-ubuntu-25.04-amd64
+  variables:
+    IMAGE: ubuntu-25.04-armhf
+    ARCH: armhf
+    CODE: plucky
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-25.04-ppc64el:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-25.04-ppc64el
+    ARCH: ppc64el
+    CODE: plucky
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-25.04-ppc64el:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-25.04-ppc64el
+      optional: true
+    - job: pkg-ubuntu-25.04-amd64
+  variables:
+    IMAGE: ubuntu-25.04-ppc64el
+    ARCH: ppc64el
+    CODE: plucky
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-25.04-riscv64:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-25.04-riscv64
+    ARCH: riscv64
+    CODE: plucky
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-25.04-riscv64:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-25.04-riscv64
+      optional: true
+    - job: pkg-ubuntu-25.04-amd64
+  variables:
+    IMAGE: ubuntu-25.04-riscv64
+    ARCH: riscv64
+    CODE: plucky
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-25.04-s390x:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-25.04-s390x
+    ARCH: s390x
+    CODE: plucky
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-25.04-s390x:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-25.04-s390x
+      optional: true
+    - job: pkg-ubuntu-25.04-amd64
+  variables:
+    IMAGE: ubuntu-25.04-s390x
+    ARCH: s390x
+    CODE: plucky
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-25.10-arm64:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-25.10-arm64
+    ARCH: arm64
+    CODE: questing
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-25.10-arm64:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-25.10-arm64
+      optional: true
+    - job: pkg-ubuntu-25.10-amd64
+  variables:
+    IMAGE: ubuntu-25.10-arm64
+    ARCH: arm64
+    CODE: questing
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-25.10-armhf:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-25.10-armhf
+    ARCH: armhf
+    CODE: questing
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-25.10-armhf:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-25.10-armhf
+      optional: true
+    - job: pkg-ubuntu-25.10-amd64
+  variables:
+    IMAGE: ubuntu-25.10-armhf
+    ARCH: armhf
+    CODE: questing
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-25.10-ppc64el:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-25.10-ppc64el
+    ARCH: ppc64el
+    CODE: questing
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-25.10-ppc64el:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-25.10-ppc64el
+      optional: true
+    - job: pkg-ubuntu-25.10-amd64
+  variables:
+    IMAGE: ubuntu-25.10-ppc64el
+    ARCH: ppc64el
+    CODE: questing
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-25.10-riscv64:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-25.10-riscv64
+    ARCH: riscv64
+    CODE: questing
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-25.10-riscv64:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-25.10-riscv64
+      optional: true
+    - job: pkg-ubuntu-25.10-amd64
+  variables:
+    IMAGE: ubuntu-25.10-riscv64
+    ARCH: riscv64
+    CODE: questing
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-image-ubuntu-25.10-s390x:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: ubuntu-25.10-s390x
+    ARCH: s390x
+    CODE: questing
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+crossbuild-pkg-ubuntu-25.10-s390x:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-ubuntu-25.10-s390x
+      optional: true
+    - job: pkg-ubuntu-25.10-amd64
+  variables:
+    IMAGE: ubuntu-25.10-s390x
+    ARCH: s390x
+    CODE: questing
+    MIRROR: http://ports.ubuntu.com/ubuntu-ports/
+    COMPONENTS: main restricted universe multiverse
+
+
+
 
 ###################################
 ## Non-linux build tests in QEMU ##
index 16a76e68d1234a36c87a012bf2a30f5a9d602310..a83422f284df0a717772b562ae12340dd8862c47 100644 (file)
@@ -10,6 +10,7 @@ distros:
       LC_ALL: en_US.UTF-8
       CC: /opt/rh/devtoolset-8/root/usr/bin/gcc
     type: pkg-rpm-wa
+    arch: amd64
 
   {% for name in (
     'centos-8',
@@ -23,6 +24,7 @@ distros:
   ) -%}
   - name: {{ name }}-amd64
     type: pkg-rpm-wa
+    arch: amd64
   {% endfor %}
 
   # For some unknown reason we also require older Python packages
@@ -30,38 +32,67 @@ distros:
   {% for num in (0,1,2,3,4,5) -%}
   - name: opensuse-15.{{ num }}-amd64
     type: pkg-rpm-wa
+    arch: amd64
   {% endfor %}
 
   # Fedora regular builds
   {% for num in (34, 35, 36, 37, 38, 39, 40, 41, 42, 43) -%}
   - name: fedora-{{ num }}-amd64
     type: pkg-rpm
+    arch: amd64
   {% endfor %}
 
-  # Debian-based legacy builds
-  # Ubuntu 18.04 has issues with newer version of beautifulsoup4 and old python
-  # Debian 11 has issues with markupsafe v3.0.3
-  {% for name in (
-    'ubuntu-18.04-amd64',
-    'debian-11-i386',
-    'debian-11-amd64',
-  ) -%}
-  - name: {{ name }}
-    type: pkg-deb-legacy
+  # Old Debian-based builds
+  {% for distro in ("ubuntu-18.04", "ubuntu-20.04") %}
+  - name: {{ distro }}-amd64
+    type: pkg-deb
+    arch: amd64
+  {% endfor %}
+
+  {% for arch in ('amd64', 'i386') %}
+  - name: debian-11-{{ arch }}
+    type: pkg-deb
+    arch: {{ arch }}
   {% endfor %}
 
   # Debian regular builds
-  {% for num in (12, 13, 'testing') -%}
-  {% for arch in ('amd64', 'i386') -%}
-  - name: debian-{{num}}-{{arch}}
+  {% for arch in ('amd64', 'i386', 'arm64', 'armel', 'armhf', 'mips64el', 's390x') %}
+  - name: debian-12-{{ arch }}
+    code: bookworm
     type: pkg-deb
+    arch: {{ arch }}
+    mirror: "http://deb.debian.org/debian"
+    components: main
   {% endfor %}
+
+  {% for arch in ('amd64', 'i386', 'arm64', 'armel', 'armhf', 'riscv64', 's390x') -%}
+  - name: debian-13-{{ arch }}
+    code: trixie
+    type: pkg-deb
+    arch: {{ arch }}
+    mirror: "http://deb.debian.org/debian"
+    components: main
+  {% endfor %}
+
+  {% for arch in ('amd64', 'i386', 'arm64', 'armhf', 'riscv64', 's390x') -%}
+  - name: debian-testing-{{arch}}
+    code: testing
+    type: pkg-deb
+    arch: {{ arch }}
+    mirror: "http://deb.debian.org/debian"
+    components: main
   {% endfor %}
 
   # Ubuntu regular builds
-  {% for num in ('20.04', '22.04', '24.04', '25.04', '25.10') -%}
-  - name: ubuntu-{{ num }}-amd64
+  {% for num,code in (('22.04', 'jammy'), ('24.04', 'noble'), ('25.04', 'plucky'), ('25.10', 'questing')) -%}
+  {% for arch in ('amd64', 'arm64', 'armhf', 'ppc64el', 'riscv64', 's390x') -%}
+  - name: ubuntu-{{ num }}-{{ arch }}
     type: pkg-deb
+    arch: {{ arch }}
+    code: {{ code }}
+    mirror: "http://ports.ubuntu.com/ubuntu-ports/"
+    components: main restricted universe multiverse
+  {% endfor %}
   {% endfor %}
 
 birdlab:
index d2a12b56b1a15f8d08ae5f32b23af0b8b07d6c82..fdb688b36c7c5bd5c3ae87a1950d1b2a1e78654e 100644 (file)
@@ -1,3 +1,9 @@
+{#
+
+Do edit this file by hand. The following header will be placed
+into .gitlab-ci.yml.
+
+#}
 ###########################################################
 #####                                                 #####
 #####       DO  NOT  EDIT  THIS  FILE  BY  HAND       #####
@@ -16,6 +22,7 @@ variables:
   DOCKER_CMD: docker --config="$HOME/.docker/$CI_JOB_ID/"
   IMG_BASE: registry.nic.cz/labs/bird
   TOOLS_DIR: /home/gitlab-runner/bird-tools
+  PBUILDER_DIR: /home/gitlab-runner/pbuilder
   STAYRTR_BINARY: /usr/local/bin/stayrtr
 
 stages:
@@ -129,11 +136,13 @@ tag-collect:
 
   - when: never
 
-{% for docker in [ { "name": "docbuilder" } ] + distros %}
+{% for docker in [ { "name": "docbuilder", "arch": "amd64" } ] + distros %}
+{%- if docker.arch in ("amd64", "i386") %}
 docker-{{ docker["name"] }}:
   variables:
     IMG_NAME: "{{ docker["name"] }}"
   <<: *docker-build
+{%- endif -%}
 {% endfor %}
 
 #####################################################
@@ -191,6 +200,7 @@ docker-{{ docker["name"] }}:
     - amd64
 
 {% for dist in distros %}
+{%- if dist.arch in ("amd64", "i386") %}
 build-{{dist["name"]}}:
   <<: *build-docker-linux-amd64
   needs:
@@ -201,6 +211,7 @@ build-{{dist["name"]}}:
   variables:
 {{ dist["variables"] | to_yaml | indent(4, true) }}
 {%- endif %}
+{%- endif -%}
 {% endfor %}
 
 #######################################################
@@ -284,6 +295,7 @@ build-release:
 
 
 {% for dist in distros %}
+{%- if dist.arch in ("amd64", "i386") %}
 pkg-{{ dist["name"] }}:
   <<: *{{ dist["type"] }}
   needs:
@@ -295,6 +307,7 @@ pkg-{{ dist["name"] }}:
   variables:
 {{ dist["variables"] | to_yaml | indent(4, true) }}
 {%- endif %}
+{%- endif -%}
 {% endfor %}
 
 ## Package installability checks
@@ -346,6 +359,7 @@ pkg-{{ dist["name"] }}:
     - ./tools/test-install "$CI_COMMIT_MESSAGE"
 
 {% for dist in distros %}
+{%- if dist.arch in ("amd64", "i386") %}
 install-{{ dist["name"] }}:
   <<: *{{ {
     "pkg-rpm": "install-rpm",
@@ -356,8 +370,78 @@ install-{{ dist["name"] }}:
   needs:
     - job: pkg-{{ dist["name"] }}
   image: registry.nic.cz/labs/bird:{{ dist["name"] }}
+{%- endif -%}
 {% endfor %}
 
+###################################
+## DEB Cross-builds by pbuilder  ##
+###################################
+
+.crossbuild-deb-image: &crossbuild-deb-image
+  stage: image
+  script:
+    - mkdir -p $PBUILDER_DIR/$IMAGE.cache
+    - sudo pbuilder create --architecture $ARCH --distribution $CODE --basetgz $PBUILDER_DIR/$IMAGE.tgz --aptcache $PBUILDER_DIR/$IMAGE.cache --autocleanaptcache --extrapackages "bison flex libncurses-dev m4 quilt xsltproc debhelper docbook-xsl"  --mirror $MIRROR --components "$COMPONENTS"
+  tags:
+    - crossbuilder
+  rules:
+    # Never rebuild for WIP commits
+  - *never-wip
+
+    # Never rebuild for tags
+  - if: '$CI_COMMIT_TAG'
+    when: never
+
+    # Never rebuild for new branches
+  - if: $CI_COMMIT_BEFORE_SHA == "0000000000000000000000000000000000000000"
+    when: never
+
+  - if: $CI_COMMIT_MESSAGE =~ /^PBuilder-init[:] all$/m
+    when: always
+
+  - when: never
+
+.crossbuild-deb-pkg: &crossbuild-deb-pkg
+  stage: pkg
+  script:
+    - sudo pbuilder build --architecture $ARCH --distribution $CODE --basetgz $PBUILDER_DIR/$IMAGE.tgz --aptcache $PBUILDER_DIR/$IMAGE.cache --autocleanaptcache --buildresult pkg/pkgs/*/*/ --binary-arch pkg/srcpkgs/*/*/*.dsc --debbuildopts "-j4" --mirror $MIRROR --components "$COMPONENTS"
+  tags:
+    - crossbuilder
+  artifacts:
+    paths:
+      - pkg/pkgs/*/*/*-cznic*_*.*
+
+{% for dist in distros %}
+{%- if dist.arch not in ('amd64', 'i386') %}
+crossbuild-image-{{ dist.name }}:
+  <<: *crossbuild-deb-image
+  variables:
+    IMAGE: {{ dist.name }}
+    ARCH: {{ dist.arch }}
+    CODE: {{ dist.code }}
+    MIRROR: {{ dist.mirror }}
+    COMPONENTS: {{ dist.components }}
+{%- if 'variables' in dist %}
+{{ dist["variables"] | to_yaml | indent(4, true) }}
+{%- endif %}
+
+crossbuild-pkg-{{ dist.name }}:
+  <<: *crossbuild-deb-pkg
+  needs:
+    - job: crossbuild-image-{{ dist.name }}
+      optional: true
+    - job: pkg-{{ dist.name[:-(dist.arch | length)] }}amd64
+  variables:
+    IMAGE: {{ dist.name }}
+    ARCH: {{ dist.arch }}
+    CODE: {{ dist.code }}
+    MIRROR: {{ dist.mirror }}
+    COMPONENTS: {{ dist.components }}
+{% endif -%}
+{% endfor %}
+
+
+
 ###################################
 ## Non-linux build tests in QEMU ##
 ###################################