[2/2] libselinux: query for python site-packages dir directly
diff mbox

Message ID 1475381714-9906-2-git-send-email-jason@perfinion.com
State Not Applicable
Headers show

Commit Message

Jason Zaman Oct. 2, 2016, 4:15 a.m. UTC
instead of building the path manually which is more error prone

Signed-off-by: Jason Zaman <jason@perfinion.com>
---
 libselinux/src/Makefile | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

Comments

Stephen Smalley Oct. 3, 2016, 1:35 p.m. UTC | #1
On 10/02/2016 12:15 AM, Jason Zaman wrote:
> instead of building the path manually which is more error prone

Thanks, applied both.  I guess the only question I have is whether a)
this same change ought to be applied to all other Makefiles (e.g.
libsemanage, policycoreutils), and b) could this break any existing
build recipes that relied on setting PYLIBDIR.  Doesn't appear that
Fedora spec files do so, but not sure about other distribution packages.

> 
> Signed-off-by: Jason Zaman <jason@perfinion.com>
> ---
>  libselinux/src/Makefile | 11 +++++------
>  1 file changed, 5 insertions(+), 6 deletions(-)
> 
> diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
> index f9e3de1..13501cd 100644
> --- a/libselinux/src/Makefile
> +++ b/libselinux/src/Makefile
> @@ -12,9 +12,8 @@ PREFIX ?= $(DESTDIR)/usr
>  LIBDIR ?= $(PREFIX)/lib
>  SHLIBDIR ?= $(DESTDIR)/lib
>  INCLUDEDIR ?= $(PREFIX)/include
> -PYLIBVER ?= $(shell $(PYTHON) -c 'import sys;print("python%d.%d" % sys.version_info[0:2])')
>  PYINC ?= $(shell $(PKG_CONFIG) --cflags $(PYPREFIX))
> -PYLIBDIR ?= $(LIBDIR)/$(PYLIBVER)
> +PYSITEDIR ?= $(DESTDIR)$(shell $(PYTHON) -c 'import site; print(site.getsitepackages()[0])')
>  RUBYLIBVER ?= $(shell $(RUBY) -e 'print RUBY_VERSION.split(".")[0..1].join(".")')
>  RUBYINC ?= $(shell $(PKG_CONFIG) --exists ruby-$(RUBYLIBVER) && $(PKG_CONFIG) --cflags ruby-$(RUBYLIBVER) || $(PKG_CONFIG) --cflags ruby)
>  RUBYINSTALL ?= $(DESTDIR)$(shell $(RUBY) -e 'puts RbConfig::CONFIG["vendorarchdir"]')
> @@ -160,10 +159,10 @@ install: all
>  	ln -sf --relative $(SHLIBDIR)/$(LIBSO) $(LIBDIR)/$(TARGET)
>  
>  install-pywrap: pywrap
> -	test -d $(PYLIBDIR)/site-packages/selinux || install -m 755 -d $(PYLIBDIR)/site-packages/selinux
> -	install -m 755 $(SWIGSO) $(PYLIBDIR)/site-packages/_selinux.so
> -	install -m 755 $(AUDIT2WHYSO) $(PYLIBDIR)/site-packages/selinux/audit2why.so
> -	install -m 644 $(SWIGPYOUT) $(PYLIBDIR)/site-packages/selinux/__init__.py
> +	test -d $(PYSITEDIR)/selinux || install -m 755 -d $(PYSITEDIR)/selinux
> +	install -m 755 $(SWIGSO) $(PYSITEDIR)/_selinux.so
> +	install -m 755 $(AUDIT2WHYSO) $(PYSITEDIR)/selinux/audit2why.so
> +	install -m 644 $(SWIGPYOUT) $(PYSITEDIR)/selinux/__init__.py
>  
>  install-rubywrap: rubywrap
>  	test -d $(RUBYINSTALL) || install -m 755 -d $(RUBYINSTALL) 
>
Nicolas Iooss Oct. 3, 2016, 8:10 p.m. UTC | #2
On 03/10/16 15:35, Stephen Smalley wrote:
> On 10/02/2016 12:15 AM, Jason Zaman wrote:
>> instead of building the path manually which is more error prone
> 
> Thanks, applied both.  I guess the only question I have is whether a)
> this same change ought to be applied to all other Makefiles (e.g.
> libsemanage, policycoreutils), and b) could this break any existing
> build recipes that relied on setting PYLIBDIR.  Doesn't appear that
> Fedora spec files do so, but not sure about other distribution packages.

