Skip to content

Commit 337f616

Browse files
committed
Merge FEATURE-ci-macos-make-fixture: Preserve canonical make frontend identity
2 parents 9b93ebe + d19a050 commit 337f616

2 files changed

Lines changed: 90 additions & 2 deletions

File tree

‎scripts/test-v3-installed-consumer.py‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import json
77
import os
88
from pathlib import Path
9+
import shlex
910
import shutil
1011
import signal
1112
import socket
@@ -76,8 +77,12 @@ def exercise_selection(self, selection, *, broken_default=False, ambient_make=No
7677
bad_make = tools / 'unselected-make'
7778
bad_make.write_text('#!/bin/sh\necho unselected-make >&2\nexit 1\n')
7879
bad_make.chmod(0o755)
79-
(tools / 'make').symlink_to(bad_make if broken_default else self.gnu_make)
80-
(tools / 'gmake').symlink_to(self.gnu_make)
80+
# Apple's developer-tool frontend dispatches by its invoked name.
81+
for name, target in (('make', bad_make if broken_default else self.gnu_make),
82+
('gmake', self.gnu_make)):
83+
launcher = tools / name
84+
launcher.write_text('#!/bin/sh\nexec ' + shlex.quote(str(target)) + ' "$@"\n')
85+
launcher.chmod(0o755)
8186
args = SimpleNamespace(make=selection, compiler=shutil.which('c++'), cc=shutil.which('cc'),
8287
jobs=1, prerequisite_prefix=[], pkg_config_dir=[], provider_prefix=root,
8388
toolchain_prefix=None, optimized=False)
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# FEATURE-ci-macos-make-fixture: preserve make frontend identity in fixture aliases
2+
3+
Status: Complete (local) — validated and finalized into v3; native macOS confirmation pending.
4+
Base: local `v3` at `9b93ebe8eb355b6da6099f8ed7764cda8c23bb90`.
5+
6+
Native macOS package job `120582231719` and archive Darwin job `120582524154`
7+
both fail the new named `gmake` regression during real configure. Their
8+
61-test fixture suites report one failure and three skips. Canonical GNU make
9+
version detection and absolute/default selections succeed; renaming Apple's
10+
developer-tool frontend through a `gmake` symlink makes its name-sensitive
11+
dispatch fail to locate `gmake`.
12+
13+
The fixture now creates executable POSIX launchers for its `make` and `gmake`
14+
PATH entries. Each launcher execs the shell-quoted original tool path with
15+
`"$@"`, preserving the tool's invocation identity and argument boundaries.
16+
The broken default still executes the deliberately failing unselected tool.
17+
Selected MAKE values, ambient conflicts, real configure/dependency generation,
18+
compile/install/check behavior and assertions remain intact. The production
19+
driver, including both selected-MAKE environment assignments, is byte-identical
20+
to the base. No dependency, platform skip, workflow or production change.
21+
22+
Action items:
23+
24+
- [x] Read the plan, literal journal, both actual native failure logs and complete fixture before editing.
25+
- [x] Create the isolated Groundwork worktree from the exact local v3 base; preserve unrelated work.
26+
- [x] Record the actual native regression as RED before the minimal launcher repair.
27+
- [x] Replace renamed frontend symlinks with canonical-tool exec launchers.
28+
- [x] With the corrected fixture, run all three real Autoconf cases against the original pre-MAKE-fix driver as counterfactual RED.
29+
- [x] Run the same three cases against the current unchanged driver as GREEN; retain actual dependency and exact MAKE receipts.
30+
- [x] Verify relevant preservation tests, launcher syntax/argument/status behavior, Python syntax and diff checks.
31+
- [x] Retain raw evidence, executed sources, source bindings, versions and verification limits.
32+
- [x] Caller: complete required Groundwork validation and local finalization into `v3`.
33+
- [ ] CI / v3 PR: confirm repaired fixture on native macOS package/archive jobs.
34+
35+
Verification: 22 existing installed-shell, ps and matrix contracts pass before
36+
and after the repair. The corrected fixture with the exact original driver
37+
from `c2d5c626f456f218676a6d840c8ed1442aa28438` fails all three cases in real
38+
`config.status` dependency-fragment bootstrapping (expected RED). With the
39+
current driver all three pass in 7.083s: actual configure, compile and install
40+
succeed, then the deliberate check failure reaches the required marker.
41+
`.deps/probe.Po` includes `probe.h`; build, install and check receipts retain
42+
exactly `gmake`, `/usr/bin/gmake` or `make` for their respective selections.
43+
The named case still has an unusable PATH default; the absolute/default cases
44+
still override a conflicting inherited MAKE.
45+
46+
Both real valid launchers also execute a GNU make target containing spaces
47+
through `-f -`, preserve its output and propagate GNU make's exit2 from the
48+
deliberate recipe exit17. All captured shell launchers pass `/bin/sh -n`;
49+
`python3 -m py_compile scripts/test-v3-installed-consumer.py` and
50+
`git diff --check` pass. No Python linter is configured in repository guidance.
51+
No full baseline, broad retry, unrelated repair or old runtime diagnosis was
52+
performed. Native repaired macOS proof remains incomplete and CI/v3-PR owned;
53+
local Linux proof does not claim Apple frontend execution.
54+
55+
The main repository's ignored `.debug/ci-macos-make-fixture-fdno1_wr/` retains
56+
the literal journal, native logs, before/after preservation logs, source-bound
57+
`baseline-actual-configure/` and `fixed-actual-configure/` projects/commands,
58+
launcher contract output and versions. The evidence harness reuses the prior
59+
task's actual execution setup, imports the registered test class and executes
60+
the original driver blob in its normal module with the original file binding.
61+
It does not model configure or the macOS frontend.
62+
63+
SHA256 bindings: final fixture
64+
`88ca80f1759e5784534dd458da374814dc76b47652efc851e742877fced393a3`;
65+
original driver
66+
`61ef4487227c4196fbb7fb486e90b3bba255452e678ba47e8754ed8fa0383bc8`;
67+
unchanged current driver
68+
`6c565c7a7c3af16d46edc126638384fe15d81b8d7c36c098bb2661ec593dafb4`.
69+
70+
Project notes / task-executor memory: v3 uses Autotools/C++20; this test-only
71+
repair needs no provider/full library setup. Focused checks use
72+
`python3 scripts/test-v3-installed-consumer.py InstalledMakeTest InstalledShellTest InstalledShellPSTest MatrixTest`
73+
and Python compilation. The real fixture uses `autoreconf --install --force`,
74+
Autoconf2.71, Automake1.16.5, GNU Make4.3, GCC13.3.0 and Python3.12.3 locally.
75+
Its existing script registration/distribution remains sufficient. Groundwork's
76+
identity helper resolves the worktree/branch; git metadata requires sandbox
77+
escalation. Preserve canonical frontend invocation names with exec launchers
78+
rather than renamed symlinks. No merge, push or CI cancellation by executor.
79+
80+
Groundwork validation passed at `cbc63430d6c558abcc0611d294598fff53c05158`
81+
(1 iteration, 0 fixed, 0 unworked): six fresh approvals and three justified
82+
unchanged-profile carries cover all applicable profiles. Native repaired macOS
83+
execution remains incomplete and CI/v3-PR owned.

0 commit comments

Comments
 (0)