I’m looking to put together a multistage Dockerfile that will build the required dependencies, and then load them up into my soon-to-be-customized build of blender and build it into a statically-linked binary that I can move around without worrying about .so incompatibilities between machines.
I have most of the dependencies compiling… but I am sure I have at least one thing misconfigured somehow and I was wondering where the current recommended pre-compiled binaries come from. The docs mention that they are built on CentOS… but how? Is there a script that generates them that I can look at to compare versions/look at the configurations of All the Things?
In the build_files folder there’s a make_deps.sh file — be careful! It’s bound to conflict with the packages installed on your system. There’s a reason they provide them pre-compiled! They’re hard to compile.
That is not where the precompiled deps come from, that’s a bootstrap that will use as much from the distro’s package manager (shared libs most of the time) and build the missing ones from source. This will be a rather poor fit for making redistributable builds.
You got pretty close tough… in the same folder there is a CMakeLists.txt that will build all deps from scratch, that is what the platform maintainers use to make the deps in SVN.
That being said given that script is made by and for the platform maintainers support on it will be on the limited side of things.
That may not work as well as you’d hope, given we do not (can’t) statically link glibc, the binary will still be depended on the glibc version of the system you build on, and will not run on distributions with older glibc versions. (which is one of the reasons we build on centos)
if you still want to build all from source “make deps” in the main source folder will start off a build, but you’ll probably have to help it along it’s way a few times depending on your environment.
also for this use case the svn libs will suffice, no need to build all from scratch and unless you have a good reason i sure would not.