From 652f6b9751feb87fff2a62e58de1c6cf74b19180 Mon Sep 17 00:00:00 2001 From: Siddarth Kumar Date: Tue, 9 Dec 2025 22:30:28 +0400 Subject: [PATCH] chore(ci): use system nim everywhere To fix windows build issues due to very long paths by nimbus-build-system - points status-go to bring in https://github.com/status-im/status-go/pull/7185 - updates mac,windows host install scripts to include nim - updates linux dockerfile to install nim - updates linux docker image tag to use newer image --- ci/Dockerfile | 19 ++++++++++++++++++- ci/Jenkinsfile.linux | 2 +- ci/Jenkinsfile.tests-nim | 2 +- scripts/macos_build_setup.sh | 2 +- scripts/windows_build_setup.ps1 | 1 + vendor/status-go | 2 +- 6 files changed, 23 insertions(+), 5 deletions(-) diff --git a/ci/Dockerfile b/ci/Dockerfile index dfbaedb3509..3cd23cc4951 100644 --- a/ci/Dockerfile +++ b/ci/Dockerfile @@ -2,6 +2,7 @@ ARG QT_VERSION="6.9.2" ARG QT_MODULES="qtwebchannel qtwebview qtwebsockets qt5compat qtmultimedia qtwebengine qtpositioning qtserialport qtshadertools qtimageformats qtscxml qthttpserver" ARG LINUXDEPLOYQT_VERSION="20250615-0393b84" ARG PCSCLITE_VERSION="2.2.3" +ARG NIM_VERSION="2.2.4" # QT Installation Image -------------------------------------------------------- FROM ubuntu:22.04 AS qt-install @@ -46,7 +47,7 @@ RUN cp builddir/pcsclite.h src/PCSC # Build Image ------------------------------------------------------------------ FROM ubuntu:22.04 -ARG QT_VERSION LINUXDEPLOYQT_VERSION PCSCLITE_VERSION +ARG QT_VERSION LINUXDEPLOYQT_VERSION PCSCLITE_VERSION NIM_VERSION # Adapted from a12e/docker-qt by Aurélien Brooke @@ -170,6 +171,22 @@ RUN curl -s https://nixos.org/releases/nix/nix-2.24.11/install | sh -s -- --no-d # for nix-shell to work ENV PATH="/home/jenkins/.nix-profile/bin:${PATH}" +# Nim +RUN curl https://nim-lang.org/choosenim/init.sh -sSf | sh -s -- -y \ + && /home/jenkins/.nimble/bin/choosenim ${NIM_VERSION} +ENV PATH="/home/jenkins/.nimble/bin:${PATH}" + +# Switch to root to create system-wide symlinks for Nim tools +USER root + +RUN ln -sf /home/jenkins/.choosenim/toolchains/nim-${NIM_VERSION}/bin/nim /usr/local/bin/nim \ + && ln -sf /home/jenkins/.choosenim/toolchains/nim-${NIM_VERSION}/bin/nimble /usr/local/bin/nimble \ + && ln -sf /home/jenkins/.choosenim/toolchains/nim-${NIM_VERSION}/bin/choosenim /usr/local/bin/choosenim \ + && chmod 755 /home/jenkins/.choosenim/toolchains/nim-${NIM_VERSION}/bin/* \ + && chown -R root:root /home/jenkins/.choosenim/toolchains/nim-${NIM_VERSION}/bin + +USER jenkins + LABEL maintainer="jakub@status.im" LABEL source="https://github.com/status-im/status-app" LABEL description="Build image for the Status Desktop client written in Nim." diff --git a/ci/Jenkinsfile.linux b/ci/Jenkinsfile.linux index 68ce94f0033..86c97cdee18 100644 --- a/ci/Jenkinsfile.linux +++ b/ci/Jenkinsfile.linux @@ -10,7 +10,7 @@ pipeline { /* Image with Ubuntu 22.04 and QT 6.9.2 */ docker { label 'linuxcontainer' - image 'harbor.status.im/status-im/status-desktop-build:1.0.5-qt6.9.2' + image 'harbor.status.im/status-im/status-desktop-build:1.0.6-qt6.9.2' /* allows jenkins use cat and mounts '/dev/fuse' for linuxdeployqt */ args '--entrypoint="" ' + '--cap-add=SYS_ADMIN ' + diff --git a/ci/Jenkinsfile.tests-nim b/ci/Jenkinsfile.tests-nim index 6b92f14fa38..e14eb55b6e8 100644 --- a/ci/Jenkinsfile.tests-nim +++ b/ci/Jenkinsfile.tests-nim @@ -8,7 +8,7 @@ pipeline { agent { docker { label 'linuxcontainer' - image 'harbor.status.im/status-im/status-desktop-build:1.0.5-qt6.9.2' + image 'harbor.status.im/status-im/status-desktop-build:1.0.6-qt6.9.2' } } diff --git a/scripts/macos_build_setup.sh b/scripts/macos_build_setup.sh index f890d749da5..487a5870ae7 100755 --- a/scripts/macos_build_setup.sh +++ b/scripts/macos_build_setup.sh @@ -19,7 +19,7 @@ function check_version { function install_build_dependencies { echo "Install build dependencies" - brew install pkg-config libtool jq node@22 yarn protoc-gen-go aqtinstall xcbeautify + brew install pkg-config libtool jq node@22 yarn protoc-gen-go aqtinstall xcbeautify nim } function install_qt { diff --git a/scripts/windows_build_setup.ps1 b/scripts/windows_build_setup.ps1 index dd02d46c34b..57e7c1c55aa 100644 --- a/scripts/windows_build_setup.ps1 +++ b/scripts/windows_build_setup.ps1 @@ -40,6 +40,7 @@ function Install-Dependencies { scoop install --global ` 7zip git dos2unix findutils ` wget rcedit inno-setup ` + nim mingw-winlibs ` make gcc openssl-lts } diff --git a/vendor/status-go b/vendor/status-go index 0fc843266f7..65a8e556793 160000 --- a/vendor/status-go +++ b/vendor/status-go @@ -1 +1 @@ -Subproject commit 0fc843266f74c4ce90c7230d89bdd8ef75b0a2f1 +Subproject commit 65a8e556793904163479694e4f68b76b57332ad9