Skip to content

Add RFC 5280 Extension types, document X.509 cert/CRL generators #253

Add RFC 5280 Extension types, document X.509 cert/CRL generators

Add RFC 5280 Extension types, document X.509 cert/CRL generators #253

Workflow file for this run

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
# 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 }}
native_matrix: ${{ steps.resolve.outputs.native_matrix }}
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:
needs: setup
# native_matrix is built from targets.json filtered to enabled native ids.
# When no native target is enabled, resolve-targets.sh emits a single
# placeholder entry (fpc_target=none) so the matrix is never empty: a job
# skipped via an empty matrix renders the literal `${{ matrix.name }}` in
# the UI. The placeholder's steps no-op via `matrix.fpc_target != 'none'`.
name: ${{ matrix.name }}
runs-on: ${{ matrix.runner }}
timeout-minutes: 120
strategy:
fail-fast: false
matrix:
include: ${{ fromJSON(needs.setup.outputs.native_matrix) }}
steps:
- name: Checkout
if: matrix.fpc_target != 'none'
uses: actions/checkout@v6
with:
submodules: true
- name: Build
if: matrix.fpc_target != 'none'
shell: bash
env:
FPC_TARGET: ${{ matrix.fpc_target }}
run: bash .github/workflows/ci/native-build.sh
linux-arm32:
name: "QEMU: Linux ARMv7"
runs-on: ubuntu-latest
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: arm-linux
LAZARUS_BRANCH: ${{ env.LAZARUS_BRANCH }}
LAZARUS_REPO: ${{ env.LAZARUS_REPO }}
MAKE_BUILD_BACKEND: ${{ env.MAKE_BUILD_BACKEND }}
MAKE_PACKAGE_SCOPE: ${{ env.MAKE_PACKAGE_SCOPE }}
CI_DEBUG: ${{ env.CI_DEBUG }}
run: bash .github/workflows/ci/arm32-run.sh
linux-powerpc64-be:
name: "QEMU: Linux PowerPC64 BE"
runs-on: ubuntu-latest
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: powerpc64-linux
MAKE_BUILD_BACKEND: ${{ env.MAKE_BUILD_BACKEND }}
MAKE_PACKAGE_SCOPE: ${{ env.MAKE_PACKAGE_SCOPE }}
run: bash .github/workflows/ci/ppc64-be-build.sh
freebsd:
name: "VM: FreeBSD x86_64"
runs-on: ubuntu-latest
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: x86_64-freebsd
FREEBSD_INSTALL_MODE: interim
with:
envs: FPC_VERSION FPC_TARGET LAZARUS_BRANCH LAZARUS_REPO MAKE_BUILD_BACKEND MAKE_PACKAGE_SCOPE 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: ubuntu-latest
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: x86_64-netbsd
with:
envs: FPC_VERSION LAZARUS_BRANCH LAZARUS_REPO MAKE_BUILD_BACKEND MAKE_PACKAGE_SCOPE FPC_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: ubuntu-latest
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: x86_64-dragonfly
LD_LIBRARY_PATH_EXTRA: /usr/local/lib
with:
envs: FPC_VERSION LAZARUS_BRANCH LAZARUS_REPO MAKE_BUILD_BACKEND MAKE_PACKAGE_SCOPE FPC_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: ubuntu-latest
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: x86_64-solaris
with:
envs: FPC_VERSION LAZARUS_BRANCH LAZARUS_REPO MAKE_BUILD_BACKEND MAKE_PACKAGE_SCOPE FPC_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