Also I don’t know at all what to do when this all will be installed (if it happens one day) where to put the plugins, or the SDKs so once this will be done It may take still a lot of time, I don’t know.
All these attempts, just to get the linux versions… I’m on it since 3 days now, it begins to drive me crazy I wonder if won’t simply stop it and retry in a week because I’m closed to smash my computer on the ground
The toolchain is designed to create a cross-compilation environment on Linux.
The Docker solution is convenience for myself.
The Docker environment - in theory cross-platform - has issues on macOS and specifically Windows, which I attribute to Docker performance on those platforms.
I have seen issues with parallelized builds that work fine on Linux and fail consistently on macOS. Therefore, I have to build the toolchain on macOS with JOBS=1, preventing parallelized builds. This takes a long time.
I have never been able to successfully build the toolchain on Windows in the Docker environment.
For building Linux builds, I recommend you use a Virtual Machine with Ubuntu 20.04 and use the toolchain build without Docker by running
This will build the correct compiler version incl. the correct libc for the Linux build.
The binaries for the toolchain will be located in local directory, which the build process creates inside of the rack-plugin-toolchain source tree.
Set the following environment variables:
export PATH:=<location of your local dir>/x86_64-ubuntu16.04-linux-gnu/bin:$(PATH)
export CC := x86_64-ubuntu16.04-linux-gnu-gcc
export CXX := x86_64-ubuntu16.04-linux-gnu-g++
export STRIP := x86_64-ubuntu16.04-linux-gnu-strip
And you can build the plugins from the plugin source tree with:
In a post, 13h ago, there was something about what version of Linux use.
Please make it clear to the developers - if it isn’t allready - what versions they are supposed to use - or the volunteer un-paid supporters in various communities have needless work to do with figuring out what the users did wrong.
Yes, but the plugins aren’t OK in the library and users are waiting. My laptop seems to still work (miracle because the schock was pretty hard) I continue, probably not good for my mental health but I’m at the point where nothing will calm me down…But thank you for your support
Yeah I saw, this was posted a few seconds after I had passed my day compiling it all using this technique.
This will probabaly never be OK since github actions seems to not support either version of Ubuntu that are OK for VCV plugins compiling.
You need to understand what the toolchain’s purpose is and how it accomplishes its task.
The Host OS that the toolchain is built on, does not matter for all intents and purposes. Ubuntu, Fedora, Arch, all of them work. The Makefile is pretty agnostic to distribution (with the exception of the dep-ubuntu target, which is made for Ubuntu). I use Ubuntu 20.04 in the Docker image.
The toolchain builds the compiler and all relevant tools and libraries, like libc, to build the plugins. If invoked correctly, the toolchain does not use the Host OS compiler and tools and only a minimum of host-level libraries.
The main issue is that this is not a turn-key solution for everyone. You need to know your way around in a GNU/Linux environment and be able to troubleshoot. We tried to make this is as simple as we can, but given the complexity of the task, is cannot be made much simpler. There is a certain level of knowledge that is required to use it. You need at minimum be able to read and use a Makefile and potentially know your way around Dockerfiles and Docker. If you dig deeper you will find osxcross and crosstool-ng as platforms providing toolchain build capabilities.
The intent of the toolchain is to create a reproducible environment for a) integration (what I do) and b) the official Rack build system. Both steps use the same toolchain so we ensure that plugins that pass integration do not fail during the official build step.
The toolchain represents the official way to build plugins. It is open-source so developers can take a look and see how it works and adjust it to their needs. If open-source developers would like to stay close to that environment, they should use the toolchain, but they don’t HAVE TO. The risk is that there will be issues found during integration.
Ideally, we would be able to provide the toolchain as a turnkey solution that developers of all platforms and skill levels can use. That is not feasible at this point for various reasons, for example licensing of the macOS SDK or the overall complexities of the build process, which require GNU/Linux knowledge as mentioned above.
I can’t imagine having to wait 11 hours for single threaded build of the toolchains. Building the toolchains in a Docker on Arch takes me about 25 minutes with JOBS=20. It builds consistently successful with a minor change to the Makefile. While building the Windows toolchain, parallelized crosstool seems to need more than 1024 open file handles and the build fails. Adding --ulimit nofile=4096 to the “docker-build” section fixes that. Please note that I’m using podman, not docker.