For the second question, ArchLinux packages will not break. I quickly
looked at the Debian packages and it appears libselinux is using
PYLIBDIR [1] but not libsemanage [2]. Also the Debian packages appear to
install the Python module into /usr/lib/python.../dist-packages instead
of the site-packages directory. I am wondering whether this may be
important.

Nicolas

[1]
https://anonscm.debian.org/cgit/selinux/libselinux.git/tree/debian/python.mk
[2] https://anonscm.debian.org/cgit/selinux/libsemanage.git/
[3] https://packages.debian.org/sid/amd64/python3-selinux/filelist
[4] https://packages.debian.org/sid/amd64/python3-semanage/filelist
Stephen Smalley Oct. 4, 2016, 2:23 p.m. UTC | #3
On 10/03/2016 04:10 PM, Nicolas Iooss wrote:
> On 03/10/16 15:35, Stephen Smalley wrote:
>> On 10/02/2016 12:15 AM, Jason Zaman wrote:
>>> instead of building the path manually which is more error prone
>>
>> Thanks, applied both.  I guess the only question I have is whether a)
>> this same change ought to be applied to all other Makefiles (e.g.
>> libsemanage, policycoreutils), and b) could this break any existing
>> build recipes that relied on setting PYLIBDIR.  Doesn't appear that
>> Fedora spec files do so, but not sure about other distribution packages.
> 
> For the second question, ArchLinux packages will not break. I quickly
> looked at the Debian packages and it appears libselinux is using
> PYLIBDIR [1] but not libsemanage [2]. Also the Debian packages appear to
> install the Python module into /usr/lib/python.../dist-packages instead
> of the site-packages directory. I am wondering whether this may be
> important.
> 
> Nicolas
> 
> [1]
> https://anonscm.debian.org/cgit/selinux/libselinux.git/tree/debian/python.mk
> [2] https://anonscm.debian.org/cgit/selinux/libsemanage.git/
> [3] https://packages.debian.org/sid/amd64/python3-selinux/filelist
> [4] https://packages.debian.org/sid/amd64/python3-semanage/filelist

(cc Debian selinux maintainer)

Patch
diff mbox

diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
index f9e3de1..13501cd 100644
--- a/libselinux/src/Makefile
+++ b/libselinux/src/Makefile
@@ -12,9 +12,8 @@  PREFIX ?= $(DESTDIR)/usr
 LIBDIR ?= $(PREFIX)/lib
 SHLIBDIR ?= $(DESTDIR)/lib
 INCLUDEDIR ?= $(PREFIX)/include
-PYLIBVER ?= $(shell $(PYTHON) -c 'import sys;print("python%d.%d" % sys.version_info[0:2])')
 PYINC ?= $(shell $(PKG_CONFIG) --cflags $(PYPREFIX))
-PYLIBDIR ?= $(LIBDIR)/$(PYLIBVER)
+PYSITEDIR ?= $(DESTDIR)$(shell $(PYTHON) -c 'import site; print(site.getsitepackages()[0])')
 RUBYLIBVER ?= $(shell $(RUBY) -e 'print RUBY_VERSION.split(".")[0..1].join(".")')
 RUBYINC ?= $(shell $(PKG_CONFIG) --exists ruby-$(RUBYLIBVER) && $(PKG_CONFIG) --cflags ruby-$(RUBYLIBVER) || $(PKG_CONFIG) --cflags ruby)
 RUBYINSTALL ?= $(DESTDIR)$(shell $(RUBY) -e 'puts RbConfig::CONFIG["vendorarchdir"]')
@@ -160,10 +159,10 @@  install: all
 	ln -sf --relative $(SHLIBDIR)/$(LIBSO) $(LIBDIR)/$(TARGET)
 
 install-pywrap: pywrap
-	test -d $(PYLIBDIR)/site-packages/selinux || install -m 755 -d $(PYLIBDIR)/site-packages/selinux
-	install -m 755 $(SWIGSO) $(PYLIBDIR)/site-packages/_selinux.so
-	install -m 755 $(AUDIT2WHYSO) $(PYLIBDIR)/site-packages/selinux/audit2why.so
-	install -m 644 $(SWIGPYOUT) $(PYLIBDIR)/site-packages/selinux/__init__.py
+	test -d $(PYSITEDIR)/selinux || install -m 755 -d $(PYSITEDIR)/selinux
+	install -m 755 $(SWIGSO) $(PYSITEDIR)/_selinux.so
+	install -m 755 $(AUDIT2WHYSO) $(PYSITEDIR)/selinux/audit2why.so
+	install -m 644 $(SWIGPYOUT) $(PYSITEDIR)/selinux/__init__.py
 
 install-rubywrap: rubywrap
 	test -d $(RUBYINSTALL) || install -m 755 -d $(RUBYINSTALL)