diff --git a/libselinux-2.9.tar.gz b/libselinux-2.9.tar.gz deleted file mode 100644 index 801504bc7c3a82ee864535b2caa8f9e73769b10c..0000000000000000000000000000000000000000 Binary files a/libselinux-2.9.tar.gz and /dev/null differ diff --git a/libselinux-3.1.tar.gz b/libselinux-3.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..5ef98b716c20173931530538f48ae71d3d489f3d Binary files /dev/null and b/libselinux-3.1.tar.gz differ diff --git a/libselinux-Use-Python-distutils-to-install-SELinux-p.patch b/libselinux-Use-Python-distutils-to-install-SELinux-p.patch deleted file mode 100644 index d520ba238d6f8939fb9ddc082b07d7d528e9169b..0000000000000000000000000000000000000000 --- a/libselinux-Use-Python-distutils-to-install-SELinux-p.patch +++ /dev/null @@ -1,205 +0,0 @@ -From 2efa06857575e4118e91ca250b6b92da68b130d5 Mon Sep 17 00:00:00 2001 -From: Petr Lautrbach -Date: Fri, 7 Jun 2019 17:35:44 +0200 -Subject: [PATCH] libselinux: Use Python distutils to install SELinux python - bindings - -Follow officially documented way how to build C extension modules using -distutils - https://docs.python.org/3.8/extending/building.html#building - -Fixes: - -- selinux python module fails to load when it's built using SWIG-4.0: - ->>> import selinux -Traceback (most recent call last): - File "", line 1, in - File "/usr/lib64/python3.7/site-packages/selinux/__init__.py", line 13, in - from . import _selinux -ImportError: cannot import name '_selinux' from 'selinux' (/usr/lib64/python3.7/site-packages/selinux/__init__.py) - -SWIG-4.0 changed (again?) its behavior so that it uses: from . import _selinux -which looks for _selinux module in the same directory as where __init__.py is - -$(PYLIBDIR)/site-packages/selinux. But _selinux module is installed into -$(PYLIBDIR)/site-packages/ since a9604c30a5e2f ("libselinux: Change the location -of _selinux.so"). - -- audit2why python module fails to build with Python 3.8 - -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' -... - -It's related to the following Python change -https://docs.python.org/dev/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build - -Python distutils adds correct link options automatically. - -- selinux python module doesn't provide any Python metadata - -When selinux python module was built manually, it didn't provide any metadata. -distutils takes care about that so that selinux Python module is visible for -pip: - -$ pip3 list | grep selinux -selinux 2.9 - -Signed-off-by: Petr Lautrbach ---- - libselinux/src/.gitignore | 2 +- - libselinux/src/Makefile | 36 ++++++++---------------------------- - libselinux/src/setup.py | 24 ++++++++++++++++++++++++ - 3 files changed, 33 insertions(+), 29 deletions(-) - create mode 100644 libselinux/src/setup.py - -diff --git a/libselinux/src/.gitignore b/libselinux/src/.gitignore -index 4dcc3b3..428afe5 100644 ---- a/libselinux/src/.gitignore -+++ b/libselinux/src/.gitignore -@@ -1,4 +1,4 @@ - selinux.py --selinuxswig_wrap.c -+selinuxswig_python_wrap.c - selinuxswig_python_exception.i - selinuxswig_ruby_wrap.c -diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile -index e9ed038..2b1696a 100644 ---- a/libselinux/src/Makefile -+++ b/libselinux/src/Makefile -@@ -36,7 +36,7 @@ TARGET=libselinux.so - LIBPC=libselinux.pc - SWIGIF= selinuxswig_python.i selinuxswig_python_exception.i - SWIGRUBYIF= selinuxswig_ruby.i --SWIGCOUT= selinuxswig_wrap.c -+SWIGCOUT= selinuxswig_python_wrap.c - SWIGPYOUT= selinux.py - SWIGRUBYCOUT= selinuxswig_ruby_wrap.c - SWIGLOBJ:= $(patsubst %.c,$(PYPREFIX)%.lo,$(SWIGCOUT)) -@@ -55,7 +55,7 @@ ifeq ($(LIBSEPOLA),) - LDLIBS_LIBSEPOLA := -l:libsepol.a - endif - --GENERATED=$(SWIGCOUT) $(SWIGRUBYCOUT) selinuxswig_python_exception.i -+GENERATED=$(SWIGCOUT) $(SWIGRUBYCOUT) $(SWIGCOUT) selinuxswig_python_exception.i - SRCS= $(filter-out $(GENERATED) audit2why.c, $(sort $(wildcard *.c))) - - MAX_STACK_SIZE=32768 -@@ -125,25 +125,18 @@ DISABLE_FLAGS+= -DNO_ANDROID_BACKEND - SRCS:= $(filter-out label_backends_android.c, $(SRCS)) - endif - --SWIG = swig -Wall -python -o $(SWIGCOUT) -outdir ./ $(DISABLE_FLAGS) -- - SWIGRUBY = swig -Wall -ruby -o $(SWIGRUBYCOUT) -outdir ./ $(DISABLE_FLAGS) - - all: $(LIBA) $(LIBSO) $(LIBPC) - --pywrap: all $(SWIGFILES) $(AUDIT2WHYSO) -+pywrap: all selinuxswig_python_exception.i -+ CFLAGS="$(CFLAGS) $(SWIG_CFLAGS)" $(PYTHON) setup.py build_ext -I $(DESTDIR)$(INCLUDEDIR) -L $(DESTDIR)$(LIBDIR) - - rubywrap: all $(SWIGRUBYSO) - --$(SWIGLOBJ): $(SWIGCOUT) -- $(CC) $(CFLAGS) $(SWIG_CFLAGS) $(PYINC) -fPIC -DSHARED -c -o $@ $< -- - $(SWIGRUBYLOBJ): $(SWIGRUBYCOUT) - $(CC) $(CFLAGS) $(SWIG_CFLAGS) $(RUBYINC) -fPIC -DSHARED -c -o $@ $< - --$(SWIGSO): $(SWIGLOBJ) -- $(CC) $(CFLAGS) $(LDFLAGS) -L. -shared -o $@ $< -lselinux $(PYLIBS) -- - $(SWIGRUBYSO): $(SWIGRUBYLOBJ) - $(CC) $(CFLAGS) $(LDFLAGS) -L. -shared -o $@ $^ -lselinux $(RUBYLIBS) - -@@ -161,29 +154,15 @@ $(LIBPC): $(LIBPC).in ../VERSION - selinuxswig_python_exception.i: ../include/selinux/selinux.h - bash -e exception.sh > $@ || (rm -f $@ ; false) - --$(AUDIT2WHYLOBJ): audit2why.c -- $(CC) $(filter-out -Werror, $(CFLAGS)) $(PYINC) -fPIC -DSHARED -c -o $@ $< -- --$(AUDIT2WHYSO): $(AUDIT2WHYLOBJ) $(LIBSEPOLA) -- $(CC) $(CFLAGS) $(LDFLAGS) -L. -shared -o $@ $^ -lselinux $(LDLIBS_LIBSEPOLA) $(PYLIBS) -Wl,-soname,audit2why.so,--version-script=audit2why.map,-z,defs -- - %.o: %.c policy.h - $(CC) $(CFLAGS) $(TLSFLAGS) -c -o $@ $< - - %.lo: %.c policy.h - $(CC) $(CFLAGS) -fPIC -DSHARED -c -o $@ $< - --$(SWIGCOUT): $(SWIGIF) -- $(SWIG) $< -- --$(SWIGPYOUT): $(SWIGCOUT) -- - $(SWIGRUBYCOUT): $(SWIGRUBYIF) - $(SWIGRUBY) $< - --swigify: $(SWIGIF) -- $(SWIG) $< -- - install: all - test -d $(DESTDIR)$(LIBDIR) || install -m 755 -d $(DESTDIR)$(LIBDIR) - install -m 644 $(LIBA) $(DESTDIR)$(LIBDIR) -@@ -194,10 +173,9 @@ install: all - ln -sf --relative $(DESTDIR)$(SHLIBDIR)/$(LIBSO) $(DESTDIR)$(LIBDIR)/$(TARGET) - - install-pywrap: pywrap -- test -d $(DESTDIR)$(PYTHONLIBDIR)/selinux || install -m 755 -d $(DESTDIR)$(PYTHONLIBDIR)/selinux -- install -m 755 $(SWIGSO) $(DESTDIR)$(PYTHONLIBDIR)/_selinux$(PYCEXT) -- install -m 755 $(AUDIT2WHYSO) $(DESTDIR)$(PYTHONLIBDIR)/selinux/audit2why$(PYCEXT) -+ $(PYTHON) setup.py install --prefix=$(PREFIX) `test -n "$(DESTDIR)" && echo --root $(DESTDIR)` - install -m 644 $(SWIGPYOUT) $(DESTDIR)$(PYTHONLIBDIR)/selinux/__init__.py -+ ln -sf --relative $(DESTDIR)$(PYTHONLIBDIR)/selinux/_selinux$(PYCEXT) $(DESTDIR)$(PYTHONLIBDIR)/_selinux$(PYCEXT) - - install-rubywrap: rubywrap - test -d $(DESTDIR)$(RUBYINSTALL) || install -m 755 -d $(DESTDIR)$(RUBYINSTALL) -@@ -208,6 +186,8 @@ relabel: - - clean-pywrap: - -rm -f $(SWIGLOBJ) $(SWIGSO) $(AUDIT2WHYLOBJ) $(AUDIT2WHYSO) -+ $(PYTHON) setup.py clean -+ -rm -rf build *~ \#* *pyc .#* - - clean-rubywrap: - -rm -f $(SWIGRUBYLOBJ) $(SWIGRUBYSO) -diff --git a/libselinux/src/setup.py b/libselinux/src/setup.py -new file mode 100644 -index 0000000..4dc03f5 ---- /dev/null -+++ b/libselinux/src/setup.py -@@ -0,0 +1,24 @@ -+#!/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@vger.kernel.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', '-Wl,--version-script=audit2why.map']) -+ ], -+) --- -1.8.3.1 - diff --git a/libselinux.spec b/libselinux.spec index 15fa57190bda3366fc3b3116f90041b09c1b9a21..f469ec50d2698c66ac27aa996b1042477b28d215 100644 --- a/libselinux.spec +++ b/libselinux.spec @@ -1,24 +1,24 @@ %global ruby_inc %(pkg-config --cflags ruby) -%global libsepol_version 2.8-1 +%global libsepol_version 3.1 Name: libselinux -Version: 2.9 -Release: 3 +Version: 3.1 +Release: 1 License: Public Domain Summary: SELinux library and simple utilities Url: https://github.com/SELinuxProject/selinux/wiki -Source0: https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20180524/libselinux-2.9.tar.gz +Source0: https://github.com/SELinuxProject/selinux/releases/download/20200710/libselinux-3.1.tar.gz -Patch0: libselinux-Use-Python-distutils-to-install-SELinux-p.patch +#Patch0: libselinux-Use-Python-distutils-to-install-SELinux-p.patch BuildRequires: gcc python3-devel systemd swig pcre2-devel xz-devel -BuildRequires: python2-devel ruby-devel libsepol-static >= %{libsepol_version} +BuildRequires: python2-devel ruby-devel libsepol-static Requires: libsepol >= %{libsepol_version} pcre2 Conflicts: filesystem < 3, selinux-policy-base < 3.13.1-138 -Provides: %{name}-utils -Obsoletes: %{name}-utils +Provides: %{name}-utils = %{version}-%{release} +Obsoletes: %{name}-utils < %{version}-%{release} %description libselinux provides an interface to get and set process and file @@ -29,23 +29,13 @@ Summary: Header files and libraries used to build SELinux Requires: %{name} = %{version}-%{release} Requires: libsepol-devel >= %{libsepol_version} -Provides: %{name}-static -Obsoletes: %{name}-static +Provides: %{name}-static = %{version}-%{release} +Obsoletes: %{name}-static < %{version}-%{release} %description devel libselinux provides an interface to get and set process and file security contexts and to obtain security policy decisions. -%package -n python2-libselinux -Summary: SELinux python2 bindings for libselinux -Provides: %{name}-python = %{version}-%{release} -Obsoletes: %{name}-python < %{version}-%{release} -Requires: %{name} = %{version}-%{release} - -%description -n python2-libselinux -The libselinux-python2 package contains the python bindings for developing -SELinux applications. - %package -n python3-libselinux Summary: SELinux python3 bindings for libselinux Requires: %{name} = %{version}-%{release} @@ -78,7 +68,6 @@ export USE_PCRE2="y" make clean %make_build LIBDIR="%{_libdir}" CFLAGS="-g %{optflags}" swigify %make_build LIBDIR="%{_libdir}" CFLAGS="-g %{optflags}" all -%make_build %{__python2} LIBDIR="%{_libdir}" CFLAGS="-g %{optflags}" pywrap %make_build %{__python3} LIBDIR="%{_libdir}" CFLAGS="-g %{optflags}" pywrap %make_build RUBYINC="%{ruby_inc}" SHLIBDIR="%{_libdir}" LIBDIR="%{_libdir}" LIBSEPOLA="%{_libdir}/libsepol.a" CFLAGS="-g %{optflags}" rubywrap @@ -92,9 +81,6 @@ mkdir -p %{buildroot}%{_sbindir} install -d -m 0755 %{buildroot}%{_rundir}/setrans echo "d %{_rundir}/setrans 0755 root root" > %{buildroot}%{_tmpfilesdir}/libselinux.conf -make PYTHON=%{__python2} DESTDIR="%{buildroot}" LIBDIR="%{_libdir}"\ -SHLIBDIR="%{_lib}" BINDIR="%{_bindir}" SBINDIR="%{_sbindir}" LIBSEPOLA="%{_libdir}/libsepol.a" install-pywrap - make PYTHON=%{__python3} DESTDIR="%{buildroot}" LIBDIR="%{_libdir}" \ SHLIBDIR="%{_lib}" BINDIR="%{_bindir}" SBINDIR="%{_sbindir}" LIBSEPOLA="%{_libdir}/libsepol.a" install-pywrap @@ -116,6 +102,7 @@ mv %{buildroot}%{_sbindir}/getconlist %{buildroot}%{_sbindir}/selinuxconlist %{_sbindir}/{selabel_lookup_best_match,selabel_partial_match,selinux_check_access} %{_sbindir}/{avcstat,getenforce,getsebool,matchpathcon,sefcontext_compile,selinuxconlist} %{_sbindir}/{selinuxdefcon,selinuxexeccon,selinuxenabled,setenforce,selabel_digest,selabel_lookup} +%{_sbindir}/{selabel_get_digests_all_partial_matches,validatetrans} %dir %{_rundir}/setrans/ %{_tmpfilesdir}/libselinux.conf @@ -125,11 +112,6 @@ mv %{buildroot}%{_sbindir}/getconlist %{buildroot}%{_sbindir}/selinuxconlist %{_libdir}/pkgconfig/libselinux.pc %{_includedir}/selinux/ -%files -n python2-libselinux -%{python2_sitearch}/selinux/ -%{python2_sitearch}/selinux-%{version}-* -%{python2_sitearch}/_selinux.so - %files -n python3-libselinux %{python3_sitearch}/selinux/ %{python3_sitearch}/selinux-%{version}-* @@ -146,6 +128,9 @@ mv %{buildroot}%{_sbindir}/getconlist %{buildroot}%{_sbindir}/selinuxconlist %{_mandir}/ru/man8/* %changelog +* Fri Jul 17 2020 openEuler Buildteam - 3.1-1 +- update to 3.1; delete python2-libselinux + * Tue Jun 23 2020 openEuler Buildteam - 2.9-3 - add missing _selniux.so