-
-
Notifications
You must be signed in to change notification settings - Fork 206
Description
The current build system is, to put it lightly, complex and slow, involving building an entire toolchain the first time heads is built. The goal of this is to ensure reproducible builds, but this has apparently been broken for over two years #734 with no sign of it being fixed. A simple solution, which would make it much easier and faster for end users, as well as make reproducible builds much more simple, would be to use docker to build Heads.
Pros:
- Faster: no need to compile our own toolchain and host our environment
- Reproducible: By deploying a build system similar to what Signal has done for their APK (pinning specific package versions on a snapshot.debian.org archive), we can ensure the build system is identical for all users
- Complexity: We can eliminate much of the top level makefile and many modules
- Simplicity: no more dependency hell (even using the dependency list in the CI I had issues build heads)
- Crossplatform: I hate Windows and MacOS, but being able to build heads everywhere would be quite nice
Cons:
- Space: hosting an entire docker image, even a minimal one, would incur extra overhead. I doubt it would be any significant amount compared to the amount we already use
- The continued dockerization of everything, arguably good and bad depending on who you ask
I'm not particularly interested in hacking this together unless there is a possibility this would eventually be merged upstream, which is why this is an issue, not a pull request. If there is interest, I could very quickly put together a working Dockerfile for testing. If we choose to use docker, I believe it would be best to:
- Entirely remove the existing build system and only support reproducible builds using docker
- Allow building using the host toolchain directly
- Only provide support for building using Docker