Skip to content

Conversation

@SigmaSquadron
Copy link
Contributor

@SigmaSquadron SigmaSquadron commented Jul 4, 2025

Updates OpenMW to the latest major version, 0.49. This also required an update to MyGUI, so I ended up adopting that package. It also adds collada-dom back to Nixpkgs, as it is now a required dependency for OpenMW.

Closes #422453, closes #314030, closes #339058, reverts #290366, closes #326874, closes #410968, closes #434886.

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • Nixpkgs 25.11 Release Notes (or backporting 25.05 Nixpkgs Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
  • NixOS 25.11 Release Notes (or backporting 25.05 NixOS Release notes)
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md, pkgs/README.md, maintainers/README.md and other contributing documentation in corresponding paths.

Add a 👍 reaction to pull requests you find important.

@SigmaSquadron SigmaSquadron requested a review from abbradar July 4, 2025 23:59
@SigmaSquadron
Copy link
Contributor Author

cc @marius851000. Please request a new invite to the NixOS GitHub org so you can be requested for reviews.

@nixpkgs-ci nixpkgs-ci bot added 6.topic: games Gaming on NixOS 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. 10.rebuild-darwin: 1-10 This PR causes between 1 and 10 packages to rebuild on Darwin. labels Jul 5, 2025
@SigmaSquadron SigmaSquadron force-pushed the push-mysovyvvvsrm branch 2 times, most recently from 0b7f5aa to c822d68 Compare July 5, 2025 04:23
@SigmaSquadron SigmaSquadron added the 0.kind: package adoption Requests or PRs for adopting packages that have no maintainers label Jul 5, 2025
@marius851000
Copy link
Contributor

Compilation fail on my side, with Linux NixOS on x86-64

Running phase: qtPreHook
@nix { "action": "setPhase", "phase": "qtPreHook" }
Running phase: unpackPhase
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking source archive /nix/store/19gw05klgwc0fxn72nspi15m7pqahvma-source
source root is source
Running phase: patchPhase
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: configurePhase
@nix { "action": "setPhase", "phase": "configurePhase" }
fixing cmake files...
cmake flags: -DCMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY=OFF -DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DCMAKE_INSTALL_LOCALEDIR=/nix/store/32a4vplbk2bzzz1mgpdyzxdjb8jwh49j-openmw-0.49.0/share/locale -DCMAKE_INSTALL_LIBEXECDIR=/nix/store/32a4vplbk2bzzz1mgpdyzxd>
-- The C compiler identification is GNU 14.3.0
-- The CXX compiler identification is GNU 14.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /nix/store/pbqah1qk4b5y14fqinr1h8zvhqy71v81-gcc-wrapper-14.3.0/bin/gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /nix/store/pbqah1qk4b5y14fqinr1h8zvhqy71v81-gcc-wrapper-14.3.0/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring OpenMW...
-- Found OpenGL: /nix/store/3cic5m22knb2y20fb90y0l0r8sw41mdk-libglvnd-1.7.0/lib/libOpenGL.so
-- Found LZ4: /nix/store/f74v77dg03g4xakb6sff4bcr82vnqawk-lz4-1.10.0-lib/lib/liblz4.so
CMake Error at /nix/store/vi1g8i1qi7xhfs6a5bvpiw2l3hz38cbd-qtbase-5.15.17-dev/lib/cmake/Qt5/Qt5Config.cmake:28 (find_package):
  By not providing "FindQt5LinguistTools.cmake" in CMAKE_MODULE_PATH this
  project has asked CMake to find a package configuration file provided by
  "Qt5LinguistTools", but CMake did not find one.

  Could not find a package configuration file provided by "Qt5LinguistTools"
  with any of the following names:

    Qt5LinguistToolsConfig.cmake
    qt5linguisttools-config.cmake

  Add the installation prefix of "Qt5LinguistTools" to CMAKE_PREFIX_PATH or
  set "Qt5LinguistTools_DIR" to a directory containing one of the above
  files.  If "Qt5LinguistTools" provides a separate development package or
  SDK, be sure it has been installed.
Call Stack (most recent call first):
  CMakeLists.txt:254 (find_package)


-- Configuring incomplete, errors occurred!

(as a result of running nix shell github:SigmaSquadron/NixPkgs/push-mysovyvvvsrm#openmw and then nix log /nix/store/q9j542hh61r290znmvkm11y8kvvxag6m-openmw-0.49.0.drv)

And let me check that NixOS org. Don’t even remember what it’s used for.

@keenanweaver
Copy link
Member

Yep, seeing the same here.

nixpkgs-review result for #422562

Generated using nixpkgs-review-gha

Command: nixpkgs-review pr 422562

Logs: https://github.com/keenanweaver/nixpkgs-review-gha/actions/runs/16087852553


x86_64-linux

❌ 5 packages failed to build:
  • openmw
  • openmw-tes3mp
  • portmod
  • portmod.dist
  • stuntrally
✅ 1 package built:
  • mygui

Error logs: `x86_64-linux`
openmw
CMake Error at /nix/store/vi1g8i1qi7xhfs6a5bvpiw2l3hz38cbd-qtbase-5.15.17-dev/lib/cmake/Qt5/Qt5Config.cmake:28 (find_package):
  By not providing "FindQt5LinguistTools.cmake" in CMAKE_MODULE_PATH this
  project has asked CMake to find a package configuration file provided by
  "Qt5LinguistTools", but CMake did not find one.

Could not find a package configuration file provided by "Qt5LinguistTools"
with any of the following names:

Qt5LinguistToolsConfig.cmake
qt5linguisttools-config.cmake

Add the installation prefix of "Qt5LinguistTools" to CMAKE_PREFIX_PATH or
set "Qt5LinguistTools_DIR" to a directory containing one of the above
files. If "Qt5LinguistTools" provides a separate development package or
SDK, be sure it has been installed.
Call Stack (most recent call first):
CMakeLists.txt:254 (find_package)

-- Configuring incomplete, errors occurred!

stuntrally
      |                       ^~~~~~~~~~~~~~~
make[2]: *** [source/CMakeFiles/stuntrally.dir/build.make:144: source/CMakeFiles/stuntrally.dir/ogre/BaseApp_Create.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /build/source/source/ogre/common/MessageBox/MessageBox.h:13:
/build/source/source/ogre/common/MessageBox/BaseLayout.h: In instantiation of 'T* wraps::BaseLayout::_createFakeWidget(MyGUI::Widget*) [with T = MyGUI::Widget]':
/build/source/source/ogre/common/MessageBox/BaseLayout.h:124:53:   required from here
  124 |                                                 mMainWidget = _createFakeWidget(_parent);
      |                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/build/source/source/ogre/common/MessageBox/BaseLayout.h:212:86: error: cannot convert 'std::string_view' {aka 'std::basic_string_view'} to 'const std::string&' {aka 'const std::__cxx11::basic_string&'}
  212 |                         return static_cast(_createFakeWidgetT(T::getClassTypeName(), _parent));
      |                                                                   ~~~~~~~~~~~~~~~~~~~^~
      |                                                                                      |
      |                                                                                      std::string_view {aka std::basic_string_view}
/build/source/source/ogre/common/MessageBox/BaseLayout.h:215:70: note:   initializing argument 1 of 'MyGUI::Widget* wraps::BaseLayout::_createFakeWidgetT(const std::string&, MyGUI::Widget*)'
  215 |                 MyGUI::Widget* _createFakeWidgetT(const std::string& _typeName, MyGUI::Widget* _parent)
      |                                                   ~~~~~~~~~~~~~~~~~~~^~~~~~~~~
make[2]: *** [source/CMakeFiles/stuntrally.dir/build.make:192: source/CMakeFiles/stuntrally.dir/ogre/CGui.cpp.o] Error 1
make[2]: *** [source/CMakeFiles/stuntrally.dir/build.make:176: source/CMakeFiles/stuntrally.dir/ogre/CGame.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:322: source/CMakeFiles/stuntrally.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

aarch64-linux

❌ 4 packages failed to build:
  • openmw
  • portmod
  • portmod.dist
  • stuntrally
✅ 1 package built:
  • mygui

Error logs: `aarch64-linux`
openmw
CMake Error at /nix/store/7rikqqq1ypk7789x7zy4kaimiykyv4lf-qtbase-5.15.17-dev/lib/cmake/Qt5/Qt5Config.cmake:28 (find_package):
  By not providing "FindQt5LinguistTools.cmake" in CMAKE_MODULE_PATH this
  project has asked CMake to find a package configuration file provided by
  "Qt5LinguistTools", but CMake did not find one.

Could not find a package configuration file provided by "Qt5LinguistTools"
with any of the following names:

Qt5LinguistToolsConfig.cmake
qt5linguisttools-config.cmake

Add the installation prefix of "Qt5LinguistTools" to CMAKE_PREFIX_PATH or
set "Qt5LinguistTools_DIR" to a directory containing one of the above
files. If "Qt5LinguistTools" provides a separate development package or
SDK, be sure it has been installed.
Call Stack (most recent call first):
CMakeLists.txt:254 (find_package)

-- Configuring incomplete, errors occurred!

stuntrally
/nix/store/kcrcq0nd1lj8yqsdxzsvqpij2vvj2dp3-mygui-3.4.3/include/MYGUI/MyGUI_Delegate.h:329:23: note: declared here
  329 |                 using CMultiDelegate0 MYGUI_OBSOLETE("use : MyGUI::delegates::MultiDelegate<>") = MultiDelegate<>;
      |                       ^~~~~~~~~~~~~~~
In file included from /build/source/source/ogre/common/MessageBox/MessageBox.h:13:
/build/source/source/ogre/common/MessageBox/BaseLayout.h: In instantiation of 'T* wraps::BaseLayout::_createFakeWidget(MyGUI::Widget*) [with T = MyGUI::Widget]':
/build/source/source/ogre/common/MessageBox/BaseLayout.h:124:53:   required from here
  124 |                                                 mMainWidget = _createFakeWidget(_parent);
      |                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/build/source/source/ogre/common/MessageBox/BaseLayout.h:212:86: error: cannot convert 'std::string_view' {aka 'std::basic_string_view'} to 'const std::string&' {aka 'const std::__cxx11::basic_string&'}
  212 |                         return static_cast(_createFakeWidgetT(T::getClassTypeName(), _parent));
      |                                                                   ~~~~~~~~~~~~~~~~~~~^~
      |                                                                                      |
      |                                                                                      std::string_view {aka std::basic_string_view}
/build/source/source/ogre/common/MessageBox/BaseLayout.h:215:70: note:   initializing argument 1 of 'MyGUI::Widget* wraps::BaseLayout::_createFakeWidgetT(const std::string&, MyGUI::Widget*)'
  215 |                 MyGUI::Widget* _createFakeWidgetT(const std::string& _typeName, MyGUI::Widget* _parent)
      |                                                   ~~~~~~~~~~~~~~~~~~~^~~~~~~~~
make[2]: *** [source/CMakeFiles/stuntrally.dir/build.make:176: source/CMakeFiles/stuntrally.dir/ogre/CGame.cpp.o] Error 1
make[2]: *** [source/CMakeFiles/stuntrally.dir/build.make:192: source/CMakeFiles/stuntrally.dir/ogre/CGui.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:322: source/CMakeFiles/stuntrally.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

x86_64-darwin (sandbox = true)

❌ 2 packages failed to build:
  • mygui
  • openmw

Error logs: `x86_64-darwin`
mygui
/nix/store/3i1ppww2zwv1rvhdf6svzqw6hc34a0qb-libcxx-19.1.7-dev/include/c++/v1/__fwd/string.h:23:29: note: template is declared here
   23 | struct _LIBCPP_TEMPLATE_VIS char_traits;
      |                             ^
In file included from :1:
In file included from /nix/build/nix-build-mygui-3.4.3.drv-0/source/build/MyGUIEngine/CMakeFiles/MyGUIEngine.dir/cmake_pch.hxx:5:
In file included from /nix/build/nix-build-mygui-3.4.3.drv-0/source/MyGUIEngine/include/MyGUI_Precompiled.h:11:
In file included from /nix/build/nix-build-mygui-3.4.3.drv-0/source/MyGUIEngine/include/MyGUI_Common.h:12:
/nix/store/3i1ppww2zwv1rvhdf6svzqw6hc34a0qb-libcxx-19.1.7-dev/include/c++/v1/string:3087:29: error: implicit instantiation of undefined template 'std::char_traits'
 3087 |   return insert(__pos, __s, traits_type::length(__s));
      |                             ^
/nix/build/nix-build-mygui-3.4.3.drv-0/source/MyGUIEngine/include/MyGUI_UString.h:649:10: note: in instantiation of member function 'std::basic_string::insert' requested here
  649 |                         mData.insert(index, str);
      |                               ^
/nix/store/3i1ppww2zwv1rvhdf6svzqw6hc34a0qb-libcxx-19.1.7-dev/include/c++/v1/__fwd/string.h:23:29: note: template is declared here
   23 | struct _LIBCPP_TEMPLATE_VIS char_traits;
      |                             ^
4 errors generated.
make[2]: *** [MyGUIEngine/CMakeFiles/MyGUIEngine.dir/build.make:80: MyGUIEngine/CMakeFiles/MyGUIEngine.dir/cmake_pch.hxx.pch] Error 1
make[1]: *** [CMakeFiles/Makefile2:213: MyGUIEngine/CMakeFiles/MyGUIEngine.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

aarch64-darwin (sandbox = true)

❌ 2 packages failed to build:
  • mygui
  • openmw

Error logs: `aarch64-darwin`
mygui
/nix/store/h3ciy33gp08hqxrcmzlhyvc5cnbykj4z-libcxx-19.1.7-dev/include/c++/v1/__fwd/string.h:23:29: note: template is declared here
   23 | struct _LIBCPP_TEMPLATE_VIS char_traits;
      |                             ^
In file included from :1:
In file included from /nix/build/nix-build-mygui-3.4.3.drv-0/source/build/MyGUIEngine/CMakeFiles/MyGUIEngine.dir/cmake_pch.hxx:5:
In file included from /nix/build/nix-build-mygui-3.4.3.drv-0/source/MyGUIEngine/include/MyGUI_Precompiled.h:11:
In file included from /nix/build/nix-build-mygui-3.4.3.drv-0/source/MyGUIEngine/include/MyGUI_Common.h:12:
/nix/store/h3ciy33gp08hqxrcmzlhyvc5cnbykj4z-libcxx-19.1.7-dev/include/c++/v1/string:3087:29: error: implicit instantiation of undefined template 'std::char_traits'
 3087 |   return insert(__pos, __s, traits_type::length(__s));
      |                             ^
/nix/build/nix-build-mygui-3.4.3.drv-0/source/MyGUIEngine/include/MyGUI_UString.h:649:10: note: in instantiation of member function 'std::basic_string::insert' requested here
  649 |                         mData.insert(index, str);
      |                               ^
/nix/store/h3ciy33gp08hqxrcmzlhyvc5cnbykj4z-libcxx-19.1.7-dev/include/c++/v1/__fwd/string.h:23:29: note: template is declared here
   23 | struct _LIBCPP_TEMPLATE_VIS char_traits;
      |                             ^
4 errors generated.
make[2]: *** [MyGUIEngine/CMakeFiles/MyGUIEngine.dir/build.make:80: MyGUIEngine/CMakeFiles/MyGUIEngine.dir/cmake_pch.hxx.pch] Error 1
make[1]: *** [CMakeFiles/Makefile2:213: MyGUIEngine/CMakeFiles/MyGUIEngine.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Copy link
Contributor

@eljamm eljamm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Btw, this PR also closes #314030

@SigmaSquadron
Copy link
Contributor Author

nixpkgs-review result

Generated using nixpkgs-review.

Command: nixpkgs-review pr 422562
Commit: d94191894b66dbc941768633c0526f54c14971ab


x86_64-linux

❌ 2 packages failed to build:
  • openmw-tes3mp
  • stuntrally
✅ 4 packages built:
  • mygui
  • openmw
  • portmod
  • portmod.dist

Error logs: `x86_64-linux`
stuntrally
      |                                                           ^~~~~~~~~~~~
/nix/store/iijp6lasnaszvcpdj5k2m9a9w5dgmclw-mygui-3.4.3/include/MYGUI/MyGUI_Delegate.h:331:23: note: declared here
  331 |                 using CMultiDelegate1 MYGUI_OBSOLETE("use : MyGUI::delegates::MultiDelegate") = MultiDelegate;
      |                       ^~~~~~~~~~~~~~~
In file included from /build/source/source/ogre/common/MessageBox/MessageBox.h:13:
/build/source/source/ogre/common/MessageBox/BaseLayout.h: In instantiation of 'T* wraps::BaseLayout::_createFakeWidget(MyGUI::Widget*) [with T = MyGUI::Widget]':
/build/source/source/ogre/common/MessageBox/BaseLayout.h:124:53:   required from here
  124 |                                                 mMainWidget = _createFakeWidget(_parent);
      |                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/build/source/source/ogre/common/MessageBox/BaseLayout.h:212:86: error: cannot convert 'std::string_view' {aka 'std::basic_string_view'} to 'const std::string&' {aka 'const std::__cxx11::basic_string&'}
  212 |                         return static_cast(_createFakeWidgetT(T::getClassTypeName(), _parent));
      |                                                                   ~~~~~~~~~~~~~~~~~~~^~
      |                                                                                      |
      |                                                                                      std::string_view {aka std::basic_string_view}
/build/source/source/ogre/common/MessageBox/BaseLayout.h:215:70: note:   initializing argument 1 of 'MyGUI::Widget* wraps::BaseLayout::_createFakeWidgetT(const std::string&, MyGUI::Widget*)'
  215 |                 MyGUI::Widget* _createFakeWidgetT(const std::string& _typeName, MyGUI::Widget* _parent)
      |                                                   ~~~~~~~~~~~~~~~~~~~^~~~~~~~~
make[2]: *** [source/CMakeFiles/stuntrally.dir/build.make:208: source/CMakeFiles/stuntrally.dir/ogre/CHud.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:322: source/CMakeFiles/stuntrally.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

@eljamm
Copy link
Contributor

eljamm commented Jul 5, 2025

Can't test as I'm encountering this issue: #326874

@qubitnano
Copy link
Contributor

qubitnano commented Jul 5, 2025

Builds and loads for me by reverting 290366 and patching for boost:

[PATCH] collada-dom: reinit at 0-unstable-2020-01-03
From d3a2949cc8022a2c7406f041d69b109fb6a2d53c Mon Sep 17 00:00:00 2001
From: qubitnano <146656568+qubitnano@users.noreply.github.com>
Date: Sat, 5 Jul 2025 16:48:06 -0400
Subject: [PATCH] collada-dom: reinit at 0-unstable-2020-01-03

---
 pkgs/by-name/co/collada-dom/package.nix    | 54 ++++++++++++++++++++++
 pkgs/by-name/op/openscenegraph/package.nix |  4 +-
 pkgs/top-level/aliases.nix                 |  1 -
 3 files changed, 56 insertions(+), 3 deletions(-)
 create mode 100644 pkgs/by-name/co/collada-dom/package.nix

diff --git a/pkgs/by-name/co/collada-dom/package.nix b/pkgs/by-name/co/collada-dom/package.nix
new file mode 100644
index 000000000000..fa790e5aaacd
--- /dev/null
+++ b/pkgs/by-name/co/collada-dom/package.nix
@@ -0,0 +1,54 @@
+{
+  stdenv,
+  lib,
+  fetchFromGitHub,
+  cmake,
+  boost,
+  libxml2,
+  minizip,
+  readline,
+  fetchpatch,
+}:
+
+stdenv.mkDerivation {
+  pname = "collada-dom";
+  version = "0-unstable-2020-01-03";
+
+  src = fetchFromGitHub {
+    owner = "rdiankov";
+    repo = "collada-dom";
+    rev = "c1e20b7d6ff806237030fe82f126cb86d661f063";
+    hash = "sha256-A1ne/D6S0shwCzb9spd1MoSt/238HWA8dvgd+DC9cXc=";
+  };
+
+  patches = [
+    # Fix building on boost >=1.85.0
+    (fetchpatch {
+      name = "boost1.85.patch";
+      url = "https://github.com/rdiankov/collada-dom/pull/43.patch";
+      hash = "sha256-8aSc21IaBdvhX8QKhBt8mzy/WfinRMI22ZlH9M0QJKg=";
+    })
+  ];
+
+  postInstall = ''
+    chmod +w -R $out
+    ln -s $out/include/*/* $out/include
+  '';
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    boost
+    libxml2
+    minizip
+    readline
+  ];
+
+  meta = with lib; {
+    description = "Lightweight version of collada-dom, with only the parser.";
+    homepage = "https://github.com/rdiankov/collada-dom";
+    license = licenses.mit;
+    maintainers = with maintainers; [ marius851000 ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/by-name/op/openscenegraph/package.nix b/pkgs/by-name/op/openscenegraph/package.nix
index e4c12742965b..9ae2b719dab2 100644
--- a/pkgs/by-name/op/openscenegraph/package.nix
+++ b/pkgs/by-name/op/openscenegraph/package.nix
@@ -32,7 +32,7 @@
   curlSupport ? true,
   curl,
   colladaSupport ? false,
-  opencollada,
+  collada-dom,
   opencascadeSupport ? false,
   opencascade-occt,
   ffmpegSupport ? false,
@@ -98,7 +98,7 @@ stdenv.mkDerivation rec {
     ++ lib.optional gdalSupport gdal
     ++ lib.optional curlSupport curl
     ++ lib.optionals colladaSupport [
-      opencollada
+      collada-dom
       pcre
     ]
     ++ lib.optional opencascadeSupport opencascade-occt
diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix
index c69ff6e49ecf..ac7a3b5e9838 100644
--- a/pkgs/top-level/aliases.nix
+++ b/pkgs/top-level/aliases.nix
@@ -449,7 +449,6 @@ mapAliases {
   cloudlogoffline = throw "cloudlogoffline has been removed"; # added 2025-05-18
   clwrapperFunction = throw "Lisp packages have been redesigned. See 'lisp-modules' in the nixpkgs manual."; # Added 2024-05-07
   CoinMP = coinmp; # Added 2024-06-12
-  collada-dom = opencollada; # added 2024-02-21
   colorpicker = throw "'colorpicker' has been removed due to lack of maintenance upstream. Consider using 'xcolor', 'gcolor3', 'eyedropper' or 'gpick' instead"; # Added 2024-10-19
   colorstorm = throw "'colorstorm' has been removed because it was unmaintained in nixpkgs and upstream was rewritten."; # Added 2025-06-15
   connman-ncurses = throw "'connman-ncurses' has been removed due to lack of maintenance upstream."; # Added 2025-05-27
-- 
2.49.0

@SigmaSquadron
Copy link
Contributor Author

I guess the way forward is to re-add collada-dom then.

@K900: Would it be alright to add collada-dom to Nixpkgs again with the necessary build patches?

@K900
Copy link
Contributor

K900 commented Jul 6, 2025

I guess so?

@marius851000
Copy link
Contributor

marius851000 commented Jul 6, 2025

Interesting. I don’t remember the lack of collada causing a fatal error on 0.48. I have this PR ( #339058 ), if you need some help into that. I’ll be happy if you include the work there into this PR. I can also provide a mod using those DAE model if needed.

(in any case, adding the good version of opencollada in this PR will obsolete this other PR)

@SigmaSquadron
Copy link
Contributor Author

it works with collada-dom, and the osgdb_dae.so file is correctly generated :)

@marius851000: I've used your commits, but couldn't figure out how to preserve the authorship information when I edited them slightly. I've added your information to a Co-authored-by tag, which I hope is appropriate.

works

@SigmaSquadron SigmaSquadron changed the title openmw: 0.48.0 -> 0.49.0, mygui: 3.4.2 -> 3.4.3, {openmw,mygui}: refactor openmw: 0.48.0 -> 0.49.0, mygui: 3.4.2 -> 3.4.3, collada-dom: init at 0-unstable-2020-01-03, {openmw,mygui}: refactor Jul 7, 2025
@SigmaSquadron SigmaSquadron changed the title openmw: 0.48.0 -> 0.49.0, mygui: 3.4.2 -> 3.4.3, collada-dom: init at 0-unstable-2020-01-03, {openmw,mygui}: refactor openmw: 0.48.0 -> 0.49.0 Jul 7, 2025
@keenanweaver
Copy link
Member

Confirmed playing on x86_64-linux. Also didn't break any of my mod setups.

nixpkgs-review result for #422562

Generated using nixpkgs-review-gha

Command: nixpkgs-review pr 422562

Logs: https://github.com/keenanweaver/nixpkgs-review-gha/actions/runs/16114671131


x86_64-linux

❌ 4 packages failed to build:
  • openmw-tes3mp
  • portmod
  • portmod.dist
  • stuntrally
✅ 3 packages built:
  • collada-dom
  • mygui
  • openmw

Error logs: `x86_64-linux`
portmod
FAILED test/test_vfs.py::test_find_file - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
FAILED test/test_vfs.py::test_local_vfs - assert (None)
FAILED test/test_vfs.py::test_remove_vfs - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_prefix_cli.py::test_validate - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_prefix_cli.py::test_info[True] - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_prefix_cli.py::test_info[False] - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_prefix_cli.py::test_search - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_prefix_cli.py::test_use - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_prefix_cli.py::test_mirror - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_add_remove_global - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_disable_global - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_disable_reenable_global - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_add_remove_mod - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_add_remove_global_mod - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_disable_modflags - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_disable_global_on_modflags - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_disable_reenable_modflags - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_disable_reenable_global_modflags - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_texture_size_override - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
= 45 failed, 116 passed, 4 skipped, 11 deselected, 1 xfailed, 1 warning, 16 errors in 13.60s =
stuntrally
      |                                                   ~~~~~~~~~~~~~~~~~~~^~~~~~~~~
In file included from /build/source/source/ogre/common/MessageBox/MessageBox.h:13:
/build/source/source/ogre/common/MessageBox/BaseLayout.h: In instantiation of 'T* wraps::BaseLayout::_createFakeWidget(MyGUI::Widget*) [with T = MyGUI::Widget]':
/build/source/source/ogre/common/MessageBox/BaseLayout.h:124:53:   required from here
  124 |                                                 mMainWidget = _createFakeWidget(_parent);
      |                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/build/source/source/ogre/common/MessageBox/BaseLayout.h:212:86: error: cannot convert 'std::string_view' {aka 'std::basic_string_view'} to 'const std::string&' {aka 'const std::__cxx11::basic_string&'}
  212 |                         return static_cast(_createFakeWidgetT(T::getClassTypeName(), _parent));
      |                                                                   ~~~~~~~~~~~~~~~~~~~^~
      |                                                                                      |
      |                                                                                      std::string_view {aka std::basic_string_view}
/build/source/source/ogre/common/MessageBox/BaseLayout.h:215:70: note:   initializing argument 1 of 'MyGUI::Widget* wraps::BaseLayout::_createFakeWidgetT(const std::string&, MyGUI::Widget*)'
  215 |                 MyGUI::Widget* _createFakeWidgetT(const std::string& _typeName, MyGUI::Widget* _parent)
      |                                                   ~~~~~~~~~~~~~~~~~~~^~~~~~~~~
make[2]: *** [source/CMakeFiles/stuntrally.dir/build.make:144: source/CMakeFiles/stuntrally.dir/ogre/BaseApp_Create.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [source/CMakeFiles/stuntrally.dir/build.make:192: source/CMakeFiles/stuntrally.dir/ogre/CGui.cpp.o] Error 1
make[2]: *** [source/CMakeFiles/stuntrally.dir/build.make:176: source/CMakeFiles/stuntrally.dir/ogre/CGame.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:322: source/CMakeFiles/stuntrally.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

aarch64-linux

❌ 3 packages failed to build:
  • portmod
  • portmod.dist
  • stuntrally
✅ 3 packages built:
  • collada-dom
  • mygui
  • openmw

Error logs: `aarch64-linux`
portmod
FAILED test/test_vfs.py::test_find_file - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
FAILED test/test_vfs.py::test_local_vfs - assert (None)
FAILED test/test_vfs.py::test_remove_vfs - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_prefix_cli.py::test_validate - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_prefix_cli.py::test_info[True] - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_prefix_cli.py::test_info[False] - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_prefix_cli.py::test_search - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_prefix_cli.py::test_use - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_prefix_cli.py::test_mirror - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_add_remove_global - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_disable_global - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_disable_reenable_global - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_add_remove_mod - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_add_remove_global_mod - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_disable_modflags - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_disable_global_on_modflags - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_disable_reenable_modflags - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_disable_reenable_global_modflags - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
ERROR test/test_use.py::test_texture_size_override - portmod.loader.SandboxedError: The unpack phase of the pybuild /build/sourc...
= 45 failed, 116 passed, 4 skipped, 11 deselected, 1 xfailed, 1 warning, 16 errors in 12.56s =
stuntrally
/nix/store/wflrkj1lcfwnl8sng1zf3vfwhzyyk2al-mygui-3.4.3/include/MYGUI/MyGUI_Delegate.h:329:23: note: declared here
  329 |                 using CMultiDelegate0 MYGUI_OBSOLETE("use : MyGUI::delegates::MultiDelegate<>") = MultiDelegate<>;
      |                       ^~~~~~~~~~~~~~~
In file included from /build/source/source/ogre/common/MessageBox/MessageBox.h:13:
/build/source/source/ogre/common/MessageBox/BaseLayout.h: In instantiation of 'T* wraps::BaseLayout::_createFakeWidget(MyGUI::Widget*) [with T = MyGUI::Widget]':
/build/source/source/ogre/common/MessageBox/BaseLayout.h:124:53:   required from here
  124 |                                                 mMainWidget = _createFakeWidget(_parent);
      |                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/build/source/source/ogre/common/MessageBox/BaseLayout.h:212:86: error: cannot convert 'std::string_view' {aka 'std::basic_string_view'} to 'const std::string&' {aka 'const std::__cxx11::basic_string&'}
  212 |                         return static_cast(_createFakeWidgetT(T::getClassTypeName(), _parent));
      |                                                                   ~~~~~~~~~~~~~~~~~~~^~
      |                                                                                      |
      |                                                                                      std::string_view {aka std::basic_string_view}
/build/source/source/ogre/common/MessageBox/BaseLayout.h:215:70: note:   initializing argument 1 of 'MyGUI::Widget* wraps::BaseLayout::_createFakeWidgetT(const std::string&, MyGUI::Widget*)'
  215 |                 MyGUI::Widget* _createFakeWidgetT(const std::string& _typeName, MyGUI::Widget* _parent)
      |                                                   ~~~~~~~~~~~~~~~~~~~^~~~~~~~~
make[2]: *** [source/CMakeFiles/stuntrally.dir/build.make:176: source/CMakeFiles/stuntrally.dir/ogre/CGame.cpp.o] Error 1
make[2]: *** [source/CMakeFiles/stuntrally.dir/build.make:192: source/CMakeFiles/stuntrally.dir/ogre/CGui.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:322: source/CMakeFiles/stuntrally.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

x86_64-darwin (sandbox = true)

❌ 3 packages failed to build:
  • collada-dom
  • mygui
  • openmw

Error logs: `x86_64-darwin`
collada-dom
/nix/build/nix-build-collada-dom-0-unstable-2020-01-03.drv-0/source/dom/external-libs/zlib-1.2.5/zutil.c:300:22: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C23 [-Wdeprecated-non-prototype]
  300 | voidpf ZLIB_INTERNAL zcalloc (opaque, items, size)
      |                      ^
/nix/build/nix-build-collada-dom-0-unstable-2020-01-03.drv-0/source/dom/external-libs/zlib-1.2.5/zutil.c:310:20: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C23 [-Wdeprecated-non-prototype]
  310 | void ZLIB_INTERNAL zcfree (opaque, ptr)
      |                    ^
3 warnings generated.
[  6%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_refcount.c.o
[  7%] Linking C static library libz.a
[  8%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_study.c.o
[  8%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_tables.c.o
[  8%] Built target zlib
[  8%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_try_flipped.c.o
[  8%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_ucd.c.o
[  8%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_valid_utf8.c.o
[  9%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_version.c.o
[  9%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_xclass.c.o
[  9%] Linking C static library libpcre_local.a
[  9%] Built target pcre_local
make: *** [Makefile:136: all] Error 2
mygui
/nix/store/3i1ppww2zwv1rvhdf6svzqw6hc34a0qb-libcxx-19.1.7-dev/include/c++/v1/__fwd/string.h:23:29: note: template is declared here
   23 | struct _LIBCPP_TEMPLATE_VIS char_traits;
      |                             ^
In file included from :1:
In file included from /nix/build/nix-build-mygui-3.4.3.drv-0/source/build/MyGUIEngine/CMakeFiles/MyGUIEngine.dir/cmake_pch.hxx:5:
In file included from /nix/build/nix-build-mygui-3.4.3.drv-0/source/MyGUIEngine/include/MyGUI_Precompiled.h:11:
In file included from /nix/build/nix-build-mygui-3.4.3.drv-0/source/MyGUIEngine/include/MyGUI_Common.h:12:
/nix/store/3i1ppww2zwv1rvhdf6svzqw6hc34a0qb-libcxx-19.1.7-dev/include/c++/v1/string:3087:29: error: implicit instantiation of undefined template 'std::char_traits'
 3087 |   return insert(__pos, __s, traits_type::length(__s));
      |                             ^
/nix/build/nix-build-mygui-3.4.3.drv-0/source/MyGUIEngine/include/MyGUI_UString.h:649:10: note: in instantiation of member function 'std::basic_string::insert' requested here
  649 |                         mData.insert(index, str);
      |                               ^
/nix/store/3i1ppww2zwv1rvhdf6svzqw6hc34a0qb-libcxx-19.1.7-dev/include/c++/v1/__fwd/string.h:23:29: note: template is declared here
   23 | struct _LIBCPP_TEMPLATE_VIS char_traits;
      |                             ^
4 errors generated.
make[2]: *** [MyGUIEngine/CMakeFiles/MyGUIEngine.dir/build.make:80: MyGUIEngine/CMakeFiles/MyGUIEngine.dir/cmake_pch.hxx.pch] Error 1
make[1]: *** [CMakeFiles/Makefile2:213: MyGUIEngine/CMakeFiles/MyGUIEngine.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

aarch64-darwin (sandbox = true)

❌ 3 packages failed to build:
  • collada-dom
  • mygui
  • openmw

Error logs: `aarch64-darwin`
collada-dom
[  6%] Linking C static library libz.a
[  6%] Built target zlib
[  6%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_fullinfo.c.o
[  6%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_get.c.o
[  6%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_globals.c.o
[  7%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_info.c.o
[  7%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_newline.c.o
[  7%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_maketables.c.o
[  7%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_ord2utf8.c.o
[  7%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_refcount.c.o
[  8%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_study.c.o
[  8%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_tables.c.o
[  8%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_try_flipped.c.o
[  8%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_ucd.c.o
[  8%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_valid_utf8.c.o
[  8%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_xclass.c.o
[  9%] Building C object dom/external-libs/pcre-8.02/CMakeFiles/pcre_local.dir/pcre_version.c.o
[  9%] Linking C static library libpcre_local.a
[  9%] Built target pcre_local
make: *** [Makefile:136: all] Error 2
mygui
/nix/store/h3ciy33gp08hqxrcmzlhyvc5cnbykj4z-libcxx-19.1.7-dev/include/c++/v1/__fwd/string.h:23:29: note: template is declared here
   23 | struct _LIBCPP_TEMPLATE_VIS char_traits;
      |                             ^
In file included from :1:
In file included from /nix/build/nix-build-mygui-3.4.3.drv-0/source/build/MyGUIEngine/CMakeFiles/MyGUIEngine.dir/cmake_pch.hxx:5:
In file included from /nix/build/nix-build-mygui-3.4.3.drv-0/source/MyGUIEngine/include/MyGUI_Precompiled.h:11:
In file included from /nix/build/nix-build-mygui-3.4.3.drv-0/source/MyGUIEngine/include/MyGUI_Common.h:12:
/nix/store/h3ciy33gp08hqxrcmzlhyvc5cnbykj4z-libcxx-19.1.7-dev/include/c++/v1/string:3087:29: error: implicit instantiation of undefined template 'std::char_traits'
 3087 |   return insert(__pos, __s, traits_type::length(__s));
      |                             ^
/nix/build/nix-build-mygui-3.4.3.drv-0/source/MyGUIEngine/include/MyGUI_UString.h:649:10: note: in instantiation of member function 'std::basic_string::insert' requested here
  649 |                         mData.insert(index, str);
      |                               ^
/nix/store/h3ciy33gp08hqxrcmzlhyvc5cnbykj4z-libcxx-19.1.7-dev/include/c++/v1/__fwd/string.h:23:29: note: template is declared here
   23 | struct _LIBCPP_TEMPLATE_VIS char_traits;
      |                             ^
4 errors generated.
make[2]: *** [MyGUIEngine/CMakeFiles/MyGUIEngine.dir/build.make:80: MyGUIEngine/CMakeFiles/MyGUIEngine.dir/cmake_pch.hxx.pch] Error 1
make[1]: *** [CMakeFiles/Makefile2:213: MyGUIEngine/CMakeFiles/MyGUIEngine.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

@SigmaSquadron
Copy link
Contributor Author

now that is one broken reverse dependency path. Pretty late over here, but tomorrow I'll see what I can do about portmod and the Darwin builds.

@marius851000
Copy link
Contributor

Interesting. Portmod build on my side (x86-64 linux). It looks like the way the sandbox is set up does not allow portmod to use its own sandboxing mechanism. It work on my machine, which does have the nix sandbox enabled.

A solution to that may be to disable the failing tests, but that’s about 1/4th of them.

(and otherwise, I’m fine with how you credited me in the re-used commit. It’s not something I bring a lot of attention to anyway)

@marius851000
Copy link
Contributor

As far as tes3mp is concerned, however, it looks like this custom OSG is causing issues. I haven’t tested, but something along the line of (in openmw.nix) (openmw.override { openscenegraph = openscenegraph; }).overrideAttrs might do the trick.

@nixpkgs-ci nixpkgs-ci bot added the 2.status: merge conflict This PR has merge conflicts with the target branch label Jul 24, 2025
Copy link
Member

@peterhoeg peterhoeg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Other than the small things mentioned here, there is also:

  1. with the move to pkgs/by-name, you need to drop the reference in pkgs/top-level/all-packages.nix
  2. with the move to pkgs/by-name, you need to pass in qt6Packages and drop the main qttools, wrapQtAppsHook et al arguments.
  3. fix merge conflicts

SigmaSquadron and others added 2 commits August 31, 2025 18:10
`opencollada` is not the same as `collada-dom`. OpenSceneGraph requires
`collada-dom` to generate some shared object files required by OpenMW.

Co-authored-by: Marius David <marius@mariusdavid.fr>
Signed-off-by: Fernando Rodrigues <alpha@sigmasquadron.net>
Signed-off-by: Fernando Rodrigues <alpha@sigmasquadron.net>
@SigmaSquadron
Copy link
Contributor Author

I don't have the hardware to maintain Darwin or Aarch64 Linux, so I've set them to broken/badPlatforms and hopefully an interested party will one day fix them.

@SigmaSquadron
Copy link
Contributor Author

This is ready for a final review. I'd recommend going commit-by-commit.

@nixpkgs-ci nixpkgs-ci bot added 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin. and removed 10.rebuild-darwin: 1-10 This PR causes between 1 and 10 packages to rebuild on Darwin. 10.rebuild-darwin: 1 This PR causes 1 package to rebuild on Darwin. labels Aug 31, 2025
@marcin-serwin
Copy link
Contributor

marcin-serwin commented Aug 31, 2025

I don't have ARM machines to test. Is there any way to fix that?

I've poked around but couldn't figure out anything, I've opened an issue that can be added as a comment near the broken: https://gitlab.com/OpenMW/openmw/-/issues/8689.

@marcin-serwin
Copy link
Contributor

Devs suggested to switch from LuaJIT to Lua as a workaround and I confirmed it works:

diff --git a/pkgs/by-name/op/openmw/package.nix b/pkgs/by-name/op/openmw/package.nix
index e6e6fc66c0..0cd173ac82 100644
--- a/pkgs/by-name/op/openmw/package.nix
+++ b/pkgs/by-name/op/openmw/package.nix
@@ -11,6 +11,7 @@
   collada-dom,
   ffmpeg,
   libXt,
+  lua,
   luajit,
   lz4,
   mygui,
@@ -23,6 +24,9 @@
   yaml-cpp,
 
   GLPreference ? "GLVND",
+  # aarch64-linux with LuaJIT crashes before reaching menu
+  # https://gitlab.com/OpenMW/openmw/-/issues/8689
+  useLuaJIT ? !(stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64),
 }:
 
 assert lib.assertOneOf "GLPreference" GLPreference [
@@ -107,7 +111,7 @@
     collada-dom
     ffmpeg
     libXt
-    luajit
+    (if useLuaJIT then luajit else lua)
     lz4
     mygui
     openal
@@ -127,6 +131,7 @@
     (lib.cmakeFeature "OpenGL_GL_PREFERENCE" GLPreference)
     (lib.cmakeBool "OPENMW_USE_SYSTEM_RECASTNAVIGATION" true)
     (lib.cmakeBool "OPENMW_OSX_DEPLOYMENT" stdenv.hostPlatform.isDarwin)
+    (lib.cmakeBool "USE_LUAJIT" useLuaJIT)
   ];
 
   meta = {
@@ -140,8 +145,6 @@
     ];
     platforms = with lib.platforms; linux ++ darwin ++ windows;
 
-    # Address not mapped to object (signal 11).
-    broken = with stdenv.hostPlatform; isAarch64 && isLinux;
     # Nixpkgs' NT infrastructure is currently incapable of building this.
     badPlatforms = lib.platforms.windows;
   };

The usual code modernisation (finalAttrs, no with lib; in meta, no pname interpolation), and CMAKE variables now use lib.cmake*.

Signed-off-by: Fernando Rodrigues <alpha@sigmasquadron.net>
The multiplayer fork of OpenMW is currently unmaintained,
fails to build with OpenMW 0.49.0, and needs multiple GCC
14 compilation patches.

Signed-off-by: Fernando Rodrigues <alpha@sigmasquadron.net>
@SigmaSquadron
Copy link
Contributor Author

I went for a more generic isAarch64Linux approach, but the result is the same.

Copy link
Contributor

@nim65s nim65s left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm happy to report that with this, gepetto-gui is able to display robots with collada meshes, eg:

  • switch to this PR
  • remove qtwebengine from pythonqt to fix it
  • replace openscenegraph with openscenegraph.override { colladaSupport = true; } in gepetto-viewer as it is done in openmw
  • nix-shell -I nixpkgs=. -p 'python3.withPackages(p: [p.example-robot-data p.gepetto-gui])'
  • run gepetto-gui & and python -m example_robot_data romeo (talos works without collada-dom, but not romeo)

Thanks for the work !

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
];
nim65s
];

Since I maintain that fork, it would be better for me to get the right notifications about issues :)

@nixpkgs-ci nixpkgs-ci bot added the 12.approvals: 1 This PR was reviewed and approved by one person. label Sep 1, 2025
@SigmaSquadron SigmaSquadron dismissed peterhoeg’s stale review September 1, 2025 14:00

Changes addressed. Please re-review if possible!

Copy link
Contributor

@marcin-serwin marcin-serwin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Builds and runs on aarch64-linux.

@nixpkgs-ci nixpkgs-ci bot added 12.approvals: 2 This PR was reviewed and approved by two persons. and removed 12.approvals: 1 This PR was reviewed and approved by one person. labels Sep 1, 2025
@iedame
Copy link
Contributor

iedame commented Sep 5, 2025

nixpkgs-review result

Generated using nixpkgs-review-gha

Command: nixpkgs-review pr 422562
Commit: f63a34fc69c4b72dc14edf3c3263828cc41f634a (subsequent changes)
Merge: 1447d8f18f07f17249c0f71afcfa0483a9f1ddf2

Logs: https://github.com/iedame/nixpkgs-review-gha/actions/runs/17488012121


x86_64-linux

❌ 3 packages failed to build:
  • portmod
  • portmod.dist
  • stuntrally
✅ 3 packages built:
  • collada-dom
  • mygui
  • openmw

Error logs: `x86_64-linux`
stuntrally
/build/source/source/ogre/common/MessageBox/BaseLayout.h:215:70: note:   initializing argument 1 of 'MyGUI::Widget* wraps::BaseLayout::_createFakeWidgetT(const std::string&, MyGUI::Widget*)'
  215 |                 MyGUI::Widget* _createFakeWidgetT(const std::string& _typeName, MyGUI::Widget* _parent)
      |                                                   ~~~~~~~~~~~~~~~~~~~^~~~~~~~~
In file included from /build/source/source/ogre/common/MessageBox/MessageBox.h:13:
/build/source/source/ogre/common/MessageBox/BaseLayout.h: In instantiation of 'T* wraps::BaseLayout::_createFakeWidget(MyGUI::Widget*) [with T = MyGUI::Widget]':
/build/source/source/ogre/common/MessageBox/BaseLayout.h:124:53:   required from here
  124 |                                                 mMainWidget = _createFakeWidget<MyGUI::Widget>(_parent);
      |                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/build/source/source/ogre/common/MessageBox/BaseLayout.h:212:86: error: cannot convert 'std::string_view' {aka 'std::basic_string_view<char>'} to 'const std::string&' {aka 'const std::__cxx11::basic_string<char>&'}
  212 |                         return static_cast<T*>(_createFakeWidgetT(T::getClassTypeName(), _parent));
      |                                                                   ~~~~~~~~~~~~~~~~~~~^~
      |                                                                                      |
      |                                                                                      std::string_view {aka std::basic_string_view<char>}
/build/source/source/ogre/common/MessageBox/BaseLayout.h:215:70: note:   initializing argument 1 of 'MyGUI::Widget* wraps::BaseLayout::_createFakeWidgetT(const std::string&, MyGUI::Widget*)'
  215 |                 MyGUI::Widget* _createFakeWidgetT(const std::string& _typeName, MyGUI::Widget* _parent)
      |                                                   ~~~~~~~~~~~~~~~~~~~^~~~~~~~~
make[2]: *** [source/CMakeFiles/stuntrally.dir/build.make:192: source/CMakeFiles/stuntrally.dir/ogre/CGui.cpp.o] Error 1
make[2]: *** [source/CMakeFiles/stuntrally.dir/build.make:176: source/CMakeFiles/stuntrally.dir/ogre/CGame.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:322: source/CMakeFiles/stuntrally.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

aarch64-linux

❌ 3 packages failed to build:
  • portmod
  • portmod.dist
  • stuntrally
✅ 3 packages built:
  • collada-dom
  • mygui
  • openmw

Error logs: `aarch64-linux`
stuntrally
/nix/store/g48igcmnpcrdp3wgw955l7jll4ffy6xk-mygui-3.4.3/include/MYGUI/MyGUI_Delegate.h:329:23: note: declared here
  329 |                 using CMultiDelegate0 MYGUI_OBSOLETE("use : MyGUI::delegates::MultiDelegate<>") = MultiDelegate<>;
      |                       ^~~~~~~~~~~~~~~
In file included from /build/source/source/ogre/common/MessageBox/MessageBox.h:13:
/build/source/source/ogre/common/MessageBox/BaseLayout.h: In instantiation of 'T* wraps::BaseLayout::_createFakeWidget(MyGUI::Widget*) [with T = MyGUI::Widget]':
/build/source/source/ogre/common/MessageBox/BaseLayout.h:124:53:   required from here
  124 |                                                 mMainWidget = _createFakeWidget<MyGUI::Widget>(_parent);
      |                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/build/source/source/ogre/common/MessageBox/BaseLayout.h:212:86: error: cannot convert 'std::string_view' {aka 'std::basic_string_view<char>'} to 'const std::string&' {aka 'const std::__cxx11::basic_string<char>&'}
  212 |                         return static_cast<T*>(_createFakeWidgetT(T::getClassTypeName(), _parent));
      |                                                                   ~~~~~~~~~~~~~~~~~~~^~
      |                                                                                      |
      |                                                                                      std::string_view {aka std::basic_string_view<char>}
/build/source/source/ogre/common/MessageBox/BaseLayout.h:215:70: note:   initializing argument 1 of 'MyGUI::Widget* wraps::BaseLayout::_createFakeWidgetT(const std::string&, MyGUI::Widget*)'
  215 |                 MyGUI::Widget* _createFakeWidgetT(const std::string& _typeName, MyGUI::Widget* _parent)
      |                                                   ~~~~~~~~~~~~~~~~~~~^~~~~~~~~
make[2]: *** [source/CMakeFiles/stuntrally.dir/build.make:192: source/CMakeFiles/stuntrally.dir/ogre/CGui.cpp.o] Error 1
make[2]: *** [source/CMakeFiles/stuntrally.dir/build.make:176: source/CMakeFiles/stuntrally.dir/ogre/CGame.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:322: source/CMakeFiles/stuntrally.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

x86_64-darwin

No rebuilds


aarch64-darwin

No rebuilds

@SigmaSquadron
Copy link
Contributor Author

cc @pSub: Looks like this breaks stuntrally. Could you take a look here?

@SigmaSquadron SigmaSquadron requested a review from pSub September 5, 2025 14:23
@iedame
Copy link
Contributor

iedame commented Sep 9, 2025

cc @pSub: Looks like this breaks stuntrally. Could you take a look here?

Looks like stuntrally is seriously outdated, version 2.7 - from 11. 11. 2022 #416166
2.x changelog: https://github.com/stuntrally/stuntrally/blob/master/docs/changelog.md
recent changelog: https://github.com/stuntrally/stuntrally3/blob/main/docs/Changelog.md

I'm not sure the package is maintained anymore, last maintainer commit is from 1189 days ago.

@SigmaSquadron
Copy link
Contributor Author

oh, lmao

@SigmaSquadron SigmaSquadron merged commit 60bfd9f into NixOS:master Sep 9, 2025
32 of 33 checks passed
@SigmaSquadron SigmaSquadron deleted the push-mysovyvvvsrm branch September 9, 2025 14:51
@peterhoeg
Copy link
Member

regarding stuntrally, from the repo: "NOTE: development in stuntrally3 repo. "

@iedame
Copy link
Contributor

iedame commented Sep 12, 2025

Yeah, I linked the changelog for the stuntrally3 repo above. stuntrally needs some love or be marked as broken I guess?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

0.kind: package adoption Requests or PRs for adopting packages that have no maintainers 6.topic: games Gaming on NixOS 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin. 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. 12.approvals: 2 This PR was reviewed and approved by two persons.

Projects

None yet

10 participants