[swift-dev] Testing fails in GYBUnicodeDataUtils.py

Ryan Lovelett swift-dev at ryan.lovelett.me
Mon Jan 4 16:44:56 CST 2016


I would suggest setting the environment variables and re-running but
that is just my opinion.

I went through many of the same issues on Arch as well. Arch uses Python
2.7.11 and Python 3.5.1; with 3.5.1 being default.

I can _maybe_ give you a clue on the lldb issue. Check out SR-14 [1]
which links to the upstream LLDB Bug 25744 [2]. That report seems to
indicate there is a known bug compiling on Gentoo. They've even created
a specific bug Bug 25866 [3] which Bug 25744 depends on to track fixing
it in Gentoo.

Unfortunately, it seems that the experimental patch submitted there
(which I use to build on Arch) seems to only work on Arch. However,
maybe your just the person to fix that bug! Anyways food for thought.
Happy compiling. 🍻

[1] https://bugs.swift.org/browse/SR-14
[2] https://llvm.org/bugs/show_bug.cgi?id=25744
[3] https://llvm.org/bugs/show_bug.cgi?id=25866

On Mon, Jan 4, 2016, at 05:29 PM, Tom Gall wrote:
> Hi Ryan,
> 
> In my case I'm on Python 2.7.  Your comment is interesting as I was
> just tracking down why python-config --libs and python-config
> --includes doesn't seem to be used to determine what is the system
> python install. I was just starting to trace through the build tool to
> figure out how build-script works it's initial magic.
> 
> In my case I have both python 3.4 and 2.7 installed but python 2.7 is
> the system default.  This ends up causing some interesting brand of
> hurt, when trying to build swift's lldb. (Test Case
> 'TestNSTimer.test_timerTickOnce' is freezing so was looking to debug
> that)
> 
> To answer some of your questions:
> 
> tgall at mars ~/swift $ locale
> 
> LANG=en_US
> LC_CTYPE=C
> LC_NUMERIC="en_US"
> LC_TIME="en_US"
> LC_COLLATE="en_US"
> LC_MONETARY="en_US"
> LC_MESSAGES="en_US"
> LC_PAPER="en_US"
> LC_NAME="en_US"
> LC_ADDRESS="en_US"
> LC_TELEPHONE="en_US"
> LC_MEASUREMENT="en_US"
> LC_IDENTIFICATION="en_US"
> LC_ALL=
> 
> >>> import sys
> >>> x=sys.getfilesystemencoding()
> >>> print x
> ANSI_X3.4-1968
> 
> That explains some things :-)
> 
> On Mon, Jan 4, 2016 at 4:12 PM, Ryan Lovelett via swift-dev
> <swift-dev at swift.org> wrote:
> > On Mon, Jan 4, 2016, at 03:40 PM, Tom Gall via swift-dev wrote:
> >> Building with: ./swift/utils/build-script -R -t --foundation
> >>
> >> on Linux (gentoo amd64) fails with
> >>
> >> + /usr/bin/cmake --build
> >> /home/tgall/swift/build/Ninja-ReleaseAssert/swift-linux-x86_64 -- -j4
> >> SwiftUnitTests
> >>
> >> [6/29] Generating UnicodeGraphemeBreakTest.cpp from
> >> UnicodeGraphemeBreakTest.cpp.gyb with ptr size = 8
> >>
> >> FAILED: cd /home/tgall/swift/swift/unittests/Basic && /usr/bin/cmake
> >> -E make_directory
> >> /home/tgall/swift/build/Ninja-ReleaseAssert/swift-linux-x86_64/unittests/Basic/8
> >> && /home/tgall/swift/swift/utils/gyb --test
> >> -DunicodeGraphemeBreakPropertyFile=/home/tgall/swift/swift/utils/UnicodeData/GraphemeBreakProperty.txt
> >> -DunicodeGraphemeBreakTestFile=/home/tgall/swift/swift/utils/UnicodeData/GraphemeBreakTest.txt
> >> -DCMAKE_SIZEOF_VOID_P=8 -o
> >> /home/tgall/swift/build/Ninja-ReleaseAssert/swift-linux-x86_64/unittests/Basic/8/UnicodeGraphemeBreakTest.cpp.tmp
> >> UnicodeGraphemeBreakTest.cpp.gyb && /usr/bin/cmake -E
> >> copy_if_different
> >> /home/tgall/swift/build/Ninja-ReleaseAssert/swift-linux-x86_64/unittests/Basic/8/UnicodeGraphemeBreakTest.cpp.tmp
> >> /home/tgall/swift/build/Ninja-ReleaseAssert/swift-linux-x86_64/unittests/Basic/8/UnicodeGraphemeBreakTest.cpp
> >> && /usr/bin/cmake -E remove
> >> /home/tgall/swift/build/Ninja-ReleaseAssert/swift-linux-x86_64/unittests/Basic/8/UnicodeGraphemeBreakTest.cpp.tmp
> >>
> >> Traceback (most recent call last):
> >>
> >>   File "/home/tgall/swift/swift/utils/gyb", line 3, in <module>
> >>     gyb.main()
> >>   File "/home/tgall/swift/swift/utils/gyb.py", line 1071, in main
> >>     args.target.write(executeTemplate(ast, args.line_directive,
> >>     **bindings))
> >>   File "/home/tgall/swift/swift/utils/gyb.py", line 974, in
> >>   executeTemplate
> >>     ast.execute(executionContext)
> >>   File "/home/tgall/swift/swift/utils/gyb.py", line 591, in execute
> >>     x.execute(context)
> >>   File "/home/tgall/swift/swift/utils/gyb.py", line 667, in execute
> >>     result = eval(self.code, context.localBindings)
> >>   File
> >>   "/home/tgall/swift/swift/unittests/Basic/UnicodeGraphemeBreakTest.cpp.gyb",
> >> line 23, in <module>
> >>     get_grapheme_cluster_break_tests_as_UTF8(unicodeGraphemeBreakTestFile)
> >>   File "/home/tgall/swift/swift/utils/GYBUnicodeDataUtils.py", line
> >> 553, in get_grapheme_cluster_break_tests_as_UTF8
> >>     for line in f:
> >>   File "/usr/lib64/python2.7/codecs.py", line 687, in next
> >>     return self.reader.next()
> >>   File "/usr/lib64/python2.7/codecs.py", line 618, in next
> >>     line = self.readline()
> >>   File "/usr/lib64/python2.7/codecs.py", line 533, in readline
> >>     data = self.read(readsize, firstline=True)
> >>   File "/usr/lib64/python2.7/codecs.py", line 480, in read
> >>     newchars, decodedbytes = self.decode(data, self.errors)
> >> UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position
> >> 0: ordinal not in range(128)
> >> [6/29] Building CXX object
> >> unittests/Parse/CMakeFiles/SwiftParseTests.dir/LexerTests.cpp.o
> >> ninja: build stopped: subcommand failed.
> >>
> >> Ah yes ... the joys of python stack dumps...  anyway, tracing this a bit:
> >>
> >> in swift/utils/GYBUnicodeDataUtils.py there is:
> >>
> >> with codecs.open(grapheme_break_test_file_name,
> >> encoding=sys.getfilesystemencoding(), errors='strict') as f:
> >>
> >
> > I wrote that code and patch (see:
> > https://github.com/apple/swift/commit/7dbb4127f55022bca7b191d448652b5decf8626e).
> > The change was in service of adding Python 3 support to GYB. So first of
> > all let me say: I'm sorry. 😏
> >
> > Open up your python interpreter and figure out what your filesystem is
> > reporting its encoding to be (e.g., `sys.getfilesystemencoding()`). On
> > OS X and my copy of Arch linux it reports `'utf-8'` which is why it
> > doesn't have an issue. Worst case scenario we can just force it to be
> > `with codecs.open(grapheme_break_test_file_name, encoding='utf-8',
> > errors='strict') as f:` but I went with the filesystem encoding because
> > hopefully it is always UTF-8.
> >
> >> It appears to be our offending bit of python code. Now my unicode &
> >> python foo isn't the strongest, but if I change what is passed as
> >> encoding to : encoding='utf-8', the swift testcases seem to run quite
> >> a bit better and end up reporting :
> >>
> >> Testing Time: 65.82s
> >>   Expected Passes    : 1748
> >>   Expected Failures  : 83
> >>   Unsupported Tests  : 585
> >> -- check-swift-linux-x86_64 finished --
> >> --- Finished tests for swift ---
> >>
> >> Question is, is that little fix the 'right thing' (TM) ?  If so happy
> >> to submit this as my first 'lame' patch.
> >>
> >> Thanks
> >>
> >> --
> >> Regards,
> >> Tom
> >>
> >> "Where's the kaboom!? There was supposed to be an earth-shattering
> >> kaboom!" Marvin Martian
> >> Director, Linaro Mobile Group
> >> Tech Lead, GPGPU
> >> Linaro.org │ Open source software for ARM SoCs
> >> irc: tgall_foo | skype : tom_gall
> >> _______________________________________________
> >> swift-dev mailing list
> >> swift-dev at swift.org
> >> https://lists.swift.org/mailman/listinfo/swift-dev
> > _______________________________________________
> > swift-dev mailing list
> > swift-dev at swift.org
> > https://lists.swift.org/mailman/listinfo/swift-dev
> 
> 
> 
> -- 
> Regards,
> Tom
> 
> "Where's the kaboom!? There was supposed to be an earth-shattering
> kaboom!" Marvin Martian
> Director, Linaro Mobile Group
> Tech Lead, GPGPU
> Linaro.org │ Open source software for ARM SoCs
> irc: tgall_foo | skype : tom_gall


More information about the swift-dev mailing list