Skip to content

build: list instance_constraints.hpp, unbreaking configure on master - #275

Merged
Yaraslaut merged 1 commit into
masterfrom
fix/list-instance-constraints-header
Aug 24, 2026
Merged

build: list instance_constraints.hpp, unbreaking configure on master#275
Yaraslaut merged 1 commit into
masterfrom
fix/list-instance-constraints-header

Conversation

@Yaraslaut

Copy link
Copy Markdown
Member

master is currently broken — this unbreaks it

cmake configure fails on every job and platform on master:

CMake Error at CMakeLists.txt:321 (message):
  morph: these public headers belong to no target's FILE_SET HEADERS, so
  VERIFY_INTERFACE_HEADER_SETS never compiles them standalone and would keep
  passing if they stopped being self-contained (morph#230):

      include/morph/forms/instance_constraints.hpp

Observed on #263, where all 21 jobs fail at the Configure step, and reproduced
locally against origin/master.

Cause: two correct changes that collided

Each was green. Neither PR's CI saw the other, because each was tested against a
master that did not yet contain the other.

The guard is not wrong here. It caught precisely what it exists to catch: a
public header that VERIFY_INTERFACE_HEADER_SETS would never have compiled
standalone, while continuing to report success. The fix is the one the error
message asks for — list the header.

Verified

  • configure succeeds again on master + this change
  • the verify target now builds instance_constraints.hpp.cxx.o among its
    objects, so the header is genuinely checked rather than the guard merely
    silenced
  • MORPH_CLIENT_ONLY=ON and QT + OFFLINE_SQLITE + NET both configure cleanly

Note for the next header

This failure mode is inherent to a configure-time guard evaluated against the
merged tree: a PR adding a header is green until the guard is on master, and the
guard is green until the header is. Nothing detects the pair before they meet, so
it surfaces on the first merge after either lands.

That's the cost of the guard catching real omissions, and I'd argue it's the
right trade — but it means the first new header after #265 was always going to
hit this once. This is that once.

master fails `cmake` configure on every job and platform:

  CMake Error at CMakeLists.txt:321 (message):
    morph: these public headers belong to no target's FILE_SET HEADERS ...
        include/morph/forms/instance_constraints.hpp

Two changes landed that are individually correct and collide: #248 added
include/morph/forms/instance_constraints.hpp, and #265 added a guard requiring
every public header to be in some target's FILE_SET. Neither PR's CI saw the
other, since each was green against a master without the other.

The guard is not wrong here -- it caught exactly what it exists to catch, a
public header that VERIFY_INTERFACE_HEADER_SETS would never have compiled
standalone while continuing to report success. The header simply needs listing,
which is the one-line fix the error message asks for.

Verified: configure succeeds again; the verify target now builds
instance_constraints.hpp.cxx.o among its objects (so the header is genuinely
checked, not merely silencing the guard); and CLIENT_ONLY plus the
QT/OFFLINE_SQLITE/NET combination configure cleanly.

Worth noting for whoever adds the next header: this failure mode is inherent to
a guard that runs at configure time against the merged tree. A PR adding a
header is green until the guard is on master, and the guard is green until the
header is. Nothing detects the pair before they meet, so the first merge after
either lands is where it surfaces.
@Yaraslaut
Yaraslaut merged commit 90c39d1 into master Aug 24, 2026
26 checks passed
@codecov

codecov Bot commented Aug 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

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