skalibs, execline, s6: update; add s6-rc 0.7.0.0 - #34539
Conversation
|
If these patches are to address core library differences on the most recent versions of macOS, then they should target those versions specifically. As it is now, these patches will apply and be built on every version of macOS, including versions that have been fine to date. |
32c1a38 to
60648ee
Compare
|
@herbygillot Thanks for flagging this! I’ve made the new patches Darwin-only and limited the spawn-probe workaround to deployment targets below macOS 26, following the Guide’s platform conditions. Native Tahoe builds leave configure unchanged. One clarification on “fine to date”: the select/timeval and descriptor-lock bugs already exist in the previously packaged code. I reproduced the scanner shutdown and lock failures on Sequoia 15.7.7—not Tahoe. Successful builds wouldn’t catch these runtime failures, so restricting those fixes to the newest macOS would miss affected systems. I’ve added comments explaining that distinction. All four ports lint cleanly, and the regression tests—including 30 live updates—pass. I think this is ready to merge pending CI confirmation on the other releases. Could you approve the workflow? It covers macOS 14, 15 and 26; I haven’t tested Tahoe locally. |
|
Please do the following:
Thank you. |
Keep read readiness distinct from hangup and normalize timeval carries. Reject unavailable spawn APIs for deployment targets below macOS 26. The event/conversion defects predate this release; no newer-only Darwin boundary is established. Preserve the existing build/target tuple. These are AI-assisted downstream patches, not upstream backports. Skarnet does not accept LLM-generated contributions: https://github.com/skarnet/skalibs/blob/main/CONTRIBUTING External tests, negative controls, and results: https://github.com/bjornpagen/macports-ports/tree/c8f3c8b0da1998378636d1d363823d0cabea2b48 Assisted-by: OpenAI Codex
Recreate the staged Darwin cd/umask links using native Tcl operations, preserving relative targets and restoring normal symlink permissions. Retain normalized build/target tuples and existing packaging choices. Follow the existing skalibs library-link treatment: macports@7e20704 External validation: https://github.com/bjornpagen/macports-ports/tree/c8f3c8b0da1998378636d1d363823d0cabea2b48 Assisted-by: OpenAI Codex
Move the descriptor before acquiring its POSIX record lock. Closing the original descriptor after locking releases the process-owned lock even when a duplicate remains open. The affected code is unchanged from 2.15.0.0; restrict this downstream correction to Darwin, not Tahoe only. Retain the optional StartupItem and existing dependency choices. These are AI-assisted downstream changes, not an upstream backport. Skarnet does not accept LLM-generated contributions: https://github.com/skarnet/s6/blob/main/CONTRIBUTING External tests cover shared/exclusive locks, default/fd 3/fd 9, timed/blocking acquisition, competing timeout, and release: https://github.com/bjornpagen/macports-ports/tree/c8f3c8b0da1998378636d1d363823d0cabea2b48 Assisted-by: OpenAI Codex
Install tools and documentation without creating a service database, repository, account, or StartupItem. Match the existing normalized tuple. Keep obsolete supervisors until a rescan marks them inactive. Request rescan/prune after replacement management and before fdholder adjustment, so its failure or timeout cannot bypass retirement. Do not prune after failed management when preserved services may lack replacement links. Separately fix rollback cleanup to remove the candidate at offset pos, not the still-active old live directory at offset zero. These are AI-assisted Darwin downstream patches, not upstream backports. Skarnet does not accept LLM-generated contributions: https://github.com/skarnet/s6-rc/blob/main/CONTRIBUTING External repeated-update and failure/recovery regressions: https://github.com/bjornpagen/macports-ports/tree/c8f3c8b0da1998378636d1d363823d0cabea2b48 Assisted-by: OpenAI Codex
Volunteer @bjornpagen with openmaintainer for all four ports, including ongoing downstream patch review, rebases, regressions, and follow-up issues. Keep the maintainer change separate from functional changes. https://guide.macports.org/#project.contributing https://guide.macports.org/#reference.keywords.maintainers Assisted-by: OpenAI Codex
60648ee to
f8ed1f9
Compare
|
@herbygillot Thanks for the review. I've removed the standalone C tests, the There is an upstream-policy constraint: these changes are AI-assisted, and Could these be accepted as maintained downstream corrections? The All corrections remain, with stronger updater coverage. Retirement now happens All four ports lint cleanly and rebuild/stage as universal. Targeted arm64 and |
Description
Update skalibs, execline, and s6; add s6-rc, retaining all proposed runtime
corrections. Four per-port commits are followed by a separate maintainer-only
commit proposing
@bjornpagen openmaintainerfor all four ports.This submission is AI-assisted, including the source patches and tests.
The patches are explicitly identified as MacPorts downstream changes, not
upstream submissions or accepted upstream backports.
Response to review: tests and upstreaming
The standalone C tests, live-update driver, associated test phases, and
test-only dependency have been removed from the proposed ports tree and its
rewritten commit series. They remain reviewable, with before/after logs and
reproduction instructions, at this immutable evidence commit.
I cannot submit these LLM-generated changes upstream consistently with Skarnet's
published contribution policy. The policies for
skalibs,
s6, and
s6-rc explicitly reject
LLM-generated contributions and prohibit attempts to bypass that restriction.
No upstream PRs have been opened, and I will not obscure their provenance.
The MacPorts Guide, section 4.6.2
says necessary or useful source patches should generally be sent to the
application developer and documents carrying separate logical source patches
in
files/. I am asking for explicit acceptance of these as maintaineddownstream corrections in this circumstance—not asserting that the Guide
requires an exception or that maintainer status overrides review.
I volunteer to maintain all four ports and the downstream corrections: handle
tickets and reviews, rebase and rerun regressions for updates, and retire patches
when released upstream code resolves the defects. The
maintainer policy, section 7.3.3
welcomes volunteers for unmaintained ports, does not require commit access,
and asks that maintainer changes be separate from functional changes. The
maintainers keyword
supports the proposed GitHub handle and
openmaintainerarrangement.Corrections and evidence
POLLINfor read readiness rather than the requestmask
IOPAUSE_READ, which includesPOLLHUP. The original reports0x11forordinary pipe data; the correction reports
0x1. A false hangup can sends6-svscan into its crash path.
seconds. The original produces invalid
tv_usec = 1000000at the carryboundary. Tests cover all three converters, negative/zero/positive seconds,
rounding boundaries, and relative signed-time overflow.
reject APIs newer than the deployment target. SDK 26 can otherwise enable
unavailable standard spawn directory actions for macOS 15. The negative
runtime exits 139; corrected chdir/fchdir actions pass using available
_npfunctions. The patch is selected only for Darwin targets below macOS 26.
cdandumasksymlinks withnative Tcl operations, preserving their relative targets. This corrects the
installer-created 0700 links to 0755, following the existing skalibs treatment.
Closing the original after locking releases the process-owned lock even if a
duplicate remains. With corrected dependencies, original s6-setlock fails all
four fd 9 shared/exclusive and timed/blocking acquisition cases; the correction
passes all 12 default/fd 3/fd 9 cases, including competing timeout and release.
xdto their supervisors. Once replacement management succeeds, request thescanner's ordered rescan/prune before fdholder adjustment, so its failure,
timeout, or cancellation cannot skip the request. The scanner defers retirement
until a successful scan marks obsolete directories inactive. Pristine code
logs 14 missing-directory restart errors in the 30-update regression; corrected
native and x86_64 runs each pass 100 updates plus service-state transitions
with empty supervision logs.
the old active live directory at offset 0 rather than the failed candidate at
pos. A separate one-line patch corrects the cleanup target. Injected failurebefore the symlink switch now preserves the old target and running PID, and a
subsequent normal update succeeds. The prior patch fails this test.
The updater has five passing injected failure/recovery cases on arm64 and
x86_64: pre-switch failure, pre-management failure, fdholder restart-spawn
failure, fdholder timeout, and cancellation at fdholder entry. Fault injection
exists only in external test builds. Production patches add no sleeps, retries,
signal masking, test hooks, or warning suppression. An interrupted update is
still not a transaction; a control write is not a retirement acknowledgement,
and not every partial failure or interruption point is covered.
The patches are Darwin-only. Apart from the explicitly deployment-gated
availability probe, these are source-level defects, not new Tahoe APIs.
The select/timeval/setlock defects are already present in the previously
packaged source; no newer-only Darwin boundary has been established.
Packaging scope and history
Preserve existing normalized build/target tuples, legacy support, and linking
choices. Retain s6's optional StartupItem and empty scandir without enabling
them. s6-rc creates no database, repository, service definitions, StartupItem,
account, or running service. No personal configuration or mount setup is shipped.
Type(s)
Testing and limitations
macOS 15.7.7 (24G720), arm64, Xcode 26.3, MacPorts 2.12.6. The normal MacPorts
builds select the installed macOS 15 SDK; the separate availability reproduction
uses SDK 26. Testing is in an unprivileged disposable prefix, with its own
registry, two build jobs, and StartupItem installation/autostart disabled.
No host live MacPorts installation or services were changed.
All four final Portfiles lint with zero errors/warnings and build/stage with
+universal(arm64/x86_64). Fresh build-tree regressions pass for skalibs and s6;the staged updater passes the live-update suite. x86_64 regressions execute under
Rosetta with extracted x86_64 s6-rc/core-supervision tools. The evidence identifies
earlier SDK configure and source-level sanitizer logs separately from new runs.
Earlier native and universal isolated installs are recorded in the prior PR
revision; this revision newly rebuilds/stages all four ports and tests the changed
updater, rather than claiming a fresh privileged install. Native Intel hardware,
older macOS/Tahoe runtime, root-owned activation, trace mode, all utility binaries,
and cross-host universal sysdeps reuse remain untested locally. CI/reviewer
approval is still required; local results do not imply green MacPorts CI.
Verification
port lint --nitpick.