January 08, 2017
https://issues.dlang.org/show_bug.cgi?id=7016

--- Comment #26 from Timothee Cour <timothee.cour2@gmail.com> ---
I confirm this is still broken with dmd HEAD DMD64 D Compiler v2.073.0-devel-a2b772f

RazvanN, are you sure you're not using rdmd ?

Please re-run using -v and show your entire log.

rdmd -deps=a.deps --force -c a.d && cat a.deps would indeed produce a line "c (c.d) : private : object"

dmd -deps=a.deps --force -c a.d && cat a.deps would currently NOT produce this line, which is what this bug is about.

the reason rdmd produces the correct -deps here is because a.d contains top level "import b" so it'll also compile b.d and hence show c.d, but that won't work with more complex cases (eg if c.d contains: void test2(){import c2;}, it won't list c2.d)

This is the biggest bug for d's build system.

--
January 08, 2017
https://issues.dlang.org/show_bug.cgi?id=7016

Timothee Cour <timothee.cour2@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |blocker

--
January 08, 2017
https://issues.dlang.org/show_bug.cgi?id=7016

Timothee Cour <timothee.cour2@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P2                          |P1

--
January 19, 2017
https://issues.dlang.org/show_bug.cgi?id=7016

--- Comment #27 from RazvanN <razvan.nitu1305@gmail.com> ---
Running semantic3 recursively on dependencies will end up in an infinite loop when there are circular imports. So, I propose the following solution:

-> the current -deps implementation should remain untouched and this will print
   all the direct dependencies.
-> add another compiler flag: "-rdeps" (or maybe a more inspired name) which
   will recurs through all the dependencies, excluding druntime or phobos
imports.
   The rationale behind this is that both druntime and phobos have circular
imports
   which will cause the recursive implementation to fail; also having just 1
phobos
   import will lead to a cascade of imports which will be hard to follow.

Any better ideas?

RazvanN

--
January 19, 2017
https://issues.dlang.org/show_bug.cgi?id=7016

--- Comment #28 from Vladimir Panteleev <thecybershadow@gmail.com> ---
(In reply to RazvanN from comment #27)
> -> add another compiler flag: "-rdeps" (or maybe a more inspired name) which
>    will recurs through all the dependencies, excluding druntime or phobos
> imports.
>    The rationale behind this is that both druntime and phobos have circular
> imports
>    which will cause the recursive implementation to fail; also having just 1
> phobos
>    import will lead to a cascade of imports which will be hard to follow.

Hard-coding blacklists for druntime and phobos into the compiler sounds wrong. (People may need to build D against other libraries with the same issues, or build against Phobos from source - i.e. without linking to libphobos2.) If this is done, there would probably need to be ways to add to or remove from that list.

Either way, it sounds like this will also result is a huge slowdown...

> Any better ideas?

Would it be a far stretch from this to add a switch to just do code generation whenever an import is done, whether it's in semantic3 or earlier? Meaning, move rdmd into dmd itself. I think all we need is a switch to enable this behavior (e.g. -r, for recursive compilation), and switches to add or remove from the list of packages that will be excluded from compilation (default being std.*, etc.* and core.*). This will make rdmd much faster, too, since it will no longer need to ask the compiler to perform semantics just to get a list of modules to compile and do it all over again during the real compilation.

--
May 08, 2017
https://issues.dlang.org/show_bug.cgi?id=7016

--- Comment #29 from github-bugzilla@puremagic.com ---
Commit pushed to master at https://github.com/dlang/phobos

https://github.com/dlang/phobos/commit/29273f261c94e1bbe1042ec58a362d70cb344188 remove .deps file generation

- for development, people can use the much faster std/algorithm.test targets
- for batch unittest recompiling isn't of much interest as all the
  testers just start from a clean slate anyhow
- furthermore the .deps generation is broken anyhow, see Issue 7016

--
May 19, 2017
https://issues.dlang.org/show_bug.cgi?id=7016

--- Comment #30 from github-bugzilla@puremagic.com ---
Commits pushed to master at https://github.com/dlang/dmd

https://github.com/dlang/dmd/commit/6be32270b411d13f49ffccaa055b2cb13060c495 Fix Issue 7016

https://github.com/dlang/dmd/commit/afebe0c2ba89594b434d676fbe0c050389a5b48c Merge pull request #6748 from RazvanN7/Fix_Issue_7016

Fix Issue 7016 - local import does not create -deps dependency merged-on-behalf-of: Andrei Alexandrescu <andralex@users.noreply.github.com>

--
May 19, 2017
https://issues.dlang.org/show_bug.cgi?id=7016

github-bugzilla@puremagic.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED

--
June 17, 2017
https://issues.dlang.org/show_bug.cgi?id=7016

--- Comment #31 from github-bugzilla@puremagic.com ---
Commits pushed to stable at https://github.com/dlang/dmd

https://github.com/dlang/dmd/commit/6be32270b411d13f49ffccaa055b2cb13060c495 Fix Issue 7016

https://github.com/dlang/dmd/commit/afebe0c2ba89594b434d676fbe0c050389a5b48c Merge pull request #6748 from RazvanN7/Fix_Issue_7016

--
June 17, 2017
https://issues.dlang.org/show_bug.cgi?id=7016

--- Comment #32 from github-bugzilla@puremagic.com ---
Commit pushed to stable at https://github.com/dlang/phobos

https://github.com/dlang/phobos/commit/29273f261c94e1bbe1042ec58a362d70cb344188 remove .deps file generation

--