Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 1706233 - hplip FTBFS with python3.8
Summary: hplip FTBFS with python3.8
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: hplip
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
high
Target Milestone: ---
Assignee: Zdenek Dohnal
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: PYTHON38
TreeView+ depends on / blocked
 
Reported: 2019-05-03 20:53 UTC by Charalampos Stratakis
Modified: 2019-05-17 12:13 UTC (History)
15 users (show)

Fixed In Version: hplip-3.18.12-11.fc31
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2019-05-17 12:13:57 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
Full log from Copr (235.94 KB, text/plain)
2019-05-03 20:53 UTC, Charalampos Stratakis
no flags Details
Full log from Copr (Python 3.8.0a4) (276.93 KB, text/plain)
2019-05-15 14:27 UTC, Miro Hrončok
no flags Details
config.log (53.81 KB, text/plain)
2019-05-15 14:27 UTC, Miro Hrončok
no flags Details

Description Charalampos Stratakis 2019-05-03 20:53:23 UTC
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

Comment 1 Zdenek Dohnal 2019-05-15 13:01:43 UTC
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.

Comment 2 Miro Hrončok 2019-05-15 13:41:58 UTC
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.

Comment 3 Miro Hrončok 2019-05-15 14:02:15 UTC
How do I get the config.log?

Comment 4 Miro Hrončok 2019-05-15 14:07:37 UTC
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>

Comment 5 Miro Hrončok 2019-05-15 14:12:46 UTC
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
$

Comment 6 Miro Hrončok 2019-05-15 14:27:19 UTC
Created attachment 1569010 [details]
Full log from Copr (Python 3.8.0a4)

Up to date logs attached.

Comment 7 Miro Hrončok 2019-05-15 14:27:56 UTC
Created attachment 1569011 [details]
config.log

Comment 8 Zdenek Dohnal 2019-05-16 13:53:12 UTC
(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?

Comment 9 Miro Hrončok 2019-05-16 14:03:28 UTC
(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!

Comment 10 Zdenek Dohnal 2019-05-17 08:12:19 UTC
(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.

Comment 11 Miro Hrončok 2019-05-17 10:09:56 UTC
I suggest that running ggc without include flags on this:

    #include <python3.8/Python.h>

Is not supposed to work.

Comment 12 Zdenek Dohnal 2019-05-17 12:13:57 UTC
Fixed in https://koji.fedoraproject.org/koji/taskinfo?taskID=34892600 by adding python includedir into CFLAGS+CXXFLAGS in spec file.


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