Linux playground

Hm.
If i'm getting the conversation correctly, you are mixing two things.

On the level of graphics client, it's literally setting up the model matrix to be mirrored on Z axis. Nothing else (give or take some normal/tangent shenanigans).

On the level of add-ons, modules, physics, it's "rewrite everything", because stuff assumes that moving a specific way requires specific coordinate transforms. You can't get away from it with a simple conversion at a single point.
Like, there are math and geometry and physics functions written under the assumption of left handedness. They would have to be changed in the code.
Well, my point was exactly to highlight this difference between those two things, and that one was significantly harder than the other. I think you said it better than I did, though.

Changing all the physics just so we don't have to flip the z axis in the graphics client makes zero sense, if I understand correctly, that was proposed in an earlier post.
 
Hello Kali Linux users.
I have tried Kali and installed Orbiter Linux on Kali. To do this I first had to start with a standard installation and then install these packages:

Bash:
sudo apt install libglfw3-dev libfreetype-dev libopenal-dev libfontconfig-dev libsndfile1-dev libglm-dev

And then follow the steps in the first post.
 
Please test our build on an Archlinux distribution (or a derivative of it) with the command:
I have tested the PKGBUILD from orbiter2016-git, it compiles correctly and I have found the following problems:

Moving the Orbiter installation out of user space ($HOME/) to a folder like /usr causes Orbiter to not have enough permissions to run and write to disk (scenario saves, joystick drivers, etc.).
Bash:
[matias@archAMD64 ~]$ cd /usr/Orbiter/
[matias@archAMD64 Orbiter]$ ./Orbiter
MESA: error: ZINK: vkCreateInstance failed (VK_ERROR_INCOMPATIBLE_DRIVER)
glx: failed to create drisw screen
failed to load driver: zink
Generic base textures
Error opening log file 'XRSound.log' for writing; attempting to continueFailed loading module Modules/Plugin/libApolloRTCCMFD.so (code Modules/Plugin/libApolloRTCCMFD.so: undefined symbol: _ZN3DSE10TapeMotionEv)
Failed loading module Modules/Plugin/libProjectApolloMFD.so (code Modules/Plugin/libProjectApolloMFD.so: undefined symbol: _ZTI12ToggleSwitch)
Failed loading module Modules/Plugin/libOrb42S.so (code Modules/Plugin/libOrb42S.so: undefined symbol: _Z8hp2asciiPcPKci)
InputController::GlobalInit
terminate called after throwing an instance of 'std::filesystem::__cxx11::filesystem_error'
  what():  filesystem error: cannot create directory: Permission denied [Controllers]
Abortado (`core' generado)
[matias@archAMD64 Orbiter]$

For some reason the Orbiter shortcut (located in /usr/share/applications) points to $HOME/.cache/yay/orbiter2016-git instead of /usr/Orbiter/Orbiter.
 
Does anyone plan to port tools in Utils directory to Linux platform like tileedit and texpack?

I reviewed sources and they are very simple and easy to port them to Linux platform and others.

Also, I saw M files in tileedit. Will they work on Scilab (open-source Matlab-like application)?

Thanks.
 
Last edited:
I tried to compile Orbiter on new Fedora 40 system that was released a week ago but got compiling error with nanovg files.

Here is dnf installs for Fedora 40 system. I am compiling them with new GCC 14.0 compiler package.

Code:
sudo dnf groupinstall "Development Tools" "Development Libraries"
sudo dnf install doxygen glfw-devel libsndfile-devel openal-soft-devel glm-devel

Code:
In file included from /home/sword7/sdata1/Projects/orbiter.vc/OVP/OGLClient/nanovg/src/nanovg.c:26:
/home/sword7/sdata1/Projects/orbiter.vc/OVP/OGLClient/nanovg/src/fontstash.h: In function ‘fons__tt_getFontVMetrics’:
/home/sword7/sdata1/Projects/orbiter.vc/OVP/OGLClient/nanovg/src/fontstash.h:347:48: error: passing argument 1 of ‘abs’ makes integer from pointer without a cast [-Wint-conversion]
  347 |                 *xAvgCharWidth = abs(font->font->size);
      |                                      ~~~~~~~~~~^~~~~~
      |                                                |
      |                                                FT_Size {aka struct FT_SizeRec_ *}
In file included from /home/sword7/sdata1/Projects/orbiter.vc/OVP/OGLClient/nanovg/src/nanovg.c:19:
/usr/include/stdlib.h:980:21: note: expected ‘int’ but argument is of type ‘FT_Size’ {aka ‘struct FT_SizeRec_ *’}
  980 | extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur;
      |                 ~~~~^~~
make[2]: *** [OVP/OGLClient/CMakeFiles/OGLClient.dir/build.make:510: OVP/OGLClient/CMakeFiles/OGLClient.dir/nanovg/src/nanovg.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:4351: OVP/OGLClient/CMakeFiles/OGLClient.dir/all] Error 2
make: *** [Makefile:156: all] Error 2
 
@Gondo

Please fix your nanovg code. GCC 14 compiler is now complaining about errors. They will no longer ably compile Orbiter for Linux on later distros with GCC 14 compilers.

Code:
In file included from /home/sword7/sdata1/Projects/orbiter.vc/OVP/OGLClient/nanovg/src/nanovg.c:26:
/home/sword7/sdata1/Projects/orbiter.vc/OVP/OGLClient/nanovg/src/fontstash.h: In function ‘fons__tt_getFontVMetrics’:
/home/sword7/sdata1/Projects/orbiter.vc/OVP/OGLClient/nanovg/src/fontstash.h:347:48: error: passing argument 1 of ‘abs’ makes integer from pointer without a cast [-Wint-conversion]
  347 |                 *xAvgCharWidth = abs(font->font->size);
      |                                      ~~~~~~~~~~^~~~~~
      |                                                |
      |                                                FT_Size {aka struct FT_SizeRec_ *}
In file included from /home/sword7/sdata1/Projects/orbiter.vc/OVP/OGLClient/nanovg/src/nanovg.c:19:
/usr/include/stdlib.h:980:21: note: expected ‘int’ but argument is of type ‘FT_Size’ {aka ‘struct FT_SizeRec_ *’}
  980 | extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur;
      |                 ~~~~^~~
make[2]: *** [OVP/OGLClient/CMakeFiles/OGLClient.dir/build.make:510: OVP/OGLClient/CMakeFiles/OGLClient.dir/nanovg/src/nanovg.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:4351: OVP/OGLClient/CMakeFiles/OGLClient.dir/all] Error 2
make: *** [Makefile:156: all] Error 2
 
@Gondo

Please fix your nanovg code. GCC 14 compiler is now complaining about errors. They will no longer ably compile Orbiter for Linux on later distros with GCC 14 compilers.

Code:
In file included from /home/sword7/sdata1/Projects/orbiter.vc/OVP/OGLClient/nanovg/src/nanovg.c:26:
/home/sword7/sdata1/Projects/orbiter.vc/OVP/OGLClient/nanovg/src/fontstash.h: In function ‘fons__tt_getFontVMetrics’:
/home/sword7/sdata1/Projects/orbiter.vc/OVP/OGLClient/nanovg/src/fontstash.h:347:48: error: passing argument 1 of ‘abs’ makes integer from pointer without a cast [-Wint-conversion]
  347 |                 *xAvgCharWidth = abs(font->font->size);
      |                                      ~~~~~~~~~~^~~~~~
      |                                                |
      |                                                FT_Size {aka struct FT_SizeRec_ *}
In file included from /home/sword7/sdata1/Projects/orbiter.vc/OVP/OGLClient/nanovg/src/nanovg.c:19:
/usr/include/stdlib.h:980:21: note: expected ‘int’ but argument is of type ‘FT_Size’ {aka ‘struct FT_SizeRec_ *’}
  980 | extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur;
      |                 ~~~~^~~
make[2]: *** [OVP/OGLClient/CMakeFiles/OGLClient.dir/build.make:510: OVP/OGLClient/CMakeFiles/OGLClient.dir/nanovg/src/nanovg.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:4351: OVP/OGLClient/CMakeFiles/OGLClient.dir/all] Error 2
make: *** [Makefile:156: all] Error 2
I pushed a quick fix, tell me if there are other errors with this version of gcc as I could not test with it...
 
Hey! I'm quite new here and it is my first text I have ever posted here. Hello everyone!

I need your help. I get some error after put this command in console.
cmake -DCMAKE_INSTALL_PREFIX=$HOME/orbiter_test ..
-- The C compiler identification is GNU 14.2.1
-- The CXX compiler identification is GNU 14.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - 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: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found LATEX: /usr/bin/latex
CMake Error at CMakeLists.txt:281 (message):
DirectX SDK not found. The D3D9 graphics client will not be built.
-- Configuring incomplete, errors occurred!

I don't know what cause it... I'm followed the installation process at first page carefully. I have some packages of DirectX support and those all packages whose should be required in the installation (that ones whose are has been mentioned at first page).
Any ideas? Did Anyone get some similar problem before? I will be grateful for any help!
 
Are you trying to compile this?


Have you followed the steps in the README.compile file?

Or the steps in Post one here?
 
Thank you for answer!
I was trying the both options. None of them was build on my OS, EndeavourOs which is based on arch distribution.
I have tried install some others packages from dxvk, but it seems that I still have missing files. I'm not sure it change anything.
The whole process installation (in both version) I proceed through CMake (instead of alternative option - VS2019).
 
Thank you for answer!
I was trying the both options. None of them was build on my OS, EndeavourOs which is based on arch distribution.
I have tried install some others packages from dxvk, but it seems that I still have missing files. I'm not sure it change anything.
The whole process installation (in both version) I proceed through CMake (instead of alternative option - VS2019).
Are you sure you cloned the linux branch? Looks like you're on the main branch.
This branch uses an OpenGL client so you don't need dxvk packages
 
Are you sure you cloned the linux branch? Looks like you're on the main branch.
This branch uses an OpenGL client so you don't need dxvk packages
Ah, yes... I was on the main branch all the time. I probably missed this step because as I have checked the 'linux' branch just doesn't exist for me.
 
Good morning,

I managed to install flawlessly and have Orbiter running under Linux (Archlinux, up to date) following the instructions on the first post. Thank you very much for having made that possible.

Two minor concerns however:
  • The display in the MFD looks weird: the font size is too big, leading to lines partially overlapping each others and the stuff displayed on the right side of the MFD not displayed in full ("cut" at the right border of the MFD). I went through the Orbiter doc to see if some config parameter could be used to tune that, but I found nothing. Does somebody has a clue? It is usable as it, but clearly not convenient.
  • I downloaded an MFD from the add-on library (BurnTimeCalcMFD), copied the file in the proper directories... but impossible to activate it in the launchpad (It does not appear on the "Module" tab). Am I safe assessing that all the MFD from the add-on library are compiled for Windows use, and thus can't be used "as it" under Linux? Or is there some stuff to do in some config files to make them visible? And / or a recompilation to try for those with sources available?

Thank you,

Laserpithium
 
Salut Laserpithium,
MFDs use system fonts so that things can look different on different operating systems. Also there may be some issues with high DPI displays.
Modules must be ported/compiled for linux, that's the biggest PITA with the current state of affairs. That's why I've been working on the Lua front in the main branch, with the hope that more content can be made available on different platforms without the need for that.
 
I have some cmake problem. But cmake is on Kali Linux
cmake -DCMAKE_INSTALL_PREFIX=$HOME/orbiter_test ..
time make -j$(nproc) install
Bereits auf 'linux'
Ihr Branch ist auf demselben Stand wie 'origin/linux'.
mkdir: das Verzeichnis „build“ kann nicht angelegt werden: Die Datei existiert bereits
Traceback (most recent call last):
File "/home/alf/.local/bin/cmake", line 5, in <module>
from cmake import cmake
ModuleNotFoundError: No module named 'cmake'
make: *** Keine Regel, um „install“ zu erstellen. Schluss.

real 0,00s
user 0,00s
sys 0,00s
cpu 63%

I think Kali is using the "PIP install cmake" version.
#!/usr/bin/python3
# -- coding: utf-8 --
import re
import sys
from cmake import cmake <---- line 5
if name == 'main':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(cmake())
Somebody made me last time something else to enter cause of this..
 
I have some cmake problem. But cmake is on Kali Linux


I think Kali is using the "PIP install cmake" version.

Somebody made me last time something else to enter cause of this..
I have no idea why you have a python script called cmake in your PATH, which most likely conflicts with the cmake binary that is expected.
If you installed the cmake package, try calling it by using an explicit path : /usr/bin/cmake -DCMAKE_INSTALL_PREFIX=$HOME/orbiter_test .. (or /usr/local/bin, whereever the binary is installed on your distro)
 
Is there nothing similar to gradle-wrapper for cmake, where you have a script in the repository that will install the correct version of the binary of the build tool in the project root? That would certainly help avoid hassle like that...
 
Is there nothing similar to gradle-wrapper for cmake, where you have a script in the repository that will install the correct version of the binary of the build tool in the project root? That would certainly help avoid hassle like that...
You mean adding another straw on the camel's back? Not sure adding another level of indirection would be the solution...
If it were up to me I'd remove cmake entirely and use plain Makefiles but I'm a bit of an extremist :LOL:
 
Back
Top