On Monday, 19 June 2017 at 14:15:22 UTC, Russel Winder wrote:
On Mon, 2017-06-19 at 13:44 +0000, Vladimir Panteleev via
Digitalmars-d wrote:
[…]
DMD is insufficient, and is not the hardest makefile to port.
Any serious proposal would need to cover all core repositories
- dmd, druntime, phobos, tools, and dlang.org. We would need
to evaluate any proposals thoroughly, and it will likely
involve a trial period during which both will be maintained in
parallel before any switch-over occurs.
One doesn't port Makefiles, one writes a new build that
achieves the same final outcomes.
We will likely need to continue providing shim makefiles which
invoke the replacement build system for the foreseeable future.
The big problem here is that all make targets are essentially
part of their public interface, so if we are to avoid breaking
anyone's scripts or workflow, they must be kept working.
Otherwise, I don't disagree.
If those 5 are so interconnected why are they in separate
repositories?
Legacy reasons; prohibitively high cost of migrating to a
monorepo; higher granularity of specialization for maintainers
and reviewers of various codebase components, as well as
assigning permissions to them.
It should be entirely feasible to replace, and evaluate the
replacement of, the builds of each of the repositories
independently.
The current build system has a number of problems caused by the
components being in separate repositories. For example, if you
change a file in Phobos and want to rebuild the documentation
(dlang.org), the latter won't know that only a single file
changed in the former, because the dlang.org makefile is not
aware of the rules governing the building of Phobos files.
Furthermore, both the dlang.org makefile and the Phobos makefile
have a target for building Phobos documentation, but they work in
different ways and produce different results. A replacement build
system that can achieve correct interoperability as described
above would score a lot of points towards being accepted.
More importantly, if we accept a proposal for three repos and on
the fourth one we run into a blocker (or even the replacement
simply being very unsatisfying), then that would put us in an
unpleasant situation. So, I think that requiring working
replacements for all components makes sense as a prerequisite for
any single component being switched over to the new build system.
To demand it is an all or nothing, is to set a bar to high for
volunteer labour.
My labour is just as volunteer as yours. I'm not demanding that
someone presents a complete solution; but neither am I going to
write one from scratch myself. Which is why I said I'd be
interested in further discussion and proposals.
Will you have some time to chat about Reggae on IRC tomorrow? I
should be around about 12 hours from now for about 12 hours since
then.
Interestingly I bet the Make-based build didn't have to undergo
such review. ;-)
It certainly did not. However, migrating from the status quo to
the status quo is a no-op and has a cost of zero. Here, we need
to balance the cost of the migration against the benefits of the
proposal.
That the Makefiles are tangled does not imply a proper build
should be.
There are many moving parts, and we will keep wanting to add more.