Bug 1716487 - pyotherside fails to build with Python 3.8
Summary: pyotherside fails to build with Python 3.8
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: pyotherside
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
high
Target Milestone: ---
Assignee: Martin Kolman
QA Contact: Fedora Extras Quality Assurance
URL: https://copr.fedorainfracloud.org/cop...
Whiteboard:
Depends On:
Blocks: PYTHON38
TreeView+ depends on / blocked
 
Reported: 2019-06-03 14:37 UTC by Miro Hrončok
Modified: 2019-06-19 16:09 UTC (History)
2 users (show)

Fixed In Version: pyotherside-1.5.8-1.fc31
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2019-06-19 16:09:07 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Miro Hrončok 2019-06-03 14:37:32 UTC
See https://copr.fedorainfracloud.org/coprs/g/python/python3.8/package/pyotherside/ for actual logs. This report is automated and not very verbose, but feel free to ping me for help.

Comment 1 Martin Kolman 2019-06-04 13:32:28 UTC
This is weird, I've checked the Python 3.8 C API changes[0] and while some symbols apparently have been deprecated, the "undefined reference" ones are not on the list as far as I can tell.

So for the time being I've opened an issue upstream:
https://github.com/thp/pyotherside/issues/102

[0] https://docs.python.org/3.8/whatsnew/3.8.html#changes-in-the-c-api

Comment 2 Miro Hrončok 2019-06-04 13:41:21 UTC
I bet this is https://docs.python.org/3.8/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build

Does pyotherside use python3-config? Add the --embed flag.

Comment 3 Martin Kolman 2019-06-07 13:31:48 UTC
(In reply to Miro Hrončok from comment #2)
> I bet this is
> https://docs.python.org/3.8/whatsnew/3.8.html#debug-build-uses-the-same-abi-
> as-release-build
> 
> Does pyotherside use python3-config? Add the --embed flag.

Upstream has already fixed[0] the issue in response to the issue I've reported and released PyOtherSide 1.5.5 with the fix.

Unfortunately I have not yet been able to test the new version as attempts to use the Python 3.8 mock config die with the following error:


=============================================================================================================================================================================================
 Package                                     Architecture                           Version                                                  Repository                                 Size
=============================================================================================================================================================================================
Reinstalling:
 gdb-minimal                                 x86_64                                 8.3.50.20190601-15.fc31                                  python3.8                                 3.3 M

Transaction Summary
=============================================================================================================================================================================================

Total download size: 3.3 M
Installed size: 12 M
Downloading Packages:
[MIRROR] gdb-minimal-8.3.50.20190601-15.fc31.x86_64.rpm: Interrupted by header callback: Server reports Content-Length: 4 but expected size is: 3450276
[FAILED] gdb-minimal-8.3.50.20190601-15.fc31.x86_64.rpm: No more mirrors to try - All mirrors were already tried without success

Error: Error downloading packages:
  Cannot download 00921770-gdb/gdb-minimal-8.3.50.20190601-15.fc31.x86_64.rpm: All mirrors were tried
ERROR: Exception(pyotherside-1.5.5-1.fc31.src.rpm) Config(fedora-rawhide-x86_64-python3.8) 10 minutes 41 seconds
INFO: Results and/or logs in: /var/lib/mock/fedora-rawhide-x86_64-python3.8/result
ERROR: Command failed:
 # /usr/bin/dnf --installroot /var/lib/mock/fedora-rawhide-x86_64-python3.8/root/ -y --releasever 31 --setopt=deltarpm=False --disableplugin=local --disableplugin=spacewalk update


The mock config is direct copy-paste from the Python 3.8 COPR info page. Any pointers what to try to get past this ? Or maybe this is just some mirror syncing issue that will go away by itself eventually ?

In any case, 1.5.5 builds just fine on the regular Rawhide target in koji. :)


[0] https://github.com/thp/pyotherside/commit/a2955b1c537c2b3387845b63c35ce9a8bd9774b6

Comment 4 Miro Hrončok 2019-06-07 14:07:01 UTC
I use:

mock -r ~/.config/mock/fedora-rawhide-x86_64-python3.8.cfg --scrub=dnf-cache

Comment 5 Miro Hrončok 2019-06-07 14:35:36 UTC
That fix was not enough.

The build no longer links to libpython, resulting in undefined references to Python API like Py_InitializeEx.
Code that embeds Python (rather than building an extension module) needs to pass `--embed` to any `python3-config --libs` invocation to build with Python 3.8.
More information: 
https://docs.python.org/3.8/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build

Comment 6 Charalampos Stratakis 2019-06-10 14:27:04 UTC
That was fixed with 1.5.7 for Python 3.8 but the fallback to previous versions is wrong and now it fails with Python 3.7: https://github.com/thp/pyotherside/issues/102#issuecomment-500436221


Note You need to log in before you can comment on or make changes to this bug.