Skip to content

Commit 352a9ea

Browse files
vivekgr92jonathanembleyriches
authored andcommitted
docs(linux): move runtime-staging step out of one-time setup
Per the second half of jonathanembleyriches's nitpick on linux_setup.md: setup_runtime_linux.sh is now invoked automatically by every per-dep build.sh and by build_and_test_linux.sh, so users never need to run it manually during normal setup or iteration. Keeping it as Step 3 of the one-time setup walkthrough was misleading. Removed it from the One-time setup section. Added a "How runtime staging works" subsection in Troubleshooting / Advanced that explains what the script does, when it auto-fires, and how to run it manually in the rare case you need to. Renumbered "Launch the editor" from step 4 to step 3. The brief mention is preserved at the end of step 2 for users who want the link to the explanation, but the action is gone.
1 parent d19deed commit 352a9ea

1 file changed

Lines changed: 16 additions & 10 deletions

File tree

docs/linux_setup.md

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -103,17 +103,9 @@ Engine/Build/BatchFiles/Linux/GenerateProjectFiles.sh -project=/path/to/HostProj
103103
Engine/Build/BatchFiles/Linux/Build.sh HostProjectEditor Linux Development -Project=/path/to/HostProject.uproject
104104
```
105105

106-
### 3. Stage runtime libs
106+
The third-party `.so` files (libmujoco, lib_coacd, libzmq) get symlinked into the plugin's `Binaries/Linux/` automatically by each per-dep `build.sh` and by `Scripts/build_and_test_linux.sh` — see [How runtime staging works](#how-runtime-staging-works) in Troubleshooting / Advanced if you need to do it manually.
107107

108-
UE on Linux doesn't auto-stage `RuntimeDependencies` for editor builds, and UBT's auto-computed RPATH for plugins symlinked outside the host project can resolve incorrectly. URLab ships a helper that symlinks the third-party `.so` files into the plugin's `Binaries/Linux/` so the loader finds them via `${ORIGIN}` (which UBT does add correctly):
109-
110-
```bash
111-
"$URLAB_ROOT/Scripts/setup_runtime_linux.sh"
112-
```
113-
114-
It's idempotent and warn-skips when `Binaries/Linux/` doesn't exist yet (first-time fresh checkout). Each per-dep `build.sh` and `Scripts/build_and_test_linux.sh` invoke it automatically too, so you usually don't run it directly.
115-
116-
### 4. Launch the editor
108+
### 3. Launch the editor
117109

118110
```bash
119111
DISPLAY=:1 "$UE_ROOT/Engine/Binaries/Linux/UnrealEditor" /path/to/HostProject.uproject
@@ -140,6 +132,20 @@ If you only changed plugin C++ and want to skip the test pass, the editor `Build
140132

141133
## Troubleshooting / Advanced
142134

135+
### How runtime staging works
136+
137+
UE on Linux doesn't auto-stage `RuntimeDependencies` for editor builds, and UBT's auto-computed RPATH for plugins symlinked outside the host project can resolve incorrectly. URLab works around this by symlinking the third-party `.so` files into the plugin's `Binaries/Linux/` so the loader resolves them via `${ORIGIN}` (which UBT does add correctly).
138+
139+
The helper `Scripts/setup_runtime_linux.sh` does the symlinking. It's idempotent and warn-skips when `Binaries/Linux/` doesn't exist yet (first-time fresh checkout, before the plugin .so has been built). You **don't normally call it directly** — both `build_all.sh` (via each per-dep `build.sh`) and `Scripts/build_and_test_linux.sh` invoke it after their respective build steps.
140+
141+
You'd run it manually only if you fiddled with `third_party/install/<pkg>/lib/` outside of those scripts and need to re-sync the symlinks:
142+
143+
```bash
144+
"$URLAB_ROOT/Scripts/setup_runtime_linux.sh"
145+
```
146+
147+
For packaged (non-editor) builds, `RuntimeDependencies.Add("$(BinaryOutputDir)/...", LibFile, NonUFS)` from `URLab.Build.cs` stages the libs through `BuildCookRun`, and UBT's `${ORIGIN}` RPATH resolves them — no manual step needed.
148+
143149
### Build flags applied internally by `build_all.sh --engine`
144150

145151
Reference, in case you need to debug a per-dep failure or replicate the build manually:

0 commit comments

Comments
 (0)