Skip to content

Replace curated cross-package CI bootstrap with proper FPC package installation #170

@frostney

Description

@frostney

Problem

Our cross-compilation toolchain in GitHub Actions builds a hand-curated subset of FPC packages (rtl, rtl-objpas, rtl-generics, fcl-process) instead of installing cross packages through FPC's normal package workflow.

That works until GocciaScript starts using a unit from another shipped FPC package. The recent Base64 failure is one example: Base64 lives in fcl-base, so cross builds failed even though the unit is part of the standard FCL distribution.

Why this is a design problem

The current approach makes cross-package availability an ad hoc allowlist maintained inside CI.

Consequences:

  • standard FPC packages appear to be "missing" in cross builds even when they ship with FPC
  • each new dependency risks another CI failure
  • fixes tend to be incremental package exceptions rather than structural improvements
  • the cross toolchain diverges from how a normal FPC installation behaves

Desired direction

Refactor the cross-toolchain bootstrap so it installs target packages through FPC's package install flow rather than manually compiling selected package units.

The end state should look more like:

  • bootstrap cross compilers
  • install the target RTL and package set into $PREFIX/lib/fpc/$FPC_VERSION/units/$TARGET/*
  • build GocciaScript against that installed unit tree instead of a curated package list

Acceptance criteria

  • cross CI no longer depends on a manually maintained package allowlist
  • standard shipped FPC/FCL packages are available to cross builds without per-package CI edits
  • the project build step can use the installed cross unit tree directly
  • the Base64 / fcl-base problem becomes a non-issue under the new design

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions