www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 767] New: compiler shall print dependencies and pragma(lib)

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=767

           Summary: compiler shall print dependencies and pragma(lib)
           Product: D
           Version: 0.178
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P3
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: benoit tionex.de


Let the compiler have a new commandline switch:

-bldinfo
-bldinfo=filename
Prints the bldinfo either to the console or into the given file. The bldinfo
contains informations about found dependencies and pragma(lib) statements. 

Every bldinfo line has the format:
"bldinfo <recordtype>: <info>"

Every active import from a module will be printed like this:
"bldinfo import: %s(\"%s\") => %s(\"%s\")", moduleFQN, moduleFileName,
importedModuleFQN, importedModuleFileName

Every active pragma(lib) is printed like this:
"bldinfo pragma-lib: %s(\"%s\") => \"%s\"", moduleFQN, moduleFileName,
stringFromPragma

"Active" here means, the statement is relevant for compilation. It is not
deactivated through version/debug/static-if conditions. 

Filenames are printed as absolute paths.
Filenames and strings are escaped like the D string literals and they are
double  quoted.

If printed to the console, the bldinfo is printed in between the other
messages.
The bldinfo is printed without any special order.
The bldinfo is printed for all modules given on the command line.
The bldinfo is also printed recursively for all modules that are imported.


-- 
Dec 29 2006
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=767


Don <clugdbug yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |clugdbug yahoo.com.au



I believe this is mostly implemented in the -deps flag. Is anything left to do?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 22 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=767


nfxjfg gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |nfxjfg gmail.com



You still can't get the libs requested by pragma(lib ...).

dmd -v will print the libs, but that's not comfortable enough.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 22 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=767


Rainer Schuetze <r.sagitario gmx.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |r.sagitario gmx.de



PDT ---
I would like too see string imports to be shown in the dependencies:

c:\>type test.d
int ver=mixin(import("Version"));

c:\>type version
42

c:\>dmd -c -J. -deps=deps test.d

c:\>type deps
test (test.d) : public : object (m:\\s\\d\\phobos\\druntime\\import\\object.di)

This should show "version", too.

Libraries "imported" by pragma(lib) to be shown would be nice, but this is not
complete for a building tool, anyway, because pre-built libraries might force
the inclusion of more libraries. I'd like the linker to supply a list of
searched libraries.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 22 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=767




I figure dmd doesn't report these string imports because it would re

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 23 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=767




I figure dmd doesn't report these string imports because it would require full
semantic analysis of the code. Which would be much slower, making the -deps
mode less useful.

Maybe the compiler should provide an "-a" flag, which automatically builds all
imported modules? Incremental building is broken anyway (at least due to bug
3274, other reasons include CTFE, which subverts module dependencies, and some
types of out-of-declaration bugs [forward refs]).

Then dmd would need to run semantically analysis only once to build a program.
To facilitate building relatively independent packages as libraries, another
flag could be added to dmd to exclude certain package paths using glob
patterns.

Sorry for the previous comment, I think I accidentally hit soem key
combination, that made the browser to submit the form.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 23 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=767




PDT ---
-deps does not enable a different mode, it just tells dmd to output any file
imported to the given dependency file during the normal compilation process.

There is no need for an extra compilation step, just use the info in the
dependency file from the last compile to figure out if an update is necessary.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 23 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=767


Andrei Alexandrescu <andrei metalanguage.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
                 CC|                            |andrei metalanguage.com
         AssignedTo|nobody puremagic.com        |bugzilla digitalmars.com


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 26 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=767


jfanatiker gmx.at changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
                 CC|                            |jfanatiker gmx.at
         Resolution|                            |FIXED



Fixed in: https://github.com/D-Programming-Language/dmd/pull/1839

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 09 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=767


bearophile_hugs eml.cc changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bearophile_hugs eml.cc




 Fixed in: https://github.com/D-Programming-Language/dmd/pull/1839
It generates a quite large output :-) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 09 2013
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=767




 It generates a quite large output :-)
That is unfortunately true. I tried to trim it, by filtering out all standard versions, but it is still quite a lot and also quite redundant in places. I don't know if this is a problem, there is one tiny area where it could be reduced a bit, other than that recursive dependency listing is just a whole bunch of information. With a command line overhaul some additional switch could be added so that dependency information is not printed recursively but just for the modules being compiled. Which sometimes is all you need. And thanks for checking it out! :-) Best regards, Robert -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 10 2013