Как в afanasy передать версию?

paulwinex
Сообщения: 83
Зарегистрирован: Пт июл 14, 2017 9:50 am

Как в afanasy передать версию?

Сообщение paulwinex »

На студии используется несколько версий Houdini. Нужно на ферме запускать ту версию из которой задача запущена.
Добавил в папку cgru свой файл setup_studio.sh в котором добавил в переменную PATH свой путь. По этому пути лежит мой файл hrender_af. В нём написано примено так

Код: Выделить всё

# дефолтные переменные
call $CGRU_LOCATION/software_setup/setup_houdini
# мои перменные
call $PIPELINE_LOCATION/studio.env
# свой скрипт запуска
$PIPELINE_PYTHON  $PIPELINE_LOCATION/launcher.py $HOUDINI_CGRU_PATH/hrender_af.py @*
В последней строке скрипт который вместо APP_EXE выберет нужную версию hython и запустит передав все аргументы от hrender_af.py и далее.
Получится примерно такая команда на рендер

Код: Выделить всё

hython $HOUDINI_CGRU_PATH/hrender_af.py @*
Вопрос — как мне во время сабмита задачи захватить версию Houdini из которого она создана без особых переписываний исходников?
Например, достаточно было бы параметра на AfanasyROP для кастомных аргументов которые добавляются в строку команды, потому что во время запуска созданной команды на рендер ноде я из Houdini переменные окружения передать не могу, а в команде получится обнанужить этот аргумент, использовать и дулаить, передав дальше.
Я ноду просмотрел, таких параметров не нашел пока. Какие есть еще варианты?
PS. Вообще-то нужна такая штука для всех поддерживаемых софтов. По крайней мере мне для 5шт.
Аватара пользователя
Timur
Site Admin
Сообщения: 178
Зарегистрирован: Вс июл 09, 2017 4:59 pm
Откуда: Королёв
Контактная информация:

Re: Как в afanasy передать версию?

Сообщение Timur »

Привет.

Вариантов передачи версии может быть много.
Я например, на студии сделал следущее.

У каждого процесса есть рабочий каталог (в любой ОС).
"Ярлычек" для 16ой гудини может содержать следущее:
cd /path/where16
houdini "$@"
Ваша команда houdini знает что в /path/where16 надо запускать 16ую, а, например в /path/where15 15ую версию.
Рабочий каталог наследуется сабмитилками, передаётся задаче и, в последствии, всем таскам.

Как по пусти вычислить версию тоже вариантов много.
Например у нас тоже есть что-то типа: call $PIPELINE_LOCATION/studio.env
Тот скипт просто ищет в рабочем каталоге напримр .settings/houdini.sh, который соурсит нужную гудини.
( а если не находит то ищет на папку выше, а если совсем не найдёт, то соурсит "дефолтную" )

Такой подход имеет ряд преимуществ.
/path/where16 может запросто быть проектом (/projects/PRJ_A)
ТД сетапит опреленные проекты на определенные версии софтов или даже части проектов (сцены, шоты).
И артист уже не сможет сделать в "не правильной" версии.
Тимур Хайрулин
CGRU 3.3.1 Ubuntu 22.04LTS, MS Windows 10 (clients only).
paulwinex
Сообщения: 83
Зарегистрирован: Пт июл 14, 2017 9:50 am

Re: Как в afanasy передать версию?

Сообщение paulwinex »

Я понял, спасибо. Сейчас я сделал иначе, потому что на стороне клиента не студия а фиг знает какой рабстол неизвестного юзера. Там я не контролирую ни установку ни проекты ни что-либо еще, разве что процесс старта через houdini.env да и то не факт. Могу только в самом гудини узнать что запустилось и сделать модфицированный cgru.

В данный момент я добавил в рут cgru скрипт setup_studio.sh который переопределяет запуск нужных софтов, например houdini или nuke. А дальше мегакостыль)
Я сделал колбеки на создание нод afanasy. В houdini я сделал init script для ноды afanasy, в Nuke это колбек onCreate. Эти скрипты заменяют стандартную команду afatasy.render() на мою функцию. Она делает тоже самое, но после генерации команды и до отправки её на сервер просто вставляет еще один аргумент в конце, типа такой

Код: Выделить всё

--version 16.5.123
В запускалке софта вместо дефолтной команды стартует питонский скрипт, который подчищает лишние аргументы, ищет нужную версию бинарника, объявляет все нужные переменные и стартует дефолтную запускалку с передачей всех аргументов.
Пока что получилось сделать без вмешательства в исходники, но, думаю, дальше будет сложней. Очень не хватает колбека для обработки команды перед отправкой.
Например чтобы сабмитилка вызывала какую-то функцию типа before_submit(cmd) для какойто кастомной доработки команды. Я понимаю что такому решению тут не очень-то место, но в сложных случаях было бы вполне удобно.
Аватара пользователя
Timur
Site Admin
Сообщения: 178
Зарегистрирован: Вс июл 09, 2017 4:59 pm
Откуда: Королёв
Контактная информация:

Re: Как в afanasy передать версию?

Сообщение Timur »

Может before_submit(cmd) и был бы полезен, но я бы так не усложнял.
Можно сделать проще.
Я бы довабил Afanasy ROP дополнительные параметры:
- Строку которую добваить к команде.
- Дополнительные environment переменные, которые добавлять перед запуском таска.
Так к команде можно довавить --version XXX для враппера.
А также во враппере можно смотреть например на HOU_VERSION=XXX.
В стандартный cgru-шный setup_houdini.sh можно тоже добавать поддержку переменной HOUDINI_LOCATION.
Тимур Хайрулин
CGRU 3.3.1 Ubuntu 22.04LTS, MS Windows 10 (clients only).
paulwinex
Сообщения: 83
Зарегистрирован: Пт июл 14, 2017 9:50 am

Re: Как в afanasy передать версию?

Сообщение paulwinex »

Всё выше перечисленное конечно логичней, я гдето на форуме тоже самое предлагал если не ошибаюсь.
Особенно дополнительные параметры для Rop и чтото аналогичное для всех остальных. Скажем, в houdini и nuke можно на ноды параметры добавить которые скрипт будет заполнять при создании. Но в maya или max так не получится, там просто окошко. Перехватывать факт его открытия уже костыльно получается.
Наиболее удобно было бы через переменную. Например CGRU_AFANASY_CMD_EXTRA_ARGS="--version 12345 --project path/to/prj"
Одинаково реализуемо во всех случаях. А в интерфейсе окон или нод автоматом заполнять параметры из этой переменной если она есть. Ну или можно вручную заполнить. Я не совсем однозначно придумал, ты всё равно лучше сделаешь)

Кстати в моем случае HOUDINI_LOCATION является неопределенным значением, на каждом хосте может быть свой. Потому и надо просто версию, а хост сам уже разбирается что где у него находится. Такой вот сетап с которым приходится разбираться.
Аватара пользователя
Timur
Site Admin
Сообщения: 178
Зарегистрирован: Вс июл 09, 2017 4:59 pm
Откуда: Королёв
Контактная информация:

Re: Как в afanasy передать версию?

Сообщение Timur »

Будет, будет что-нибудь будет. Уже многие просят. Я ещё тут спрошу\обсужу как делать буду.
Тимур Хайрулин
CGRU 3.3.1 Ubuntu 22.04LTS, MS Windows 10 (clients only).
Аватара пользователя
AlexeySmolenchuk
Сообщения: 40
Зарегистрирован: Пт июл 14, 2017 10:38 am

Re: Как в afanasy передать версию?

Сообщение AlexeySmolenchuk »

в самом HIP файле есть тесктовая строка с версией, в которой файл был сохранён.
для суперпростого сетапа(для домохозяек) я бы предложил просто считывать эту строчку.
paulwinex
Сообщения: 83
Зарегистрирован: Пт июл 14, 2017 9:50 am

Re: Как в afanasy передать версию?

Сообщение paulwinex »

Считвать чем? Версию надо знать еще на этапе подготовки запуска рендера. В любом случае я уже решил, возможно потом добавлю некоторые правки в репозитрий на ноде.
Аватара пользователя
Timur
Site Admin
Сообщения: 178
Зарегистрирован: Вс июл 09, 2017 4:59 pm
Откуда: Королёв
Контактная информация:

Re: Как в afanasy передать версию?

Сообщение Timur »

Я всегда версию из working directory брал.
Последний раз, когда мы это обсуждали, то решили добавить в сабмитилку:
- Установку environment variables (например HOUDINI_VERSION=16)
- Добавление дополнительных агрументов к команде (например --version=16)
- Оверрайд самой команды (например не просто hrender_af, а hrender_af_16)
Так уж сабмитилка может приспособиться под любой студийный сетап (проект, пайплайн).
И я планирую к 2.3.0 это сделать.
Если хотите, можете сами это сделать, что не сложно.
Тимур Хайрулин
CGRU 3.3.1 Ubuntu 22.04LTS, MS Windows 10 (clients only).
Аватара пользователя
AlexeySmolenchuk
Сообщения: 40
Зарегистрирован: Пт июл 14, 2017 10:38 am

Re: Как в afanasy передать версию?

Сообщение AlexeySmolenchuk »

Считвать чем?
Да грепнуть просто. Ну или в питоне открыть построчно сам хип. Запись о билде из которого сохранён хип где-то в начале файла.
Ответить