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
694 changes: 333 additions & 361 deletions .github/workflows/ci.yml

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ jobs:
- name: Install Doxygen 1.17.0
run: |
# `--fail` and `-S`, for the reason ci.yml's Install sccache step
# gives at length (morph#672): without them, an HTTP 503 from the
# gives at length: without them, an HTTP 503 from the
# download host is a *successful* transfer of an error page, curl
# exits 0 having written it to the file, and the only diagnostic
# anyone sees is `gzip: stdin: not in gzip format` from tar -- which
Expand Down
23 changes: 12 additions & 11 deletions .github/workflows/wasm-ladder.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ name: WASM ladder gate
# rung list still has to be written out by hand. GitHub evaluates `on.*.paths`
# to decide whether to start the workflow at all, which happens before any step
# of it can run -- so nothing here can read examples/rungs.txt, the list every
# other consumer derives from. That is exactly how they fell a rung behind:
# both stopped at kanban, so ledger and lims matched nothing (morph#179).
# other consumer derives from. That is exactly how such a list falls a rung
# behind: it stops at whatever the last edit knew about, and every rung added
# after that matches nothing here.
#
# They were checked against examples/rungs.txt from the outside by a
# drift-guard job, removed with the meta-gates. Adding a rung still means
# Nothing checks these two lists against examples/rungs.txt. Adding a rung means
# adding two lines here -- but nothing catches forgetting any more, so the
# two lists have to be kept in step by hand.
on:
Expand Down Expand Up @@ -151,9 +151,10 @@ jobs:
# missing, announcing why) fails this job instead of passing it
# vacuously. The plain build that follows covers everything else.
#
# The rungs are read from examples/rungs.txt rather than listed here --
# this loop used to name `pastebin bookmarks polls` literally, a third
# hand-copy of the rung list in this repository (morph#179).
# The rungs are read from examples/rungs.txt rather than listed here: a
# literal `pastebin bookmarks polls` would be a third hand-copy of the
# rung list in this repository, and the two above are already one too
# many.
#
# The gate is now the presence of `examples/<rung>/gui_wasm/`, not of
# `examples/<rung>/`. Two cases it has to tell apart, and the directory
Expand Down Expand Up @@ -193,8 +194,8 @@ jobs:
fi
done <<< "$rungs"
# A loop that named no target at all would pass this step while
# building nothing, which is the same shape of defect as the filter
# that started morph#179. At least one rung has a WASM client.
# building nothing -- the same shape of defect as a path filter that
# matches nothing. At least one rung has a WASM client.
if [ "$built" -eq 0 ]; then
echo "::error::no ladder_<rung>_gui_wasm target was built -- the named-target tripwire matched nothing"
exit 1
Expand All @@ -209,7 +210,7 @@ jobs:
run: |
# pipefail because `find` over a build tree the previous step was
# supposed to fill is a claim worth failing on: without it this step
# prints nothing and exits 0 whether the directory is empty or absent
# (morph#730).
# prints nothing and exits 0 whether the directory is empty or
# absent.
set -o pipefail
find build-wasm-ladder -name '*.wasm' -o -name '*.html' | sort
6 changes: 3 additions & 3 deletions cmake/CompileCache.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
# the block below. That alone still leaves a genuinely clean machine uncached,
# because a launcher with no daemon to talk to caches nothing —
# -DFASTCACHE_AUTO_START=ON additionally stages and starts a fastcached daemon
# in the background when none answers at FASTCACHE_ADDR (issue #90); off by
# in the background when none answers at FASTCACHE_ADDR; off by
# default, and independently of auto-install, since starting a background
# process is a bigger side effect than downloading a file and CI relies on no
# daemon answering by default. To disable everything: -DUSE_COMPILER_CACHE=OFF.
Expand Down Expand Up @@ -79,7 +79,7 @@ if(DEFINED CMAKE_CXX_COMPILER_LAUNCHER OR DEFINED CMAKE_C_COMPILER_LAUNCHER)
# all: the preset re-applies its cacheVariables on the reconfigure that
# --fresh triggers, so the launcher comes back pinned and the tree is gone
# for nothing. -U clears it there too, until the preset is next run.
# All of the above measured on an isolated harness, morph#592.
# All of the above measured on an isolated harness.
if(DEFINED CACHE{CMAKE_CXX_COMPILER_LAUNCHER} OR DEFINED CACHE{CMAKE_C_COMPILER_LAUNCHER})
message(STATUS "[cache] That value comes from the CMake cache (a -D, a preset, or an older configure); "
"to let this module choose instead, reconfigure the same build directory with "
Expand Down Expand Up @@ -775,7 +775,7 @@ endfunction()

# Stage and start a fastcached daemon in the background when FASTCACHE_ADDR is
# otherwise unreachable, so FASTCACHE_AUTO_INSTALL's launcher has something to
# talk to on a genuinely clean machine (issue #90). Nothing here may fail a
# talk to on a genuinely clean machine. Nothing here may fail a
# configure, exactly like _fc_auto_install_fastcache_cc: every failure is one
# status line and a fall-through to the probe finding no daemon, which is the
# behaviour without FASTCACHE_AUTO_START at all.
Expand Down
16 changes: 8 additions & 8 deletions cmake/DepCache.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# ── A shared source cache for FetchContent dependencies (morph#552) ──────────
# ── A shared source cache for FetchContent dependencies ──────────────────────
#
# Every configure in CI clones `glaze`, `Catch2`, `Lightweight` and
# `doxygen-awesome-css` again from github.com. One run configures more than a
Expand Down Expand Up @@ -42,7 +42,7 @@ endif()
# include() is idempotent; every call site already does this too.
include(FetchContent)

# ── Declaring and caching, split (morph#712) ─────────────────────────────────
# ── Declaring and caching, split ─────────────────────────────────────────────
#
# `morph_declare_dep` is what call sites use; `morph_cache_dep` below is the
# caching half and is called only by it (and directly by
Expand All @@ -60,10 +60,10 @@ include(FetchContent)
# Why this wrapper exists at all: before it, every dependency wrote its revision
# twice -- once as `morph_cache_dep`'s `tag`, once as the `GIT_TAG` of the
# `FetchContent_Declare` beside it -- and the two could disagree. The divergence
# was asymmetric in the worst way: a warm cache served the first, an uncached
# configure fetched the second, both successfully and with no diagnostic
# anywhere. morph#693 added a gate that compared the two copies; this removes
# the second copy, so there is nothing left to disagree.
# would be asymmetric in the worst way: a warm cache serves the first, an
# uncached configure fetches the second, both successfully and with no
# diagnostic anywhere. Comparing the two copies in a gate is possible; having
# only one copy leaves nothing to disagree.
#
# `GIT_REPOSITORY` and `GIT_TAG` are therefore refused in ARGN rather than
# forwarded: passing either would re-create the second copy inside the one call
Expand All @@ -83,7 +83,7 @@ function(morph_declare_dep name repository tag)
"morph_declare_dep(${name} ...) was passed ${_argument} as an extra "
"argument. The repository and the tag are this call's own second and "
"third arguments, and stating either of them twice is the divergence "
"this function exists to make unwritable (morph#712): the cache keys "
"this function exists to make unwritable: the cache keys "
"on what it is handed, FetchContent fetches what it is handed, and a "
"warm cache would then build a different revision than a cold one, "
"both successfully.")
Expand Down Expand Up @@ -173,7 +173,7 @@ function(morph_cache_dep name repository tag)

if(EXISTS "${_stamp}")
set(FETCHCONTENT_SOURCE_DIR_${_upper} "${_dir}" CACHE PATH
"Cached ${name} source tree (morph#552)" FORCE)
"Cached ${name} source tree" FORCE)
message(STATUS "morph: dep cache: ${name} from ${_dir}")
endif()
endfunction()
Loading
Loading