On 17/03/16 07:13, H. S. Teoh via Digitalmars-d wrote:
Personally, I also find makefiles have a tendency to become unmaintable messes. I have yet to find one non-trivial project whose makefiles *aren't* unmaintainable messes. The dmd toolchain tries to, but fails (esp. with the nasty cross-repo references that will basically fail in ugly ways in every case except when you setup your environment exactly like the makefiles implicitly assume -- the hallmark of design smell). My current go-to build system is SCons, a Python-based build system where build scripts are Python scripts. However, far from becoming a problem due to Turing-completeness, generally I hardly ever use the full expressive power of Python; the primitives provided take care of 99% of the most typical build scenarios. However, for those rare but unavoidable cases where you need something more, having a full programming language at your disposal is a life-saver.
I completely agree. It's the same with Ruby and especially if you include Rails. It has a lot of small DSL's that are all in Ruby. Many which might have been XML, JSON or similar in other language.
Take for example a Gemfile (which lists dependencies of a project). The Gemfile is written in a DSL in Ruby. I can't remember the last time I saw a Gemfile with something other than the standard dependency statements:
gem 'rails', '4.2.0' gem 'pry', '0.9.1' -- /Jacob Carlborg