Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion .github/workflows/family-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@ on:
permissions:
contents: read

# `bash -eo pipefail`, not the default `bash -e`: a check piped into `tee` fails
# its step when the check fails.
defaults:
run:
shell: bash

env:
MCPP_PREVIOUS: 2026.11.5.1
MCPP_SOURCE_REF: ${{ github.event.inputs.mcpp_ref || vars.MCPP_SOURCE_REF || '' }}
Expand Down Expand Up @@ -104,7 +110,12 @@ jobs:
- name: The candidate index (the published one with the group's change)
run: |
git clone --quiet --depth 1 https://github.com/mcpplibs/mcpp-index.git "$RUNNER_TEMP/index"
git -C "$RUNNER_TEMP/index" apply "$GITHUB_WORKSPACE/index-change.patch"
# Empty once the index lists the group: the published index is then the candidate.
if [ -s "$GITHUB_WORKSPACE/index-change.patch" ]; then
git -C "$RUNNER_TEMP/index" apply "$GITHUB_WORKSPACE/index-change.patch"
else
echo "the published index lists the group"
fi
python3 "$RUNNER_TEMP/index/tests/prepare_builtin_index.py" --home "$HOME/.mcpp" --source "$RUNNER_TEMP/index"
- name: Both mcpp releases resolve and build an image of the group
run: |
Expand Down
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,12 @@ whole name however long, openkal-llvm-runtime 0.19.1 reads a name beneath a
Windows volume as absolute, openkal-macos 0.22.1 sizes its confinement rules to
the grants of each start, and openkal-image 0.5.1 builds okrun over it.

Platform 0.24.2 changes one member: openkal-llvm-runtime 0.19.2 keeps the volume
of a name it rebuilds part by part (`lexically_normal`, `weakly_canonical`, and
`D:/a` / `/b`), which 0.19.1 lost on Windows, so that a launcher over the hosted
arrangement could not start its runner (openkal-llvm-runtime#68). It is the first
group released as a leaf and a patch of this group, through one index change.

A project overrides any group under `[target.<selector>]`, for example
`[target.'cfg(platform = "openkal")'.layers] "c++-abi" = false`, and selects
another platform, or none, with `platform = "..."` or `--platform`.
Expand Down Expand Up @@ -162,7 +168,7 @@ group is released as one index change:
python3 tools/family_release.py check # tags, GitCode mirrors, the index
python3 tools/family_release.py defects # open issues, for the release notes
python3 tools/family_release.py index ../mcpp-index # the group's one index change
python3 tools/family_release.py exports openkal-platform@0.24.0 openkal-platform@0.24.1
python3 tools/family_release.py exports openkal-platform@0.24.1 openkal-platform@0.24.2
```

`.github/workflows/family-release.yml` runs them on every change of the group:
Expand Down
17 changes: 10 additions & 7 deletions mcpp.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
[package]
namespace = "mcpplibs"
name = "openkal-platform"
version = "0.24.1"
version = "0.24.2"
description = "The platform of ok images (<arch>-openkal): their toolchain, C library and C++ run-time, tools, compile and link conventions, seal, runner and carrier, as one versioned statement mcpp reads."
license = "Apache-2.0"
authors = ["mcpplibs"]
Expand Down Expand Up @@ -40,8 +40,8 @@ debuggee = ["okrun", "--debugger", "{}"]
# The C library and the C++ run-time inside an image. A package of the graph
# that provides a layer takes its place (`provides`), and `false` leaves it out.
[platform.layers]
compiler-runtime = "openkal-llvm-runtime@0.19.1"
"c++-abi" = "openkal-llvm-runtime@0.19.1"
compiler-runtime = "openkal-llvm-runtime@0.19.2"
"c++-abi" = "openkal-llvm-runtime@0.19.2"
c-abi = { name = "openkal-musl", version = "0.28.1", default-features = false, features = ["posix", "malloc-mimalloc"] }

# Built for the building machine: `okld` writes and checks the notes, `okrun`
Expand Down Expand Up @@ -162,8 +162,8 @@ targets = ["x86_64-linux-gnu", "aarch64-linux-gnu", "x86_64-linux-musl", "aarc
toolchain = "llvm@23.1.3"

[platform.hosted.layers]
compiler-runtime = "openkal-llvm-runtime@0.19.1"
"c++-abi" = "openkal-llvm-runtime@0.19.1"
compiler-runtime = "openkal-llvm-runtime@0.19.2"
"c++-abi" = "openkal-llvm-runtime@0.19.2"
c-abi = { name = "openkal-musl", version = "0.28.1", default-features = false, features = ["posix", "malloc-mimalloc"] }

# The family released together for openkal 0.17 (the 0.17.2 round: okb, the
Expand Down Expand Up @@ -193,7 +193,10 @@ c-abi = { name = "openkal-musl", version = "0.28.1", default-features
# relative relocations of an image packed; 0.24.1: openkal-musl 0.28.1 keeps a
# directory's whole name, openkal-llvm-runtime 0.19.1 reads a name beneath a
# Windows volume as absolute, openkal-macos 0.22.1 sizes its confinement rules
# to the grants, and openkal-image 0.5.1 starts programs over it):
# to the grants, and openkal-image 0.5.1 starts programs over it; 0.24.2:
# openkal-llvm-runtime 0.19.2 keeps the volume of a name it normalizes or
# appends a rooted name to, the first group released as a leaf and a patch of
# this group through one index change):
# one version of each in a build. From 0.24.1 the members name one another by
# compatible ranges (`^0.28.0`) and this group chooses the versions: mcpp
# 2026.11.7.1 resolves within it, and a fix of one member is that member's
Expand All @@ -205,7 +208,7 @@ openkal-linux = "0.25.0"
openkal-macos = "0.22.1"
openkal-windows = "0.20.0"
openkal-musl = "0.28.1"
openkal-llvm-runtime = "0.19.1"
openkal-llvm-runtime = "0.19.2"
openkal-ld = "0.5.1"
openkal-run = "0.5.1"
openkal-tools = "0.5.1"
Expand Down
10 changes: 8 additions & 2 deletions tools/family_release.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,11 @@
release notes
exports OLD NEW builds one image with the platform at OLD and at NEW and
compares the global symbols of the C library and the C++
run-time objects it links: a patch version removes none
run-time objects it links: a patch version removes none.
A function of libc++ marked _LIBCPP_HIDE_FROM_ABI carries
its ODR-signature ABI tag (`B9fqe220108`); it is inline,
every object that calls it holds its own copy, and it is
not compared

Network reads use GITHUB_TOKEN when it is set.
"""
Expand All @@ -42,6 +46,8 @@
INDEX_RAW = "https://raw.githubusercontent.com/mcpplibs/mcpp-index/main/pkgs/o/{}.lua"
# The layers whose objects an image links, by the directory mcpp builds them into.
LAYERS = ("mcpplibs_openkal-musl", "mcpplibs_openkal-llvm-runtime")
# libc++'s ODR signature as an Itanium ABI tag: the hardening and exceptions letters and _LIBCPP_VERSION.
HIDDEN_FROM_ABI = re.compile(r"B\d+[a-z]{1,4}\d{6}")


def group(also):
Expand Down Expand Up @@ -173,7 +179,7 @@ def symbols(mcpp, platform, target, work, nm):
sys.exit(f"{platform}: the build linked no objects of {layer}")
out = subprocess.run([nm, "--defined-only", "--extern-only", "--format=just-symbols", *map(str, objects)],
check=True, capture_output=True, text=True).stdout
found[layer] = {s for s in out.split() if s and not s.endswith(":")}
found[layer] = {s for s in out.split() if s and not s.endswith(":") and not HIDDEN_FROM_ABI.search(s)}
return found


Expand Down
Loading