WEB-11460: Fix ssm.mk shell call under GNU Make 3.81 - #5
Conversation
The SSM_REPO_NAME derivation used `#` as the sed delimiter inside $(shell ...). GNU Make 3.81 (the macOS default) mis-tokenises the `#` as a comment when the expression is expanded, aborting with "unterminated call to function `shell'". This only surfaced for consumers that don't set SSM_SERVICE (so the derivation actually runs) — e.g. showcase via `-include`. Switch the sed delimiter to `,` so no `#` appears in the shell call, and add a regression assertion that renders a target WITHOUT pinning SSM_SERVICE, so the derivation path is exercised (the existing assertions all pinned it, masking the bug). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 49 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (2)
Comment |
Summary
Hotfix for a parse error in
ssm.mk(shipped inv1.16.0). TheSSM_REPO_NAMEderivation used#as theseddelimiter inside$(shell ...). GNU Make 3.81 — the macOS default — mis-tokenises that#as a comment when the expression is expanded, aborting with*** unterminated call to function 'shell': missing ')'.It only surfaced for consumers that don't set
SSM_SERVICE(so the derivation actually runs) — e.g.showcase, which hit it onmake ssm_sync_test. Every test in the harness pinnedSSM_SERVICE, which short-circuits line 14's?=and skips the expansion, so the bug slipped through.Changes
ssm.mk: switch theseddelimiter from#to,so no#appears inside the$(shell ...)call. Behaviour is identical.test/ssm.sh: add a regression check that renders a target without pinningSSM_SERVICE, exercising the$(shell ...)derivation path. Verified it fails on the old code and passes on the fix.How to test
./test/ssm.sh— green (also in CI).make ssm_sync_testin a repo that doesn't setSSM_SERVICEaborts with the unterminated-function error; with the fix it renders/ecs/<env>/<repo>/….Deployment notes
Needs a
v1.16.1release published after merge so the floatingv1tag advances and consumers pick up the fix on their nextmake init.Closes WEB-11460