

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为其创建 conda 构建配方 Blender
<a name="create-conda-recipe-blender"></a>

您可以使用不同的应用程序来创建 conda 构建配方。 Blender可以免费使用，使用 conda 打包也很简单。Blender基金会为多个操作系统提供[应用程序档案](https://download.blender.org/release/Blender4.2/)。我们创建了一个使用 Windows .zip 和 Linux .tar.xz 文件的示例 conda 构建配方。在本节中，学习如何使用 [Blender4.2 conda 构建配方](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/blender-4.2)。

d [eadline-cloud.yaml](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/blender-4.2) 文件指定了用于向 Deadline Cloud 提交包任务的 conda 平台和其他元数据。此配方包括本地源存档信息，以演示其工作原理。linux-64 conda 平台设置为内置默认作业提交，以匹配最常见的配置。deadline-cloud.yaml 看起来类似于以下内容：

```
condaPlatforms:
  - platform: linux-64
    defaultSubmit: true
    sourceArchiveFilename: blender-4.2.1-linux-x64.tar.xz
    sourceDownloadInstructions: 'Run "curl -LO https://download.blender.org/release/Blender4.2/blender-4.2.1-linux-x64.tar.xz"'
  - platform: win-64
    defaultSubmit: false
    sourceArchiveFilename: blender-4.2.1-windows-x64.zip
    sourceDownloadInstructions: 'Run "curl -LO https://download.blender.org/release/Blender4.2/blender-4.2.1-windows-x64.zip"'
```

查看`recipe`目录中的文件。食谱的元数据位于 recipe/reci [pe.yaml](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/blender-4.2/recipe/recipe.yaml) 中。您还可以阅读 conda build [meta.yaml](https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html) 文档以了解更多信息，例如该文件如何成为生成 YAML 的模板。该模板仅用于指定一次版本号，并根据操作系统提供不同的值。

您可以查看中选定的构建选项，`meta.yaml`以关闭各种二进制文件重定位和动态共享对象 (DSO) 链接检查。这些选项控制软件包安装到任何目录前缀的 conda 虚拟环境中的工作方式。默认值简化了将每个依赖库打包成单独的包的过程，但是在对应用程序进行二进制重新打包时，需要对其进行更改。

如果您要打包的应用程序需要额外的依赖库，或者您要单独打包应用程序的插件，则可能会遇到 DSO 错误。当依赖关系不在需要它的可执行文件或库的库的库搜索路径中时，就会发生这些错误。安装在系统上时，应用程序依赖库位于全局定义的路径中`/usr/lib`，例如`/lib`或。但是，由于 conda 虚拟环境可以放置在任何地方，因此没有绝对的使用路径。Conda 使用相对的 RPATH 功能（两者Linux兼而有之macOS）来处理这个问题。有关更多信息，请参阅有关[使软件包可重定位的](https://docs.conda.io/projects/conda-build/en/latest/resources/make-relocatable.html) conda 构建文档。

Blender不需要任何 RPATH 调整，因为在构建应用程序存档时就考虑到了这一点。对于确实需要它的应用程序，你可以使用与 conda build 相同的工具：`patchelf`在 Linux 和更高版本`install_name_tool`上macOS。

在软件包构建过程中，运行 [build.sh](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/blender-4.2/recipe/build.sh) 或 [build\$1win.sh](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/blender-4.2/recipe/build_win.sh)（由调用`bld.bat`）脚本将文件安装到使用软件包依赖关系准备的环境中。这些脚本复制安装文件，从中`$PREFIX/bin`创建符号链接并设置激活脚本。开启Windows，它不创建符号链接，而是将 Blender 目录添加到激活脚本中的 PATH 中。

在 con `cmd.exe` da 构建配方中，我们使用.bat 文件来`bash`代替.bat 文件，因为这样可以提高构建脚本的一致性。Windows有关在上使用的`bash`提示，请参阅 De [adline Cloud 开发者指南](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/what-is-a-deadline-cloud-workload.html#workload-portability)关于工作负载可移植性的建议。Windows如果你已经安装了 [git fo Windows](https://gitforwindows.org/) r 来克隆 [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/)git 存储库，那么你已经可以访问了`bash`。

[conda 构建环境变量](https://docs.conda.io/projects/conda-build/en/latest/user-guide/environment-variables.html)文档列出了可在生成脚本中使用的值。这些值包括`$SRC_DIR`源存档数据、`$PREFIX`安装目录、`$RECIPE_DIR`访问配方中的其他文件、软件包名称`$PKG_NAME`和`$PKG_VERSION`版本以及目标 conda 平台`$target_platform`的值。

## 提交 Blender 4.2 软件包任务
<a name="s3-channel-build-blender"></a>

您可以构建自己的 Blender 4.2 conda 包来渲染作业，方法是下载Blender存档，然后将作业提交到包构建队列。队列将任务发送到关联队列以构建软件包并重新索引 conda 频道。

[这些说明使用兼容 bash 的 shell 中的 git 来获取 OpenJD 包构建任务，并从 Deadline Cloud 示例存储库中获取 conda 配方。GitHub](https://github.com/aws-deadline/deadline-cloud-samples)您需要以下项目：
+ 如果你使用的是Windows，则在安装 git 时会安装一个 bash 版本 git BASH。
+ 你必须安装 De [adline Cloud CLI](https://github.com/aws-deadline/deadline-cloud)。
+ 您必须登录 De [adline Cloud 监控器](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/working-with-deadline-monitor.html)。

1. 使用以下命令打开 Deadline Cloud 配置 GUI，然后将默认服务器场和队列设置为包构建队列。

   ```
   deadline config gui
   ```

1. 使用以下命令克隆 Deadline Cloud 示例GitHUb存储库。

   ```
   git clone https://github.com/aws-deadline/deadline-cloud-samples.git
   ```

1. 切换到`conda_recipes`目录中的`deadline-cloud-samples`目录。

   ```
   cd deadline-cloud-samples/conda_recipes
   ```

1. 运行名为的脚本`submit-package-job`。该脚本提供了首次运行脚本时的下载Blender说明。

   ```
   ./submit-package-job blender-4.2/
   ```

1. 按照说明进行下载Blender。存档文件后，再次运行`submit-package-job`脚本。

   ```
   ./submit-package-job blender-4.2/
   ```

提交作业后，使用 Deadline Cloud 监控器查看作业运行时的进度和状态。

监视器的左下角显示了任务的两个步骤，即生成软件包，然后重新编制索引。右下角显示了每项任务的各个步骤。在此示例中，每个任务都有一个步骤。

![\[Deadline Cloud 监视器显示构建Blender软件包的任务的进度和状态。\]](http://docs.aws.amazon.com/zh_cn/deadline-cloud/latest/developerguide/images/Conda-Figure3.png)


监视器的左下角是工作的两个步骤，即构建软件包，然后重新索引 conda 频道。右下角是每个步骤的单独任务。在此示例中，每个步骤只有一个任务。

当您右键单击包构建步骤的任务并选择 “**查看日志**” 时，监视器会显示会话操作列表，显示任务在工作器上的计划方式。这些操作是：
+ **同步附件**-此操作复制输入作业附件或装载虚拟文件系统，具体取决于作业附件文件系统使用的设置。
+ **启动 Conda** — 此操作来自创建队列时默认添加的队列环境。该作业没有指定任何 conda 软件包，因此它可以快速完成并且不会创建 conda 虚拟环境。
+ La@@ **unch CondaBuild Env** — 此操作可创建自定义 conda 虚拟环境，其中包括构建 conda 包和重新索引频道所需的软件。它从 [conda-forge 频道](https://conda-forge.org/)安装。
+ **任务运行**-此操作生成Blender包并将结果上传到 Amazon S3。

操作运行时，它们会以结构化格式向 Amazon 发送日志 CloudWatch。作业完成后，选择 “**查看所有任务的**日志” 以查看有关作业运行环境的设置和拆除的其他日志。

# 使用 Blender 4.2 渲染作业测试你的软件包
<a name="s3-channel-submit-job"></a>

在构建 Blender 4.2 包并将生产队列配置为使用 S3 conda 通道后，您可以提交作业以使用该包进行渲染。如果你没有Blender场景，可以从[Blender演示文件](https://www.blender.org/download/demo-files)页面下载 Blender 3.5-Cozy Kitchen 场景。

您之前下载的 Deadline Cloud 示例GitHub存储库包含一个使用以下命令渲染Blender场景的示例作业：

```
deadline bundle submit blender_render \
     -p CondaPackages=blender=4.2 \
     -p BlenderSceneFile=/path/to/downloaded/blender-3.5-splash.blend \
     -p Frames=1
```

你可以使用 Deadline Cloud 监控器来跟踪你的工作进度：

1. 在监视器中，为您提交的作业选择任务，然后选择查看日志的选项。

1. 在日志视图的右侧，选择 “**启动 Conda** 会话” 操作。

你可以看到，该操作在为队列环境配置的两个 conda 通道中搜索了 Blender 4.2，并且它在 S3 通道中找到了软件包。