Skip to content

Assemble the bundle's installers from the layers' stagings, prebuilt or staged in the run - #3

Open
alexadereyko wants to merge 44 commits into
mainfrom
jira/TBBAS-3611-bundle-from-stagings-and-sources
Open

alexadereyko wants to merge 44 commits into
mainfrom
jira/TBBAS-3611-bundle-from-stagings-and-sources

Conversation

@alexadereyko

@alexadereyko alexadereyko commented Oct 24, 2026 •

Copy link
Copy Markdown

Brief

The bundle takes one commit per layer (bundle.json), makes each layer available by FetchLayer, prebuilt from a
staging or from its sources, and packs installers. In CI it lays every layer's staging into its run, from the
registry or staged there when the registry lacks it, and assembles the installers from them.

Description

FetchLayer (cmake/FetchLayer.cmake, cmake/FetchLayer/), FetchContent for layers, knowing nothing of openDAQ:

  • A layer (a repository at a revision) gives one or more stagings, each with its DEPENDS, its axes (triplet by
    default) and its identity: idx-<sha256> of the commits, pkg-<sha256> of those and the axes, the same as the
    registry's tags.
  • FETCHLAYER_BUILD (NEVER | MISSING | ALWAYS, or per layer) picks a prebuilt staging from the store or the
    layer's sources; a prefix is imported, sources are added in one tree.
  • cmake/Layers.cmake declares the layers, cmake/Packing.cmake and CPackOptions.cmake pack the stagings and
    components a package preset names (core, modules, installer).

CI (.github/workflows):

  • bundle.yml: on a pull request, by hand or called; inputs replace a layer's commit from bundle.json. Runs
    resolve.yml, then assemble.yml.
  • resolve.yml: resolves the commits and their channels, pulls the stagings the registry has, and stages a missing
    layer here by its own stage.yml, never published, on the bundle's platforms only (exclude-jobs); the core
    first, the modules against it. Every staging lands as <staging>-staging-<job>.
  • assemble.yml: builds the installers (DEB, NSIS, productbuild) from those artifacts with no compiling, installs
    each as a user would and smoke-checks it (tests/installed, C++ and the C binding).

Usage example

Locally, from a filled store:

cmake --preset bundle-native
cmake --build --preset bundle-native
cpack --preset installer

A layer from its sources, the rest prebuilt: cmake --preset bundle-native -DFETCHLAYER_BUILD_OPCUAMODULES=ALWAYS.

In CI, a layer at another commit:

gh workflow run bundle.yml -R openDAQ/openDAQ-bundle -f opcua-modules=<sha | branch | tag>

… receipts io.opendaq.bundle and ship an uninstall script
…PATH from the command line for a silent install
…om its stagings' artifacts, installed and smoke-checked
…message box when PATH is longer than 1024 characters
…s a caller built in its run as its artifacts
…s need libpcap.so.1 and OpenSSL 1.1, which Ubuntu lacks
…ble.yml builds from them, bundle.yml calls both
@alexadereyko alexadereyko changed the title Make the bundle's stagings available by FetchLayer, prebuilt or from sources Assemble the bundle's installers from the layers' stagings, prebuilt or staged in the run Nov 10, 2026
@alexadereyko
alexadereyko marked this pull request as ready for review November 10, 2026 09:44
@alexadereyko alexadereyko self-assigned this Nov 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant