Skip to content

Feat: Misc Update#421

Merged
FlyAndNotDown merged 11 commits into
ExplosionEngine:masterfrom
FlyAndNotDown:master
Jun 18, 2026
Merged

Feat: Misc Update#421
FlyAndNotDown merged 11 commits into
ExplosionEngine:masterfrom
FlyAndNotDown:master

Conversation

@FlyAndNotDown

Copy link
Copy Markdown
Member

No description provided.

Fix bugs surfaced while expanding Common/Math test coverage; most were
latent because the affected template interfaces were never instantiated:

- Quaternion::Dot used '*' instead of '+' between terms
- Quaternion::operator*=(T) was wrongly const; operator*=(Quaternion) used
  'this * rhs' instead of '*this * rhs'
- Quaternion lacked CastTo, which Transform::CastTo depends on
- Rect::Size declared the diagonal as Vec<T,3> (a Vec<T,2> expression)
- Color::ToHexString streamed uint8_t as characters; padded hex now
- ColorConsts black/red/green/blue used channel/alpha value 1 instead of 255
- Transform::TransformPosition(Vec4) passed a const lvalue to FromColVecs,
  which only accepts an rvalue Vec<T,4>
- ViewTransform::LookAt returned Transform<T> through an explicit ctor
- Vector: renamed misspelled const negaUintZ to negaUnitZ

Reorganize MathTest.cpp by class and add cases covering the previously
untested interfaces across every Math type.

(cherry picked from commit 8c3383b)
Teach build_recipes.py to recognize Linux-x86_64 as a host (it used to
sys.exit on Linux) and add Linux-x86_64 to the platforms list of every
recipe that can target it: assimp, clipp, debugbreak, libclang, qt and
dxc. molten-vk stays macOS-only.

Verified on Linux/gcc-13/x86_64 via conan create: clipp, debugbreak,
assimp, libclang and qt all build, package and (where applicable) pass
their test_package. dxc also gets its packaging fixed -- package() now
copies installed/lib on Linux as well as macOS, so libdxcompiler.so is
shipped (previously only Windows/macOS were handled, leaving the Linux
package without the library it declares). The dxc Linux build itself is
not yet verified end-to-end (LLVM-scale source build); the packaging
change mirrors the macOS path.
Add an ubuntu-latest leg to both the Build (engine) and Publish Conan
Recipes workflows so Linux is exercised in CI alongside Windows and
macOS, matching the recipes that now declare Linux-x86_64.

The engine's own Linux support is not yet verified, so the Build matrix
sets fail-fast: false to keep the Linux leg from cancelling the Windows
and macOS legs. Publish already had fail-fast: false.

README updated to list Linux among the supported platforms and as a
publish target.
The Qt prebuilt needs GL dev files for CMake's FindOpenGL (Qt6::Gui pulls in
WrapOpenGL) at configure time, plus QtWebEngine's Chromium runtime libs to load
libQt6WebEngineCore. Hosted runners ship only the GL runtime libraries, so the
qt recipe's test_package failed to configure (and would fail to run) on Linux.

Install libgl1-mesa-dev/libglu1-mesa-dev on both the build and publish Linux
legs; publish additionally installs libnss3/libnspr4/libxkbfile1/libasound2t64
for the WebEngine smoke test. Run that test headlessly from the test_package
itself via QT_QPA_PLATFORM=offscreen and QTWEBENGINE_DISABLE_SANDBOX=1.
The skip-existing pre-check treated 'conan graph info' binary state Cache as
"already on remote", but Cache means the binary is in the local cache and, once
the cache resolves a recipe, graph info never even queries the remote. So a
recipe built locally was reported as published and, under --upload, parked in
the present bucket and never uploaded.

Resolve the recipe revision and package id via graph info, then ask the local
cache and the remote separately (via 'conan list') whether that exact binary
exists. A recipe found on the remote is skipped and not re-uploaded; one found
only locally skips the rebuild but is still uploaded so the local binary reaches
the remote; anything else is built. Any uncertainty falls through to a build.
…onfig

Two Linux-only configure failures:

- Editor only searched for npm.cmd/npm without guarding the platform. On WSL the
  PATH leaks Windows' npm.cmd, which sh cannot execute ("Unterminated quoted
  string"). Look up npm.cmd on Windows only; other platforms use plain npm.

- CMAKE_MAP_IMPORTED_CONFIG_* mapped the non-Release configs to "Release" with no
  empty (suffix-less) fallback, so CMake refused the configuration-less
  IMPORTED_LOCATION that FindOpenGL sets on OpenGL::OpenGL / OpenGL::GLX, failing
  generate with "IMPORTED_LOCATION not set ... configuration Debug". Append the
  empty element so conan's Release artifacts are still preferred while system
  imported targets keep resolving.
- Add missing <cmath>/<algorithm> includes that MSVC pulled in transitively
- Undef GCC's predefined bare `linux` macro so the platform enumerator stays valid
- Enable CMAKE_POSITION_INDEPENDENT_CODE so static libs link into shared ones on ELF
- Feed libclang the host GCC system include dirs (conan libclang ships no builtin
  headers) and fix the dead `#elif DPLATFORM_LINUX` typo in MirrorTool
- Qualify same-named return types (Runtime::EventsObserverDyn/Observer/PlayStatus)
  to avoid GCC -Wchanges-meaning, and make Scene.h explicit specializations inline
  instead of the non-standard `static`
- Cast to qint64 in Qt JSON serializer to dodge the int64_t ambiguity on LP64
- Name the current thread via pthread_self() in NamedThread to fix the data race
  that segfaulted Runtime.Test
The assimp recipe pinned zlib to the exact version 1.3.1, while the rest
of the dependency graph requires zlib via the range [>=1.3.1 <2]. Now that
conancenter publishes zlib 1.3.2, that range resolves to 1.3.2 and conflicts
with assimp's hard pin, breaking 'conan install' at CMake configure time.
Use the same range so assimp follows the graph's resolution.
xorg/system (pulled in transitively by Qt on Linux) declares a long list
of X11 dev packages as system requirements. Conan's default package_manager
mode is 'check', so it errored at configure time instead of installing them.
Set tools.system.package_manager:mode=install (with sudo) in global.conf on
the Linux leg so Conan installs them via apt.
@FlyAndNotDown FlyAndNotDown merged commit be4e51e into ExplosionEngine:master Jun 18, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant