Hi - we've been using rez as the heart of our build system for a bit, but we've come across an issue that we don't really have a great answer for: namely, what to do if we want to build different versions of a package, with different versions of gcc?
ie, say I want to build the package stegosaurus using both gcc-4.1.2 and gcc-4.8.3. To this point, we've been creating two variants. However, say we also have some other package - starscream - which requires gcc-4.4.3. Now, starscream and stegosaurus don't need to interact with each other at a binary level, so it should be fine that one was built with gcc-4.8.3, and the other with gcc-4.1.2. However, rez now will not allow me to create an environment with both packages, because their gcc version will conflict.
Is there a "standard" solution to this issue? It seems like, ideally, we'd have some sort of concept of "build variants" - which would be just like variants, except their requirements would only be added to the "build_requires", and not to the "requires". Or, even better, if there were a way to mark some requests in a variant list as being build requirements - ie,
variants = [
{"requires": ["maya-2016"]
"build_requires": ["gcc-4.8.3"},
{"requires": ["maya-2016"]
"build_requires": ["gcc-4.1.2"},
{"requires": ["maya-2015"]
"build_requires": ["gcc-4.1.2"},
]
or perhaps:
variants = [
["maya-2016", "{B}gcc-4.8.3"],
["maya-2016", "{B}gcc-4.1.2"],
["maya-2015", "{B}gcc-4.1.2"],
]
Suggestions / thoughts?