hellaenergy/o3de-experimental

Project ID: 233852

Description

O3DE experimental builds — Stage 1 migration work and structural changes that are not ready for the o3de-snapshot testers' channel. Don't enable this repo unless you know what you're getting.

Installation Instructions

Use hellaenergy/o3de-stabilization for end-user testing. This repo is for the packagers' own validation — RPMs here may have un-vetted -devel splits, system-library swaps, or other in-flight changes.

If you're here anyway (e.g. engine contributors validating Stage 1 migration work, or packagers debugging build issues):

sudo dnf copr enable hellaenergy/o3de-experimental sudo dnf install o3de2605

The o3de-dependencies repo auto-enables alongside this one (no separate dnf copr enable needed). Add the optional -devel subpackage if you need engine static archives for native C++ gem development:

sudo dnf install o3de2605-devel

What is this: O3DE experimental builds — Stage 1 system-library migration work (see BUNDLED_LIBRARIES.md in the source repo) and other structural changes that are not ready for the o3de-stabilization testers' channel. RPMs here graduate to o3de-stabilization once validated end-to-end.

The package follows a versioned-major naming convention (o3de2605 for the 26.05.x line, future o3de2610 for 26.10) installing to /opt/O3DE/<DISPLAY_VERSION>/, matching upstream's .deb and Windows .msi install layout. Multiple majors can be installed side-by-side. Each major's engine.json ships engine_name: "o3de" (matching upstream); the manifest at ~/.o3de/o3de_manifest.json is single-slot for active registration — switch via <install-prefix>/scripts/o3de.sh register --this-engine.

Subpackage layout — same as o3de-stabilization: main o3de2605 (runtime + project-build essentials, ~1.7 GB compressed); optional o3de2605-devel (~500 MB compressed, engine static archives for native C++ gems that static-link engine internals); optional o3de2605-debug (debug-config binaries — only built when --with debug is set, currently NOT activated in this channel). Project-build *-devel system packages pulled in via Recommends; opt out with --setopt=install_weak_deps=False.

