Skip to content

bug: assembler does not rewrite relative dependency paths when copying libs to .labelle/deps/ #129

Closed
labelle-toolkit/labelle-assembler
#1

Description

@apotema

Summary

When the assembler copies local libs (e.g. from libs/needs_machine/) into .labelle/deps/labelle-needs_machine/, it preserves build.zig.zon files as-is without rewriting relative dependency paths. This causes transitive dependencies to resolve to the wrong location.

Repro

In flying-platform-labelle, both libs/needs_machine and libs/job_machine depend on labelle-fsm via a relative path:

// libs/needs_machine/build.zig.zon
.@"labelle-fsm" = .{
    .path = "../../../labelle-fsm",
},

From the original location (libs/needs_machine/), ../../../labelle-fsm correctly resolves up to labelle-toolkit/labelle-fsm.

After the assembler copies it to .labelle/deps/labelle-needs_machine/, the same ../../../labelle-fsm now resolves to flying-platform-labelle/labelle-fsm — which doesn't exist.

# Original (correct):
libs/needs_machine/ → ../../../labelle-fsm = labelle-toolkit/labelle-fsm ✓

# After copy (broken):
.labelle/deps/labelle-needs_machine/ → ../../../labelle-fsm = flying-platform-labelle/labelle-fsm ✗

Expected behavior

The assembler should rewrite relative .path dependencies in build.zig.zon when copying libs into .labelle/deps/, so they resolve correctly from the new location. Alternatively, transitive deps like labelle-fsm should also be copied into .labelle/deps/ and paths adjusted to point there.

Workaround

Symlink the dependency into the project root:

ln -s /path/to/labelle-toolkit/labelle-fsm /path/to/flying-platform-labelle/labelle-fsm

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions