[M3devel] cm3 command line interface and output; was: RE: www.opencm3.net/m3tests

Tony Hosking hosking at cs.purdue.edu
Tue May 6 16:06:57 CEST 2008


I'm am strongly with Jay on this one.

On May 6, 2008, at 9:33 AM, Olaf Wagner wrote:

> Quoting Jay <jayk123 at hotmail.com>:
>
>> When I say show cm3cg/as invocations, I mean in this new TARGET/ 
>> cm3.log.
>> As I said, I propose exactly the stdout/stderr you want, but then   
>> some other output always, a log file.
>> Also, about -commands, I have also claimed that it does work --   
>> talking out of both sides of my mouth. The extra commands it  
>> prints  are obviously harmless. I forget what doesn't print, maybe  
>> exec vs.  q_exec? Also the '@' character wasn't working with  
>> q_exec, but that  isn't necessarily relevant here..I forgot where I  
>> use exec vs.  q_exec..
>> And there plenty of other ways to debug than -commands and it is   
>> "just" a debugging facility..
>
> I've got a rather definite opinion about the output behaviour of
> cm3. It's like this, and I would like others to comment, too:
>
> o cm3 without any switches (-commands, -debug, -verbose) should
>   not output any called commands, neither to stdout nor stderr.
>   It may print what it is doing in an abstract, target independent
>   (short) way. This output may refer to compilation units, interfaces,
>   modules, and compilation phases, but not to target specific commands
>   and files (unless there are errors, of course) Even then I'd like
>   to abstract from differences.
>
> o cm3 -silent should suppress the normal output, except for warnings
>   and error messages.
>
> o cm3 -commands should output exactly all invokations of externals
>   commands so that they can be re-executed from the command line
>   if necessary.
>
> I realize that it might not be this way in every aspect, so that
> we may need to adapt the code here and there. But in my experience
> it has worked this way quite well. Here are some points to consider:
>
> o We need consistent behaviour and output across all target platforms.
>   This is not just a requirement of regression testing, but also of
>   a consistent user interface. I don't want different behaviour on
>   different platforms.
>
> o If -commands does not work as expected for some use case,
>   we need to fix it.
>
> o If q_exec or whatever quake function is still deficient in this
>   respect, we need to fix/adapt it. It should not be much effort.
>
> o I find the options -commands, -verbose, -debug, -silent a very
>   good categorization of information types, intuitively understandable
>   and usable in practive (as I've never had any problems with it, but
>   have used them efficiently for years). So I don't see the point
>   in changing anything, unless there is a better concept.
>
> o I don't think it is a good idea to write any log files by default
>   (apart from the stdout and stderr streams).
>
> This is of course just my opinion, but unless there are others in
> favour of changes (and I'd like some motivation for them) I'd insist
> that we keep the existing design.
>
> Olaf
>
>> From: jayk123 at hotmail.comTo: wagner at elegosoft.com;  m3devel at elegosoft.comDate 
>> : Tue, 6 May 2008 10:57:01 +0000Subject:  Re: [M3devel] www.opencm3.net/m3tests
>>
>>
>> Olaf, I don't entirely agree.The logs should be fairly informative   
>> without intervention.Just not too verbose. I'd would rather remove   
>> the lines that say "compiling" and show the cm3cg invocations.But   
>> more than one line per source file is too much.-commands doesn't   
>> really work. Lots of bogus extra commands are echoed (rm .tmp),  
>> and  not all the commands that are run are echoed. I understand  
>> that  stability for tests is also a goal, but information for the   
>> interactive user and for post mortem debugging via a log is also   
>> valuable, and these are contrary to stability-for-tests. Somehow   
>> contradictory goals need to be met. How about a compromise?How  
>> about  we always log more stuff to TARGET/cm3.log? And then exactly  
>> what  you want to stdout/stderr?While, as I said, more than one  
>> line per  file is overkill, as part of this compromise I'd be  
>> willing to  include the cm3cg and as invocation. Have folks used  
>> build.exe in  the Windows NT DDK?It's model is close to what you  
>> get here.It has  three sets of information:  to the console/ 
>> stdout   build.log,  build.exe is a wrapper over make, and this  
>> includes all the make  output -- all the command lines run    
>> build.err, a small subset of  console/stdout output My "design"  
>> here has been to avoid  over-verbosity. Link and mt run on the  
>> order of once, or a small  number of times, per directory, so  
>> showing the full command line  (response files...) isn't so verbose  
>> -- vs. say something shown once  per compiled file. There's another  
>> "problem" here that I have partly  fixed.Underlying errors are not  
>> shown on console/stdout/stderr.They  are often in like TARGET/ 
>> m3core.lst. I changed stuff to refer to  that file, after having  
>> hunted the errors down myself slowly the  first time. We could  
>> change things to alway says "see  TARGET/cm3.log" for more  
>> information, or somesuch.  - Jay
>>
>>> Date: Tue, 6 May 2008 10:07:11 +0200> From: wagner at elegosoft.com>   
>>> To: m3devel at elegosoft.com> Subject: Re: [M3devel]  www.opencm3.net/m3tests 
>>> > > Quoting Jay <jayk123 at hotmail.com>:> > >  The "problem" here, a  
>>> really really small one, is just that the  link > > and mt  
>>> commands got echoed.> > Olaf made them not echoed.  I then made  
>>> them conditionally echoed.> > I made m3-sys\m3tests  define  
>>> M3TESTS so that NT386.common doesn't echo.> > It's not a big  deal  
>>> either way.> > Aha -- tests in other directories would have a   
>>> problem, and I think > > there are some.> >> > I like more  
>>> echoing  usually, so the system explains what is going on,> >  
>>> instead of the  vaguer "linking foo" sort of message.> > Granted,  
>>> nobody bothers  watching gcc run assembler commands, so I > >  
>>> guess it is just  quite gray.> > Jay, cm3 needs to behave the same  
>>> on all platforms.  By default> commands should _not_ be echoed to  
>>> stdout or stderr;  that's what the> -commands switch is for: this  
>>> gives you exactly  the commands the> compiler issues to invoke  
>>> other tools.> > For  more verbose output, you may also depend on  
>>> the -verbose or the>  -debug switches.> > Please adapt the  
>>> configuration files that bey  default all echoing> of commands is  
>>> off.> > Olaf> > > I don't know  how to run the Tinderbox either  
>>> yet, sorry.> > I tried.> >> > For  adding tests, well, there is m3- 
>>> sys\m3tests.> > That is where a lot  of the tests are, but not  
>>> all.> > I am not sure where tests belong.  I added a small number  
>>> there.> > They are named with just a letter  and a number.> > The  
>>> letters have some meaning, explained in the  m3makefile.> > "p" is  
>>> programs that are run and their stdout/stderr  compared > >  
>>> against expected> > "e" is programs build and the  errors from the  
>>> compiler checked to be > > reasonable.> > I don't  think in  
>>> general they are expected to successfully compile > > or  run,  
>>> though the case of "warnings" may be unclear.> > "c" is  programs  
>>> built so a human can look at the generated code.> > There  is  
>>> another case I think for human checking.> > The numbers are just   
>>> 001, 002, 003, etc.> > Each hundred tests are in a separate   
>>> directory, like p0\p001, > > p0\p002, p1\p100, p1\101, etc.> >> >   
>>> Something like this.> > Wherever I have details wrong, just look  
>>> in  m3-sys\m3tests. It's > > pretty simple, obvious, and well   
>>> commented.> >> > The output is a little clearer if you have a   
>>> working diff.exe on the path.> > Then what you do is search for   
>>> "@@" in the output.> >> > - Jay> >> >> > Date: Tue, 6 May 2008   
>>> 03:46:27 +0200From: dabenavidesd at yahoo.esTo: > >  m3devel at elegosoft.comSubject 
>>> : [M3devel] www.opencm3.net/m3testsDear  > > developers:Does the  
>>> recent tests on NT386 seem broken because a  > > recent change on  
>>> the m3-sys tree, or is the HTML bad generated,  I > > mean can you  
>>> check the last tests Sunday, May 4th (p001 to  p042) has > > a red  
>>> background > >  http://www.opencm3.net/m3tests/m3tests-NT386-2008-04-23-13-30-57.html 
>>> </pre></td></tr> <tr class="bgred tl"><td> p002 </td><td  
>>> class="small" width="45%"> Text</td><td  
>>> class="small"><pre>Comparing files P0\P002\stdout.build and ..\SRC 
>>> \P0\P002\STDOUT.BUILD***** P0\P002\stdout.buildlink  
>>> @_m3responsefile0.txt 2>&1 > pgm.lstmt /nologo /manifest  
>>> pgm.exe.manifest /outputresource:pgm.exe;1***** ..\SRC 
>>> \P0\P002\STDOUT.BUILD*****Comparing files P0\P002\stderr.build  
>>> and ..\SRC\P0\P002\STDERR.BUILDFC: no differences  
>>> encounteredComparing files P0\P002\stdout.pgm and ..\SRC 
>>> \P0\P002\STDOUT.PGMFC: no differences encounteredComparing files  
>>> P0\P002\stderr.pgm and ..\SRC\P0\P002\STDERR.PGMFC: no differences  
>>> encounteredand almost the same pattern in the above tests.I would  
>>> suggest if it is thinkable using NT386 variant with a complete  
>>> dedicated machine/system, I can try to set up one this week and  
>>> send the data back (the machine is behind a proxy), but I don't  
>>> remember the mail explaining the set up, and also want to know if  
>>> there is a chance of run the tests with one run script.Also what  
>>> is the best natural way to put a new tests, and the standard name  
>>> it should > > have?Thanks> >> >> > Enviado desde Correo Yahoo!La  
>>> bandeja de entrada más inteligente.> > > > -- > Olaf Wagner --  
>>> elego Software Solutions GmbH> Gustav-Meyer-Allee 25 / Gebäude 12,  
>>> 13355 Berlin, Germany> phone: +49 30 23 45 86 96 mobile: +49 177  
>>> 2345 869 fax: +49 30 23 45 86 95> http://www.elegosoft.com |  
>>> Geschäftsführer: Olaf Wagner | Sitz: Berlin> Handelregister:  
>>> Amtsgericht Charlottenburg HRB 77719 | USt-IdNr:  DE163214194>
>
>
>
> -- 
> Olaf Wagner -- elego Software Solutions GmbH
>               Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin,  
> Germany
> phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30 23  
> 45 86 95
>   http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz:  
> Berlin
> Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr:  
> DE163214194
>




More information about the M3devel mailing list