Currently active in this channel:

  • Stage 1 14-pack -- engine links to / runtime-discovers system expat, freetype, liblz4, libpng, mikkelsen (libmikktspace.so.0), openexr (+ imath), poly2tri, lua (via lua-libs), zlib, assimp, sqlite-libs, libsamplerate, google-benchmark, vulkan-validation-layers instead of bundled copies. Full 14-pack now LIVE in o3de-stabilization as of 2026-05-14 (build 10460860 GREEN across F44 + rawhide + CS10). Find-shim pattern (direct find_path/find_library, no stock-cmake-include, real INTERFACE IMPORTED 3rdParty target -- keeps O3DE's runtime-dependency walker happy) is uniform across most of the swaps; vulkan_validation_layers is the exception (runtime-discovered Vulkan layer via VK_LAYER_PATH, no cmake-side dep at all). OpenEXR uses a two-shim variant (FindOpenEXR.cmake + FindImath.cmake) because the bundled FindOpenColorIO calls find_package(Imath) independently of OpenEXR.
  • Patch0012 v2 (AssetBuilder watchdog) -- child-side parent-death watchdog preventing orphan accumulation across AP crashes. Runtime-validated 2026-05-12 via kill-9 + orphan-count test. Upstream as o3de/o3de#19747; now also active in o3de-stabilization.
  • CS10 (CentOS Stream 10) chroot -- first-ever successful CS10 engine build 2026-05-12 (build 10450340) via gcc-toolset-15-libatomic-devel BR (gated on %if 0%{?rhel}). CS10 with_opts gap FULLY CLOSED 2026-05-14: experimental CS10 now runs 19 swaps (matches F44/rawhide); stabilization CS10 now runs 14 swaps (matches F44/rawhide). 17 of 19 experimental flags already validated end-to-end on builds 10456101 + 10457745 (the 14-pack + Stage 2 3-pack); the 2 newly-added experimental flags (system_googlebenchmark + system_vulkan_validation_layers) and the 6 newly-added stabilization flags (system_assimp, system_googlebenchmark, system_libsamplerate, system_lua, system_poly2tri, system_sqlite) will validate on their next triggered builds. All seven previously-missing packages confirmed available in CS10 base + AppStream + CRB + EPEL-10.
  • Stage 2 3-pack -- system_dxc + system_spirvcross + system_mcpp all active. First two are binary-shellout swaps (engine shells out to /usr/bin/dxc + /usr/bin/spirv-cross instead of bundled binaries); third is a library-link swap (engine #include <mcpp_lib.h> against Fedora's mcpp library). All three PoCs ✓ GREEN as of 2026-05-08; all three swaps active in this channel as of 2026-05-08. Underlying COPR packages (renamed 2026-05-08 to versioned-major form): o3de2605-dxc-spirv, o3de2605-spirv-cross, o3de2605-mcpp-az.
  • system_poly2tri (added 2026-05-07 via Patch0009 + Findpoly2tri-system.cmake) -- engine consumes poly2tri exclusively in Gems/PhysX/Core/ Editor's PolygonPrismMeshUtils (polygon-prism shape colliders); zero refs in core Code/. Fedora's poly2tri-devel ships from Mason Green's BSD-3-Clause original tree (license-clean, independent of the bundled fork's attribution issue). Patch0009 gates ly_associate_package(...) in PhysX{4,5} PAL_linux.cmake on LY_USE_SYSTEM_POLY2TRI; the find shim bridges <poly2tri.h> to /usr/include/poly2tri/poly2tri.h.
  • system_lua (activated 2026-05-07 via Patch0008) -- drops AzCore ScriptContext.cpp's redundant #include <Lua/lobject.h>. The only symbol consumed (LUAI_MAXALIGN) is already public Lua API via luaconf.h's transitive include from lauxlib.h, so dropping the include is behavior-preserving. Same patch submitted upstream as o3de/o3de PR #19733 (approved by nick-l-o3de 2026-05-07, awaiting maintainer merge); when that lands, our Patch0008 becomes redundant.
  • system_assimp (activated 2026-05-08) -- 5.4 to 6.0 major version bump; symbols + link-time API verified ahead of activation. Engine consumes assimp exclusively in Code/Tools/SceneAPI/ (asset-pipeline FBX importer). Tier 7 FBX-bake regression test (tests/asset-bake-test.sh) covers runtime behavior; first live run 2026-05-08 confirmed test infrastructure works end-to-end.
  • system_sqlite + system_libsamplerate (activated 2026-05-08) -- standard library-link Stage 1 swaps. SQLite: 29 sqlite3_* symbols all in Fedora 3.51.2; no extension API used. libsamplerate: lowest-risk swap (Linux PAL is a None stub, engine never calls src_* at runtime; static lib still satisfies the link).
  • o3de2605-cli PATH wrapper -- /usr/bin/o3de2605-cli forwards to /opt/O3DE/26.05.0/scripts/o3de.sh so the upstream Python CLI (project / gem / engine management, ~25 sub-commands) is reachable on $PATH.
  • Versioned multi-install architecture + devel split -- packages are o3deNNNN; main + -devel subpackage; runtime engine_name="o3de" for gem compat.
  • Patch0007 (libtiff C99 typedef migration in TIFFLoader.cpp + Code/Editor/Util/ImageTIF.cpp) -- required for any build against modern libtiff regardless of --with system_tiff state.

Stage 1 status of remaining bundles:

  • system_tiff -- OPTION C (Bundling Library Exception path, decided 2026-05-05). Patch attempt at narrow guard (commit cda6b7b) failed because CryCommon's own internal headers (Cry_ValidNumber.h's DoubleU64 macros) use uint64 directly, transitively included from EditorDefs.h before <tiffio.h> brings libtiff's typedef into scope. Reordering the includes ABI-mismatches at link time. Engine-wide CryCommon C99 migration ruled out as out-of-scope. Bundle stays.
  • googlebenchmark -- ACTIVATED in this channel 2026-05-11 (build 10444166 GREEN). Engine still ships AzTest + AzTestRunner + the googletest/gmock/gbench stack architecturally (the earlier "test-only dep we can drop" framing was wrong; see upstream PR #19738 close for the architectural redirect), but linkage now pulls Fedora's google-benchmark-devel (1.9.5) instead of the bundled fetch. gbench's API stable across 1.7.0 (engine pin) -> 1.9.5 (Fedora ship).

Stage 2 binary-only / DXC-class deps (sibling track to Stage 1; full set ✓ green and activated):

  • SPIRV-Cross -- o3de2605-spirv-cross-1.3.275.0-1.rev3 (PoC ✓ green 2026-05-07; engine-side glue activated same day; renamed from o3de-spirv-cross 2026-05-08 to mirror the engine package's o3deNNNN convention). License-clean rebuild from KhronosGroup at tag vulkan-sdk-1.3.275.0, Apache-2.0 OR MIT. 976KB compressed RPM ships /usr/bin/spirv-cross. Engine shells out to the binary at asset-build time; install-time symlink overlay routes the engine's expected Builders/SPIRVCross/spirv-cross path to /usr/bin/spirv-cross.
  • DXC -- o3de2605-dxc-spirv-1.8.2505.1-1.rev13 (PoC ✓ green 2026-05-08; engine-side glue activated same day; renamed from o3de-dxc-spirv end-of-day 2026-05-08). License-clean rebuild from o3de/DirectXShaderCompiler at tag release-1.8.2505.1-o3de. NCSA + Apache-2.0 (LLVM exception). 8.4MB compressed RPM ships /usr/bin/dxc, /usr/bin/dxsc, /usr/lib64/libdxcompiler.so. Engine shells out to dxc at shader-compile time; install-time symlink overlays route three engine-expected paths under Builders/DirectXShaderCompiler/{bin,lib}/ to the system locations.
  • mcpp -- o3de2605-mcpp-az-2.7.2-1.rev8 (PoC ✓ green 2026-05-08; engine-side glue activated same day; renamed from o3de-mcpp-az end-of-day 2026-05-08). First library-link variant of the Stage 2 pattern -- the engine #includes <mcpp_lib.h> and links libmcpp.so into its binaries at build time, so the install-overlay approach used for spirvcross/dxc does not apply. Real Findmcpp-system.cmake shim + Patch0006 cmake gate. License-clean rebuild of upstream mcpp 2.7.2 (BSD-2-Clause) + o3de/3p-package-source's _az.2 patch series. Both Stage 2 architectural variants are now proven in production engine builds.

Versioned-major naming: all three Stage 2 packages use the o3deNNNN-<dep> form. Future o3de2610-<dep> packages co-exist in the same o3de-dependencies COPR for the 26.10.x line; users can install o3de2605 and o3de2610 side-by-side, each with its own dep set. Mirrors postgresql10/postgresql11 in Fedora's main repo. Memory note in the source repo: project_o3de_3p_versioning_research.md.

Gems with system runtime dependencies: some o3de-extras gems (ROS 2 family, AudioEngineWwise, OpenXRVk, etc.) require external system runtimes the engine RPM does not bundle. Project Manager surfaces the requirement on each gem's information icon. See docs/GEMS_WITH_SYSTEM_DEPS.md for install paths and the project-build workflow.

Source + issues: https://github.com/nickschuetz/o3de-rpm and https://github.com/nickschuetz/o3de-rpm/issues

Active Releases

The following unofficial repositories are provided as-is by owner of this project. Contact the owner directly for bugs or issues (IE: not bugzilla).

Release Architectures Repo Download
Centos-stream 10 x86_64 [modified] (1)* Centos-stream 10 (2 downloads)
Fedora 44 x86_64 [modified] (45)* Fedora 44 (4 downloads)
Fedora rawhide x86_64 [modified] (3)* Fedora rawhide (1 downloads)

* Total number of downloaded packages.

Runtime Dependency List

The following repositories are used as runtime dependencies