HydraIssues

hydraunrealengine cannot package a Blueprint-only project that enables a code plugin such as OpenXR
open bug Project: hydraunrealengine Reporter: cederik 1 Sep 2026 08:20

Description

Implementation update 2026-09-15: v1.2.2 published; original reproduction still pending

Child #746 is complete: the shared normal packaging path adds UAT -build, builds explicit C++ editor targets before cooking, and delegates generated Blueprint/plugin targets to UAT. Published v1.2.2, source ad76aad; tests and Windows CI pass. A real isolated C++ template Win64 build/cook/upload succeeded on Fluffy's now-installed UE5.7.4.

This was a C++ template, not the original Blueprint-only OpenXR reproduction below. Keep #636 OPEN until that exact case is rebuilt with the published tool and evidence recorded. The deployed template Linux baseline remains UE5.7.3. See https://github.com/cederikdotcom/hydraunrealengine/blob/master/docs/runbooks/runbook.md .

Original report follows.

Found while packaging the first hydragon build on fluffy-dumpling-87, 2026-09-01.

The problem

hydraunrealengine package cannot package a Blueprint-only Unreal project that enables a plugin with C++ modules. The OpenXR plugin is such a plugin, so this hits every VR project we will ever build.

Reproduce, on fluffy with UE 5.7:

  1. Copy UE_5.7\Templates\TP_VirtualRealityBP to a project folder. It has no Source\ directory and enables OpenXR, OpenXREyeTracker and OpenXRHandTracking.
  2. hydraunrealengine package <project>.uproject --platform Win64 --config Development --output C:\Builds\hydragon

Preflight passes and the engine is detected correctly (5.7.3). Then UAT says:

hydragon.uproject is has no code, but is being treated as a code-based project
for platforms Android, IOS, Linux, Mac, TVOS, Win64 because: OpenXR plugin is enabled.
Creating temporary .Target.cs files.
********** COOK COMMAND STARTED **********
System.IO.DirectoryNotFoundException: Could not find a part of the path
'...\Binaries\Win64\hydragonEditor.target'.

--no-compile does not help. It adds -nocompile -nocompileeditor (pkg/uat/uat.go:60), and the cook still needs a built editor target receipt, so it fails identically.

Cause

The command hydraunrealengine builds is:

RunUAT.bat BuildCookRun -project=... -targetplatform=Win64 -clientconfig=Development
  -cook -stage -pak -archive -archivedirectory=... -prereqs -nodebuginfo -utf8output

There is no -build. That is correct for a pure Blueprint project, because there is nothing to build. It is wrong as soon as a code plugin promotes the project to code-based, because then UAT wants target receipts that only a build produces.

Adding -build gets past it.

What to do

Give package a way to build. Options, roughly in order of preference:

  1. Detect it. Read the .uproject plugins, and if any enabled plugin has C++ modules while the project has no Source\, add -build automatically. This is the behaviour a creator expects: it just works.
  2. Add an explicit --build flag, and say in the error message that a code plugin was found so --build is needed.
  3. At minimum, catch this failure and print the reason. The current output makes a creator read a .NET stack trace to learn that enabling OpenXR changed how their project is treated.

Whichever way, --no-compile should stop being offered as the answer for this case, because it makes it worse.

Why it matters now

Every hydragon build hits this, and so will every other VR project we package. It is also the first thing a creator meets if they enable OpenXR, so it is an onboarding problem as much as a tooling one.

Related: #615 hydragon, #622, #634.

Sub-issues (1)

closed #746 HydraUnrealEngine: own C++ build preparation and native Linux package delivery