feat(cache): add recipe cache with index-version-based staleness check
This commit is contained in:
@@ -0,0 +1,322 @@
|
||||
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/deps.d(149,31): Error: function `resolveDepTree` is not callable using argument types `(string, Recipe function(string name) @safe)`
|
||||
auto tree = resolveDepTree("A", getRecipe);
|
||||
^
|
||||
src/tofu/deps.d(149,31): cannot pass argument `getRecipe` of type `Recipe function(string name) @safe` to parameter `scope Recipe delegate(string) @safe getRecipe`
|
||||
src/tofu/deps.d(61,9): `tofu.deps.resolveDepTree(string targetName, scope Recipe delegate(string) @safe getRecipe)` declared here
|
||||
DepTree resolveDepTree(string targetName,
|
||||
^
|
||||
src/tofu/deps.d(184,31): Error: function `resolveDepTree` is not callable using argument types `(string, Recipe function(string name) @safe)`
|
||||
auto tree = resolveDepTree("A", getRecipe);
|
||||
^
|
||||
src/tofu/deps.d(184,31): cannot pass argument `getRecipe` of type `Recipe function(string name) @safe` to parameter `scope Recipe delegate(string) @safe getRecipe`
|
||||
src/tofu/deps.d(61,9): `tofu.deps.resolveDepTree(string targetName, scope Recipe delegate(string) @safe getRecipe)` declared here
|
||||
DepTree resolveDepTree(string targetName,
|
||||
^
|
||||
src/tofu/deps.d(207,23): Error: function `resolveDepTree` is not callable using argument types `(string, Recipe function(string name) @safe)`
|
||||
resolveDepTree("A", getRecipe);
|
||||
^
|
||||
src/tofu/deps.d(207,23): cannot pass argument `getRecipe` of type `Recipe function(string name) @safe` to parameter `scope Recipe delegate(string) @safe getRecipe`
|
||||
src/tofu/deps.d(61,9): `tofu.deps.resolveDepTree(string targetName, scope Recipe delegate(string) @safe getRecipe)` declared here
|
||||
DepTree resolveDepTree(string targetName,
|
||||
^
|
||||
src/tofu/deps.d(214,21): Error: no property `indexOf` for `e.msg` of type `string`
|
||||
assert(e.msg.indexOf("A -> A") >= 0, e.msg);
|
||||
^
|
||||
src/tofu/deps.d(242,23): Error: function `resolveDepTree` is not callable using argument types `(string, Recipe function(string name) @safe)`
|
||||
resolveDepTree("A", getRecipe);
|
||||
^
|
||||
src/tofu/deps.d(242,23): cannot pass argument `getRecipe` of type `Recipe function(string name) @safe` to parameter `scope Recipe delegate(string) @safe getRecipe`
|
||||
src/tofu/deps.d(61,9): `tofu.deps.resolveDepTree(string targetName, scope Recipe delegate(string) @safe getRecipe)` declared here
|
||||
DepTree resolveDepTree(string targetName,
|
||||
^
|
||||
src/tofu/deps.d(249,21): Error: no property `indexOf` for `e.msg` of type `string`
|
||||
assert(e.msg.indexOf("A") >= 0, e.msg);
|
||||
^
|
||||
src/tofu/deps.d(250,21): Error: no property `indexOf` for `e.msg` of type `string`
|
||||
assert(e.msg.indexOf("B") >= 0, e.msg);
|
||||
^
|
||||
src/tofu/deps.d(252,22): Error: no property `indexOf` for `e.msg` of type `string`
|
||||
assert((e.msg.indexOf("A -> B -> A") >= 0)
|
||||
^
|
||||
src/tofu/deps.d(253,22): Error: no property `indexOf` for `e.msg` of type `string`
|
||||
|| (e.msg.indexOf("B -> A -> B") >= 0), e.msg);
|
||||
^
|
||||
src/tofu/deps.d(279,23): Error: function `resolveDepTree` is not callable using argument types `(string, Recipe function(string name) @safe)`
|
||||
resolveDepTree("A", getRecipe);
|
||||
^
|
||||
src/tofu/deps.d(279,23): cannot pass argument `getRecipe` of type `Recipe function(string name) @safe` to parameter `scope Recipe delegate(string) @safe getRecipe`
|
||||
src/tofu/deps.d(61,9): `tofu.deps.resolveDepTree(string targetName, scope Recipe delegate(string) @safe getRecipe)` declared here
|
||||
DepTree resolveDepTree(string targetName,
|
||||
^
|
||||
src/tofu/deps.d(285,21): Error: no property `indexOf` for `e.msg` of type `string`
|
||||
assert(e.msg.indexOf("not found: X") >= 0, e.msg);
|
||||
^
|
||||
src/tofu/deps.d(311,31): Error: function `resolveDepTree` is not callable using argument types `(string, Recipe function(string name) @safe)`
|
||||
auto tree = resolveDepTree("A", getRecipe);
|
||||
^
|
||||
src/tofu/deps.d(311,31): cannot pass argument `getRecipe` of type `Recipe function(string name) @safe` to parameter `scope Recipe delegate(string) @safe getRecipe`
|
||||
src/tofu/deps.d(61,9): `tofu.deps.resolveDepTree(string targetName, scope Recipe delegate(string) @safe getRecipe)` declared here
|
||||
DepTree resolveDepTree(string targetName,
|
||||
^
|
||||
src/tofu/deps.d(330,31): Error: function `resolveDepTree` is not callable using argument types `(string, Recipe function(string name) @safe)`
|
||||
auto tree = resolveDepTree("leaf", getRecipe);
|
||||
^
|
||||
src/tofu/deps.d(330,31): cannot pass argument `getRecipe` of type `Recipe function(string name) @safe` to parameter `scope Recipe delegate(string) @safe getRecipe`
|
||||
src/tofu/deps.d(61,9): `tofu.deps.resolveDepTree(string targetName, scope Recipe delegate(string) @safe getRecipe)` declared here
|
||||
DepTree resolveDepTree(string targetName,
|
||||
^
|
||||
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 mypkg: JSONValue is not an object[0m
|
||||
core.exception.AssertError@src/tofu/cache.d(263): same version should not be stale
|
||||
----------------
|
||||
??:? _d_unittest_msg [0x561231e593a4]
|
||||
src/tofu/cache.d:264 @safe void tofu.cache.__unittest_L257_C7() [0x561231e1c4ab]
|
||||
??:? void tofu.cache.__modtest() [0x561231e1ece4]
|
||||
??:? int core.runtime.runModuleUnitTests().__foreachbody_L603_C5(object.ModuleInfo*) [0x561231e9a36a]
|
||||
??:? int object.ModuleInfo.opApply(scope int delegate(object.ModuleInfo*)).__lambda_L2519_C13(immutable(object.ModuleInfo*)) [0x561231e500f7]
|
||||
??:? int rt.minfo.moduleinfos_apply(scope int delegate(immutable(object.ModuleInfo*))).__foreachbody_L585_C5(ref rt.sections_elf_shared.DSO) [0x561231e5ea2b]
|
||||
??:? int rt.sections_elf_shared.DSO.opApply(scope int delegate(ref rt.sections_elf_shared.DSO)) [0x561231e5ec2d]
|
||||
??:? int rt.minfo.moduleinfos_apply(scope int delegate(immutable(object.ModuleInfo*))) [0x561231e5e9b9]
|
||||
??:? int object.ModuleInfo.opApply(scope int delegate(object.ModuleInfo*)) [0x561231e500c9]
|
||||
??:? runModuleUnitTests [0x561231e9a19f]
|
||||
??:? void rt.dmain2._d_run_main2(char[][], ulong, extern (C) int function(char[][])*).runAll() [0x561231e5d88c]
|
||||
??:? void rt.dmain2._d_run_main2(char[][], ulong, extern (C) int function(char[][])*).tryExec(scope void delegate()) [0x561231e5d819]
|
||||
??:? _d_run_main2 [0x561231e5d78f]
|
||||
??:? _d_run_main [0x561231e5d597]
|
||||
/usr/include/dlang/dmd/core/internal/entrypoint.d:29 main [0x561231dde81d]
|
||||
??:? [0x7fa221827d0d]
|
||||
??:? __libc_start_main [0x7fa221827e4a]
|
||||
??:? _start [0x561231dddc24]
|
||||
Warning: malformed TOML config at /tmp/tofu-test-config-bad-195341.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:43:40] "GET /recipes/hello/hello.recipe HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:43:40] "GET /recipes/hello/package.lua HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:43:40] "GET /recipes/hello/build.sh HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:43:40] code 404, message File not found
|
||||
127.0.0.1 - - [08/Aug/2026 17:43:40] "GET /recipes/hello/hello.recipe HTTP/1.1" 404 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:43:40] "GET /recipes/hello/hello.recipe HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:43:40] code 404, message File not found
|
||||
127.0.0.1 - - [08/Aug/2026 17:43:40] "GET /recipes/hello/package.lua HTTP/1.1" 404 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:43:40] code 404, message File not found
|
||||
127.0.0.1 - - [08/Aug/2026 17:43:40] "GET /recipes/hello/build.sh HTTP/1.1" 404 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:43:40] "GET /recipes/hello/scripts/build.sh HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:43:40] "GET /recipes/hello/hello.recipe HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:43:40] code 404, message File not found
|
||||
127.0.0.1 - - [08/Aug/2026 17:43:40] "GET /recipes/hello/package.lua HTTP/1.1" 404 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:43:40] code 404, message File not found
|
||||
127.0.0.1 - - [08/Aug/2026 17:43: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
|
||||
1/9 modules FAILED 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:33233//index.lua[0m
|
||||
[32m ok index loaded: 3 packages[0m
|
||||
[2m . fetching index http://127.0.0.1:56885//index.lua[0m
|
||||
[2m . fetching index http://127.0.0.1:36983//index.lua[0m
|
||||
[2m . fetching index http://127.0.0.1:51213//index.lua[0m
|
||||
[2m . fetching index http://127.0.0.1:60193//index.lua[0m
|
||||
[32m ok index loaded: 0 packages[0m
|
||||
[2m . fetching index http://127.0.0.1:42147//index.lua[0m
|
||||
[32m ok index loaded: 1 packages[0m
|
||||
[2m . fetching index http://127.0.0.1:50625//index.lua[0m
|
||||
[32m ok index loaded: 2 packages[0m
|
||||
[2m . fetching index http://127.0.0.1:40363//index.lua[0m
|
||||
[2m . fetching index http://127.0.0.1:39457//index.lua[0m
|
||||
[32m ok index loaded: 1 packages[0m
|
||||
Error Program exited with 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]
|
||||
src/tofu/cache.d(98,9): Error: heredoc rest of line should be blank
|
||||
q"EOS{"name":"%s","ver":"%s","fetchedAt":%d}EOS",
|
||||
^
|
||||
src/tofu/cache.d(98,9): Error: unterminated delimited string constant starting at src/tofu/cache.d(98,10)
|
||||
q"EOS{"name":"%s","ver":"%s","fetchedAt":%d}EOS",
|
||||
^
|
||||
src/tofu/cache.d(435,1): Error: found `End of File` when expecting `)`
|
||||
src/tofu/cache.d(435,1): Error: semicolon expected following auto declaration, not `End of File`
|
||||
src/tofu/cache.d(435,1): Error: matching `}` expected following compound statement, not `End of File`
|
||||
src/tofu/cache.d(82,1): unmatched `{`
|
||||
{
|
||||
^
|
||||
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-196105.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:44:23] "GET /recipes/hello/hello.recipe HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:44:23] "GET /recipes/hello/package.lua HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:44:23] "GET /recipes/hello/build.sh HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:44:23] code 404, message File not found
|
||||
127.0.0.1 - - [08/Aug/2026 17:44:23] "GET /recipes/hello/hello.recipe HTTP/1.1" 404 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:44:24] "GET /recipes/hello/hello.recipe HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:44:24] code 404, message File not found
|
||||
127.0.0.1 - - [08/Aug/2026 17:44:24] "GET /recipes/hello/package.lua HTTP/1.1" 404 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:44:24] code 404, message File not found
|
||||
127.0.0.1 - - [08/Aug/2026 17:44:24] "GET /recipes/hello/build.sh HTTP/1.1" 404 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:44:24] "GET /recipes/hello/scripts/build.sh HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:44:24] "GET /recipes/hello/hello.recipe HTTP/1.1" 200 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:44:24] code 404, message File not found
|
||||
127.0.0.1 - - [08/Aug/2026 17:44:24] "GET /recipes/hello/package.lua HTTP/1.1" 404 -
|
||||
127.0.0.1 - - [08/Aug/2026 17:44:24] code 404, message File not found
|
||||
127.0.0.1 - - [08/Aug/2026 17:44:24] "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
|
||||
9 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:34091//index.lua[0m
|
||||
[32m ok index loaded: 3 packages[0m
|
||||
[2m . fetching index http://127.0.0.1:40227//index.lua[0m
|
||||
[2m . fetching index http://127.0.0.1:49149//index.lua[0m
|
||||
[2m . fetching index http://127.0.0.1:50065//index.lua[0m
|
||||
[2m . fetching index http://127.0.0.1:37743//index.lua[0m
|
||||
[32m ok index loaded: 0 packages[0m
|
||||
[2m . fetching index http://127.0.0.1:47299//index.lua[0m
|
||||
[32m ok index loaded: 1 packages[0m
|
||||
[2m . fetching index http://127.0.0.1:40257//index.lua[0m
|
||||
[32m ok index loaded: 2 packages[0m
|
||||
[2m . fetching index http://127.0.0.1:39005//index.lua[0m
|
||||
[2m . fetching index http://127.0.0.1:36019//index.lua[0m
|
||||
[32m ok index loaded: 1 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
|
||||
Reference in New Issue
Block a user