Created attachment 1562733 [details] Full log from Copr hplip-3.18.12-9 fails to build with Python 3.8. It seems that for some reason the configure script can't find Python.h: checking whether /usr/bin/python3 version is >= 2.2... yes checking for /usr/bin/python3 version... 3.8 checking for /usr/bin/python3 platform... linux checking for /usr/bin/python3 script directory... ${prefix}/lib/python3.8/site-packages checking for /usr/bin/python3 extension module directory... ${exec_prefix}/lib64/python3.8/site-packages checking for path to Python.h... "using /usr/include/python3.8m .... python3.8/Python.h" checking python3.8/Python.h usability... no checking python3.8/Python.h presence... no checking for python3.8/Python.h... no checking python3.8mu/Python.h usability... no checking python3.8mu/Python.h presence... no checking for python3.8mu/Python.h... no checking python3.8m/Python.h usability... no checking python3.8m/Python.h presence... no checking for python3.8m/Python.h... no configure: error: cannot find python-devel support Full log attached
Hi Charis! Thank you for reporting the issue! I was on PTO last two weeks, so I was not able to get it done. Hope it did not block someone... From config.log: configure:13745: checking python3.8/Python.h usability configure:13745: gcc -c -g -O2 conftest.c >&5 In file included from /usr/include/python3.8/pystate.h:129, from /usr/include/python3.8/traceback.h:8, from /usr/include/python3.8/Python.h:117, from conftest.c:67: /usr/include/python3.8/cpython/pystate.h:9:10: fatal error: cpython/coreconfig.h: No such file or directory 9 | #include "cpython/coreconfig.h" | ^~~~~~~~~~~~~~~~~~~~~~ compilation terminated. configure:13745: $? = 1 In my local F29 machine: $ dnf repoquery --whatprovides *cpython/coreconfig.h python38-0:3.8.0~a3-1.fc29.i686 python38-0:3.8.0~a3-1.fc29.x86_64 python38-debugsource-0:3.8.0~a3-1.fc29.i686 python38-debugsource-0:3.8.0~a3-1.fc29.x86_64 In mock chroot: <mock-chroot> -bash-5.0# rpm -q python3 python3-3.8.0~a4-1.fc31.x86_64 <mock-chroot> -bash-5.0# rpm -q python38 package python38 is not installed It seems like an include for header from python38-devel package got lost in header file from python3-devel package. Reassigning to python team, IMO it is issue in python.
The build failure is from our copr with updated python3 package: https://copr.fedorainfracloud.org/coprs/g/python/python3.8/ - a work in progress copr for Fedora 31 change. $ dnf repoquery --repo=python3.8 --whatprovides *cpython/coreconfig.h python3-debug-0:3.8.0~a4-1.fc31.x86_64 python3-debugsource-0:3.8.0~a4-1.fc31.x86_64 python3-devel-0:3.8.0~a4-1.fc31.x86_64 $ dnf repoquery --repo=python3.8 -l python3-devel | grep cpython/coreconfig.h /usr/include/python3.8/cpython/coreconfig.h > It seems like an include for header from python38-devel package got lost in header file from python3-devel package. I don't really understand what does this mean. I think hplib does some configure-fu that is no longer valid for Python 3.8.
How do I get the config.log?
Never mind, found it: | #include <python3.8/Python.h> configure:13745: result: no configure:13745: checking python3.8/Python.h presence configure:13745: gcc -E conftest.c In file included from /usr/include/python3.8/pystate.h:129, from /usr/include/python3.8/traceback.h:8, from /usr/include/python3.8/Python.h:117, from conftest.c:34: /usr/include/python3.8/cpython/pystate.h:9:10: fatal error: cpython/coreconfig.h: No such file or directory 9 | #include "cpython/coreconfig.h" | ^~~~~~~~~~~~~~~~~~~~~~ compilation terminated. configure:13745: $? = 1 Note that the following is not supposed to work: #include <python3.8/Python.h> And hence it is a terrible idea to check from a configure script: Instead, do this: Set -I /usr/include/python3.8 and do: #include <Python.h>
Bad: $ cat bad.c #include <python3.8/Python.h> $ gcc -c bad.c In file included from /usr/include/python3.8/pystate.h:129, from /usr/include/python3.8/traceback.h:8, from /usr/include/python3.8/Python.h:117, from bad.c:1: /usr/include/python3.8/cpython/pystate.h:9:10: fatal error: cpython/coreconfig.h: Adresář nebo soubor neexistuje 9 | #include "cpython/coreconfig.h" | ^~~~~~~~~~~~~~~~~~~~~~ compilation terminated. $ Better: $ cat good.c #include <Python.h> $ gcc -I/usr/include/python3.8 -c good.c $ The best: $ cat good.c #include <Python.h> $ gcc $(python3.8-config --includes) -c good.c $
Created attachment 1569010 [details] Full log from Copr (Python 3.8.0a4) Up to date logs attached.
Created attachment 1569011 [details] config.log
(In reply to Miro Hrončok from comment #4) > And hence it is a terrible idea to check from a configure script: Do you mean do not check python usability in configure at all? > $ gcc $(python3.8-config --includes) -c good.c I used python3-config, is it ok?
(In reply to Zdenek Dohnal from comment #8) > (In reply to Miro Hrončok from comment #4) > > And hence it is a terrible idea to check from a configure script: > > Do you mean do not check python usability in configure at all? No, I mean to do it this way. > > $ gcc $(python3.8-config --includes) -c good.c > > I used python3-config, is it ok? Sure!
(In reply to Miro Hrončok from comment #9) > (In reply to Zdenek Dohnal from comment #8) > > (In reply to Miro Hrončok from comment #4) > > > And hence it is a terrible idea to check from a configure script: > > > > Do you mean do not check python usability in configure at all? > > No, I mean to do it this way. Do you mean use python3-config in configure script? I understood you suggest to run python3-config in spec file and output put into CFLAGS/CXXFLAGS.
I suggest that running ggc without include flags on this: #include <python3.8/Python.h> Is not supposed to work.
Fixed in https://koji.fedoraproject.org/koji/taskinfo?taskID=34892600 by adding python includedir into CFLAGS+CXXFLAGS in spec file.