Closed eoyilmaz closed 1 year ago
Hi!
There is no software version choosing in CGRU. Various studios do this in their own way. And I do not know what is the simplest way that can be implemented in CGRU.
Yes. If submission plugin can modify command with some extra argument(s), it can be the simplest way for a version choosing.
btw I know several studios that using simultaneous rendering with different application versions with Afanasy (and it can be also used with any other render manager). There is a way that does not need any render manager (submission scripts) modification. The version is "stored" in the working directory. And i think that this is the best, most flexible, but most complex way.
The idea is to store software setup with the project. For example, if we run "hrender_af" command (or any other that can be used on farm), it does not searches software in some installation folder, but it searches setup script in the current folder. If it does not exist, it goes to the parent folder, and so on till the root folder were it can find some default setup.
This way we can setup different projects (and may be even shots) to use different versions of software. And even more! Not only different software versions, but the entire environment can differ. So we can use different versions of any plugins, project specific (scene specific) scripts and tools (assets).
ps Shell script that searches setup_something.sh files in the folders structure is not so complex, i think it is simple.
So let me modify the scripts and create a pull request for you to review the code then :+1:
Hi!
I totaly agree with @eoyilmaz. I am in a small studio starting to work with Afanasy and this feature is well needed. Are there any news on this subject? Is there being worked on at the moment?
P.S.: Keep up the good work 👍
With https://github.com/CGRU/cgru/pull/539 it is now super easy to setup a rez
environment that uses different versions of applications. Also I've setup some example packages under my Anima Pipeline
repository: https://github.com/eoyilmaz/anima/tree/master/anima/rez_packages
Another simple way to store soft version is to store environmet variable. By default CGRU software setup search the latest version in software installation folder. But if this folder is already set in environment variable (NUKE_LOCATION, HOUDINI_LOCATION), it uses this provided location. Nuke gizmo and Houdini Afanasy ROP already got a functionality to set environment variables and a button to store current software location (version).
So, this one was on my list for quite long time.
What I mean by simultaneous rendering is to use different versions of the same application. For example, rendering with Maya 2017, 2019 and 2020 at the same time or with Houdini 17.0, 17.5 and 18.0 at the same time.
The use case scenario is this; basically sometimes the projects are started with different versions of the applications and most of the time the project supervisor is reluctant to update to the new version to not to break a working pipeline or they don't want to spend the extra time to investigate if the pipeline is working properly with the new version etc etc. And along side this old projects, new projects starts with the newest and latest versions of the applications. This forces the studio to do the "Simultaneous Rendering with Different Application Versions".
With current version of CGRU/Afanasy, the scripts under software setup folder are using the first version that they found or the ones that you set with
locate_{{application}}
scripts.Back in 2017 when I was working on a studio (freelancer since) we were doing it by hacking the scripts under "software_setup" folder to start a certain version of Maya, Houdini and Fusion and render with those specific versions.
For example I was using the
AF_CMDEXTENSION
environment variable to set the desired version for Maya and then calling themaya$AF_CMDEXTENSION
command for the render. In this case I had to create amaya2019
shell script under thesoftware_setup/bin/
folder.I know that it is a strong requirement for studios as such and I want to implement this to the system.
So what I want to do is to allow the
start_{{application}}.{cmd, sh}
scripts to accept an argument where you can specify the application version. And update the files undersoftware_setup/bin
to use that specific version of the DCC.Do you have any suggestions on how to implement this or may be not implement at all or may be I'm missing something and the system is already doing it...