From b2e639095420e6f727638a48064f3bfd5b9b50e4 Mon Sep 17 00:00:00 2001 From: ringabout <43030857+ringabout@users.noreply.github.com> Date: Mon, 16 Feb 2026 16:28:24 +0800 Subject: [PATCH] test i386 --- .github/workflows/bisects.yml | 3 +- .github/workflows/ci_docs.yml | 29 +-- .github/workflows/ci_i386_linux.yml | 62 ++++++ .github/workflows/ci_packages.yml | 9 +- .github/workflows/ci_publish.yml | 3 +- .github/workflows/stale.yml | 3 +- azure-pipelines.yml | 286 ++++++++++++++-------------- 7 files changed, 210 insertions(+), 185 deletions(-) create mode 100644 .github/workflows/ci_i386_linux.yml diff --git a/.github/workflows/bisects.yml b/.github/workflows/bisects.yml index d3fce02516..56c42fc6eb 100644 --- a/.github/workflows/bisects.yml +++ b/.github/workflows/bisects.yml @@ -1,8 +1,7 @@ # See https://github.com/juancarlospaco/nimrun-action/issues/3#issuecomment-1607344901 name: issue comments bisects on: - issue_comment: - types: created + workflow_dispatch: jobs: bisects: diff --git a/.github/workflows/ci_docs.yml b/.github/workflows/ci_docs.yml index 4cf7c7a837..6718ffd288 100644 --- a/.github/workflows/ci_docs.yml +++ b/.github/workflows/ci_docs.yml @@ -1,33 +1,6 @@ name: Nim Docs CI on: - push: - paths: - - 'compiler/**.nim' - - 'config/nimdoc.cfg' - - 'doc/**.rst' - - 'doc/**.md' - - 'doc/nimdoc.css' - - 'lib/**.nim' - - 'nimdoc/testproject/expected/testproject.html' - - 'tools/dochack/dochack.nim' - - 'tools/kochdocs.nim' - - '.github/workflows/ci_docs.yml' - - 'koch.nim' - - pull_request: - # Run only on changes on these files. - paths: - - 'compiler/**.nim' - - 'config/nimdoc.cfg' - - 'doc/**.rst' - - 'doc/**.md' - - 'doc/nimdoc.css' - - 'lib/**.nim' - - 'nimdoc/testproject/expected/testproject.html' - - 'tools/dochack/dochack.nim' - - 'tools/kochdocs.nim' - - '.github/workflows/ci_docs.yml' - - 'koch.nim' + workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} diff --git a/.github/workflows/ci_i386_linux.yml b/.github/workflows/ci_i386_linux.yml new file mode 100644 index 0000000000..e126ddefaf --- /dev/null +++ b/.github/workflows/ci_i386_linux.yml @@ -0,0 +1,62 @@ +name: i386 Linux CI + +on: + push: + branches: + - 'devel' + pull_request: + branches: + - 'devel' + workflow_dispatch: + +jobs: + build-and-test-i386: + name: Build Nim from latest commit and run talign test (i386) + runs-on: ubuntu-latest + container: + image: i386/debian:bookworm + timeout-minutes: 90 + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install dependencies (i386 Debian) + run: | + apt-get update -qq + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + build-essential gcc-multilib g++-multilib make curl git ca-certificates \ + python3 pkg-config libpcre3-dev libgc-dev libssl-dev libx11-dev + + - name: Add repo bin to PATH + run: echo "${GITHUB_WORKSPACE}/bin" >> ${GITHUB_PATH} + + - name: Ensure bin/nim is executable + run: ls -la bin || true + + - name: Build koch using existing nim + run: | + if [ -x bin/nim ]; then + bin/nim c koch + else + apt-get install -y --no-install-recommends nim || true + nim c koch || true + fi + + - name: Boot the compiler from the checked-out commit + shell: bash + run: | + ./koch boot -d:release || ./koch boot + + - name: Show nim version and system info + run: | + bin/nim -v || true + uname -a || true + + - name: Run talign test (i386) + shell: bash + run: | + set -euo pipefail + export PATH="${GITHUB_WORKSPACE}/bin:$PATH" + nim c -r --mm:refc -d:useGcAssert -d:useSysAssert tests/align/talign.nim diff --git a/.github/workflows/ci_packages.yml b/.github/workflows/ci_packages.yml index afd8d0696c..d186036de7 100644 --- a/.github/workflows/ci_packages.yml +++ b/.github/workflows/ci_packages.yml @@ -1,13 +1,6 @@ name: Packages CI on: - pull_request: - push: - branches: - - 'devel' - - 'version-2-2' - - 'version-2-0' - - 'version-1-6' - - 'version-1-2' + workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} diff --git a/.github/workflows/ci_publish.yml b/.github/workflows/ci_publish.yml index 39fae32fea..3660a833e3 100644 --- a/.github/workflows/ci_publish.yml +++ b/.github/workflows/ci_publish.yml @@ -1,8 +1,7 @@ name: Tracking orc-booting compiler memory usage on: - pull_request_target: - types: [closed] + workflow_dispatch: jobs: diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 0c5a533e1d..948d11970d 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -2,8 +2,7 @@ name: Stale pull requests on: - schedule: - - cron: '0 0 * * *' # Midnight. + workflow_dispatch: jobs: stale: diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 96e747a730..3b5f1c9540 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,172 +1,172 @@ -trigger: - branches: - include: - - 'devel' - - 'version-*' -pr: - branches: - include: - - '*' +# trigger: +# branches: +# include: +# - 'devel' +# - 'version-*' +# pr: +# branches: +# include: +# - '*' -variables: -- name: skipci - value: false +# variables: +# - name: skipci +# value: false -jobs: -- job: packages +# jobs: +# - job: packages - timeoutInMinutes: 90 # default `60` led to lots of cancelled jobs; use 0 for unlimited (may be undesirable) +# timeoutInMinutes: 90 # default `60` led to lots of cancelled jobs; use 0 for unlimited (may be undesirable) - strategy: - matrix: - Linux_amd64: - vmImage: 'ubuntu-24.04' - CPU: amd64 - # regularly breaks, refs bug #17325 -# Linux_i386: -# # on 'ubuntu-16.04' (not supported anymore anyways) it errored with: -# # g++-multilib : Depends: gcc-multilib (>= 4:5.3.1-1ubuntu1) but it is not going to be installed -# vmImage: 'ubuntu-18.04' -# CPU: i386 - OSX_arm64: - vmImage: 'macos-15' - CPU: arm64 - OSX_arm64_cpp: - vmImage: 'macos-15' - CPU: arm64 - NIM_COMPILE_TO_CPP: true - Windows_amd64_batch0_3: - vmImage: 'windows-2025' - CPU: amd64 - # see also: `NIM_TEST_PACKAGES` - NIM_TESTAMENT_BATCH: "0_3" - Windows_amd64_batch1_3: - vmImage: 'windows-2025' - CPU: amd64 - NIM_TESTAMENT_BATCH: "1_3" - Windows_amd64_batch2_3: - vmImage: 'windows-2025' - CPU: amd64 - NIM_TESTAMENT_BATCH: "2_3" +# strategy: +# matrix: +# Linux_amd64: +# vmImage: 'ubuntu-24.04' +# CPU: amd64 +# # regularly breaks, refs bug #17325 +# # Linux_i386: +# # # on 'ubuntu-16.04' (not supported anymore anyways) it errored with: +# # # g++-multilib : Depends: gcc-multilib (>= 4:5.3.1-1ubuntu1) but it is not going to be installed +# # vmImage: 'ubuntu-18.04' +# # CPU: i386 +# OSX_arm64: +# vmImage: 'macos-15' +# CPU: arm64 +# OSX_arm64_cpp: +# vmImage: 'macos-15' +# CPU: arm64 +# NIM_COMPILE_TO_CPP: true +# Windows_amd64_batch0_3: +# vmImage: 'windows-2025' +# CPU: amd64 +# # see also: `NIM_TEST_PACKAGES` +# NIM_TESTAMENT_BATCH: "0_3" +# Windows_amd64_batch1_3: +# vmImage: 'windows-2025' +# CPU: amd64 +# NIM_TESTAMENT_BATCH: "1_3" +# Windows_amd64_batch2_3: +# vmImage: 'windows-2025' +# CPU: amd64 +# NIM_TESTAMENT_BATCH: "2_3" - pool: - vmImage: $(vmImage) +# pool: +# vmImage: $(vmImage) - workspace: - clean: all +# workspace: +# clean: all - steps: - - bash: git config --global core.autocrlf false - displayName: 'Disable auto conversion to CRLF by git (Windows-only)' - condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT')) +# steps: +# - bash: git config --global core.autocrlf false +# displayName: 'Disable auto conversion to CRLF by git (Windows-only)' +# condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT')) - - checkout: self - fetchDepth: 2 # see D20210329T004830 +# - checkout: self +# fetchDepth: 2 # see D20210329T004830 - - bash: | - set -e - . ci/funs.sh - if nimIsCiSkip; then - echo '##vso[task.setvariable variable=skipci]true' - fi - displayName: 'Check whether to skip CI' +# - bash: | +# set -e +# . ci/funs.sh +# if nimIsCiSkip; then +# echo '##vso[task.setvariable variable=skipci]true' +# fi +# displayName: 'Check whether to skip CI' - - task: NodeTool@0 - inputs: - versionSpec: '20.x' - displayName: 'Install node.js 20.x' - condition: and(succeeded(), eq(variables['skipci'], 'false')) +# - task: NodeTool@0 +# inputs: +# versionSpec: '20.x' +# displayName: 'Install node.js 20.x' +# condition: and(succeeded(), eq(variables['skipci'], 'false')) - - bash: | - set -e - . ci/funs.sh - echo_run sudo add-apt-repository universe - echo_run sudo apt-get update -qq - DEBIAN_FRONTEND='noninteractive' \ - echo_run sudo apt-get install --no-install-recommends -yq \ - gcc-14 g++-14 libpcre3 liblapack-dev libpcre3 liblapack-dev libcurl4-openssl-dev libgc-dev libsdl1.2-dev libsfml-dev valgrind libc6-dbg - echo_run sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 60 --slave /usr/bin/g++ g++ /usr/bin/g++-14 - displayName: 'Install dependencies (amd64 Linux)' - condition: and(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Linux'), eq(variables['CPU'], 'amd64')) +# - bash: | +# set -e +# . ci/funs.sh +# echo_run sudo add-apt-repository universe +# echo_run sudo apt-get update -qq +# DEBIAN_FRONTEND='noninteractive' \ +# echo_run sudo apt-get install --no-install-recommends -yq \ +# gcc-14 g++-14 libpcre3 liblapack-dev libpcre3 liblapack-dev libcurl4-openssl-dev libgc-dev libsdl1.2-dev libsfml-dev valgrind libc6-dbg +# echo_run sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 60 --slave /usr/bin/g++ g++ /usr/bin/g++-14 +# displayName: 'Install dependencies (amd64 Linux)' +# condition: and(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Linux'), eq(variables['CPU'], 'amd64')) - - bash: | - set -e - . ci/funs.sh - echo_run sudo dpkg --add-architecture i386 - # Downgrade llvm: - # - llvm has to be downgraded to have 32bit version installed for sfml. +# - bash: | +# set -e +# . ci/funs.sh +# echo_run sudo dpkg --add-architecture i386 +# # Downgrade llvm: +# # - llvm has to be downgraded to have 32bit version installed for sfml. - cat << EOF | sudo tee /etc/apt/preferences.d/pin-to-rel - Package: libllvm6.0 - Pin: origin "azure.archive.ubuntu.com" - Pin-Priority: 1001 - EOF +# cat << EOF | sudo tee /etc/apt/preferences.d/pin-to-rel +# Package: libllvm6.0 +# Pin: origin "azure.archive.ubuntu.com" +# Pin-Priority: 1001 +# EOF - # echo_run sudo apt-get update -qq - echo_run sudo apt-get update -qq || echo "failed, see bug #17343" - # `:i386` (e.g. in `libffi-dev:i386`) is needed otherwise you may get: - # `could not load: libffi.so` during dynamic loading. - DEBIAN_FRONTEND='noninteractive' \ - echo_run sudo apt-get install --no-install-recommends --allow-downgrades -yq \ - g++-multilib gcc-multilib libcurl4-openssl-dev:i386 libgc-dev:i386 \ - libsdl1.2-dev:i386 libsfml-dev:i386 libglib2.0-dev:i386 libffi-dev:i386 +# # echo_run sudo apt-get update -qq +# echo_run sudo apt-get update -qq || echo "failed, see bug #17343" +# # `:i386` (e.g. in `libffi-dev:i386`) is needed otherwise you may get: +# # `could not load: libffi.so` during dynamic loading. +# DEBIAN_FRONTEND='noninteractive' \ +# echo_run sudo apt-get install --no-install-recommends --allow-downgrades -yq \ +# g++-multilib gcc-multilib libcurl4-openssl-dev:i386 libgc-dev:i386 \ +# libsdl1.2-dev:i386 libsfml-dev:i386 libglib2.0-dev:i386 libffi-dev:i386 - cat << EOF > bin/gcc - #!/bin/bash +# cat << EOF > bin/gcc +# #!/bin/bash - exec $(which gcc) -m32 "\$@" - EOF +# exec $(which gcc) -m32 "\$@" +# EOF - cat << EOF > bin/g++ - #!/bin/bash +# cat << EOF > bin/g++ +# #!/bin/bash - exec $(which g++) -m32 "\$@" - EOF +# exec $(which g++) -m32 "\$@" +# EOF - echo_run chmod 755 bin/gcc - echo_run chmod 755 bin/g++ +# echo_run chmod 755 bin/gcc +# echo_run chmod 755 bin/g++ - displayName: 'Install dependencies (i386 Linux)' - condition: and(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Linux'), eq(variables['CPU'], 'i386')) +# displayName: 'Install dependencies (i386 Linux)' +# condition: and(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Linux'), eq(variables['CPU'], 'i386')) - - bash: brew install boehmgc make sfml - displayName: 'Install dependencies (OSX)' - condition: and(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Darwin')) - # XXX can't find boehm on macos 13 +# - bash: brew install boehmgc make sfml +# displayName: 'Install dependencies (OSX)' +# condition: and(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Darwin')) +# # XXX can't find boehm on macos 13 - - bash: | - set -e - . ci/funs.sh - nimInternalInstallDepsWindows - echo_run echo '##vso[task.prependpath]$(System.DefaultWorkingDirectory)/dist/mingw64/bin' +# - bash: | +# set -e +# . ci/funs.sh +# nimInternalInstallDepsWindows +# echo_run echo '##vso[task.prependpath]$(System.DefaultWorkingDirectory)/dist/mingw64/bin' - displayName: 'Install dependencies (Windows)' - condition: and(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Windows_NT')) +# displayName: 'Install dependencies (Windows)' +# condition: and(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Windows_NT')) - - bash: echo '##vso[task.prependpath]$(System.DefaultWorkingDirectory)/bin' - condition: and(succeeded(), eq(variables['skipci'], 'false')) - displayName: 'Add build binaries to PATH' +# - bash: echo '##vso[task.prependpath]$(System.DefaultWorkingDirectory)/bin' +# condition: and(succeeded(), eq(variables['skipci'], 'false')) +# displayName: 'Add build binaries to PATH' - - bash: . ci/funs.sh && nimCiSystemInfo - condition: and(succeeded(), eq(variables['skipci'], 'false')) - displayName: 'System information' +# - bash: . ci/funs.sh && nimCiSystemInfo +# condition: and(succeeded(), eq(variables['skipci'], 'false')) +# displayName: 'System information' - - bash: . ci/funs.sh && nimBuildCsourcesIfNeeded CC=gcc ucpu=$(CPU) - condition: and(succeeded(), eq(variables['skipci'], 'false')) - displayName: 'Build csourcesAny' +# - bash: . ci/funs.sh && nimBuildCsourcesIfNeeded CC=gcc ucpu=$(CPU) +# condition: and(succeeded(), eq(variables['skipci'], 'false')) +# displayName: 'Build csourcesAny' - # this could be revived if performance justifies it (needs a few updates) - # - task: Cache@2 - # inputs: - # key: 'csourcesAny | "$(Agent.OS)" | $(CPU) | $(csources_version)' - # path: $(nim_csources) - # condition: and(succeeded(), eq(variables['skipci'], 'false')) - # displayName: 'Restore built csourcesAny' +# # this could be revived if performance justifies it (needs a few updates) +# # - task: Cache@2 +# # inputs: +# # key: 'csourcesAny | "$(Agent.OS)" | $(CPU) | $(csources_version)' +# # path: $(nim_csources) +# # condition: and(succeeded(), eq(variables['skipci'], 'false')) +# # displayName: 'Restore built csourcesAny' - - bash: . ci/funs.sh && nimInternalBuildKochAndRunCI - # would could also show on failure: echo '##vso[task.complete result=Failed]' - condition: and(succeeded(), eq(variables['skipci'], 'false')) - displayName: 'koch, Run CI' - env: - SYSTEM_ACCESSTOKEN: $(System.AccessToken) +# - bash: . ci/funs.sh && nimInternalBuildKochAndRunCI +# # would could also show on failure: echo '##vso[task.complete result=Failed]' +# condition: and(succeeded(), eq(variables['skipci'], 'false')) +# displayName: 'koch, Run CI' +# env: +# SYSTEM_ACCESSTOKEN: $(System.AccessToken)