]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
CI: Crossbuilds for Debian and Ubuntu inside our docker machinery
authorMaria Matejka <mq@ucw.cz>
Tue, 24 Mar 2026 11:38:32 +0000 (12:38 +0100)
committerMaria Matejka <mq@ucw.cz>
Tue, 7 Apr 2026 09:50:51 +0000 (11:50 +0200)
Several architecture variants are failing for obscure reasons.
Disabled for now, will check later.

20 files changed:
.gitlab-ci.yml
Makefile.in
gitlab/Dockerfile.j2
gitlab/data.yml.j2
gitlab/docker/debian-11-amd64/Dockerfile
gitlab/docker/debian-11-i386/Dockerfile
gitlab/docker/debian-12-amd64/Dockerfile
gitlab/docker/debian-12-i386/Dockerfile
gitlab/docker/debian-13-amd64/Dockerfile
gitlab/docker/debian-13-i386/Dockerfile
gitlab/docker/debian-testing-amd64/Dockerfile
gitlab/docker/debian-testing-i386/Dockerfile
gitlab/docker/ubuntu-18.04-amd64/Dockerfile
gitlab/docker/ubuntu-20.04-amd64/Dockerfile
gitlab/docker/ubuntu-22.04-amd64/Dockerfile
gitlab/docker/ubuntu-24.04-amd64/Dockerfile
gitlab/docker/ubuntu-25.04-amd64/Dockerfile
gitlab/docker/ubuntu-25.10-amd64/Dockerfile
gitlab/template.yml.j2
tools/test-install

index b012b4384295fb75ba3f3d9e9b0de488df28f3cf..1a36a57b9e2ba2923b9f5e841a02b167fdef811d 100644 (file)
@@ -281,7 +281,7 @@ tag-collect:
   - $DOCKER_CMD tag "bird:$IMG_NAME" "$IMG_BASE:$IMG_NAME"
   - $DOCKER_CMD push "$IMG_BASE:$IMG_NAME"
   after_script:
-  - rm -f "$HOME/.docker/$CI_JOB_ID/" # cleanup the credentials
+  - rm -rf "$HOME/.docker/$CI_JOB_ID/" # cleanup the credentials
   tags:
   # That's Docker in Docker
   - dind
@@ -862,17 +862,24 @@ docker-ubuntu-25.10-amd64:
           exit 1
         fi
       fi
+    - |
+      if [ -n "$CROSSBUILD_ARCH" ]; then
+        dpkg-architecture -A $CROSSBUILD_ARCH > crossbuild.sh
+        . crossbuild.sh
+        export CONFIGURE_OPTIONS="--host=${DEB_TARGET_GNU_TYPE} ${CONFIGURE_OPTIONS}"
+        export CROSS_RUN=qemu-${CROSSBUILD_ARCH}
+      fi
     - autoreconf
-    - ./configure CPPFLAGS="$CPPFLAGS" LDFLAGS="$LDFLAGS" $CONFIGURE_OPTIONS
+    - ./configure CPPFLAGS="$CPPFLAGS" LDFLAGS="$LDFLAGS" ${CONFIGURE_OPTIONS}
     # Detect which make is available
     - MAKE=make
     - which gmake 2>/dev/null >/dev/null && MAKE=gmake
-    - $MAKE
-    - $MAKE check
+    - $MAKE VERBOSE=1
+    - $MAKE VERBOSE=1 check
     # Build docs when tools are available
     - if which linuxdoc pdflatex sgmlsasp >/dev/null ; then $MAKE docs ; fi
     # Check that the reported version is the right one
-    - ./bird --version |& tee obj/version-built
+    - ${CROSS_RUN} ./bird --version |& tee obj/version-built
     - diff obj/version-built version-expected
 
 .build-docker-linux-amd64: &build-docker-linux-amd64
@@ -1075,6 +1082,7 @@ build-debian-11-amd64:
       optional: true
   image: registry.nic.cz/labs/bird:debian-11-amd64
 
+
 build-debian-11-i386:
   <<: *build-docker-linux-amd64
   needs:
@@ -1089,6 +1097,25 @@ build-debian-12-amd64:
       optional: true
   image: registry.nic.cz/labs/bird:debian-12-amd64
 
+crossbuild-mips64el-debian-12-amd64:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-debian-12-amd64
+      optional: true
+  image: registry.nic.cz/labs/bird:debian-12-amd64
+  variables:
+    CROSSBUILD_ARCH: mips64el
+
+crossbuild-s390x-debian-12-amd64:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-debian-12-amd64
+      optional: true
+  image: registry.nic.cz/labs/bird:debian-12-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
 build-debian-12-i386:
   <<: *build-docker-linux-amd64
   needs:
@@ -1103,6 +1130,52 @@ build-debian-13-amd64:
       optional: true
   image: registry.nic.cz/labs/bird:debian-13-amd64
 
+crossbuild-arm64-debian-13-amd64:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-debian-13-amd64
+      optional: true
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+
+crossbuild-armel-debian-13-amd64:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-debian-13-amd64
+      optional: true
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: armel
+
+crossbuild-armhf-debian-13-amd64:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-debian-13-amd64
+      optional: true
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+
+crossbuild-riscv64-debian-13-amd64:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-debian-13-amd64
+      optional: true
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+
+crossbuild-s390x-debian-13-amd64:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-debian-13-amd64
+      optional: true
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
 build-debian-13-i386:
   <<: *build-docker-linux-amd64
   needs:
@@ -1117,6 +1190,43 @@ build-debian-testing-amd64:
       optional: true
   image: registry.nic.cz/labs/bird:debian-testing-amd64
 
