-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Disable automatic 'call home' in cmake when not needed #11603
Comments
So we could introduce such option (e.g |
The connection check only makes sense for `fail-on-missing=OFF`, where the result is used to decide whether to download a missing dependency as a builtin from the internet, or to disable the feature that has the missing dependency. With `fail-on-missing=ON`, it doesn't matter because disabling features is not allowed. Therefore, we can skip the connection check to save some configuration overhead and just assume we have internet: if a builtin can't be downloaded there will be a configuration failure either way. Closes root-project#11603 without introducing an additional flag.
The connection check only makes sense for `fail-on-missing=OFF`, where the result is used to decide whether to download a missing dependency as a builtin from the internet, or to disable the feature that has the missing dependency. With `fail-on-missing=ON`, it doesn't matter because disabling features is not allowed. Therefore, we can skip the connection check to save some configuration overhead and just assume we have internet: if a builtin can't be downloaded there will be a configuration failure either way. Also, move the connectivity check after `include(RootBuildOptions)`, such that the `fail-on-missing` and `clad` options are correctly set. Before, the code that automatically disabled clad when no connection was found was essentialy dead, because if the user doesn't specify `clad=ON` explicitly, it is only set to `ON` in the RootBuildOptions macro. Closes root-project#11603 without introducing an additional flag.
Hi @wdconinc and @bellenot! It would be nice if we could fix the issue without the added complexity of an additional flag. Wouter, you're probably using the The connectivity check doesn't make sense with Would that PR fix your issue? |
The fix seems fine (we are indeed using It is still not entirely clear in advance which features require connectivity, and which don't (or even what to do in advance in order to pre-populate the FetchContent locations). There is also confusion with the names of the features: |
Cool, good to hear that the PR goes in the right direction then!
All features of builtins that do require network note this in their description:
I agree that For the confusing name with About the pre-populating of FetchContent locations: I was facing the same problem recently for nix packages. I fixed it in the end by patching the CMake code of ROOT: |
Since you had to patch it in nix, you'll also appreciate the fragility of such an approach. In fact, it will already break with #15467... ( I don't want to suggest changing well-established config option names like |
The connection check only makes sense for `fail-on-missing=OFF`, where the result is used to decide whether to download a missing dependency as a builtin from the internet, or to disable the feature that has the missing dependency. With `fail-on-missing=ON`, it doesn't matter because disabling features is not allowed. Therefore, we can skip the connection check to save some configuration overhead and just assume we have internet: if a builtin can't be downloaded there will be a configuration failure either way. Closes root-project#11603 without introducing an additional flag.
This would address two annoyances I have at the same time: 1. One can now clone both `root` and `clad`, linking the source directories together. This makes it much easier to try out changes in clad in the context of ROOT. 2. ROOT can now configure and build without an internet connection, even with `Dclad=ON`. This partially addresses root-project#11603.
This would address two annoyances I have at the same time: 1. One can now clone both `root` and `clad`, linking the source directories together. This makes it much easier to try out changes in clad in the context of ROOT. 2. ROOT can now configure and build without an internet connection, even with `Dclad=ON`. This partially addresses #11603.
Thanks @wdconinc for these suggestions! While it would be nice to make the built options a bit more systematic, I think people got used to them as they are. So I would not change them for now, and instead quite literally implement what you requested initially in this issue: |
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
The 'call home' in https://github.com/root-project/root/blob/master/CMakeLists.txt#L124 should default to off, and should only be called when explicitly requested by a user, and only when the features (
builtin_gsl
andclad
) that depend on it are enabled. When it is used, the internet connection check should check a checksum of the downloaded file.Describe alternatives you've considered
Alternatively, the user can be alerted upon downloading the ROOT source code from any of its various locations that compiling this software may trigger data collection on the root.cern server, e.g. https://root.cern/install/build_from_source/, https://github.com/root-project/root/releases, etc.
The text was updated successfully, but these errors were encountered: