お世話になっております。
InstalledBuildの成果物でクラッシュレポート付LinuxArm64のパッケージ作成時にエラーが発生します。
UATHelper: パッケージ化 (LinuxArm64): Stage Failed. Missing receipt ‘F:\Hoge\Engine\Binaries\LinuxArm64\CrashReportClient-LinuxArm64-Shipping.target’. Check that this target has been built.
情報として
1.InstalledBuildのLinuxでのパッケージ作成時は発生しません
(Engine\Binaries\LinuxにはCrashReportClient-{Platform}-Shipping.targetが存在
2.InstalledBuildのLinuxArm64でのパッケージ作成時はエラーが発生します。
(Engine\Binaries\LinuxArm64にはCrashReportClient-{Platform}-Shipping.targetが存在せず
3.InstalledBuildを使用しない、LinuxArm64でのパッケージ作成時はエラーが発生しません。
(Engine\Binaries\LinuxArm64にはCrashReportClient-{Platform}-Shipping.targetがパッケージ作成時に作成されます
動作的に、InstalledBuild時に該当ファイルが作成&コピーされていないのが問題のように見受けられます。
何か情報は有りますでしょうか。
[Attachment Removed]
再現手順
再現手順
1.PerforceからRelease-5.6.1を取得
(NuGet関連でエラーが出るので、UnrealEngine.csproj.propsに<NuGetAudit>false</NuGetAudit>を追加
2.Installed Buildを実行
RunUAT.bat BuildGraph^
-target=“Make Installed Build Win64”^
-script=“Engine\Build\InstalledEngineBuild.xml”^
-set:HostPlatformOnly=true^
-set:GameConfigurations=Development^
-set:WithWin64=true^
-set:WithLinux=true^
-set:WithLinuxArm64=true^
-set:WithDDC=false^
-set:WithWin64NoPCH=false
3.InstalledBuildのUnrealEditor.exeを起動してプロジェクトを作成(テストではFPS
4.編集 ⇒ プロジェクト設定 ⇒ 「クラッシュレポート機能を含む」を有効化
5.プラットフォーム ⇒ LinuxArm64 ⇒ プロジェクトをパッケージ化
エラー発生
UATHelper: パッケージ化 (LinuxArm64): Stage Failed. Missing receipt ‘F:\Hoge\Engine\Binaries\LinuxArm64\CrashReportClient-LinuxArm64-Shipping.target’. Check that this target has been built.
[Attachment Removed]
お世話になっております。
InstalledBuildにLinuxArm64用のCrashReportClient(Shipping)がデフォルトで含まれていないため、パッケージ作成時に必要な.targetファイルが存在しないことが原因です。
InstalledBuildを再作成する際に、Shipping構成を含めてください(GameConfigurationsの設定)。それでも解決しない場合は、InstalledEngineBuild.xmlを修正し、LinuxArm64用のCrashReportClientをビルドおよびステージング対象に明示的に追加してください。
もしくは回避策として、ソースビルドでCrashReportClient(LinuxArm64/Shipping)を手動でビルドし、生成されたファイルをInstalledBuildにコピーする方法もあります。
お手数ですが、よろしくお願いします。
[Attachment Removed]
お世話になっております。
xmlにこの二ステップに追加したら変わりがありますか?
LinuxArm64 / Shipping用のCrashReportClientを「ビルド」する既にあるWin64やLinux用CrashReportClientの設定の近くに
<Compile Target=“CrashReportClient” Platform=“LinuxArm64” Configuration=“Shipping” />
そして生成された .target(レシート)を Installed Build に「コピー」する他の *.target ファイルをコピーしている場所に、
<Copy File=“$(EngineDir)/Binaries/LinuxArm64/CrashReportClient-LinuxArm64-Shipping.target”
To=“$(InstalledDir)/Engine/Binaries/LinuxArm64/” />
で対応できるかと思います。もしまだ問題になっていたら教えてください。
お手数ですが、よろしくお願いします。
[Attachment Removed]
お世話になっております。
こちらのコードはQAが行なっていないため、自己責任で入れてご利用ください。
649行目の直後(650行目の直前)に、以下を追加してください。
<Node Name=“Build Tools LinuxArm64” Requires=“Update Version Files” >
<Compile Target=“CrashReportClient”
Platform=“LinuxArm64”
Configuration=“Shipping”
Tag=“build Tools LinuxArm64”
Arguments=“$(CRCTelemetryDefines) $(CRCDefines) $(ExtraCompileArgs)”/>
</Node>
そして1101行目を修正してください。
修正前
<Tag Files=“#UnrealGame LinuxArm64” Except=“#UnrealGame LinuxArm64 Unstripped” With=“#Installed Win64”/>
修正後
<Tag Files=“#UnrealGame LinuxArm64;build Tools LinuxArm64”
Except=“#UnrealGame LinuxArm64 Unstripped”
With=“#Installed Win64”/>
こちらは問題が再現していないため調整確認できていないですが、この二つの編集で解決できるかと思います。
お手数ですが、よろしくお願いします。
[Attachment Removed]
お世話になっております。
はい、ご認識のとおりです。
こちらの説明が不足しており、申し訳ありません。
ご指摘のとおり、CrashReportClient(LinuxArm64/Shipping)をCompileに追加するだけでは不十分で、build Tools LinuxArm64が#UnrealGame LinuxArm64 Strippedなどの最終的な集約タグから参照されていなかったため、BuildGraphのノードが実行されず、.targetファイルが生成されていませんでした。
#UnrealGame LinuxArm64 Strippedに;build Tools LinuxArm64を追加することでノードが実行され、CrashReportClient-LinuxArm64-Shipping.targetが生成されるようになり、クラッシュレポート機能を有効にした際のパッケージ作成エラーも解消されている認識です。
問題の切り分けと検証まで行っていただき、ありがとうございます。
ご共有いただいた内容で対応として妥当だと思います。
[Attachment Removed]
お世話になっております。
エンジンに含まれるかどうか僕が決められないですが、担当者に伝えて、検討していただけたいと思います。
とにかく今回の問題を解決できてよかったです!!
引き続きよろしくお願いします。
[Attachment Removed]
返答ありがとうございます。
>パッケージ作成時に必要な.targetファイルが存在しないことが原因です。
此方もその認識です。
>InstalledBuildを再作成する際に、Shipping構成を含めてください
Shippingを含めても作成されませんでした。
また、LinuxはShippingを含めない構成でも該当ファイルが生成されています。
>InstalledEngineBuild.xmlを修正し、LinuxArm64用のCrashReportClientをビルドおよびステージング対象に明示的に追加してください。
此方の手法について、具体的な方法を提示していただけるとありがたいです。
>もしくは回避策として、ソースビルドでCrashReportClient(LinuxArm64/Shipping)を手動でビルドし、生成されたファイルをInstalledBuildにコピーする方法もあります。
此方も検討しましたが、InstalledBuildのみで完結するのが望ましいです。
以上、よろしくお願いします。
[Attachment Removed]
返答ありがとうございます。
>LinuxArm64 / Shipping用のCrashReportClientを「ビルド」する既にあるWin64やLinux用CrashReportClientの設定の近くに
>そして生成された .target(レシート)を Installed Build に「コピー」する他の *.target ファイルをコピーしている場所に
修正テスト時のミスを防ぐため(此方での変更がそちらの意図しない場所に挿入されることを防ぐため)
上記のコードを挿入するInstalledEngineBuild.xmlのパスと行数を提示していただけますでしょうか。
[Attachment Removed]
返答ありがとうございます。
行数の指定は、UE5.7版のInstalledEngineBuild.xmlで合っていますでしょうか。
UE5.6版とは少し違いがあるようでしたが、UE5.7版で場所を確認できたので導入後テストを行ってみます。
しばらくお待ちください。
[Attachment Removed]
修正を導入してInstalledBuildを行ってみましたが
該当ファイルは作成されませんでした。
>こちらは問題が再現していないため
再現手順を行って、そちらでは該当のファイル(
Engine\Binaries\LinuxArm64\CrashReportClient-LinuxArm64-Shipping.target)
が、作成されているという事でしょうか。
[Attachment Removed]
追加の検証で
ログを見ると追加した「Build Tools LinuxArm64」が実行されていないようだったので
提示していただいた修正に加え
InstalledEngineBuild.xml:1030(UE5.6.1
#UnrealGame LinuxArm64 Stripped↑の部分を↓へ変更(Valueの末尾に「;build Tools LinuxArm64」を追加)することにより
#UnrealGame LinuxArm64 Stripped;#Build Tools LinuxArm64Build Tools LinuxArm64のビルドステージが追加され
> ****** [11/13] Build Tools LinuxArm64
InstalledBuildの成果物に下記が追加されることを確認しました。
> Engine\Binaries\LinuxArm64\CrashReportClient-LinuxArm64-Shipping.target
Packageの作成等のテストはまだですが、ひとまず共有させていただきます。
[Attachment Removed]
>Packageの作成等のテストはまだですが
再現手順でのPackage作成エラーは改善されている事が確認できました。
>↑の部分を↓へ変更(Valueの末尾に「;build Tools LinuxArm64」を追加)することにより
上記の修正による改善は妥当な物でしょうか。
[Attachment Removed]
返答ありがとうございます。
対応が妥当という事で安心しました。
ワークアラウンドとして、このまま使用させていただきます。
確認ですが、今回のLinuxArm64に対するInstalledEngineBuild.xmlへの対応は
今後、UE側に取り込まれるという認識でよろしいでしょうか。
[Attachment Removed]
返答ありがとうございます。
>エンジンに含まれるかどうか僕が決められないですが、担当者に伝えて、検討していただけたいと思います。
よろしくお願いします。
>とにかく今回の問題を解決できてよかったです!!
ありがとうございます。
問題が解決したため、これにてクローズとさせていただきます。
対応ありがとうございました。
[Attachment Removed]