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.