Automattic / Automattic/kandelo

perl-vfs: isolate direct-build staging per invocation

Open
#951 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
31
Forks
15
Avg merge
11h 7m
Merged PRs (30d)
80

Description

## Problem

packages/registry/perl-vfs/build-perl-vfs.sh stages every build through the checkout-local file packages/registry/perl-vfs/perl-vfs.vfs.zst before install_local_binary copies it to the resolver output directory.

Two direct or resolver builds in the same checkout can therefore overwrite or validate one another's stage file. Hosted matrix jobs normally have isolated checkouts, so this did not block the ABI 40 Perl workspace repair, but the package build contract should be correct independently of runner topology.

## Expected behavior

- Stage each Perl VFS image in a unique invocation-owned directory.
- Preserve deterministic final bytes and declared resolver output behavior.
- Clean the private stage on success, failure, and signals without masking the original exit status.
- Add a concurrency regression that runs two builds with distinct declared Perl runtime inputs and proves neither can consume the other output.

This is package build isolation only; it should not change Kandelo ABI or runtime semantics.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with packages/registry/perl-vfs/build-perl-vfs.sh and the install_local_binary path that copies the staged image to the resolver output directory. Trace how direct builds receive declared Perl runtime inputs, then inspect existing package-build tests or harnesses for the right place for a concurrent regression. Done means two builds cannot consume each other's stage, final bytes remain deterministic, and private staging is cleaned up on success, failure, and signals.

Written by the indexing model from the issue text.

Assessment

Tech stack
perl, shell
Domain
build-system, testing
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
65/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.