Is this configuration data static or is it expected to change over
time? If it may change then it should go somewhere in /var such as
/var/lib/OpenColorIO/...
Richard
> Is this configuration data static or is it expected to change over
> time? If it may change then it should go somewhere in /var such as
> /var/lib/OpenColorIO/...
Well, people may add configurations from time to time, but it won't be changing as often as the stuff that normally goes in /var, like logs and temp files. Apparently Gimp looks for ICC profiles in /usr/share/color/icc, so that's why I suggested /usr/share/OpenColorIO. It seems to fit the description of /usr/share having "architecture-independent data". Interesting standards document on the subject here:
Brendan
Then I think there's really 3 paths to worry about then.
1. Since users should never manually put anything in /usr/share (or
/usr for that matter) I would put stuff that comes packaged into
/usr/share/OpenColorIO.
2. Configurations that are not user specific but also not packaged can
go in /usr/local/share/OpenColorIO.
3. Personal configurations can go in a ~/.OpenColorIO or ~/.ocio type
directory (or whatever path already exists?).
There might also need to be a little priority logic for conflict
resolution. I would say 3 should override 2 and 2 should override 1.
Thanks,
Richard
> TCHAR szPath[MAX_PATH];
> SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath);
> wprintf(L"%s\n", szPath);
>
> returning:
> on win7: c:\ProgramData
> on XP: c:\Documents and Settings\All Users\Application Data
Hmmm, since people will be often be installing these manually, we might not want to get too complicated. There's something to be said for a hard-coded path.
But then this does avoid the problem of using Program Files vs. Program Files (x86). I notice that Adobe actually puts ICC profiles in (x86) and has the 64-bit programs get them from there as well.
Brendan
Kevin
> As long as these can all be overridden by an environment variable and
> these are some fall back location I would not object, however without
> the ability to define a specific location we would never be able to
> use it.
Do you mean the environment variable to set the OCIO configuration, or a variable for the directory of configurations?
I've been updating the After Effects plug-in to better support the $OCIO variable. But I think most users of AE (even those in studios) won't be running it with that kind of managed environment, so it's important that OCIO have a user-friendly alternate workflow.
I'm currently letting the user choose between three types of paths to store as the configuration location:
1. $OCIO (get the config from the variable)
2. "spi-vfx" (find the named config in a standard directory)
3. "/Users/me/OCIO/nuke-default/config.ocio" (explicit path)
But the way I currently have it, if the user starts with an explicit path and then adds an $OCIO variable later, the old path won't just stop being used. They'd have to say they were using the $OCIO variable from the start.
Brendan
-- lg
On Apr 17, 2012, at 3:01 AM, Kevin Wheatley wrote:
--
Larry Gritz
l...@imageworks.com
> Do these plans include a provision for handling two (or more) different 3rd party apps, each with OCIO embedded, that may want to install mutually-incompatible OCIO default color space definitions? If there is a single preferred location for color configurations, will they clobber each other in troublesome ways?
Nuke already stores OCIO configurations in its own application-specific directories. Since it has multiple plug-in directories, it should already have some logic for what to do if two configurations with the same name appear in different places. If they recognized the shared location, presumably it would get lower priority to the application-specific ones.
I'm trying to address what I see to be the common case for "regular" users: wanting multiple applications to share the same OCIO configurations. I think most people will not have two configurations that are named the same but behave differently. The simple way to handle that in a shared directory would be to name the other configuration "spi-vfx-v2" or whatever.
For those here who want to juggle multiple configurations, versions, etc., then the $OCIO environment variable method you've been using is what you'll probably want to stick with.
Brendan
> 1. $OCIO (get the config from the variable)
> 2. relative search path starting at so/dll folder: OCIOConfigs/configs/<appname>-default (to follow nuke's arbitrary standard)
> 3. "<user folder>/OCIO/default/config.ocio" (ex: on win7: c:/Users/me/OCIO/default/config.ocio", on linux: ~/.OCIO/default/config.ocio)
> 4. "<common appdata>/OCIO/default/config.ocio" (ex: on win7: c:/ProgramData/OCIO/default/config.ocio", on linux: /etc/OCIO/default/config.ocio)
Right. I've already got the <common appdata> thing going per your suggestion. I'd like to hear other people's opinions on the others. If this list gets expansive, maybe some official code should be added for getting an array of available configurations.
I'm currently doing <common appdata>/OpenColorIO, not <common appdata>/OCIO. Which do people think would be better?
Brendan
I like It spelled out OpenColorIO.
How about an additional env var: OCIO_CONFIGS, which can be set to a
;-separated list of paths. The default would be the ones you've been
talking about.
Have paths closer to the front of the list override ones further back
(so I can stick my own hacked copy of nuke-default in my home directory
if I want to).