Add generateBuildPlan() to tofu.resolve — filters constrained dep tree to recipe-only packages, verifies cached recipes exist, and produces an ordered BuildPlan ready for the build orchestrator (task 15). - Skips binary-satisfied deps (Zeta handles those) - Preserves topological order from constrained nodes (deps-first) - Missing recipe files: re-fetch via injectable delegate seam (production wires tofu.fetch.fetchRecipe; tests inject mocks) - Empty plan (all binary) → returns empty BuildPlan + log info - Root always recipe — always included in plan - 6 unittests: filter binary, fetch seam, missing no-seam, all-binary empty, root with binary dep, cache hit no-fetch - dub test + dub build pass with warningsAsErrors
153 lines
7.9 KiB
Plaintext
153 lines
7.9 KiB
Plaintext
Warning
|
|
Warning ## Warning for package tofu ##
|
|
Warning
|
|
Warning The following compiler flags have been specified in the package description
|
|
Warning file. They are handled by DUB and direct use in packages is discouraged.
|
|
Warning Alternatively, you can set the DFLAGS environment variable to pass custom flags
|
|
Warning to the compiler, or use one of the suggestions below:
|
|
Warning
|
|
Warning warningsAsErrors: Use "buildRequirements" to control the warning level
|
|
Warning
|
|
Generating test runner configuration 'tofu-test-application' for 'application' (executable).
|
|
Warning Excluding main source file src/main.d from test.
|
|
Starting Performing "unittest" build using /usr/bin/dmd for x86_64.
|
|
Up-to-date toml 1.0.0: target for configuration [library] is up to date.
|
|
Building tofu ~main: building configuration [tofu-test-application]
|
|
src/tofu/build.d(126,33): Error: `;` expected
|
|
import std.process : Config as ProcConfig;
|
|
^
|
|
src/tofu/build.d(243,59): Error: conflicting attribute `@safe`
|
|
string exitCode = "0", string argsFile = "") @safe {
|
|
^
|
|
Error /usr/bin/dmd failed with exit code 1.
|
|
Warning
|
|
Warning ## Warning for package tofu ##
|
|
Warning
|
|
Warning The following compiler flags have been specified in the package description
|
|
Warning file. They are handled by DUB and direct use in packages is discouraged.
|
|
Warning Alternatively, you can set the DFLAGS environment variable to pass custom flags
|
|
Warning to the compiler, or use one of the suggestions below:
|
|
Warning
|
|
Warning warningsAsErrors: Use "buildRequirements" to control the warning level
|
|
Warning
|
|
Generating test runner configuration 'tofu-test-application' for 'application' (executable).
|
|
Warning Excluding main source file src/main.d from test.
|
|
Starting Performing "unittest" build using /usr/bin/dmd for x86_64.
|
|
Up-to-date toml 1.0.0: target for configuration [library] is up to date.
|
|
Building tofu ~main: building configuration [tofu-test-application]
|
|
Linking tofu-test-application
|
|
Finished To force a rebuild of up-to-date targets, run again with --force
|
|
Running tofu-test-application
|
|
[33mwarn corrupted cache for pkg: Found 'h' when expecting 'r'. (Line 1:2)[0m
|
|
Warning: malformed TOML config at /tmp/tofu-test-config-bad-204774.toml: Invalid table key declaration (2:0)
|
|
Warning: invalid TOFU_DEFAULT_JOBS 'not-a-number', using default 1
|
|
127.0.0.1 - - [08/Aug/2026 17:57:40] "GET /recipes/hello/hello.recipe HTTP/1.1" 200 -
|
|
127.0.0.1 - - [08/Aug/2026 17:57:40] "GET /recipes/hello/package.lua HTTP/1.1" 200 -
|
|
127.0.0.1 - - [08/Aug/2026 17:57:40] "GET /recipes/hello/build.sh HTTP/1.1" 200 -
|
|
127.0.0.1 - - [08/Aug/2026 17:57:40] code 404, message File not found
|
|
127.0.0.1 - - [08/Aug/2026 17:57:40] "GET /recipes/hello/hello.recipe HTTP/1.1" 404 -
|
|
127.0.0.1 - - [08/Aug/2026 17:57:40] "GET /recipes/hello/hello.recipe HTTP/1.1" 200 -
|
|
127.0.0.1 - - [08/Aug/2026 17:57:40] code 404, message File not found
|
|
127.0.0.1 - - [08/Aug/2026 17:57:40] "GET /recipes/hello/package.lua HTTP/1.1" 404 -
|
|
127.0.0.1 - - [08/Aug/2026 17:57:40] code 404, message File not found
|
|
127.0.0.1 - - [08/Aug/2026 17:57:40] "GET /recipes/hello/build.sh HTTP/1.1" 404 -
|
|
127.0.0.1 - - [08/Aug/2026 17:57:40] "GET /recipes/hello/scripts/build.sh HTTP/1.1" 200 -
|
|
127.0.0.1 - - [08/Aug/2026 17:57:40] "GET /recipes/hello/hello.recipe HTTP/1.1" 200 -
|
|
127.0.0.1 - - [08/Aug/2026 17:57:40] code 404, message File not found
|
|
127.0.0.1 - - [08/Aug/2026 17:57:40] "GET /recipes/hello/package.lua HTTP/1.1" 404 -
|
|
127.0.0.1 - - [08/Aug/2026 17:57:40] code 404, message File not found
|
|
127.0.0.1 - - [08/Aug/2026 17:57:40] "GET /recipes/hello/build.sh HTTP/1.1" 404 -
|
|
[33mwarn skipping index entry with empty name[0m
|
|
[33mwarn skipping index entry with empty name[0m
|
|
[33mwarn skipping index entry 'badpool': invalid pool 'bad_pool_value'[0m
|
|
11 modules passed unittests
|
|
[2m . checking binary firefox ...[0m
|
|
- binary firefox-2.1.0 satisfies firefox>=2.0
|
|
[2m . checking binary libfoo ...[0m
|
|
- binary libfoo-1.9 does not satisfy libfoo>=2.0
|
|
[2m . checking binary noexist ...[0m
|
|
[2m . checking binary brokenpkg ...[0m
|
|
[2m . checking binary badpkg ...[0m
|
|
[2m . checking binary testpkg ...[0m
|
|
- binary testpkg-2.1.0 satisfies testpkg
|
|
[36m==> fetching recipe hello[0m
|
|
[2m . downloading hello.recipe[0m
|
|
[2m . downloading package.lua[0m
|
|
[2m . downloading build.sh[0m
|
|
[32m ok recipe hello downloaded[0m
|
|
[36m==> fetching recipe hello[0m
|
|
[2m . downloading hello.recipe[0m
|
|
[36m==> fetching recipe hello[0m
|
|
[2m . downloading hello.recipe[0m
|
|
[2m . downloading package.lua[0m
|
|
- no package.lua for hello (optional manifest)
|
|
[2m . downloading build.sh[0m
|
|
- no build.sh for hello (optional build script)
|
|
[2m . custom build system: fetching scripts/build.sh[0m
|
|
[32m ok recipe hello downloaded[0m
|
|
[36m==> fetching recipe hello[0m
|
|
[2m . downloading hello.recipe[0m
|
|
[2m . downloading package.lua[0m
|
|
- no package.lua for hello (optional manifest)
|
|
[2m . downloading build.sh[0m
|
|
- no build.sh for hello (optional build script)
|
|
[32m ok recipe hello downloaded[0m
|
|
[36m==> fetching recipe hello[0m
|
|
[2m . downloading hello.recipe[0m
|
|
[2m . fetching index http://127.0.0.1:33945//index.lua[0m
|
|
[32m ok index loaded: 3 packages[0m
|
|
[2m . fetching index http://127.0.0.1:33079//index.lua[0m
|
|
[2m . fetching index http://127.0.0.1:39107//index.lua[0m
|
|
[2m . fetching index http://127.0.0.1:58239//index.lua[0m
|
|
[2m . fetching index http://127.0.0.1:52265//index.lua[0m
|
|
[32m ok index loaded: 0 packages[0m
|
|
[2m . fetching index http://127.0.0.1:55027//index.lua[0m
|
|
[32m ok index loaded: 1 packages[0m
|
|
[2m . fetching index http://127.0.0.1:54741//index.lua[0m
|
|
[32m ok index loaded: 2 packages[0m
|
|
[2m . fetching index http://127.0.0.1:46869//index.lua[0m
|
|
[2m . fetching index http://127.0.0.1:58081//index.lua[0m
|
|
[32m ok index loaded: 1 packages[0m
|
|
- binary libfoo-2.1 satisfies libfoo>=2.0
|
|
- libfoo: binary 1.9 too old, building from recipe
|
|
- libfoo: binary 1.9 too old, building from recipe
|
|
- binary libbar-3.0 satisfies libbar (unconstrained)
|
|
- libbaz: no binary available, building from recipe
|
|
- binary libfoo-1.5 satisfies libfoo>=1.0
|
|
- libfoo: binary 1.5 too old, building from recipe
|
|
- binary parentA-1.5 satisfies parentA (unconstrained)
|
|
- binary parentB-1.5 satisfies parentB (unconstrained)
|
|
[36m==> generating build plan[0m
|
|
- + C (recipe)
|
|
- + A (recipe)
|
|
[32m ok build plan: 2 packages[0m
|
|
[36m==> generating build plan[0m
|
|
- recipe libfoo not in cache, re-fetching
|
|
- + libfoo (recipe)
|
|
[32m ok build plan: 1 packages[0m
|
|
[36m==> generating build plan[0m
|
|
[36m==> generating build plan[0m
|
|
- nothing to build (all binary)
|
|
[36m==> generating build plan[0m
|
|
- + mypkg (recipe)
|
|
[32m ok build plan: 1 packages[0m
|
|
[36m==> generating build plan[0m
|
|
- + libfoo (recipe)
|
|
- + mypkg (recipe)
|
|
[32m ok build plan: 2 packages[0m
|
|
Warning
|
|
Warning ## Warning for package tofu ##
|
|
Warning
|
|
Warning The following compiler flags have been specified in the package description
|
|
Warning file. They are handled by DUB and direct use in packages is discouraged.
|
|
Warning Alternatively, you can set the DFLAGS environment variable to pass custom flags
|
|
Warning to the compiler, or use one of the suggestions below:
|
|
Warning
|
|
Warning warningsAsErrors: Use "buildRequirements" to control the warning level
|
|
Warning
|
|
Starting Performing "debug" build using /usr/bin/dmd for x86_64.
|
|
Up-to-date toml 1.0.0: target for configuration [library] is up to date.
|
|
Building tofu ~main: building configuration [application]
|
|
Linking tofu
|
|
Finished To force a rebuild of up-to-date targets, run again with --force
|