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 1715589

Summary: python3-libselinux ImportError when rebuilt with swig 4
Product: [Fedora] Fedora Reporter: Miro Hrončok <mhroncok>
Component: libselinuxAssignee: Petr Lautrbach <plautrba>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: unspecified    
Version: rawhideCC: dwalsh, mgrepl, plautrba, vmojzis
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: libselinux-2.9-2.fc31 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-05-31 06:16:45 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1686977    

Description Miro Hrončok 2019-05-30 17:46:53 UTC
python3-libselinux-2.9-1.fc31 when rebuilt with swig 4 cannot import selinux.


This is python3-libselinux-2.9-1.fc31 from Fedora rawhide (rebuilt with swig 3.0.12):

<mock-chroot> sh-5.0# rpm -q python3-libselinux
python3-libselinux-2.9-1.fc31.x86_64
<mock-chroot> sh-5.0# head /usr/lib64/python3.7/site-packages/selinux/__init__.py  -n2
# This file was automatically generated by SWIG (http://www.swig.org).
# Version 3.0.12
<mock-chroot> sh-5.0# python3 -c 'import selinux' && echo OK
OK

However when I rebuild it with swig 4.0.0:

<mock-chroot> sh-5.0# rpm -q python3-libselinux
python3-libselinux-2.9-3.fc31.x86_64
<mock-chroot> sh-5.0# head /usr/lib64/python3.8/site-packages/selinux/__init__.py  -n2
# This file was automatically generated by SWIG (http://www.swig.org).
# Version 4.0.0
<mock-chroot> sh-5.0# python3 -c 'import selinux' && echo OK
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib64/python3.8/site-packages/selinux/__init__.py", line 13, in <module>
    from . import _selinux
ImportError: cannot import name '_selinux' from 'selinux' (/usr/lib64/python3.8/site-packages/selinux/__init__.py)


(The double bump form -1 to -3 was done by me.)

This happens with Python 3.8, I'm runn ing a scratch build against 3.7 to see if it is also affected.

This blocks the rebuild of setroubleshoot for Python 3.8:

checking whether /usr/bin/python3 version is >= 3... 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 the selinux python3 module... no
configure: error: cannot import Python3 module selinux
                   Please check your Python3 installation. The error was:
                   Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib64/python3.8/site-packages/selinux/__init__.py", line 13, in <module>
    from . import _selinux
ImportError: cannot import name '_selinux' from 'selinux' (/usr/lib64/python3.8/site-packages/selinux/__init__.py)

Comment 1 Miro Hrončok 2019-05-30 17:49:20 UTC
With a new Python 3.7 scratchbuild: https://koji.fedoraproject.org/koji/taskinfo?taskID=35151346

$ mock -r fedora-rawhide-x86_64 install https://kojipkgs.fedoraproject.org//work/tasks/1417/35151417/python3-libselinux-2.9-1.fc31.x86_64.rpm https://kojipkgs.fedoraproject.org//work/tasks/1417/35151417/libselinux-2.9-1.fc31.x86_64.rpm
$ mock -r fedora-rawhide-x86_64 shell
<mock-chroot> sh-5.0# rpm -q python3-libselinux
python3-libselinux-2.9-1.fc31.x86_64
<mock-chroot> sh-5.0# head /usr/lib64/python3.7/site-packages/selinux/__init__.py  -n2
# This file was automatically generated by SWIG (http://www.swig.org).
# Version 4.0.0
<mock-chroot> sh-5.0# python3 -c 'import selinux' && echo OK
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib64/python3.7/site-packages/selinux/__init__.py", line 13, in <module>
    from . import _selinux
ImportError: cannot import name '_selinux' from 'selinux' (/usr/lib64/python3.7/site-packages/selinux/__init__.py)

Comment 2 Petr Lautrbach 2019-05-31 06:16:45 UTC
https://src.fedoraproject.org/rpms/libselinux/c/5d8ec18db09e97729be68029ace116c5f91e7755?branch=master

I haven't found out how to do it so it works with swig-4.0.0 and swig-3.x.0 :/

Comment 3 Miro Hrončok 2019-05-31 07:33:32 UTC
Thanks for the super fast fix.