Skip to content

Conversation

@paulmon
Copy link
Contributor

@paulmonpaulmon commented May 20, 2019

When running the buildbot for Windows ARM32 test.pythoninfo must be run remotely.
Also seperating deploy step from both pythoninfo and test.bat

Requires buildmaster config change to work:
python/buildmaster-config#91

@zooba@zware

https://bugs.python.org/issue36511

@paulmon
Copy link
ContributorAuthor

The debug part of the test pass should pass locally with these fixes, except for test_datetime.
See this PR for test_datetime: #13073
I am re-running test.bat now with these fixes, which takes more than an hour.
The last pass took 4 hours and 23 minutes on my secondary ARM test device, but on the buildbot ARM test device it's been taking about an hour and a half.
I still need to try the WindowsArm32ReleaseBuild steps, but expect the same results.

Copy link
Member

@zoobazooba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would prefer a tighter skip on the tests, and deferring to @zware on the buildbot scripts (as with the build config change).

ctx.load_verify_locations(cadata=b"broken")


@unittest.skipIf(Py_DEBUG, "Crashes on debug python builds")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is certainly not a general issue - can we scope it down to the platform(s) where it crashes?

Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will scope it down.

I think it's limited to UCRT. The problem is that SSL has FILE* from the ucrtbase.dll table and python has a FILE* from the ucrtbased.dll table.

I think we could limit it to win32+arm or platform.win32_is_iot( ). Unless there's a way to check if python is using UCRT? I couldn't find one.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, it's because of mixing FILE* across debug/release builds? In that case we scope it down to Windows and enhance the skip message to say "Avoid mixing debug/release CRT on Windows"

Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

@paulmon
Copy link
ContributorAuthor

Enabling is_python_build( ) to return true on the test target uncovered more failing tests.
There is still one failure in test_pyexpat that I will be investigating next.

====================================================================== FAIL: test_exception (test.test_pyexpat.HandlerExceptionTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\py\lib\test\test_pyexpat.py", line 453, in test_exception parser.Parse(b"<a><b><c/></b></a>", 1) RuntimeError: a During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\py\lib\test\test_pyexpat.py", line 469, in test_exception self.assertIn('call_with_frame("StartElement"', entries[1][3]) AssertionError: 'call_with_frame("StartElement"' not found in '' ---------------------------------------------------------------------- 

@paulmon
Copy link
ContributorAuthor

I simplified the deployment script to copy entire directories instead of picking files, except for PCBuild and Modules which have many files that aren't needed for the test run. This should make the script more resilient to test changes.

I think the Windows ARM32 test pass is green now when I run the scripts manually, if #13073 is included.

self.check_traceback_entry(entries[2],
"test_pyexpat.py", "StartElementHandler")
ifsysconfig.is_python_build():
ifsysconfig.is_python_build()andnot (sys.platform=='win32'andplatform.machine() =='ARM'):
Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd rather fix this than skip it, but I haven't figured out where to start looking yet.

@paulmonpaulmon requested a review from tiran as a code ownerJune 11, 2019 23:08
@paulmon
Copy link
ContributorAuthor

@tiran can you please review?
Some of these changes are required to enable the Windows arm32 buildbot to start working.
Thanks!

@zooba
Copy link
Member

@paulmon I'm happy to merge without Christian's review once the updates I suggested in my last one are done.

paulmonand others added 2 commits June 19, 2019 11:16
Co-Authored-By: Steve Dower <steve.dower@microsoft.com>
Co-Authored-By: Steve Dower <steve.dower@microsoft.com>
@paulmon
Copy link
ContributorAuthor

@zooba I merged your suggested changes. I think it's ready

@zooba
Copy link
Member

@paulmon The Py_DEBUG_WIN32 change needs the references to that variable updated as well. I didn't go through and suggest a change on each one.

@paulmon
Copy link
ContributorAuthor

@paulmon The Py_DEBUG_WIN32 change needs the references to that variable updated as well. I didn't go through and suggest a change on each one.

I'm not sure I'm following you. Are suggesting adding a check for arm/arm64 to Py_DEBUG_WIN32? That would be incorrect for Windows IoT Core x86/x64 which also use UCRT for everything.

@zooba
Copy link
Member

@paulmon The Py_DEBUG_WIN32 change needs the references to that variable updated as well. I didn't go through and suggest a change on each one.

I'm not sure I'm following you. Are suggesting adding a check for arm/arm64 to Py_DEBUG_WIN32? That would be incorrect for Windows IoT Core x86/x64 which also use UCRT for everything.

No, I'm saying elsewhere you are referring to Py_DEBUG_Win32 which is now undefined. They need to be changed to Py_DEBUG_WIN32 as well

@paulmon
Copy link
ContributorAuthor

No, I'm saying elsewhere you are referring to Py_DEBUG_Win32 which is now undefined. They need to be changed to Py_DEBUG_WIN32 as well

Thanks. I noticed the whitespace change but somehow didn't see the uppercase change.

@paulmon
Copy link
ContributorAuthor

@zooba Thanks for the help
I fixed test_ssl and test_math so they pass on my dev machine.
All of the PR checks pass now.

@zoobazooba merged commit f355069 into python:masterJun 19, 2019
@miss-islington
Copy link
Contributor

Thanks @paulmon for the PR, and @zooba for merging it 🌮🎉.. I'm working now to backport this PR to: 3.8.
🐍🍒⛏🤖

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Jun 19, 2019
…bot (pythonGH-13454) (cherry picked from commit f355069) Co-authored-by: Paul Monson <paulmon@users.noreply.github.com>
@bedevere-bot
Copy link

GH-14244 is a backport of this pull request to the 3.8 branch.

@zooba
Copy link
Member

@paulmon
Copy link
ContributorAuthor

@paulmon Seems like it still fails: https://buildbot.python.org/all/#/builders/197/builds/338

The raspberry pi was in a bad state. I have restarted it

@paulmon
Copy link
ContributorAuthor

Also, ssh.exe and scp.exe somehow don't exist when running under the buildbot, which is breaking the script.

@zooba
Copy link
Member

@paulmon Different PATH setting? Or perhaps it's running with different file redirection settings (as a 32-bit app, maybe)?

@paulmon
Copy link
ContributorAuthor

paulmon commented Jun 19, 2019

@paulmon Different PATH setting? Or perhaps it's running with different file redirection settings (as a 32-bit app, maybe)?

The PATH is echoed at the top of the log and includes the PATH to ssh.
I hadn't thought of WoW as a possible cause. I installed from the link on python.org so I got the 32-bit version of python. I'll update to the 64-bit python and see if that helps. There isn't a SysWOW64 version of ssh.exe, so that could be it.

CuriousLearner added a commit to CuriousLearner/cpython that referenced this pull request Jun 21, 2019
* master: (599 commits) Docs: Improved phrasing (pythonGH-14069) Remove redundant if check from optional argument function in argparse. (pythonGH-8766) bpo-37289: Add a test for if with ifexpr in the peephole optimiser to detect regressions (pythonGH-14127) Update What's New in Python 3.9 (pythonGH-14253) bpo-36511: Improve ARM32 buildbot scripts (pythonGH-14251) bpo-37151: remove _PyCFunction_FastCallDict (pythonGH-14269) Fix typo, 'widger' -> 'widget', in idlelib/tree.py (pythonGH-14263) Fix bpo number in News file. (pythonGH-14260) bpo-37342: Fix the incorrect nb_index's type in typeobj documentation (pythonGH-14241) Update What's New in Python 3.8 (pythonGH-14239) bpo-36710: Use tstate in pylifecycle.c (pythonGH-14249) Add missing single quote in io.TextIOWrapper.reconfigure documentation (pythonGH-14246) bpo-36511: Add buildbot scripts and fix tests for Windows ARM32 buildbot (pythonGH-13454) bpo-37333: Ensure IncludeTkinter has a value (pythonGH-14240) bpo-37331: Clarify format of socket handler messages in the documentation. (pythonGH-14234) bpo-37258: Not a bug, but added a unit test and updated documentation. (pythonGH-14229) bpo-36710: Remove PyImport_Cleanup() function (pythonGH-14221) Fix name of '\0'. (pythonGH-14222) bpo-36710: Add tstate parameter in import.c (pythonGH-14218) Document typing.ForwardRef (pythonGH-14216) ...
@paulmonpaulmon deleted the arm32_pythoninfo branch July 17, 2019 20:30
lisroach pushed a commit to lisroach/cpython that referenced this pull request Sep 10, 2019
DinoV pushed a commit to DinoV/cpython that referenced this pull request Jan 14, 2020
@paulmonpaulmonmannequin mentioned this pull request May 20, 2022
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@paulmon@zooba@miss-islington@bedevere-bot@the-knights-who-say-ni