This is a pretty technical/philosophical and hairy topic, so bear with me please.
I’ll try to be clear and concise. Scroll to the bottom for the gist of the post.
For simplicity, Renoise claims it “runs on Windows, Mac OS X and Linux”.
Now, Linux, depending on who you ask, is defined as either of three things:
- A Kernel (the technically correct answer)
- An Operating System family (see this citation specifically)
- An Operating System
Only the first two definitions are properly specified. The third, while simpler, is absolutely incorrect. An operating system is comprised of not only a Kernel, but of several other components, such as a standard library (specifically a C standard library, such as the glibc, or musl libc, or diet libc, etc.), a collection of various libraries, a shell, and various other programs (editors, compilers, etc.) that comprise the “user space” (AKA “userland”).
The TL;DR is: “Linux” in itself is just a very low-level component of an Operating System, and while it is possible to make up a family of all OS using Linux (the so called “Linux distributions”), no single OS can be called “Linux” on its own.
As a result, “supporing Linux” is a very imprecise goal, and if one really wants to achieve it, they would have to ship an entire “Linux distribution” as a product. That is not ideal.
You might wonder why I’m talking about all this…
The reason is that the “Linux” release of Renoise is lacking.
Here are the main problems I have identified:
- The scripts needlessly depend on bash, which may or may not be present on a given distribution. But the POSIX shell, virtually identical for the purposes of the Renoise scripts, is, by specification, always present.
- The
renoisebinary depends on (links to) various system libraries, which, on my devuan system, require the following packages:libasound2t64,libc6,libc6-amd64-cross,libc6-amd64-i386-cross,libc6-amd64-x32-cross,libc6-dev,libgcc-s1,libstdc++6,libx11-6,libxau6,libxcb1,libxdmcp6,libxext6. - Several other binaries are present and dynamically linked, thus depending on specific libraries being present on the system.
- The install script exits with
1upon success. - The install script does not trap.
- The install script executes the (empty) output of some commands that are only supposed to validate the content of files (grep, etc).
- The install script has flawed logic (wrt checking the CPU governor and in a few other points).
- The install script assumes the presence of expected binaries, without checking.
- The install script does not seem to check the presence of the required dependencies (libraries).
- Your binary seems to depend on X11 (no wayland compatibility).
For fixing points 1, 4, 5, 6, 7, 8 and 9, a rewrite of the scripts is required.
For fixing points 2 and 3, static linking of your binaries is required. I don’t know how your code looks, or how your build system is, and this might be a herculean task. At the very least, the installation script should take care of ensuring the presence of the dependencies.
For fixing point 11, a specific development effort is required, which I wouldn’t be sure is worth doing at the moment.
Conclusion: as it stands, Renoise might very well work on a majority of Linux distributions (by user share), because of the utter lack of diversity in Linux distributions (they almost all use the glibc, systemd and GNU Bash). There are several possible improvements to mitigate this situation, with varying degrees of difficulty.
As a side note, I would be willing to provide you with a reworked version of the install script. Contact me via a direct message if you are interested.