EC encoding and ECDH raw agreement improvements, X.500 RDN escaping, GF256 AES field ops, and digest AlgorithmIdentifier helpers #320
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Make | |
| on: | |
| schedule: | |
| - cron: '0 0 1 * *' | |
| push: | |
| branches: | |
| - "**" | |
| pull_request: | |
| branches: | |
| - master | |
| - main | |
| workflow_dispatch: | |
| inputs: | |
| enabled_targets: | |
| description: >- | |
| Comma-separated list of targets to run (leave empty for the default set). | |
| Valid IDs: linux-x64, linux-arm64, windows-x64, macos-arm64, | |
| macos-x64, linux-arm32, linux-powerpc64-be, freebsd, solaris, | |
| netbsd, dragonflybsd | |
| default: "" | |
| type: string | |
| debug: | |
| description: Verbose install tracing (CI_DEBUG=1 in install-fpc-lazarus.sh) | |
| default: false | |
| type: boolean | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| FPC_VERSION: 3.2.2 | |
| LAZARUS_BRANCH: lazarus_4_4 | |
| LAZARUS_REPO: https://github.com/fpc/Lazarus.git | |
| MAKE_BUILD_BACKEND: fpc | |
| # make.pas package build scope: 'all' compiles every discovered package (catches | |
| # a package that fails on the target even if unused); 'required' only compiles | |
| # the projects' dependency closure. Override per job below, like MAKE_BUILD_BACKEND. | |
| MAKE_PACKAGE_SCOPE: required | |
| # Space/comma/semicolon-separated conditional defines passed to every compile in | |
| # both backends (fpc: -dNAME, lazbuild: --opt=-dNAME). Override per job as needed. | |
| # Examples: | |
| # single: MAKE_DEFINES: WITH_GTK2_IM | |
| # multiple: MAKE_DEFINES: 'WITH_GTK2_IM DEBUG_LOG USE_CTHREADS' | |
| MAKE_DEFINES: '' | |
| # When true, make.pas builds and runs console benchmarks after the test suite. | |
| # Override per job below, like MAKE_BUILD_BACKEND. | |
| MAKE_RUN_BENCHMARK: false | |
| # Set by the workflow_dispatch "debug" toggle; '1' enables `set -x` tracing in | |
| # install-fpc-lazarus.sh, '0' otherwise. Forwarded into the sandboxed jobs below. | |
| CI_DEBUG: ${{ github.event.inputs.debug == 'true' && '1' || '0' }} | |
| jobs: | |
| setup: | |
| name: Resolve target list | |
| runs-on: ubuntu-latest | |
| outputs: | |
| enabled_targets: ${{ steps.resolve.outputs.enabled_targets }} | |
| target_map: ${{ steps.resolve.outputs.target_map }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Resolve enabled targets | |
| id: resolve | |
| shell: bash | |
| env: | |
| INPUT_TARGETS: ${{ github.event.inputs.enabled_targets }} | |
| run: bash .github/workflows/ci/resolve-targets.sh | |
| # Native targets are standalone jobs (one per target) rather than a single | |
| # matrix job, so each can carry its own env overrides and so a single-target | |
| # workflow_dispatch cleanly skips the rest. Like the QEMU/VM jobs below, they | |
| # gate via `if: contains(... enabled_targets ...)` and resolve runner/fpc_target | |
| # from target_map. Keep `name:` literal: an if-skipped job renders an | |
| # unevaluated name expression in the UI, so it cannot be sourced from JSON. | |
| linux-x64: | |
| name: "Native: Linux x86_64" | |
| runs-on: ${{ fromJSON(needs.setup.outputs.target_map)['linux-x64'].runner }} | |
| timeout-minutes: 120 | |
| needs: setup | |
| if: contains(format(',{0},', needs.setup.outputs.enabled_targets), ',linux-x64,') | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| - name: Build | |
| shell: bash | |
| env: | |
| FPC_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['linux-x64'].fpc_target }} | |
| FPC_TARBALL_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['linux-x64'].fpc_tarball_target }} | |
| run: bash .github/workflows/ci/native-build.sh | |
| linux-arm64: | |
| name: "Native: Linux AArch64" | |
| runs-on: ${{ fromJSON(needs.setup.outputs.target_map)['linux-arm64'].runner }} | |
| timeout-minutes: 120 | |
| needs: setup | |
| if: contains(format(',{0},', needs.setup.outputs.enabled_targets), ',linux-arm64,') | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| - name: Build | |
| shell: bash | |
| env: | |
| FPC_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['linux-arm64'].fpc_target }} | |
| FPC_TARBALL_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['linux-arm64'].fpc_tarball_target }} | |
| run: bash .github/workflows/ci/native-build.sh | |
| windows-x64: | |
| name: "Native: Windows x86_64" | |
| runs-on: ${{ fromJSON(needs.setup.outputs.target_map)['windows-x64'].runner }} | |
| timeout-minutes: 120 | |
| needs: setup | |
| if: contains(format(',{0},', needs.setup.outputs.enabled_targets), ',windows-x64,') | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| - name: Build | |
| shell: bash | |
| env: | |
| FPC_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['windows-x64'].fpc_target }} | |
| FPC_TARBALL_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['windows-x64'].fpc_tarball_target }} | |
| run: bash .github/workflows/ci/native-build.sh | |
| macos-arm64: | |
| name: "Native: macOS AArch64 (Apple Silicon)" | |
| runs-on: ${{ fromJSON(needs.setup.outputs.target_map)['macos-arm64'].runner }} | |
| timeout-minutes: 120 | |
| needs: setup | |
| if: contains(format(',{0},', needs.setup.outputs.enabled_targets), ',macos-arm64,') | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| - name: Build | |
| shell: bash | |
| env: | |
| FPC_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['macos-arm64'].fpc_target }} | |
| FPC_TARBALL_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['macos-arm64'].fpc_tarball_target }} | |
| run: bash .github/workflows/ci/native-build.sh | |
| macos-x64: | |
| name: "Native: macOS x86_64 (Intel)" | |
| runs-on: ${{ fromJSON(needs.setup.outputs.target_map)['macos-x64'].runner }} | |
| timeout-minutes: 120 | |
| needs: setup | |
| if: contains(format(',{0},', needs.setup.outputs.enabled_targets), ',macos-x64,') | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| - name: Build | |
| shell: bash | |
| env: | |
| FPC_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['macos-x64'].fpc_target }} | |
| FPC_TARBALL_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['macos-x64'].fpc_tarball_target }} | |
| run: bash .github/workflows/ci/native-build.sh | |
| linux-arm32: | |
| name: "QEMU: Linux ARMv7" | |
| runs-on: ${{ fromJSON(needs.setup.outputs.target_map)['linux-arm32'].runner }} | |
| timeout-minutes: 120 | |
| needs: setup | |
| if: contains(format(',{0},', needs.setup.outputs.enabled_targets), ',linux-arm32,') | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| - name: Build (ARMv7 via QEMU user-mode) | |
| uses: uraimo/run-on-arch-action@v3 | |
| with: | |
| arch: armv7 | |
| distro: ubuntu24.04 | |
| env: | | |
| FPC_VERSION: ${{ env.FPC_VERSION }} | |
| FPC_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['linux-arm32'].fpc_target }} | |
| FPC_TARBALL_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['linux-arm32'].fpc_tarball_target }} | |
| LAZARUS_BRANCH: ${{ env.LAZARUS_BRANCH }} | |
| LAZARUS_REPO: ${{ env.LAZARUS_REPO }} | |
| MAKE_BUILD_BACKEND: ${{ env.MAKE_BUILD_BACKEND }} | |
| MAKE_PACKAGE_SCOPE: ${{ env.MAKE_PACKAGE_SCOPE }} | |
| MAKE_RUN_BENCHMARK: ${{ env.MAKE_RUN_BENCHMARK }} | |
| CI_DEBUG: ${{ env.CI_DEBUG }} | |
| run: bash .github/workflows/ci/arm32-run.sh | |
| linux-powerpc64-be: | |
| name: "QEMU: Linux PowerPC64 BE" | |
| runs-on: ${{ fromJSON(needs.setup.outputs.target_map)['linux-powerpc64-be'].runner }} | |
| timeout-minutes: 180 | |
| needs: setup | |
| if: contains(format(',{0},', needs.setup.outputs.enabled_targets), ',linux-powerpc64-be,') | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| - name: Set up QEMU (ppc64 big-endian) | |
| run: bash .github/workflows/ci/ppc64-qemu-setup.sh | |
| - name: Build (PowerPC64 BE via QEMU) | |
| env: | |
| FPC_VERSION: ${{ env.FPC_VERSION }} | |
| FPC_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['linux-powerpc64-be'].fpc_target }} | |
| FPC_TARBALL_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['linux-powerpc64-be'].fpc_tarball_target }} | |
| MAKE_BUILD_BACKEND: ${{ env.MAKE_BUILD_BACKEND }} | |
| MAKE_PACKAGE_SCOPE: ${{ env.MAKE_PACKAGE_SCOPE }} | |
| MAKE_RUN_BENCHMARK: ${{ env.MAKE_RUN_BENCHMARK }} | |
| run: bash .github/workflows/ci/ppc64-be-build.sh | |
| freebsd: | |
| name: "VM: FreeBSD x86_64" | |
| runs-on: ${{ fromJSON(needs.setup.outputs.target_map)['freebsd'].runner }} | |
| timeout-minutes: 120 | |
| needs: setup | |
| if: contains(format(',{0},', needs.setup.outputs.enabled_targets), ',freebsd,') | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| - name: Build (FreeBSD x86_64) | |
| uses: vmactions/freebsd-vm@v1 | |
| env: | |
| FPC_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['freebsd'].fpc_target }} | |
| FPC_TARBALL_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['freebsd'].fpc_tarball_target }} | |
| FREEBSD_INSTALL_MODE: interim | |
| with: | |
| envs: FPC_VERSION FPC_TARGET FPC_TARBALL_TARGET LAZARUS_BRANCH LAZARUS_REPO MAKE_BUILD_BACKEND MAKE_PACKAGE_SCOPE MAKE_RUN_BENCHMARK FREEBSD_INSTALL_MODE CI_DEBUG | |
| release: "15.0" | |
| usesh: true | |
| prepare: sh .github/workflows/ci/vm-freebsd-prepare.sh | |
| run: bash .github/workflows/ci/vm-freebsd-run.sh | |
| netbsd: | |
| name: "VM: NetBSD x86_64" | |
| runs-on: ${{ fromJSON(needs.setup.outputs.target_map)['netbsd'].runner }} | |
| timeout-minutes: 120 | |
| needs: setup | |
| if: contains(format(',{0},', needs.setup.outputs.enabled_targets), ',netbsd,') | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| - name: Build (NetBSD x86_64) | |
| uses: vmactions/netbsd-vm@v1 | |
| env: | |
| FPC_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['netbsd'].fpc_target }} | |
| FPC_TARBALL_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['netbsd'].fpc_tarball_target }} | |
| with: | |
| envs: FPC_VERSION LAZARUS_BRANCH LAZARUS_REPO MAKE_BUILD_BACKEND MAKE_PACKAGE_SCOPE MAKE_RUN_BENCHMARK FPC_TARGET FPC_TARBALL_TARGET CI_DEBUG | |
| prepare: sh .github/workflows/ci/vm-netbsd-prepare.sh | |
| run: bash .github/workflows/ci/vm-run-shared.sh | |
| dragonflybsd: | |
| name: "VM: DragonFlyBSD x86_64" | |
| runs-on: ${{ fromJSON(needs.setup.outputs.target_map)['dragonflybsd'].runner }} | |
| timeout-minutes: 120 | |
| needs: setup | |
| if: contains(format(',{0},', needs.setup.outputs.enabled_targets), ',dragonflybsd,') | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| - name: Build (DragonFlyBSD x86_64) | |
| uses: vmactions/dragonflybsd-vm@v1 | |
| env: | |
| FPC_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['dragonflybsd'].fpc_target }} | |
| FPC_TARBALL_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['dragonflybsd'].fpc_tarball_target }} | |
| LD_LIBRARY_PATH_EXTRA: /usr/local/lib | |
| with: | |
| envs: FPC_VERSION LAZARUS_BRANCH LAZARUS_REPO MAKE_BUILD_BACKEND MAKE_PACKAGE_SCOPE MAKE_RUN_BENCHMARK FPC_TARGET FPC_TARBALL_TARGET LD_LIBRARY_PATH_EXTRA CI_DEBUG | |
| usesh: true | |
| prepare: sh .github/workflows/ci/vm-dragonfly-prepare.sh | |
| run: bash .github/workflows/ci/vm-run-shared.sh | |
| solaris: | |
| name: "VM: Solaris x86_64" | |
| runs-on: ${{ fromJSON(needs.setup.outputs.target_map)['solaris'].runner }} | |
| timeout-minutes: 120 | |
| needs: setup | |
| if: contains(format(',{0},', needs.setup.outputs.enabled_targets), ',solaris,') | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| - name: Build (Solaris x86_64) | |
| uses: vmactions/solaris-vm@v1 | |
| env: | |
| FPC_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['solaris'].fpc_target }} | |
| FPC_TARBALL_TARGET: ${{ fromJSON(needs.setup.outputs.target_map)['solaris'].fpc_tarball_target }} | |
| with: | |
| envs: FPC_VERSION LAZARUS_BRANCH LAZARUS_REPO MAKE_BUILD_BACKEND MAKE_PACKAGE_SCOPE MAKE_RUN_BENCHMARK FPC_TARGET FPC_TARBALL_TARGET CI_DEBUG | |
| release: "11.4-gcc" | |
| usesh: true | |
| prepare: sh .github/workflows/ci/vm-solaris-prepare.sh | |
| run: bash .github/workflows/ci/vm-run-shared.sh |