+crossbuild-arm64-debian-testing-amd64:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-debian-testing-amd64
+      optional: true
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+
+crossbuild-armhf-debian-testing-amd64:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-debian-testing-amd64
+      optional: true
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+
+crossbuild-riscv64-debian-testing-amd64:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-debian-testing-amd64
+      optional: true
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+
+crossbuild-s390x-debian-testing-amd64:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-debian-testing-amd64
+      optional: true
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
 build-debian-testing-i386:
   <<: *build-docker-linux-amd64
   needs:
@@ -1131,6 +1241,7 @@ build-ubuntu-18.04-amd64:
       optional: true
   image: registry.nic.cz/labs/bird:ubuntu-18.04-amd64
 
+
 build-ubuntu-20.04-amd64:
   <<: *build-docker-linux-amd64
   needs:
@@ -1138,6 +1249,7 @@ build-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:
@@ -1145,6 +1257,16 @@ build-ubuntu-22.04-amd64:
       optional: true
   image: registry.nic.cz/labs/bird:ubuntu-22.04-amd64
 
+crossbuild-riscv64-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
+  variables:
+    CROSSBUILD_ARCH: riscv64
+
+
 build-ubuntu-24.04-amd64:
   <<: *build-docker-linux-amd64
   needs:
@@ -1152,6 +1274,52 @@ build-ubuntu-24.04-amd64:
       optional: true
   image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
 
+crossbuild-arm64-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
+  variables:
+    CROSSBUILD_ARCH: arm64
+
+crossbuild-armhf-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
+  variables:
+    CROSSBUILD_ARCH: armhf
+
+crossbuild-ppc64el-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
+  variables:
+    CROSSBUILD_ARCH: ppc64el
+
+crossbuild-riscv64-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
+  variables:
+    CROSSBUILD_ARCH: riscv64
+
+crossbuild-s390x-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
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
 build-ubuntu-25.04-amd64:
   <<: *build-docker-linux-amd64
   needs:
@@ -1159,6 +1327,43 @@ build-ubuntu-25.04-amd64:
       optional: true
   image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
 
+crossbuild-armhf-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
+  variables:
+    CROSSBUILD_ARCH: armhf
+
+crossbuild-ppc64el-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
+  variables:
+    CROSSBUILD_ARCH: ppc64el
+
+crossbuild-riscv64-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
+  variables:
+    CROSSBUILD_ARCH: riscv64
+
+crossbuild-s390x-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
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
 build-ubuntu-25.10-amd64:
   <<: *build-docker-linux-amd64
   needs:
@@ -1166,6 +1371,52 @@ build-ubuntu-25.10-amd64:
       optional: true
   image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
 
+crossbuild-arm64-ubuntu-25.10-amd64:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-ubuntu-25.10-amd64
+      optional: true
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+
+crossbuild-armhf-ubuntu-25.10-amd64:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-ubuntu-25.10-amd64
+      optional: true
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+
+crossbuild-ppc64el-ubuntu-25.10-amd64:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-ubuntu-25.10-amd64
+      optional: true
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: ppc64el
+
+crossbuild-riscv64-ubuntu-25.10-amd64:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-ubuntu-25.10-amd64
+      optional: true
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+
+crossbuild-s390x-ubuntu-25.10-amd64:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-ubuntu-25.10-amd64
+      optional: true
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
 
 #######################################################
 ## A special task for preparing the release archives ##
@@ -1449,6 +1700,7 @@ pkg-debian-11-amd64:
     - job: build-release
   image: registry.nic.cz/labs/bird:debian-11-amd64
 
+
 pkg-debian-11-i386:
   <<: *pkg-deb
   needs:
@@ -1465,6 +1717,27 @@ pkg-debian-12-amd64:
     - job: build-release
   image: registry.nic.cz/labs/bird:debian-12-amd64
 
+crosspkg-mips64el-debian-12-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-mips64el-debian-12-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-12-amd64
+  variables:
+    CROSSBUILD_ARCH: mips64el
+
+crosspkg-s390x-debian-12-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-s390x-debian-12-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-12-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
 pkg-debian-12-i386:
   <<: *pkg-deb
   needs:
@@ -1481,6 +1754,57 @@ pkg-debian-13-amd64:
     - job: build-release
   image: registry.nic.cz/labs/bird:debian-13-amd64
 
+crosspkg-arm64-debian-13-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-arm64-debian-13-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+
+crosspkg-armel-debian-13-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-armel-debian-13-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: armel
+
+crosspkg-armhf-debian-13-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-armhf-debian-13-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+
+crosspkg-riscv64-debian-13-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-riscv64-debian-13-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+
+crosspkg-s390x-debian-13-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-s390x-debian-13-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
 pkg-debian-13-i386:
   <<: *pkg-deb
   needs:
@@ -1497,6 +1821,47 @@ pkg-debian-testing-amd64:
     - job: build-release
   image: registry.nic.cz/labs/bird:debian-testing-amd64
 
+crosspkg-arm64-debian-testing-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-arm64-debian-testing-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+
+crosspkg-armhf-debian-testing-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-armhf-debian-testing-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+
+crosspkg-riscv64-debian-testing-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-riscv64-debian-testing-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+
+crosspkg-s390x-debian-testing-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-s390x-debian-testing-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
 pkg-debian-testing-i386:
   <<: *pkg-deb
   needs:
@@ -1513,6 +1878,7 @@ pkg-ubuntu-18.04-amd64:
     - job: build-release
   image: registry.nic.cz/labs/bird:ubuntu-18.04-amd64
 
+
 pkg-ubuntu-20.04-amd64:
   <<: *pkg-deb
   needs:
@@ -1521,6 +1887,7 @@ pkg-ubuntu-20.04-amd64:
     - job: build-release
   image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64
 
+
 pkg-ubuntu-22.04-amd64:
   <<: *pkg-deb
   needs:
@@ -1529,6 +1896,17 @@ pkg-ubuntu-22.04-amd64:
     - job: build-release
   image: registry.nic.cz/labs/bird:ubuntu-22.04-amd64
 
