cmake: make test-ci target skip building dependencies#15001
Closed
vszakats wants to merge 8 commits intocurl:masterfrom
Closed
cmake: make test-ci target skip building dependencies#15001vszakats wants to merge 8 commits intocurl:masterfrom
test-ci target skip building dependencies#15001vszakats wants to merge 8 commits intocurl:masterfrom
Conversation
Make `test-ci` not depend on the `testdeps` target. `test-ci` is designed to run curl tests in CI. In CI we build all necessary dependencies explicitly beforehand, and they are always ready when calling the `test-ci` step. Thus, it isn't necessary to enforce them via an dependency rule. The `testdeps` target should not normally be a problem. It's supposed to be a no-op if those targets are already built. In practice however, it causes a delay and/or an actual rebuild of those dependencies depending on generator (= build tool) used and other factors. As observed in the GHA/windows workflow, the `testdeps` dependency: - with Ninja, did not cause any delay, and no extra work was done: https://github.com/curl/curl/actions/runs/10980099984/job/30485440389#step:25:18 - with GNU Make, caused a re-evaluation of all `testdeps` targets, but did not actually rebuild them. This re-evaluation took a noticeable time (esp. with non-bundled tests): https://github.com/curl/curl/actions/runs/10980099984/job/30485440155#step:14:11 (with bundles) https://github.com/curl/curl/actions/runs/10973851013/job/30471690331#step:14:11 (w/o bundles) - With MSBuild, caused a re-evaluation of all `testdeps` targets, and a _rebuild_: https://github.com/curl/curl/actions/runs/10980099984/job/30485435968#step:14:19 (with bundles) https://github.com/curl/curl/actions/runs/10973851013/job/30471689714#step:14:19 (w/o bundles) It's suspected that our use of `-DCMAKE_VS_GLOBALS=TrackFileAccess=false` in CI is contributing to this. This option is supposed to affect incremental builds only. For some reason it affects CI builds too, even though they are not incremental, and no sources are changed between the build steps. Notice that `test-*` targets depending on `testdeps` is NOT sufficient to build everything to run tests, e.g. it misses to build the curl tool, which is essential. This is also true for autotools' `test-ci` target which misses to build libcurl and the curl tool. Perhaps it'd be best to drop `testdeps` as a dependency for _all_ `test-*` targets and make it official to require building dependencies manually. Alternatively these targets could be fixed to rebuild everything necessary to run tests.
This reverts commit 94dfc23.
3463bd6 to
6fdc2c1
Compare
This reverts commit 1b06574.
pps83
pushed a commit
to pps83/curl
that referenced
this pull request
Apr 26, 2025
Make `test-ci` not depend on the `testdeps` target. `test-ci` is designed to run curl tests in CI. In CI we build all necessary dependencies explicitly beforehand, and they are always ready when calling the `test-ci` step. Thus, it isn't necessary to enforce them via a dependency rule. Dropping it saves redundant work and delay in CI jobs. The `testdeps` dependency should not normally be a problem. It's supposed to be a no-op if those targets are already built. In practice however, it causes a delay and/or an actual rebuild of those dependencies depending on generator (= build tool) used and other factors. As observed in the GHA/windows workflow, the `testdeps` dependency: - with Ninja, causes no delay, and no extra work: https://github.com/curl/curl/actions/runs/10980099984/job/30485440389#step:25:18 - with GNU Make, caused a re-evaluation of `testdeps` targets, but did not actually rebuild them. This re-evaluation took a noticeable time (esp. with non-bundled tests): https://github.com/curl/curl/actions/runs/10980099984/job/30485440155#step:14:11 (with bundles) https://github.com/curl/curl/actions/runs/10973851013/job/30471690331#step:14:11 (w/o bundles) verbose: https://github.com/curl/curl/actions/runs/10980506956/job/30486434629#step:14:13 - with MSBuild, caused a re-evaluation of `testdeps` targets, and triggered a _rebuild_: https://github.com/curl/curl/actions/runs/10980099984/job/30485435968#step:14:19 (with bundles) https://github.com/curl/curl/actions/runs/10973851013/job/30471689714#step:14:19 (w/o bundles) verbose: https://github.com/curl/curl/actions/runs/10980506956/job/30486436368#step:14:48 It's suspected that our use of `-DCMAKE_VS_GLOBALS=TrackFileAccess=false` in CI is contributing to this. This option is supposed to affect incremental builds only. For some reason it affects CI builds too, even though they are not incremental, and no sources are changed between build steps. Reported-by: Aki Sakurai Ref: curl#14999 Notice that `test-*` targets depending on `testdeps` is NOT sufficient to build everything to run tests, e.g. it misses to build the curl tool, which is essential. This is also true for autotools' `test-ci` target which misses to build libcurl and the curl tool. Perhaps it'd be best to drop `testdeps` as a dependency for _all_ `test-*` targets and make it official to require building dependencies manually. Alternatively these targets could be fixed to rebuild everything necessary to run tests. Closes curl#15001
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Make
test-cinot depend on thetestdepstarget.test-ciis designed to run curl tests in CI. In CI we build allnecessary dependencies explicitly beforehand, and they are always ready
when calling the
test-cistep. Thus, it isn't necessary to enforcethem via a dependency rule. Dropping it saves redundant work and delay
in CI jobs.
The
testdepsdependency should not normally be a problem. It'ssupposed to be a no-op if those targets are already built. In practice
however, it causes a delay and/or an actual rebuild of those
dependencies depending on generator (= build tool) used and other
factors.
As observed in the GHA/windows workflow, the
testdepsdependency:with Ninja, causes no delay, and no extra work:
https://github.com/curl/curl/actions/runs/10980099984/job/30485440389#step:25:18
with GNU Make, caused a re-evaluation of
testdepstargets,but did not actually rebuild them. This re-evaluation took a
noticeable time (esp. with non-bundled tests):
https://github.com/curl/curl/actions/runs/10980099984/job/30485440155#step:14:11 (with bundles)
https://github.com/curl/curl/actions/runs/10973851013/job/30471690331#step:14:11 (w/o bundles)
verbose: https://github.com/curl/curl/actions/runs/10980506956/job/30486434629#step:14:13
with MSBuild, caused a re-evaluation of
testdepstargets, andtriggered a rebuild:
https://github.com/curl/curl/actions/runs/10980099984/job/30485435968#step:14:19 (with bundles)
https://github.com/curl/curl/actions/runs/10973851013/job/30471689714#step:14:19 (w/o bundles)
verbose: https://github.com/curl/curl/actions/runs/10980506956/job/30486436368#step:14:48
It's suspected that our use of
-DCMAKE_VS_GLOBALS=TrackFileAccess=falsein CI is contributing tothis. This option is supposed to affect incremental builds only. For
some reason it affects CI builds too, even though they are not
incremental, and no sources are changed between build steps.
Reported-by: Aki Sakurai
Ref: GHA/windows: do not disable TrackFileAccess #14999
Notice that
test-*targets depending ontestdepsis NOT sufficientto build everything to run tests, e.g. it misses to build the curl tool,
which is essential. This is also true for autotools'
test-citargetwhich misses to build libcurl and the curl tool.
Perhaps it'd be best to drop
testdepsas a dependency for alltest-*targets and make it official to require building dependenciesmanually. Alternatively these targets could be fixed to rebuild
everything necessary to run tests.