[M3devel] cm3 command line interface and output; was: RE: www.opencm3.net/m3tests
Tony Hosking
hosking at cs.purdue.edu
Tue May 6 16:07:56 CEST 2008
Oops I meant *Olaf* !
On May 6, 2008, at 10:06 AM, Tony Hosking wrote:
> 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