www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Rebuilding phobos' ddox after a change

reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
So I changed one file in phobos and then went to the dlang.org tree and 
issued "make". The old-style ddoc was rebuilt, but the ddox was not.

I recall this has been an issue for a while now. What is a reasonable 
fix? The last line output by the process says "To force a rebuild of 
up-to-date targets, run again with --force." which gives a suggestion.

I tried the workaround to pass --always-make to make, but then I got this:

fatal: destination path '../druntime' already exists and is not an empty 
directory

issued by "git clone". We should probably only use git clone only if a 
dir doesn't exist, and use git pull otherwise.

My only recourse right now is to issue "make clean; make", which is 
inefficient if I do it many times.

Could someone please look into this?


Thanks,

Andrei
Sep 16 2016
parent Vladimir Panteleev <thecybershadow.lists gmail.com> writes:
On Friday, 16 September 2016 at 13:36:38 UTC, Andrei Alexandrescu 
wrote:
 So I changed one file in phobos and then went to the dlang.org 
 tree and issued "make". The old-style ddoc was rebuilt, but the 
 ddox was not.
There are two issues here: 1. The dlang.org makefile does not know the full set of files in Phobos, or how they map to .html files. Currently this is worked around by a recursive make invocation (we invoke the Phobos posix.mak and ask it to build the docs, if needed). 2. The makefiles do not know how Phobos .d files map to DDox .html files. In fact, the Phobos makefile (which knows what the Phobos .d files are) does not know anything about DDox at all. Though, I believe that currently DDox gets all information from DMD's .json output, which is obtained by globbing for *.d files in the Phobos directory.
 I recall this has been an issue for a while now. What is a 
 reasonable fix?
In theory, it would be possible to fix this by adding a DDox feature to generate a Makefile include, which would represent the mappings between .d files and generated .html files, similar to rdmd's --makedepend.
 My only recourse right now is to issue "make clean; make", 
 which is inefficient if I do it many times.
According to the makefile, deleting docs-prerelease.json should force "make" to rebuild the DDox documentation.
Sep 16 2016