Conversation
|
I guess this will require our CI pipelines to override the |
|
... it also means that anyone who wants to use our Conan artifactory will have to also set the |
Yes and no. The recipe hashes are not affected by the machine-specific settings, so anyone using the default |
That's good, on both accounts. |
Actually I see that I was wrong, given that our CI pipelines would use the |
docker/debian/Dockerfile
Outdated
| os: | ||
| debian-${DEBIAN_VERSION}: | ||
| EOT | ||
| sed -i "s/os=Linux/os=debian-${DEBIAN_VERSION}/g" $(conan config home)/profiles/default |
There was a problem hiding this comment.
perhaps we do not need these sed at all ? I assume settings_user.yml would take precedence ?
There was a problem hiding this comment.
The settings_user.yml tells Conan: "Please take the existing settings.yml and merge the settings in settings_user.yml into it" - see the link I had added in the PR description. It essentially allows you to expand or overwrite the available options.
Run for example cat $(conan config home)/settings.yml to see valid values for the profile.
Changing the available settings does not change the profile - so that's still set to os=Linux as a result of running the auto-detection, and it thus still needs to be overwritten.
I believe you are actually correct - we can either update the value in the profile (e.g. using sed), or otherwise overwrite the value in the profile by passing the |
The profile that's created in the images created here is a throw-away anyway. The actual profile that we use when building EDIT: In either case, |
Packages generally are configured to have the architecture, OS, and compiler+version determine the package ID. This change adds a new OS option per CI image to support the distro being used, e.g. "debian-bookworm".
Alternative options exist, e.g. https://docs.conan.io/2/reference/config_files/settings.html#customizing-settings. However, in practice this did not work after adding Linux-specific distros. Not only does it seem there's a current bug - the value "null" still resulted in errors in dependencies as they didn't have a distro defined, even though the use of "null" is precisely supposed to allow that - but the whole point is that dependencies need to be built for specific distros.
This change will ensure that each package in the dependency tree will see "os" set to the specific distro. You will now see things like:
(see the "os" fields)
Other changes: