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 1715756 - libselinux fails to build with Python 3.8
Summary: libselinux fails to build with Python 3.8
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Fedora
Classification: Fedora
Component: libselinux
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
urgent
Target Milestone: ---
Assignee: Petr Lautrbach
QA Contact: Fedora Extras Quality Assurance
URL: https://copr.fedorainfracloud.org/cop...
Whiteboard:
Depends On:
Blocks: PYTHON38
TreeView+ depends on / blocked
 
Reported: 2019-05-31 07:40 UTC by Miro Hrončok
Modified: 2019-05-31 09:33 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2019-05-31 09:33:05 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Miro Hrončok 2019-05-31 07:40:32 UTC
See https://copr.fedorainfracloud.org/coprs/g/python/python3.8/build/918427/ and https://copr.fedorainfracloud.org/coprs/g/python/python3.8/package/libselinux/

libselinux 2.9-4.fc31 fails to build with Python 3.8.0a4+:

+ make PYTHON=/usr/bin/python3 LIBDIR=/usr/lib64 -j2 pywrap
make -C src pywrap pywrap
make[1]: Entering directory '/builddir/build/BUILD/libselinux-2.9/src'
cc -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -DOVERRIDE_GETTID=0 -I../include -D_GNU_SOURCE -DDISABLE_RPM -DNO_ANDROID_BACKEND -DUSE_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8  -Wno-error -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-parameter -Wno-shadow -Wno-uninitialized -Wno-missing-prototypes -Wno-missing-declarations -I/usr/include/python3.8  -fPIC -DSHARED -c -o python-3.8selinuxswig_wrap.lo selinuxswig_wrap.c
cc -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -DOVERRIDE_GETTID=0 -I../include -D_GNU_SOURCE -DDISABLE_RPM -DNO_ANDROID_BACKEND -DUSE_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -I/usr/include/python3.8  -fPIC -DSHARED -c -o python-3.8audit2why.lo audit2why.c
cc -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -DOVERRIDE_GETTID=0 -I../include -D_GNU_SOURCE -DDISABLE_RPM -DNO_ANDROID_BACKEND -DUSE_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8  -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -L. -shared -o python-3.8audit2why.so python-3.8audit2why.lo -lselinux -l:libsepol.a  -Wl,-soname,audit2why.so,--version-script=audit2why.map,-z,defs
/usr/bin/ld: python-3.8audit2why.lo: in function `finish':
/builddir/build/BUILD/libselinux-2.9/src/audit2why.c:166: undefined reference to `PyArg_ParseTuple'
/usr/bin/ld: python-3.8audit2why.lo: in function `_Py_INCREF':
/usr/include/python3.8/object.h:449: undefined reference to `_Py_NoneStruct'
/usr/bin/ld: /usr/include/python3.8/object.h:449: undefined reference to `_Py_NoneStruct'
/usr/bin/ld: python-3.8audit2why.lo: in function `check_booleans':
/builddir/build/BUILD/libselinux-2.9/src/audit2why.c:84: undefined reference to `PyExc_RuntimeError'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:84: undefined reference to `PyErr_SetString'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:107: undefined reference to `PyExc_RuntimeError'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:107: undefined reference to `PyErr_SetString'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:117: undefined reference to `PyExc_RuntimeError'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:117: undefined reference to `PyErr_SetString'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:76: undefined reference to `PyExc_MemoryError'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:76: undefined reference to `PyErr_SetString'
/usr/bin/ld: python-3.8audit2why.lo: in function `analyze':
/builddir/build/BUILD/libselinux-2.9/src/audit2why.c:327: undefined reference to `PyList_Type'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:327: undefined reference to `PyArg_ParseTuple'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:331: undefined reference to `PyList_Size'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:360: undefined reference to `PyList_GetItem'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:364: undefined reference to `PyUnicode_AsUTF8'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:371: undefined reference to `_Py_NoneStruct'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:371: undefined reference to `Py_BuildValue'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:341: undefined reference to `_Py_NoneStruct'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:341: undefined reference to `Py_BuildValue'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:379: undefined reference to `_Py_NoneStruct'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:379: undefined reference to `Py_BuildValue'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:337: undefined reference to `_Py_NoneStruct'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:337: undefined reference to `Py_BuildValue'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:345: undefined reference to `_Py_NoneStruct'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:345: undefined reference to `Py_BuildValue'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:419: undefined reference to `Py_BuildValue'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:349: undefined reference to `_Py_NoneStruct'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:349: undefined reference to `Py_BuildValue'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:391: undefined reference to `_Py_NoneStruct'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:391: undefined reference to `Py_BuildValue'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:382: undefined reference to `_Py_NoneStruct'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:382: undefined reference to `Py_BuildValue'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:403: undefined reference to `PyList_New'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:406: undefined reference to `Py_BuildValue'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:407: undefined reference to `PyList_SetItem'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:412: undefined reference to `Py_BuildValue'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:393: undefined reference to `Py_BuildValue'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:423: undefined reference to `_Py_NoneStruct'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:423: undefined reference to `Py_BuildValue'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:430: undefined reference to `_Py_NoneStruct'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:430: undefined reference to `Py_BuildValue'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:427: undefined reference to `_Py_NoneStruct'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:427: undefined reference to `Py_BuildValue'
/usr/bin/ld: python-3.8audit2why.lo: in function `__policy_init':
/builddir/build/BUILD/libselinux-2.9/src/audit2why.c:246: undefined reference to `PyExc_RuntimeError'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:246: undefined reference to `PyErr_SetString'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:218: undefined reference to `PyExc_ValueError'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:218: undefined reference to `PyErr_SetString'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:254: undefined reference to `PyExc_ValueError'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:227: undefined reference to `PyExc_ValueError'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:227: undefined reference to `PyErr_SetString'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:267: undefined reference to `PyExc_RuntimeError'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:267: undefined reference to `PyErr_SetString'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:284: undefined reference to `PyExc_RuntimeError'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:284: undefined reference to `PyErr_SetString'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:234: undefined reference to `PyExc_MemoryError'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:273: undefined reference to `PyExc_MemoryError'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:273: undefined reference to `PyErr_SetString'
/usr/bin/ld: python-3.8audit2why.lo: in function `init':
/builddir/build/BUILD/libselinux-2.9/src/audit2why.c:299: undefined reference to `PyArg_ParseTuple'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:302: undefined reference to `Py_BuildValue'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:296: undefined reference to `PyExc_RuntimeError'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:296: undefined reference to `PyErr_SetString'
/usr/bin/ld: python-3.8audit2why.lo: in function `PyInit_audit2why':
/builddir/build/BUILD/libselinux-2.9/src/audit2why.c:468: undefined reference to `PyModule_Create2'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:475: undefined reference to `PyModule_AddIntConstant'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:476: undefined reference to `PyModule_AddIntConstant'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:477: undefined reference to `PyModule_AddIntConstant'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:478: undefined reference to `PyModule_AddIntConstant'
/usr/bin/ld: /builddir/build/BUILD/libselinux-2.9/src/audit2why.c:479: undefined reference to `PyModule_AddIntConstant'
/usr/bin/ld: python-3.8audit2why.lo:/builddir/build/BUILD/libselinux-2.9/src/audit2why.c:480: more undefined references to `PyModule_AddIntConstant' follow
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:168: python-3.8audit2why.so] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/builddir/build/BUILD/libselinux-2.9/src'
make: *** [Makefile:52: pywrap] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.RvXd0t (%build)


I think this is caused by https://docs.python.org/dev/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build


We'd like to start 3.8 rebuilds in a side tag next week.

Comment 1 Petr Lautrbach 2019-05-31 08:54:34 UTC
I believe this is already fixed in libselinux-2.9-2.fc31, see https://copr.fedorainfracloud.org/coprs/plautrba/libselinux-python-3.8/build/918499/


in -2 we switched to use distutils and follow https://docs.python.org/3.8/extending/building.html#building

Now our setup.py looks like:

#!/usr/bin/python3

from distutils.core import Extension, setup

setup(
    name="selinux",
    version="2.9",
    description="SELinux python 3 bindings",
    author="SELinux Project",
    author_email="selinux.org",
    ext_modules=[
        Extension('selinux._selinux',
                  sources=['selinuxswig_python.i'],
                  include_dirs=['../include'],
                  library_dirs=['.'],
                  libraries=['selinux']),
        Extension('selinux.audit2why',
                  sources=['audit2why.c'],
                  include_dirs=['../include'],
                  library_dirs=['.'],
                  libraries=['selinux'],
                  extra_link_args=['-l:libsepol.a'])
    ],
)
 
Miro, please review the results and close it works for you

Comment 2 Miro Hrončok 2019-05-31 09:25:30 UTC
Seems like I might have just forgot to pull :facepalm:

Sorry about that, running a verifying build.

Comment 3 Miro Hrončok 2019-05-31 09:33:05 UTC
Builds. Sorry again.


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