I have noticed that when using rosmake if you enter anything that exits through optparse ( rosmake --help for example ) then you get an undesired traceback.  I looked at the way it is being used and I cannot figure why the traceback is being generated.  transcript:

$ rosmake --asdf
Usage: rosmake [options] [PACKAGE]...

rosmake: error: no such option: --asdf
Traceback (most recent call last):
  File "/opt/ros/cturtle/ros/bin/rosmake", line 65, in <module>
    if rma.main():
  File "/opt/ros/cturtle/ros/tools/rosmake/src/rosmake/rosmake.py", line 706, in main
    options, args = parser.parse_args()
  File "/usr/lib/python2.6/optparse.py", line 1396, in parse_args
    self.error(str(err))
  File "/usr/lib/python2.6/optparse.py", line 1578, in error
    self.exit(2, "%s: error: %s\n" % (self.get_prog_name(), msg))
  File "/usr/lib/python2.6/optparse.py", line 1568, in exit
    sys.exit(status)
SystemExit: 2

OR

$ rosmake --help
Usage: rosmake [options] [PACKAGE]...

Options:
  -h, --help            show this help message and exit
...
  --status-rate=STATUS_UPDATE_RATE
                        How fast to update the status bar in Hz.  Default: 5Hz
Traceback (most recent call last):
  File "/opt/ros/cturtle/ros/bin/rosmake", line 65, in <module>
    if rma.main():
  File "/opt/ros/cturtle/ros/tools/rosmake/src/rosmake/rosmake.py", line 706, in main
    options, args = parser.parse_args()
  File "/usr/lib/python2.6/optparse.py", line 1394, in parse_args
    stop = self._process_args(largs, rargs, values)
  File "/usr/lib/python2.6/optparse.py", line 1434, in _process_args
    self._process_long_opt(rargs, values)
  File "/usr/lib/python2.6/optparse.py", line 1509, in _process_long_opt
    option.process(opt, value, values, self)
  File "/usr/lib/python2.6/optparse.py", line 788, in process
    self.action, self.dest, opt, value, values, parser)
  File "/usr/lib/python2.6/optparse.py", line 811, in take_action
    parser.exit()
  File "/usr/lib/python2.6/optparse.py", line 1568, in exit
    sys.exit(status)
SystemExit: 0

The common case is that optparse.py is used to exit the script rather then letting the rosmake script finish normally.

My setup:
Linux sakaru 2.6.32-24-generic #42-Ubuntu SMP Fri Aug 20 14:21:58 UTC 2010 x86_64 GNU/Linux
Desktop running Ubuntu Lucid Lynx 10.04
CTurtle binary 1.2.x

Steps to reproduce:
1. execute any rosmake with a passive execution, ie 'rosmake --help' or 'rosmake --asdffj'
2. Expect rosmake to perform normally except for a cosmetic traceback on the sys.exit(status)

Thanks,

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
William Woodall
Graduate Software Engineering
Auburn University
w@auburn.edu
wjwwood@gmail.com
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~