Skip to content

anordal/annoying-build-systems

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 

Repository files navigation

Annoying Build Systems

Many people complain about many build (and packaging) systems. This repo tries to collect the annoyances in a similar fashion to awesome lists.

To contribute, send pull requests. The Licence for this repo is CC0.

Builds Systems and their Annoyances

Ant

  • Looks like Make with XML syntax

Bazel

  • Can not have external dependencies

Buck

  • Can not have external dependencies

Cabal

Cargo

  • Assumes build machine is networked; no obvious way to pre-download dependencies and have them be used

CMake

  • Custom language
  • Lacking documentation
  • "so huge and bloated, compilation takes longer than compiling GCC (!). It’s not even possible to create freestanding Makefiles, since the generated Makefiles call back into the cmake binary itself." source

Gradle

  • Changes to build.gradle do not implicitly trigger rebuilds
  • If you do not know Groovy the syntax can be confusing

Gyp

  • JSON syntax with condition code as strings

Grunt

Jam

Make alone

Make with Autotools

Maven

  • Restricting build lifecycle concept
  • Throws Null Pointer Exceptions and gives a stack trace for simple errors such as missing parameters
  • Verbose logs
  • Uses XML (possibly annoying), does not support XML attributes (annoying)

Meson

MS Build

Ninja

  • Very low-level
  • All goals are treated as files (no equivalent to Make's PHONY)

NPM

Pants

  • Can not have external dependencies

Python Pip

  • The requirements.txt can either contain the (small) set of direct dependencies or the set of all (transitive) requirements for better repeatability.

Rake

SBT

  • Very slow
  • Builds a directory tree on startup. If SBT is started in the / directory it runs out of memory
  • Uses a hard to understand multilayered mutable execution model "The problems I discussed in this post are deep. These aren't things you can 'just send a PR' or 'just help them fix it'. They are fundamental to what SBT is."

Scons

  • Too slow for larger projects (source)

Shake

  • Requires Haskell (GHC)

Shell Scripts

  • Hard to port
  • Hard to parallelize (thus slow)

Tup

Xmake

About

A collection of annoyances of build systems

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published