Skip to content

Some ideas about the build system #2239

@SunderB

Description

@SunderB

Hi :)
The new cmake build system is pretty nice and is a very welcome addition :) While the build system is being overhauled, I'd thought it maybe a good time to talk about a few thoughts/ideas regarding the build system (that may or may not be good):

  • The build process for the server and gui are currently very intertwined. This is needed to some extent due to the shared resources used by both, but for example src code of external dependencies for the server are located in app/gui/qt/external and are built using build scripts in there. Maybe these would possibly be better off being moved to something like app/server/external? Alos, the idea of flattening the source tree has been brought up in https://in-thread.sonic-pi.net/t/spring-clean-to-enable-contributions/1733/2

  • The system should make packaging for different platforms easier. Some work for has been done regarding this for windows, (and maybe macos) but it would be nice for it to be easy on all platforms. (E.g. to make an .exe; .app package; or .deb and/or .rpm package etc - I'm not too sure how to do this.) Also, for linux, maybe the file paths could be altered to be configurable (e.g. maybe via variables that are configured at build time), to make it easier to support FHS if desired.

  • To setup the cmake environment theres been quite a few system console scripts added for Windows, Linux and macOS. Would it be beneficial to use ruby rake files in place of these to organise tasks, so we can use a full cross-platform (although with different shell commands/default configs depending on os) language for build scripts? Or maybe would it just make it more complicated and bug prone, with running shell commands and coordinating different parts of the project etc? I've recently been working on making something to try this out in my spare time. This could also integrate erlang compilation and then eventually bundling gems for the server and could possibly handle installation and packaging. (Note: I'm not saying I'd be able to fully complete a full implementation of this as I'm doing this in my spare time as a hobby whilst being busy with other things, so therefore I cannot concretly commit time to anything)

If you have any other thoughts or ideas about the build system please put them below so we can all discuss them :)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions