Fix CMake race condition in parallel builds#206
Open
jreniel wants to merge 2 commits intoschism-dev:masterfrom
Open
Fix CMake race condition in parallel builds#206jreniel wants to merge 2 commits intoschism-dev:masterfrom
jreniel wants to merge 2 commits intoschism-dev:masterfrom
Conversation
Add explicit add_dependencies() to utility CMakeLists.txt files to ensure utillib is built before utilities that use its modules. This prevents "Cannot rename module file" errors when building with make -jN. Changes: - Grid_Scripts: add dependency for interpolate_unstructured - Pre-Processing: add dependencies for targets using utillib modules - Particle_Tracking: add dependency for ptrack3 - ArcGIS: fix incorrect schism_geometry link to utillib
Switch CMP0074 policy to NEW behavior to resolve deprecation warning. The OLD behavior will be removed in a future CMake version. The NEW behavior allows find_package() to properly use <PackageName>_ROOT variables for finding packages.
Member
Author
|
Also added a fix for CMake Deprecation Warning at CMakeLists.txt:9 (cmake_policy):
The OLD behavior for policy CMP0074 will be removed from a future version
of CMake.
The cmake-policies(7) manual explains that the OLD behaviors of all
policies are deprecated and that a policy should be set to OLD only under
specific short-term circumstances. Projects should be ported to the NEW
behavior and not rely on setting a policy to OLD. |
1c02586 to
58f33b1
Compare
Member
Author
|
Tested. |
Member
|
All: please review. These changes seem reasonable. |
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.
When compiling with make -jN, a transient race condition can occur where multiple utilities attempt to write .mod files to the shared include directory simultaneously:
f951: Fatal Error: Cannot rename module file '../../include/global.mod0' to '../../include/global.mod': No such file or directoryThis happens because utilities like gen_source and interpolate_unstructured define their own module global, and without explicit build ordering, they can compile in parallel and conflict.
Fix: Add add_dependencies() to utility CMakeLists.txt files to ensure utillib is built first, serializing module file generation.
Changes: