[prev in list] [next in list] [prev in thread] [next in thread] 

List:       apache-stdcxx-dev
Subject:    --compat mode behavior issues
From:       Andrew Black <ablack () roguewave ! com>
Date:       2007-02-27 23:11:12
Message-ID: 45E4BA90.5090602 () roguewave ! com
[Download RAW message or body]

Greetings all.

One of my recent projects has been working on modifications to some of 
the internal build processes related to standard library.  One of these 
modifications has been to include the building of certain 'legacy' tests 
as part of the stdcxx nightly build process.  These tests rely on a 
framework internal to RogueWave, and aren't included in the subversion 
tree.  An ongoing project has been porting these tests to the stdcxx 
test driver, but there are something around 100 of these tests left to 
be ported.

These tests are the reason for the existence of the --compat switch in 
the rwtest library and the exec utility.  The purpose is to allow us to 
run the stdcxx test suite within the RogueWave internal infrastructure, 
and the legacy tests within the makefile infrastructure.  When the 
rwtest library is in compatibility mode, it allows users to specify an 
additional small set of switches on the command line.  Most of these 
switches are placeholders, but the -O switch allows redirection of 
output to an arbitrary file.

At this time, there is an important behavior difference between the 
legacy tests and the rwtest library.  With the rwtest library, all 
output is routed to stderr/stdout.  However, with the legacy tests, the 
output is routed by default to the .out file which the exec utility 
redirects the output to.  Unfortunately, this dual usage of the file 
seems to result in a clearing/clobbering of the output file, resulting 
in a loss of results and a FORMAT status message.  For these tests to be 
useful, we need to resolve this problem.

One (faulty) option would be to use the -O switch in compatability mode, 
and provide it with a file such as /dev/stdout or /dev/fd/1.  On systems 
where these 'magic' files exist, they reference the standard out file 
descriptor.  However, the existence of such a file can't be relied on, 
so we can't use them.  A similar magic file is /dev/tty, which is a file 
descriptor pointing at the active console.  For the child process from 
the exec utility, there is no associated console, so there is no place 
to route the output, leading to a failure.

A second method would be to alter the behavior of the test driver in 
--compat mode to write to the .out file, and alter the exec utility to 
redirect stderr and stdout to /dev/null in --compat mode.

A final method would be to alter the rwtest library to treat the file 
name of '-' when passed to the -O option as stdout, and make a similar 
change to the RogueWave internal framework, then run the executables 
with the options '--compat -O -'.  This would likely be less invasive 
than the other option, and could be considered a useful enhancement.

What thoughts do other people have on this?

--Andrew Black

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic