Create full install pipeline (plan task 21): - src/tofu/recipeparse.d: light .recipe Lua parser (parseRecipeFile) - src/tofu/commands/install.d: installCommand with delegate seams - 8 unit tests covering: happy path, not-found, dep cycle, build failure, install failure, --dry-run, --noconfirm, user abort - All 21 modules pass dub test, dub build passes - Evidence: .omo/evidence/task-21-tofu-core.log
278 lines
14 KiB
Plaintext
278 lines
14 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/commands/install.d(262,26): Error: `buildPath` matches conflicting symbols:
|
|
auto path = buildPath(tempDir, "tofu-instcmd-" ~ suffix ~ "-" ~ thisProcessID.to!string);
|
|
^
|
|
/usr/include/dlang/dmd/std/path.d(1492,16): function `std.path.buildPath!char.buildPath`
|
|
immutable(C)[] buildPath(C)(const(C)[][] paths...)
|
|
^
|
|
/usr/include/dlang/dmd/std/path.d(1492,16): function `std.path.buildPath!char.buildPath`
|
|
src/tofu/commands/install.d(283,26): Error: `buildPath` matches conflicting symbols:
|
|
auto path = buildPath(dir, "fake-makepkg");
|
|
^
|
|
/usr/include/dlang/dmd/std/path.d(1492,16): function `std.path.buildPath!char.buildPath`
|
|
immutable(C)[] buildPath(C)(const(C)[][] paths...)
|
|
^
|
|
/usr/include/dlang/dmd/std/path.d(1492,16): function `std.path.buildPath!char.buildPath`
|
|
src/tofu/commands/install.d(303,26): Error: `buildPath` matches conflicting symbols:
|
|
auto path = buildPath(dir, "fake-zeta");
|
|
^
|
|
/usr/include/dlang/dmd/std/path.d(1492,16): function `std.path.buildPath!char.buildPath`
|
|
immutable(C)[] buildPath(C)(const(C)[][] paths...)
|
|
^
|
|
/usr/include/dlang/dmd/std/path.d(1492,16): function `std.path.buildPath!char.buildPath`
|
|
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.
|
|
Up-to-date tofu ~main: target for configuration [tofu-test-application] is up to date.
|
|
Finished To force a rebuild of up-to-date targets, run again with --force
|
|
Running tofu-test-application
|
|
zeta-makepkg: building hello...zeta-makepkg: configure phasezeta-makepkg: build phasezeta-makepkg: install phasezeta-makepkg: building hello...zeta-makepkg: configure phasezeta-makepkg: build phasezeta-makepkg: install phasezeta-makepkg: building hello...zeta-makepkg: configure phasezeta-makepkg: build phasezeta-makepkg: install phasezeta-makepkg: building hello...zeta-makepkg: configure phasezeta-makepkg: build phasezeta-makepkg: install phasedonezeta-makepkg: building depA...zeta-makepkg: configure phasezeta-makepkg: build phasezeta-makepkg: install phasezeta-makepkg: building depB...zeta-makepkg: configure phasezeta-makepkg: build phasezeta-makepkg: install phasezeta-makepkg: building target...zeta-makepkg: configure phasezeta-makepkg: build phasezeta-makepkg: install phasezeta-makepkg: building depA...zeta-makepkg: configure phasezeta-makepkg: build phasezeta-makepkg: install phase[31merror[0m build failed for depA: build failed for depA:
|
|
zeta-makepkg: building depA...
|
|
zeta-makepkg: configure phase
|
|
zeta-makepkg: build phase
|
|
zeta-makepkg: install phase
|
|
zeta-makepkg: building pkg...zeta-makepkg: configure phasezeta-makepkg: build phasezeta-makepkg: install phase[31merror[0m build failed for noexist: recipe not found at /tmp/tofu-test-build-buildall-norecipe-245807/nonexistent.recipe
|
|
[33mwarn corrupted cache for pkg: Found 'h' when expecting 'r'. (Line 1:2)[0m
|
|
[31merror[0m package 'nonexistent' not found in ZUUR
|
|
[31merror[0m package 'ghost' not found in ZUUR
|
|
[31merror[0m dependency cycle: A -> B -> A
|
|
[31merror[0m build failed for bfp: build failed for bfp:
|
|
(no stderr output)
|
|
[31merror[0m build failed: bfp — build failed for bfp:
|
|
(no stderr output)
|
|
[31merror[0m install phase error: install failed for ifp:
|
|
[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==> ──── building depA (1/3) ────[0m
|
|
[32m ok depA[0m
|
|
[36m==> ──── building depB (2/3) ────[0m
|
|
[32m ok depB[0m
|
|
[36m==> ──── building target (3/3) ────[0m
|
|
[32m ok target[0m
|
|
[36m==> ──── building depA (1/3) ────[0m
|
|
- nothing to build
|
|
[36m==> ──── building pkg (1/1) ────[0m
|
|
- pkg already built, skipping
|
|
[36m==> ──── building pkg (1/1) ────[0m
|
|
[32m ok pkg[0m
|
|
neovim
|
|
version: 0.9.5
|
|
summary: Text editor
|
|
pool: both
|
|
- recipe not cached — run 'tofu -S neovim' to fetch
|
|
neovim
|
|
version: 0.9.5
|
|
summary: Text editor
|
|
pool: both
|
|
build system: cmake
|
|
deps: libluv>=1.30, msgpack-c
|
|
url: https://github.com/neovim/neovim
|
|
neovim
|
|
version: 0.9.5
|
|
summary: Text editor
|
|
pool: both
|
|
- recipe not cached — run 'tofu -S neovim' to fetch
|
|
installed: 0.9.5
|
|
status: up to date
|
|
ripgrep
|
|
version: 14.1.0
|
|
summary: Fast grep
|
|
pool: recipes
|
|
- recipe not cached — run 'tofu -S ripgrep' to fetch
|
|
installed: 13.0.0
|
|
status: outdated (zuur has 14.1.0)
|
|
firefox
|
|
version: 120.0
|
|
summary: Web browser
|
|
pool: binary
|
|
firefox
|
|
version: 120.0
|
|
summary: Web browser
|
|
pool: binary
|
|
ripgrep
|
|
version: 14.1.0
|
|
summary: Fast grep
|
|
pool: recipes
|
|
- recipe not cached — run 'tofu -S ripgrep' to fetch
|
|
installed: 15.0.0
|
|
status: newer than zuur
|
|
[36m==> generating build plan[0m
|
|
- + happypkg (recipe)
|
|
[32m ok build plan: 1 packages[0m
|
|
- will build 1 package(s): happypkg
|
|
[36m==> ──── building happypkg (1/1) ────[0m
|
|
[32m ok happypkg[0m
|
|
[32m ok installed happypkg with 0 dependencies[0m
|
|
[32m ok installed 1 package(s)[0m
|
|
[36m==> generating build plan[0m
|
|
- + bfp (recipe)
|
|
[32m ok build plan: 1 packages[0m
|
|
- will build 1 package(s): bfp
|
|
[36m==> ──── building bfp (1/1) ────[0m
|
|
[36m==> generating build plan[0m
|
|
- + ifp (recipe)
|
|
[32m ok build plan: 1 packages[0m
|
|
- will build 1 package(s): ifp
|
|
[36m==> ──── building ifp (1/1) ────[0m
|
|
[32m ok ifp[0m
|
|
[36m==> generating build plan[0m
|
|
- + drp (recipe)
|
|
[32m ok build plan: 1 packages[0m
|
|
- will build 1 package(s): drp
|
|
- dry run — nothing built
|
|
[36m==> generating build plan[0m
|
|
- + ncp (recipe)
|
|
[32m ok build plan: 1 packages[0m
|
|
- will build 1 package(s): ncp
|
|
[36m==> ──── building ncp (1/1) ────[0m
|
|
[32m ok ncp[0m
|
|
[32m ok installed ncp with 0 dependencies[0m
|
|
[32m ok installed 1 package(s)[0m
|
|
[36m==> generating build plan[0m
|
|
- + abp (recipe)
|
|
[32m ok build plan: 1 packages[0m
|
|
- will build 1 package(s): abp
|
|
Proceed? [y/N] Warning: malformed TOML config at /tmp/tofu-test-config-bad-245807.toml: Invalid table key declaration (2:0)
|
|
Warning: invalid TOFU_DEFAULT_JOBS 'not-a-number', using default 1
|
|
[33mwarn removing stale lock (PID 99999999 not alive)[0m
|
|
127.0.0.1 - - [08/Aug/2026 18:37:13] "GET /recipes/hello/hello.recipe HTTP/1.1" 200 -
|
|
127.0.0.1 - - [08/Aug/2026 18:37:13] "GET /recipes/hello/package.lua HTTP/1.1" 200 -
|
|
127.0.0.1 - - [08/Aug/2026 18:37:13] "GET /recipes/hello/build.sh HTTP/1.1" 200 -
|
|
127.0.0.1 - - [08/Aug/2026 18:37:13] code 404, message File not found
|
|
127.0.0.1 - - [08/Aug/2026 18:37:13] "GET /recipes/hello/hello.recipe HTTP/1.1" 404 -
|
|
127.0.0.1 - - [08/Aug/2026 18:37:13] "GET /recipes/hello/hello.recipe HTTP/1.1" 200 -
|
|
127.0.0.1 - - [08/Aug/2026 18:37:13] code 404, message File not found
|
|
127.0.0.1 - - [08/Aug/2026 18:37:13] "GET /recipes/hello/package.lua HTTP/1.1" 404 -
|
|
127.0.0.1 - - [08/Aug/2026 18:37:13] code 404, message File not found
|
|
127.0.0.1 - - [08/Aug/2026 18:37:13] "GET /recipes/hello/build.sh HTTP/1.1" 404 -
|
|
127.0.0.1 - - [08/Aug/2026 18:37:13] "GET /recipes/hello/scripts/build.sh HTTP/1.1" 200 -
|
|
127.0.0.1 - - [08/Aug/2026 18:37:13] "GET /recipes/hello/hello.recipe HTTP/1.1" 200 -
|
|
127.0.0.1 - - [08/Aug/2026 18:37:13] code 404, message File not found
|
|
127.0.0.1 - - [08/Aug/2026 18:37:13] "GET /recipes/hello/package.lua HTTP/1.1" 404 -
|
|
127.0.0.1 - - [08/Aug/2026 18:37:13] code 404, message File not found
|
|
127.0.0.1 - - [08/Aug/2026 18:37:13] "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
|
|
- aborted by user
|
|
[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:49713//index.lua[0m
|
|
[32m ok index loaded: 3 packages[0m
|
|
[2m . fetching index http://127.0.0.1:46903//index.lua[0m
|
|
[2m . fetching index http://127.0.0.1:55641//index.lua[0m
|
|
[2m . fetching index http://127.0.0.1:35097//index.lua[0m
|
|
[2m . fetching index http://127.0.0.1:60737//index.lua[0m
|
|
[32m ok index loaded: 0 packages[0m
|
|
[2m . fetching index http://127.0.0.1:36947//index.lua[0m
|
|
[32m ok index loaded: 1 packages[0m
|
|
[2m . fetching index http://127.0.0.1:42949//index.lua[0m
|
|
[32m ok index loaded: 2 packages[0m
|
|
[2m . fetching index http://127.0.0.1:35765//index.lua[0m
|
|
[2m . fetching index http://127.0.0.1:35763//index.lua[0m
|
|
[32m ok index loaded: 1 packages[0m
|
|
installing package...error: build failedreason: missing dependencytestpkg-2.1 is already installed -- use -ReProvide to reinstall - already installed — skipping
|
|
[32m ok installed A with 2 dependencies[0m
|
|
- nothing to install
|
|
install failed: conflict detectedtestpkg-2.1 is already installed -- use -ReProvide to reinstall[33mwarn corrupted installed state at /tmp/tofu-test-state-corrupt-245807/installed.json: Found 'h' when expecting 'r'. (Line 1:2)[0m
|
|
[33mwarn corrupted installed state at /tmp/tofu-test-state-corrupt-245807/installed.json: Found 'h' when expecting 'r'. (Line 1:2)[0m
|
|
21 modules passed unittests
|
|
- already installed — skipping
|
|
[32m ok installed A with 0 dependencies[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.
|
|
Up-to-date tofu ~main: target for configuration [application] is up to date.
|
|
Finished To force a rebuild of up-to-date targets, run again with --force
|