[Mesa-dev] [Bug 107566] AttributeError: 'tuple' object has no attribute 'major'

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Tue Aug 14 07:11:40 UTC 2018


https://bugs.freedesktop.org/show_bug.cgi?id=107566

            Bug ID: 107566
           Summary: AttributeError: 'tuple' object has no attribute
                    'major'
           Product: Mesa
           Version: git
          Hardware: x86-64 (AMD64)
                OS: All
            Status: NEW
          Keywords: bisected, regression
          Severity: normal
          Priority: medium
         Component: Mesa core
          Assignee: mesa-dev at lists.freedesktop.org
          Reporter: vlee at freedesktop.org
        QA Contact: mesa-dev at lists.freedesktop.org
                CC: baker.dylan.c at gmail.com, bochecha at daitauha.fr

Build error with Python 2.6.

  Generating build/linux-x86_64-debug/util/xmlpool/options.h ...
Traceback (most recent call last):
  File "src/util/xmlpool/gen_xmlpool.py", line 216, in <module>
    expandMatches ([matchDESC], translations)
  File "src/util/xmlpool/gen_xmlpool.py", line 143, in expandMatches
    if sys.version_info.major == 2:
AttributeError: 'tuple' object has no attribute 'major'

commit bd27203f4d808763ac24ac94eb677cacf3e7cb99
Author: Mathieu Bridon <bochecha at daitauha.fr>
Date:   Fri Aug 10 23:17:08 2018 +0200

    python: Rework bytes/unicode string handling

    In both Python 2 and 3, opening a file without specifying the mode will
    open it for reading in text mode ('r').

    On Python 2, the read() method of a file object opened in mode 'r' will
    return byte strings, while on Python 3 it will return unicode strings.

    Explicitly specifying the binary mode ('rb') then decoding the byte
    string means we always handle unicode strings on both Python 2 and 3.

    Which in turns means all re.match(line) will return unicode strings as
    well.

    If we also make expandCString return unicode strings, we don't need the
    call to the unicode() constructor any more.

    We were using the ugettext() method because it always returns unicode
    strings in Python 2, contrarily to the gettext() one which returns
    byte strings. The ugettext() method doesn't exist on Python 3, so we
    must use the right method on each version of Python.

    The last hurdles are that Python 3 doesn't let us concatenate unicode
    and byte strings directly, and that Python 2's stdout wants encoded byte
    strings while Python 3's want unicode strings.

    With these changes, the script gives the same output on both Python 2
    and 3.

    Signed-off-by: Mathieu Bridon <bochecha at daitauha.fr>
    Reviewed-by: Dylan Baker <dylan at pnwbakers.com>

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180814/2a842942/attachment.html>


More information about the mesa-dev mailing list