Skip to content

fix(package-deps): materialize the workspace library closure - #15996

Draft
Alizter wants to merge 17 commits into
ocaml:mainfrom
Alizter:push-kzumsllxkwpq
Draft

fix(package-deps): materialize the workspace library closure#15996
Alizter wants to merge 17 commits into
ocaml:mainfrom
Alizter:push-kzumsllxkwpq

Conversation

@Alizter

@Alizter Alizter commented Aug 17, 2026

Copy link
Copy Markdown
Collaborator

Depends on #15994 and the parallel package regressions #15995 and #16018#16029. The final commit contains the implementation.

Use the shared generic library-closure machinery to compute every installed root independently in each compilation mode. Partial-link closure selects available defaults without rejecting unimplemented virtual libraries; the union also follows PPX runtimes, serialized subsystem and instrumentation references, redirect chains, and deprecated-package metadata.

Materialize only selected artifacts and filtered metadata. Reject selected META template additions or replacements that would advertise unmaterialized dependencies or artifacts.

Test: dune runtest test/blackbox-tests/test-cases/package-materialization

Alizter added 17 commits August 18, 2026 13:55
A META file template can parse before expansion and become malformed when a later generation marker is replaced. Snapshot that behavior and the presence of multiple markers.

Signed-off-by: Ali Caglayan <alizter@gmail.com>
A promoted META file template can differ from a stale source counterpart. Snapshot acceptance of the generated build contents when promotion is disabled.

Signed-off-by: Ali Caglayan <alizter@gmail.com>
Verify that the accepted malformed source template reaches both the generated and installed META files before validation is added.

Signed-off-by: Ali Caglayan <alizter@gmail.com>
Record that a scoped package dependency omits the PPX library named by serialized instrumentation backend metadata.

Signed-off-by: Ali Caglayan <alizter@gmail.com>
Exercise @install with duplicate public libraries so install-entry indexing continues to report the existing source-located user error.

Signed-off-by: Ali Caglayan <alizter@gmail.com>
Record that a package root reached under a competing virtual implementation does not receive its own link closure.

Signed-off-by: Ali Caglayan <alizter@gmail.com>
Record that a scoped package layout retains melange_requires metadata without materializing its referenced workspace library.

Signed-off-by: Ali Caglayan <alizter@gmail.com>
Record that a scoped package layout preserves a template-defined archive that points to an artifact absent from the layout.

Signed-off-by: Ali Caglayan <alizter@gmail.com>
Exercise library dependencies, private libraries, stubs, redirects, namespaces, virtual implementations, PPX runtime libraries, nested Dune consumers, installed packages, and only-packages masking. Record the current missing-library failures before materializing the closure.

Signed-off-by: Ali Caglayan <alizter@gmail.com>
Record that a package dependency does not yet materialize a nested library namespace, including the intermediate template metadata that must be filtered once support metadata is generated.

Signed-off-by: Ali Caglayan <alizter@gmail.com>
Record that scoped support metadata can advertise a dependency added by a META file template without materializing that dependency.

Signed-off-by: Ali Caglayan <alizter@gmail.com>
Record that a scoped package dependency omits the intermediate metadata in a deprecated-library redirect chain.

Signed-off-by: Ali Caglayan <alizter@gmail.com>
Record that scoped package metadata can reference an inline-test runner library outside the traversed OCaml requires closure.

Signed-off-by: Ali Caglayan <alizter@gmail.com>
Record that a scoped package dependency omits the library referenced by a serialized PPX driver replacement edge.

Signed-off-by: Ali Caglayan <alizter@gmail.com>
Record that a support redirect owned by another package omits metadata generated for its deprecated package name.

Signed-off-by: Ali Caglayan <alizter@gmail.com>
Validate exact template contents before and after rendering, preserve structured source and build diagnostics, and attribute expansion failures to the responsible generation marker. Escape generated backslashes so rendered metadata round-trips through META parsing.

Signed-off-by: Ali Caglayan <alizter@gmail.com>
Use the shared Lib.closure machinery to compute every installed root library's compile and partial-link closure independently in each compilation mode, then union the results so competing and unimplemented virtual libraries remain valid. Add PPX runtimes, serialized subsystem and instrumentation references, complete redirect chains, and deprecated-package metadata.

Materialize only selected artifacts and filtered metadata. Reject selected META template rules that would introduce unmaterialized dependencies or artifacts.

Signed-off-by: Ali Caglayan <alizter@gmail.com>
@Alizter
Alizter force-pushed the push-kzumsllxkwpq branch from 7cc051e to fd05be6 Compare August 18, 2026 12:01
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