← Back to team overview

touch-packages team mailing list archive

[Bug 1378888] Re: OptionParser on PPC64LE does not split args correctly

 

I've tried to use PDb on Ubuntu/PPC64LE for debugging the issue.

However, with Pdb, the issue disappears...
We have in "opts" variable the correct value for fields:     'fields': 'first, last'


$ pdb ../../lang/py/build/scripts/avro cat /tmp/REIX --fields 'first, last'

build/scripts/avro: line 243:
  opts, args = parser.parse_args(argv[1:])

Pdb) c
> /home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/scripts/avro(243)main()
-> opts, args = parser.parse_args(argv[1:])
(Pdb) n
...
(Pdb) p opts
<Values at 0x3fff9b8274d0: {'count': inf, 'format': 'json', 'skip': 0, 'input_type': None, 'print_schema': False, 'filter': None, 'header': False, 'fields': 'first, last', 'output': '-', 'schema': None}>
(Pdb) p args
['cat', '/tmp/REIX']


.......

(Pdb) n
> /home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/scripts/avro(125)cat()
-> print_avro(avro, opts)
(Pdb) n
{"last": "duck", "first": "daffy"}
{"last": "bunny", "first": "bugs"}
{"last": "", "first": "tweety"}
{"last": "runner", "first": "road"}
{"last": "e", "first": "wile"}
{"last": "le pew", "first": "pepe"}
{"last": "leghorn", "first": "foghorn"}
> /home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/scripts/avro(113)cat()
-> for filename in args:
(Pdb) n
--Return--
> /home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/scripts/avro(113)cat()->None
-> for filename in args:
(Pdb) n
--Return--
> /home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/scripts/avro(250)main()->None
-> cat(opts, args)
(Pdb) n
--Return--
> /home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/scripts/avro(261)<module>()->None
-> main()
(Pdb) n
--Return--
> <string>(1)<module>()->None
(Pdb) n
The program finished and will be restarted


Launching the same command withoug pdb:
    ../../lang/py/build/scripts/avro cat /tmp/REIX --fields 'first, last'
raised the same issue:

{"first": "daffy"}
{"first": "bugs"}
{"first": "tweety"}
{"first": "road"}
{"first": "wile"}
{"first": "pepe"}
{"first": "foghorn"}
Usage: avro cat|write [options] FILE [FILE...]

avro: error: Can't open last - [Errno 2] No such file or directory:
'last'

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to python2.7 in Ubuntu.
https://bugs.launchpad.net/bugs/1378888

Title:
  OptionParser on PPC64LE does not split args correctly

Status in “python2.7” package in Ubuntu:
  New

Bug description:
  The issue appears on PPC64 LE.
  It is OK on (Ubuntu) x86_64.
  Version of Python is 2.7.6 on both systems.
  The issue is demonstrated while running AVRO Python tests (in lang/py : ant test).

  
  - On Ubuntu / PPC64 LE :

  $ pwd
  ..../lang/py
  $ export PYTHONPATH=./build/src
  $ /home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/test/../scripts/avro cat /tmp/REIX --fields 'first, last'
  {"first": "daffy"}
  {"first": "bugs"}
  {"first": "tweety"}
  {"first": "road"}
  {"first": "wile"}
  {"first": "pepe"}
  {"first": "foghorn"}
  Usage: avro cat|write [options] FILE [FILE...]

  avro: error: Can't open last - [Errno 2] No such file or directory: 'last'
  $ echo $?
  2

  The issue is that 'first, last' is not parsed correctly. The white
  space between "," and "last" is parsed in a way that makes "last" been
  interpreted as a "FILE" instead of an option.

  
  Without the white space, that works fine:

  $ /home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/test/../scripts/avro cat /tmp/REIX --fields 'first,last'
  {"last": "duck", "first": "daffy"}
  {"last": "bunny", "first": "bugs"}
  {"last": "", "first": "tweety"}
  {"last": "runner", "first": "road"}
  {"last": "e", "first": "wile"}
  {"last": "le pew", "first": "pepe"}
  {"last": "leghorn", "first": "foghorn"}
  $ echo $?
  0

  
  - On Ubuntu / x86_64, both 'first, last' and 'first,last' are OK:

  $ pwd
  ..../lang/py
  $ export PYTHONPATH=./build/src
  $ build/test/../scripts/avro cat /tmp/REIX --fields 'first, last'
  {"last": "duck", "first": "daffy"}
  {"last": "bunny", "first": "bugs"}
  {"last": "", "first": "tweety"}
  {"last": "runner", "first": "road"}
  {"last": "e", "first": "wile"}
  {"last": "le pew", "first": "pepe"}
  {"last": "leghorn", "first": "foghorn"}
  $ echo $?
  0

  
  Source code of: /home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/test/../scripts/avro  is:

  def main(argv=None):
      import sys
      from optparse import OptionParser, OptionGroup

      argv = argv or sys.argv

      parser = OptionParser(description="Display/write for Avro files",
                        version="1.7.4",
                        usage="usage: %prog cat|write [options] FILE [FILE...]")
  ....

  So, OptionParser() does not work on PPC64 like it does on x86_64.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1378888/+subscriptions


References