+crosspkg-riscv64-ubuntu-22.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-riscv64-ubuntu-22.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-22.04-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+
+
 pkg-ubuntu-24.04-amd64:
   <<: *pkg-deb
   needs:
@@ -1537,6 +1915,57 @@ pkg-ubuntu-24.04-amd64:
     - job: build-release
   image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
 
+crosspkg-arm64-ubuntu-24.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-arm64-ubuntu-24.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+
+crosspkg-armhf-ubuntu-24.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-armhf-ubuntu-24.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+
+crosspkg-ppc64el-ubuntu-24.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-ppc64el-ubuntu-24.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: ppc64el
+
+crosspkg-riscv64-ubuntu-24.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-riscv64-ubuntu-24.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+
+crosspkg-s390x-ubuntu-24.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-s390x-ubuntu-24.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
 pkg-ubuntu-25.04-amd64:
   <<: *pkg-deb
   needs:
@@ -1545,6 +1974,47 @@ pkg-ubuntu-25.04-amd64:
     - job: build-release
   image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
 
+crosspkg-armhf-ubuntu-25.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-armhf-ubuntu-25.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+
+crosspkg-ppc64el-ubuntu-25.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-ppc64el-ubuntu-25.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+  variables:
+    CROSSBUILD_ARCH: ppc64el
+
+crosspkg-riscv64-ubuntu-25.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-riscv64-ubuntu-25.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+
+crosspkg-s390x-ubuntu-25.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-s390x-ubuntu-25.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
 pkg-ubuntu-25.10-amd64:
   <<: *pkg-deb
   needs:
@@ -1553,6 +2023,57 @@ pkg-ubuntu-25.10-amd64:
     - job: build-release
   image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
 
+crosspkg-arm64-ubuntu-25.10-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-arm64-ubuntu-25.10-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+
+crosspkg-armhf-ubuntu-25.10-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-armhf-ubuntu-25.10-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+
+crosspkg-ppc64el-ubuntu-25.10-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-ppc64el-ubuntu-25.10-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: ppc64el
+
+crosspkg-riscv64-ubuntu-25.10-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-riscv64-ubuntu-25.10-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+
+crosspkg-s390x-ubuntu-25.10-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-s390x-ubuntu-25.10-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
 
 ## Package installability checks
 
@@ -1560,6 +2081,13 @@ pkg-ubuntu-25.10-amd64:
   <<: *pkg-base
   stage: install
   script:
+    # setup crossbuild architecture
+    - |
+      if [ -n "$CROSSBUILD_ARCH" ]; then
+        dpkg-architecture -A $CROSSBUILD_ARCH > crossbuild.sh
+        . crossbuild.sh
+        export CROSS_RUN=qemu-${CROSSBUILD_ARCH}
+      fi
     # check that bird is _not_ installed now and no user or group bird exists
     - |
       if bird --version >/dev/null 2>&1; then
@@ -1831,6 +2359,20 @@ install-debian-12-amd64:
     - job: pkg-debian-12-amd64
   image: registry.nic.cz/labs/bird:debian-12-amd64
   variables:
+crossinstall-mips64el-debian-12-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-mips64el-debian-12-amd64
+  image: registry.nic.cz/labs/bird:debian-12-amd64
+  variables:
+    CROSSBUILD_ARCH: mips64el
+crossinstall-s390x-debian-12-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-s390x-debian-12-amd64
+  image: registry.nic.cz/labs/bird:debian-12-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
 
 install-debian-12-i386:
   <<: *install-deb
@@ -1845,6 +2387,41 @@ install-debian-13-amd64:
     - job: pkg-debian-13-amd64
   image: registry.nic.cz/labs/bird:debian-13-amd64
   variables:
+crossinstall-arm64-debian-13-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-arm64-debian-13-amd64
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+crossinstall-armel-debian-13-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-armel-debian-13-amd64
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: armel
+crossinstall-armhf-debian-13-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-armhf-debian-13-amd64
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+crossinstall-riscv64-debian-13-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-riscv64-debian-13-amd64
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+crossinstall-s390x-debian-13-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-s390x-debian-13-amd64
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
 
 install-debian-13-i386:
   <<: *install-deb
@@ -1859,6 +2436,34 @@ install-debian-testing-amd64:
     - job: pkg-debian-testing-amd64
   image: registry.nic.cz/labs/bird:debian-testing-amd64
   variables:
+crossinstall-arm64-debian-testing-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-arm64-debian-testing-amd64
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+crossinstall-armhf-debian-testing-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-armhf-debian-testing-amd64
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+crossinstall-riscv64-debian-testing-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-riscv64-debian-testing-amd64
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+crossinstall-s390x-debian-testing-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-s390x-debian-testing-amd64
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
 
 install-debian-testing-i386:
   <<: *install-deb
@@ -1887,6 +2492,13 @@ install-ubuntu-22.04-amd64:
     - job: pkg-ubuntu-22.04-amd64
   image: registry.nic.cz/labs/bird:ubuntu-22.04-amd64
   variables:
+crossinstall-riscv64-ubuntu-22.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-riscv64-ubuntu-22.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-22.04-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
 
 install-ubuntu-24.04-amd64:
   <<: *install-deb
@@ -1894,6 +2506,41 @@ install-ubuntu-24.04-amd64:
     - job: pkg-ubuntu-24.04-amd64
   image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
   variables:
+crossinstall-arm64-ubuntu-24.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-arm64-ubuntu-24.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+crossinstall-armhf-ubuntu-24.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-armhf-ubuntu-24.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+crossinstall-ppc64el-ubuntu-24.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-ppc64el-ubuntu-24.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: ppc64el
+crossinstall-riscv64-ubuntu-24.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-riscv64-ubuntu-24.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+crossinstall-s390x-ubuntu-24.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-s390x-ubuntu-24.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
 
 install-ubuntu-25.04-amd64:
   <<: *install-deb
@@ -1901,6 +2548,34 @@ install-ubuntu-25.04-amd64:
     - job: pkg-ubuntu-25.04-amd64
   image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
   variables:
+crossinstall-armhf-ubuntu-25.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-armhf-ubuntu-25.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+crossinstall-ppc64el-ubuntu-25.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-ppc64el-ubuntu-25.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+  variables:
+    CROSSBUILD_ARCH: ppc64el
+crossinstall-riscv64-ubuntu-25.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-riscv64-ubuntu-25.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+crossinstall-s390x-ubuntu-25.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-s390x-ubuntu-25.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
 
 install-ubuntu-25.10-amd64:
   <<: *install-deb
@@ -1908,6 +2583,41 @@ install-ubuntu-25.10-amd64:
     - job: pkg-ubuntu-25.10-amd64
   image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
   variables:
+crossinstall-arm64-ubuntu-25.10-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-arm64-ubuntu-25.10-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+crossinstall-armhf-ubuntu-25.10-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-armhf-ubuntu-25.10-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+crossinstall-ppc64el-ubuntu-25.10-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-ppc64el-ubuntu-25.10-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: ppc64el
+crossinstall-riscv64-ubuntu-25.10-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-riscv64-ubuntu-25.10-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+crossinstall-s390x-ubuntu-25.10-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-s390x-ubuntu-25.10-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
 
 
 ###################################
index 2e5e4e89181ee48f39b5260db563ac6eb2415c28..2dbf966113e949b2b23c3c44678c2d05adc1c28e 100644 (file)
@@ -181,7 +181,7 @@ $(tests_targets): %: %.o $(tests_objs) | prepare
 $(tests_targets): LIBS += $(DAEMON_LIBS)
 
 $(tests_targets_ok): %.ok: %
-       $(Q)$* 2>/dev/null && touch $*.ok
+       $(Q)$(if $(CROSSBUILD_ARCH),qemu-$(CROSSBUILD_ARCH) )$* 2>/dev/null && touch $*.ok
 
 test: testsclean check
 check: tests tests_run
index 519e91ef73ac356513b92bf40efea1e0b4cff306..abb877ff3562aa30ee73801d6eac1588b4157d7d 100644 (file)
@@ -9,17 +9,42 @@
 FROM {{ d.parent }}
 {%- if distro.type == "deb" %}
 ENV DEBIAN_FRONTEND=noninteractive
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
+{%- for ca in distro.crossarch %}
+RUN dpkg --add-architecture {{ ca }}
+{%- endfor %}
+{%- if distro.name == "ubuntu-22.04-amd64" %}
+RUN find /etc/apt/sourc* -type f -exec sed -i 's/^deb /deb [arch=amd64] /' '{}' +
+RUN find /etc/apt/sourc* -type f -exec sed -r '/^deb /{s#arch=amd64#arch={{ distro.crossarch | join(",") }}#;s#https?://[^ ]+#http://ports.ubuntu.com/ubuntu-ports/#}' '{}' + > /etc/apt/sources.list.d/crossbuild.list
+{%- elif distro.shortname == "ubuntu" and distro.crossarch %}
+RUN find /etc/apt/sourc* -type f -exec sed -i '/Components: /a\
+Architectures: amd64' '{}' +
+RUN find /etc/apt/sourc* -type f -exec sed 's#URIs: .*#URIs: http://ports.ubuntu.com/ubuntu-ports/#;s#Architectures: amd64#Architectures: {{ distro.crossarch | join(",") }}#' '{}' + > /etc/apt/sources.list.d/crossbuild.sources
+{%- endif %}
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
-       {% if distro.shortname == "ubuntu" %}tzdata \
-       {% endif %}build-essential \
+       {%- if distro.shortname == "ubuntu" %}
+       tzdata \
+       {%- endif %}
+       build-essential \
        flex \
        bison \
        autoconf \
        ncurses-dev \
        libreadline-dev \
        {{ d.libssh_kind }}-dev \
+       {%- for ca in distro.crossarch %}
+       crossbuild-essential-{{ ca }} \
+       libreadline-dev:{{ ca }} \
+       ncurses-dev:{{ ca }} \
+       {%- endfor %}
+       {%- if distro.crossarch %}
+       qemu-user \
+       qemu-user-binfmt \
+       binfmt-support \
+       {%- endif %}
        linuxdoc-tools-latex \
        texlive-latex-extra \
        opensp \
@@ -37,6 +62,7 @@ RUN apt-get -y --no-install-recommends install \
        python3-pip \
        python3-setuptools \
        python3-venv
+RUN apt-get -y clean
 {%- elif distro.type == "rpm" %}
 {%- if d.preinstall %}
 {{ d.preinstall }}
index 2026408e62bf477b9b5a14fc5ea1a06937569edd..bde5ff1415fadcf40b9e9d0bf5bc0d7743bbf401 100644 (file)
@@ -104,16 +104,19 @@ distros:
   {% endfor %}
 
   # Debian from oldoldstable up to testing
