[Dlang-internal] Dependency on dlang/tools

Sebastian Wilzbach via Dlang-internal dlang-internal at puremagic.com
Sat Mar 4 20:37:18 PST 2017


Hi all,

recently there have been some discussions about our dependency on the 
tools repo.
As Brad protested loudly and even I get lost in all the open PRs, I 
think it's better to have the discussion here.

Checkwhitespace.d
-----------------

- _only_ for the checkwhitespace target (= tools will only be cloned 
when explicitly requested)
- we already use `grep` for this in the `style` target at Phobos (of 
course, I do prefer doing it in D as well)

The regarding PRs are here:

https://github.com/dlang/phobos/pull/5231
https://github.com/dlang/dmd/pull/6584

tl;dr: I think this case is less problematic because it's an optional 
target.

osmodel.mak
-----------

- the file was redundant over all repos
- _not_ all instances of it were updated properly (despite the comment 
in the header!)

Summary of the discussion so far:

klickverbot: (after I proposed to use dmd/src/osmodel.mak as single 
source of truth)

> tools is also interesting built in isolation with other compilers 
> (DMD=ldmd2, etc.), so this seems like a questionable suggestion. You 
> wouldn't want to keep the DMD source around just for osmodel.mak 
> (especially when building distro packages due to the non-free code it 
> contains).

Brad:
> Please no. I strongly object to the default build doing any network 
> activity. Similarly I object to adding cross-package dependencies like 
> this. I admit it's been a while since I checked, but it used to be and 
> should be possible to checkout any one of the repos and built it stand 
> alone.

Remarks:
- for phobos one needs at least druntime
- for tools one needs druntime and phobos
- for dlang.org one needs all repos (even the installer)

The regarding PRs are here:

https://github.com/dlang/dlang.org/pull/1596
https://github.com/dlang/tools/pull/227
https://github.com/dlang/phobos/pull/5228
https://github.com/dlang/druntime/pull/1780

So:
A) Do we keep the status quo?
B) Do we use dmd as single source of truth?
C) Do we just require that a contributor checks out tools as well?

For (C) we can help the contributor to do so automatically, e.g

TOOLS_DIR = ../tools
$(shell [ ! -d $(TOOLS_DIR) ] && git clone 
https://github.com/dlang/tools $(TOOLS_DIR))
include $(TOOLS_DIR)/osmodel.mak

Personally I am in favor of (C) as keeping everything updated is much 
more work and annoying than automatically cloning a repo that changes 
infrequently.

Cheers,

Seb


More information about the Dlang-internal mailing list