You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
Engine/Build/BatchFiles/Linux/Build.sh HostProjectEditor Linux Development -Project=/path/to/HostProject.uproject
104
104
```
105
105
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.
107
107
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.
@@ -140,6 +132,20 @@ If you only changed plugin C++ and want to skip the test pass, the editor `Build
140
132
141
133
## Troubleshooting / Advanced
142
134
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
+
143
149
### Build flags applied internally by `build_all.sh --engine`
144
150
145
151
Reference, in case you need to debug a per-dep failure or replicate the build manually:
0 commit comments