shake-build-system

Small binary Shake executable


Is there a way to use Shake using a small binary executable without pulling ghc ? We love Shake but we cannot ask our user to install ghc. As a nix user, could building a static Haskell executable work ? Ideally I would love to just grab the binary from Github (as it is the case for Dhall for instance)


Solution

  • Shake is a library for writing build systems, so most users write their build system as a Haskell project, making heavy use of the Shake library. That Haskell code needs compiling using ghc to produce the build system tailored for that project. As a result, a single universal Shake binary isn't that useful - you'd need to produce one for your specific project.

    Only the people developing/modifying the build script need to actually compile the binary, everyone else can take a precompiled binary, although it will need to be one you internally provide and update on every build script change. You can reduce the frequency of build script changes by defining your own build system using metadata on top of Shake, e.g. following the approach in this talk. Whether a precompiled binary is viable really depends on how many users are required to modify the build system.