-  {% for num, codename in (
-    (11, "bullseye"),
-    (12, "bookworm"),
-    (13, "trixie"),
-    ("testing", "testing")
+  {% for num, codename, crossarch in (
+    (11, "bullseye", []),
+    (12, "bookworm", ["mips64el", "s390x"]),
+    (13, "trixie", ["arm64", "armel", "armhf", "riscv64", "s390x"]),
+    ("testing", "testing", ["arm64", "armhf", "riscv64", "s390x"])
     ) -%}
   {% for arch in ('amd64', 'i386') -%}
   - name: debian-{{num}}-{{arch}}
     type: deb
     shortname: debian
+  {%- if arch == "amd64" %}
+    crossarch: {{ crossarch }}
+  {%- endif %}
     docker:
       parent: {{ arch }}/debian:{{ codename }}-slim
       libssh_kind: {% if (num != "testing") and (num < 13) %}libssh-gcrypt{% else %}libssh{% endif %}
@@ -121,17 +124,33 @@ distros:
   {% endfor %}
   {% endfor %}
 
+# These debian don't crossbuild. TODO fix that.
+# 12 -> ["arm64", "armel", "armhf"] ->  Error 127 from `make check` probably because qemu-user is somehow botched
+
   # Last 7 years of Ubuntu LTS
-  {% for num in ('18.04', '20.04', '22.04', '24.04', '25.04', '25.10') -%}
+  {% for num, crossarch in (
+      ('18.04', []),
+      ('20.04', []),
+      ('22.04', ["riscv64"]),
+      ('24.04', ["arm64", "armhf", "ppc64el", "riscv64", "s390x"]),
+      ('25.04', ["armhf", "ppc64el", "riscv64", "s390x"]),
+      ('25.10', ["arm64", "armhf", "ppc64el", "riscv64", "s390x"]),
+      ) -%}
   - name: ubuntu-{{ num }}-amd64
     type: deb
     shortname: ubuntu
+    crossarch: {{ crossarch }}
     docker:
       parent: "ubuntu:{{ num }}"
       libssh_kind: {% if (num[:2] | int) < 25 %}libssh-gcrypt{% else %}libssh{% endif %}
       needs_adduser: {% if (num[:2] | int) > 22 %}true{% else %}false{% endif %}
   {% endfor %}
 
+# These ubuntu don't crossbuild. TODO fix that.
+# '22.04' -> ["arm64", "armhf", "ppc64el"] -> Error 127 from `make check` probably because qemu-user is somehow botched
+#        -> ["s390x"] doesn't pack -> debugedit --build-id --build-id-seed=bird2/2.18\+branch.mq.nightly.d0b6b85ebc17-cznic.1\~jammy debian/bird2/usr/sbin/birdc died with signal 11
+# '25.04' -> ["arm64"] fails in `make check` with Timeout expired on `rt-fib_test`
+
 birdlab:
   - name: openbsd-75
     variables:
index d540124f4d8b1329294cd9cf64cfd50da87baecb..bc02047ca1cadeaa1917a1ee3ce281a55aab4f52 100644 (file)
@@ -5,6 +5,8 @@
 #     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM amd64/debian:bullseye-slim
 ENV DEBIAN_FRONTEND=noninteractive
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
@@ -31,3 +33,4 @@ RUN apt-get -y --no-install-recommends install \
        python3-pip \
        python3-setuptools \
        python3-venv
+RUN apt-get -y clean
index 3ba68cd656761074edd8abaf64525074b616626d..7cb4f3c52b49d7c7c0e95a0ad6af68ae381a39e4 100644 (file)
@@ -5,6 +5,8 @@
 #     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM i386/debian:bullseye-slim
 ENV DEBIAN_FRONTEND=noninteractive
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
@@ -31,3 +33,4 @@ RUN apt-get -y --no-install-recommends install \
        python3-pip \
        python3-setuptools \
        python3-venv
+RUN apt-get -y clean
index 9ff3ec26477d7beb4a06c7b8af65cea013e6b2b7..41829107a450dcf93c254b78459c4084884d30c3 100644 (file)
@@ -5,6 +5,10 @@
 #     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM amd64/debian:bookworm-slim
 ENV DEBIAN_FRONTEND=noninteractive
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
+RUN dpkg --add-architecture mips64el
+RUN dpkg --add-architecture s390x
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
@@ -15,6 +19,15 @@ RUN apt-get -y --no-install-recommends install \
        ncurses-dev \
        libreadline-dev \
        libssh-gcrypt-dev \
+       crossbuild-essential-mips64el \
+       libreadline-dev:mips64el \
+       ncurses-dev:mips64el \
+       crossbuild-essential-s390x \
+       libreadline-dev:s390x \
+       ncurses-dev:s390x \
+       qemu-user \
+       qemu-user-binfmt \
+       binfmt-support \
        linuxdoc-tools-latex \
        texlive-latex-extra \
        opensp \
@@ -31,3 +44,4 @@ RUN apt-get -y --no-install-recommends install \
        python3-pip \
        python3-setuptools \
        python3-venv
+RUN apt-get -y clean
index c3783440be78cd9617b70d0d688be07394142096..a6713322c7b284ae2870735aaff44e85b0d076af 100644 (file)
@@ -5,6 +5,8 @@
 #     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM i386/debian:bookworm-slim
 ENV DEBIAN_FRONTEND=noninteractive
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
@@ -31,3 +33,4 @@ RUN apt-get -y --no-install-recommends install \
        python3-pip \
        python3-setuptools \
        python3-venv
+RUN apt-get -y clean
index 547fab7cc5d91b9ce3e6406ce35a9821faed2524..1b584f88b48f8f9bc3f871e19e35120f48f420d3 100644 (file)
@@ -5,6 +5,13 @@
 #     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM amd64/debian:trixie-slim
 ENV DEBIAN_FRONTEND=noninteractive
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
+RUN dpkg --add-architecture arm64
+RUN dpkg --add-architecture armel
+RUN dpkg --add-architecture armhf
+RUN dpkg --add-architecture riscv64
+RUN dpkg --add-architecture s390x
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
@@ -15,6 +22,24 @@ RUN apt-get -y --no-install-recommends install \
        ncurses-dev \
        libreadline-dev \
        libssh-dev \
+       crossbuild-essential-arm64 \
+       libreadline-dev:arm64 \
+       ncurses-dev:arm64 \
+       crossbuild-essential-armel \
+       libreadline-dev:armel \
+       ncurses-dev:armel \
+       crossbuild-essential-armhf \
+       libreadline-dev:armhf \
+       ncurses-dev:armhf \
+       crossbuild-essential-riscv64 \
+       libreadline-dev:riscv64 \
+       ncurses-dev:riscv64 \
+       crossbuild-essential-s390x \
+       libreadline-dev:s390x \
+       ncurses-dev:s390x \
+       qemu-user \
+       qemu-user-binfmt \
+       binfmt-support \
        linuxdoc-tools-latex \
        texlive-latex-extra \
        opensp \
@@ -32,3 +57,4 @@ RUN apt-get -y --no-install-recommends install \
        python3-pip \
        python3-setuptools \
        python3-venv
+RUN apt-get -y clean
index d02b2329904fb385f07aa2614ff30dfeec8e8d98..f18cfd3df02714667a137bd2c54efaf10ad74e19 100644 (file)
@@ -5,6 +5,8 @@
 #     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM i386/debian:trixie-slim
 ENV DEBIAN_FRONTEND=noninteractive
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
@@ -32,3 +34,4 @@ RUN apt-get -y --no-install-recommends install \
        python3-pip \
        python3-setuptools \
        python3-venv
+RUN apt-get -y clean
index e70eb39c5c51fea99e6fae811b1434502e3a1eea..aa0e0d9f503b2b954c8da8efcd8cd6fd07caa937 100644 (file)
@@ -5,6 +5,12 @@
 #     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM amd64/debian:testing-slim
 ENV DEBIAN_FRONTEND=noninteractive
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
+RUN dpkg --add-architecture arm64
+RUN dpkg --add-architecture armhf
+RUN dpkg --add-architecture riscv64
+RUN dpkg --add-architecture s390x
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
@@ -15,6 +21,21 @@ RUN apt-get -y --no-install-recommends install \
        ncurses-dev \
        libreadline-dev \
        libssh-dev \
+       crossbuild-essential-arm64 \
+       libreadline-dev:arm64 \
+       ncurses-dev:arm64 \
+       crossbuild-essential-armhf \
+       libreadline-dev:armhf \
+       ncurses-dev:armhf \
+       crossbuild-essential-riscv64 \
+       libreadline-dev:riscv64 \
+       ncurses-dev:riscv64 \
+       crossbuild-essential-s390x \
+       libreadline-dev:s390x \
+       ncurses-dev:s390x \
+       qemu-user \
+       qemu-user-binfmt \
+       binfmt-support \
        linuxdoc-tools-latex \
        texlive-latex-extra \
        opensp \
@@ -32,3 +53,4 @@ RUN apt-get -y --no-install-recommends install \
        python3-pip \
        python3-setuptools \
        python3-venv
+RUN apt-get -y clean
index cae195d927feb1a4f6781587917910e8be0514de..df2102b60cb1958b5cf76397727f6ef741226d1c 100644 (file)
@@ -5,6 +5,8 @@
 #     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM i386/debian:testing-slim
 ENV DEBIAN_FRONTEND=noninteractive
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
@@ -32,3 +34,4 @@ RUN apt-get -y --no-install-recommends install \
        python3-pip \
        python3-setuptools \
        python3-venv
+RUN apt-get -y clean
index f1c78ac6e786afc39bff94c63f4cda3cf8c103bd..8fe71cf0afc300cc3d5d560c65d27df9ca7b8a1e 100644 (file)
@@ -5,6 +5,8 @@
 #     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM ubuntu:18.04
 ENV DEBIAN_FRONTEND=noninteractive
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
@@ -32,3 +34,4 @@ RUN apt-get -y --no-install-recommends install \
        python3-pip \
        python3-setuptools \
        python3-venv
+RUN apt-get -y clean
index 893fa719f71f72052a58530f4c817fa91924f4d8..5a0fe576564fa1e247c7ec6459bc573c6d2447d7 100644 (file)
@@ -5,6 +5,8 @@
 #     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM ubuntu:20.04
 ENV DEBIAN_FRONTEND=noninteractive
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
@@ -32,3 +34,4 @@ RUN apt-get -y --no-install-recommends install \
        python3-pip \
        python3-setuptools \
        python3-venv
+RUN apt-get -y clean
index 71bbf5fef59457dbc687ad5fba3feb26dc9c807a..13b14477a658b1564ec4c1601dbeb5fd8656bbae 100644 (file)
@@ -5,6 +5,11 @@
 #     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM ubuntu:22.04
 ENV DEBIAN_FRONTEND=noninteractive
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
+RUN dpkg --add-architecture riscv64
+RUN find /etc/apt/sourc* -type f -exec sed -i 's/^deb /deb [arch=amd64] /' '{}' +
+RUN find /etc/apt/sourc* -type f -exec sed -r '/^deb /{s#arch=amd64#arch=riscv64#;s#https?://[^ ]+#http://ports.ubuntu.com/ubuntu-ports/#}' '{}' + > /etc/apt/sources.list.d/crossbuild.list
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
@@ -16,6 +21,12 @@ RUN apt-get -y --no-install-recommends install \
        ncurses-dev \
        libreadline-dev \
        libssh-gcrypt-dev \
+       crossbuild-essential-riscv64 \
+       libreadline-dev:riscv64 \
+       ncurses-dev:riscv64 \
+       qemu-user \
+       qemu-user-binfmt \
+       binfmt-support \
        linuxdoc-tools-latex \
        texlive-latex-extra \
        opensp \
@@ -32,3 +43,4 @@ RUN apt-get -y --no-install-recommends install \
        python3-pip \
        python3-setuptools \
        python3-venv
+RUN apt-get -y clean
index 87fc727b6b805a79002a7c94f46d9eca0cdeaee1..0d26a6024fcc3047024f4083c6f273148cc001c4 100644 (file)
@@ -5,6 +5,16 @@
 #     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM ubuntu:24.04
 ENV DEBIAN_FRONTEND=noninteractive
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
+RUN dpkg --add-architecture arm64
+RUN dpkg --add-architecture armhf
+RUN dpkg --add-architecture ppc64el
+RUN dpkg --add-architecture riscv64
+RUN dpkg --add-architecture s390x
+RUN find /etc/apt/sourc* -type f -exec sed -i '/Components: /a\
+Architectures: amd64' '{}' +
+RUN find /etc/apt/sourc* -type f -exec sed 's#URIs: .*#URIs: http://ports.ubuntu.com/ubuntu-ports/#;s#Architectures: amd64#Architectures: arm64,armhf,ppc64el,riscv64,s390x#' '{}' + > /etc/apt/sources.list.d/crossbuild.sources
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
@@ -16,6 +26,24 @@ RUN apt-get -y --no-install-recommends install \
        ncurses-dev \
        libreadline-dev \
        libssh-gcrypt-dev \
+       crossbuild-essential-arm64 \
+       libreadline-dev:arm64 \
+       ncurses-dev:arm64 \
+       crossbuild-essential-armhf \
+       libreadline-dev:armhf \
+       ncurses-dev:armhf \
+       crossbuild-essential-ppc64el \
+       libreadline-dev:ppc64el \
+       ncurses-dev:ppc64el \
+       crossbuild-essential-riscv64 \
+       libreadline-dev:riscv64 \
+       ncurses-dev:riscv64 \
+       crossbuild-essential-s390x \
+       libreadline-dev:s390x \
+       ncurses-dev:s390x \
+       qemu-user \
+       qemu-user-binfmt \
+       binfmt-support \
        linuxdoc-tools-latex \
        texlive-latex-extra \
        opensp \
@@ -33,3 +61,4 @@ RUN apt-get -y --no-install-recommends install \
        python3-pip \
        python3-setuptools \
        python3-venv
+RUN apt-get -y clean
index fdf8246855cef6e2bd5f01cd921d253f0601cc85..f4281f2ad477f7e57299649a5275cca7cedcbd65 100644 (file)
@@ -5,6 +5,15 @@
 #     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM ubuntu:25.04
 ENV DEBIAN_FRONTEND=noninteractive
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
+RUN dpkg --add-architecture armhf
+RUN dpkg --add-architecture ppc64el
+RUN dpkg --add-architecture riscv64
+RUN dpkg --add-architecture s390x
+RUN find /etc/apt/sourc* -type f -exec sed -i '/Components: /a\
+Architectures: amd64' '{}' +
+RUN find /etc/apt/sourc* -type f -exec sed 's#URIs: .*#URIs: http://ports.ubuntu.com/ubuntu-ports/#;s#Architectures: amd64#Architectures: armhf,ppc64el,riscv64,s390x#' '{}' + > /etc/apt/sources.list.d/crossbuild.sources
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
@@ -16,6 +25,21 @@ RUN apt-get -y --no-install-recommends install \
        ncurses-dev \
        libreadline-dev \
        libssh-dev \
+       crossbuild-essential-armhf \
+       libreadline-dev:armhf \
+       ncurses-dev:armhf \
+       crossbuild-essential-ppc64el \
+       libreadline-dev:ppc64el \
+       ncurses-dev:ppc64el \
+       crossbuild-essential-riscv64 \
+       libreadline-dev:riscv64 \
+       ncurses-dev:riscv64 \
+       crossbuild-essential-s390x \
+       libreadline-dev:s390x \
+       ncurses-dev:s390x \
+       qemu-user \
+       qemu-user-binfmt \
+       binfmt-support \
        linuxdoc-tools-latex \
        texlive-latex-extra \
        opensp \
@@ -33,3 +57,4 @@ RUN apt-get -y --no-install-recommends install \
        python3-pip \
        python3-setuptools \
        python3-venv
+RUN apt-get -y clean
index 0ec61be7773b2a6d9adbe5f8385ffc22a8cb7b93..385ef83469a9a87c056b0c2bf8207db951ef2029 100644 (file)
@@ -5,6 +5,16 @@
 #     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM ubuntu:25.10
 ENV DEBIAN_FRONTEND=noninteractive
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
+RUN dpkg --add-architecture arm64
+RUN dpkg --add-architecture armhf
+RUN dpkg --add-architecture ppc64el
+RUN dpkg --add-architecture riscv64
+RUN dpkg --add-architecture s390x
+RUN find /etc/apt/sourc* -type f -exec sed -i '/Components: /a\
+Architectures: amd64' '{}' +
+RUN find /etc/apt/sourc* -type f -exec sed 's#URIs: .*#URIs: http://ports.ubuntu.com/ubuntu-ports/#;s#Architectures: amd64#Architectures: arm64,armhf,ppc64el,riscv64,s390x#' '{}' + > /etc/apt/sources.list.d/crossbuild.sources
+RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' +
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
@@ -16,6 +26,24 @@ RUN apt-get -y --no-install-recommends install \
        ncurses-dev \
        libreadline-dev \
        libssh-dev \
+       crossbuild-essential-arm64 \
+       libreadline-dev:arm64 \
+       ncurses-dev:arm64 \
+       crossbuild-essential-armhf \
+       libreadline-dev:armhf \
+       ncurses-dev:armhf \
+       crossbuild-essential-ppc64el \
+       libreadline-dev:ppc64el \
+       ncurses-dev:ppc64el \
+       crossbuild-essential-riscv64 \
+       libreadline-dev:riscv64 \
+       ncurses-dev:riscv64 \
+       crossbuild-essential-s390x \
+       libreadline-dev:s390x \
+       ncurses-dev:s390x \
+       qemu-user \
+       qemu-user-binfmt \
+       binfmt-support \
        linuxdoc-tools-latex \
        texlive-latex-extra \
        opensp \
@@ -33,3 +61,4 @@ RUN apt-get -y --no-install-recommends install \
        python3-pip \
        python3-setuptools \
        python3-venv
+RUN apt-get -y clean
index 91c6af032e140b33886eb8e711bfe83778b21af0..e2574c449434059099b7a16796af0a1f681ab3fb 100644 (file)
@@ -266,7 +266,7 @@ tag-collect:
   - $DOCKER_CMD tag "bird:$IMG_NAME" "$IMG_BASE:$IMG_NAME"
   - $DOCKER_CMD push "$IMG_BASE:$IMG_NAME"
   after_script:
-  - rm -f "$HOME/.docker/$CI_JOB_ID/" # cleanup the credentials
+  - rm -rf "$HOME/.docker/$CI_JOB_ID/" # cleanup the credentials
   tags:
   # That's Docker in Docker
   - dind
@@ -327,17 +327,24 @@ docker-{{ docker["name"] }}:
           exit 1
         fi
       fi
+    - |
+      if [ -n "$CROSSBUILD_ARCH" ]; then
+        dpkg-architecture -A $CROSSBUILD_ARCH > crossbuild.sh
+        . crossbuild.sh
+        export CONFIGURE_OPTIONS="--host=${DEB_TARGET_GNU_TYPE} ${CONFIGURE_OPTIONS}"
+        export CROSS_RUN=qemu-${CROSSBUILD_ARCH}
+      fi
     - autoreconf
-    - ./configure CPPFLAGS="$CPPFLAGS" LDFLAGS="$LDFLAGS" $CONFIGURE_OPTIONS
+    - ./configure CPPFLAGS="$CPPFLAGS" LDFLAGS="$LDFLAGS" ${CONFIGURE_OPTIONS}
     # Detect which make is available
     - MAKE=make
     - which gmake 2>/dev/null >/dev/null && MAKE=gmake
-    - $MAKE
-    - $MAKE check
+    - $MAKE VERBOSE=1
+    - $MAKE VERBOSE=1 check
     # Build docs when tools are available
     - if which linuxdoc pdflatex sgmlsasp >/dev/null ; then $MAKE docs ; fi
     # Check that the reported version is the right one
-    - ./bird --version |& tee obj/version-built
+    - ${CROSS_RUN} ./bird --version |& tee obj/version-built
     - diff obj/version-built version-expected
 
 .build-docker-linux-amd64: &build-docker-linux-amd64
@@ -358,6 +365,21 @@ build-{{dist["name"]}}:
   variables:
 {{ dist["variables"] | to_yaml | indent(4, true) }}
 {%- endif %}
+{%- if "crossarch" in dist %}
+{% for ca in dist.crossarch %}
+crossbuild-{{ ca }}-{{ dist["name"] }}:
+  <<: *build-docker-linux-amd64
+  needs:
+    - job: docker-{{ dist["name"] }}
+      optional: true
+  image: registry.nic.cz/labs/bird:{{ dist["name"] }}
+  variables:
+    CROSSBUILD_ARCH: {{ ca }}
+{%- if 'variables' in dist %}
+{{ dist["variables"] | to_yaml | indent(4, true) }}
+{%- endif %}
+{% endfor %}
+{%- endif %}
 {% endfor %}
 
 #######################################################
@@ -433,6 +455,22 @@ pkg-{{ dist["name"] }}:
   variables:
 {{ dist["variables"] | to_yaml | indent(4, true) }}
 {%- endif %}
+{%- if "crossarch" in dist %}
+{% for ca in dist.crossarch %}
+crosspkg-{{ ca }}-{{ dist["name"] }}:
+  <<: *pkg-{{ dist["type"] }}
+  needs:
+    - job: crossbuild-{{ ca }}-{{ dist["name"] }}
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:{{ dist["name"] }}
+  variables:
+    CROSSBUILD_ARCH: {{ ca }}
+{%- if 'variables' in dist %}
+{{ dist["variables"] | to_yaml | indent(4, true) }}
+{%- endif %}
+{% endfor %}
+{%- endif %}
 {% endfor %}
 
 ## Package installability checks
@@ -441,6 +479,13 @@ pkg-{{ dist["name"] }}:
   <<: *pkg-base
   stage: install
   script:
+    # setup crossbuild architecture
+    - |
+      if [ -n "$CROSSBUILD_ARCH" ]; then
+        dpkg-architecture -A $CROSSBUILD_ARCH > crossbuild.sh
+        . crossbuild.sh
+        export CROSS_RUN=qemu-${CROSSBUILD_ARCH}
+      fi
     # check that bird is _not_ installed now and no user or group bird exists
     - |
       if bird --version >/dev/null 2>&1; then
@@ -495,6 +540,21 @@ install-{{ dist["name"] }}:
 {%- elif dist["type"] == "rpm" %}
     RPM_INSTALL_CMD: rpm -i
 {%- endif %}
+
+{%- for ca in dist.crossarch %}
+crossinstall-{{ ca }}-{{ dist["name"] }}:
+  <<: *install-{{ dist["type"] }}
+  needs:
+    - job: crosspkg-{{ ca }}-{{ dist["name"] }}
+  image: registry.nic.cz/labs/bird:{{ dist["name"] }}
+  variables:
+{%- if dist["name"][:12] == "opensuse-16." %}
+    RPM_INSTALL_CMD: zypper --non-interactive --no-gpg-checks in
+{%- elif dist["type"] == "rpm" %}
+    RPM_INSTALL_CMD: rpm -i
+{%- endif %}
+    CROSSBUILD_ARCH: {{ ca }}
+{%- endfor %}
 {% endfor %}
 
 ###################################
index 4711783afabc4af72f6297bd0f7a7e4d35d6c4a8..e9faabf30b416a9154c72988124a050467e5639d 100755 (executable)
@@ -8,6 +8,10 @@ if ! id bird >/dev/null 2>&1; then
 fi
 echo "Success"
 
+if [ -n "${CROSS_RUN}" ]; then
+  alias bird="${CROSS_RUN} $(which bird)"
+  alias birdcl="${CROSS_RUN} $(which birdcl)"
+fi
 
 STABLE_VERSION=$(cat VERSION)
 CI_COMMIT_MESSAGE=$(echo "$1" | sed '$s/\r\{0,1\}$//') # trimming new line