As I'm working to remove client.mk, I'm encountering quite the spiderweb of
dependencies between:

* mach
* client.mk
* configure.in and configure
* moz.configure / configure.py
* config.status
* build backend (Makefile.in, etc)

Today, it is possible to bypass our frontends (mach and client.mk) and
invoke the underlying components (configure, moz.configure, Makefile)
directly. This results in hacks like configure.in being both a valid shell
and m4 file. (The build system copies it to configure but you can also run
`autoconf` to achieve a similar result.)

While my work to remove client.mk is centered around eliminating the
redundancy between `mach` and client.mk by effectively moving logic into
mach, as I'm touching the code it is obvious that all the code around
configure[.in], moz.configure, config.status, etc could use a major
overhaul. I'd love to say that "`mach` is the only supported interface to
build Firefox." After all, from my perspective as a build system
maintainer, it is much, much easier to support 1 thing instead of N>1.

This poses the question: is it important to preserve the illusion that our
build system is following autotools "standards"? If not, can we declare
`mach` is the only supported interface and [re]move things like configure.in,
configure, configure.py, config.status, and Makefile.in at our leisure?
_______________________________________________
dev-builds mailing list
dev-builds@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-builds

Reply via email to