diff mbox series

[v3] tree-wide: introduce PYTHON_SETUP_ARGS to customize setup.py calls on Debian

Message ID 20200504175501.8114-1-cgzones@googlemail.com (mailing list archive)
State Accepted
Headers show
Series [v3] tree-wide: introduce PYTHON_SETUP_ARGS to customize setup.py calls on Debian | expand

Commit Message

Christian Göttsche May 4, 2020, 5:55 p.m. UTC
On Debian the `distutils` module is patched, so `get_python_lib()`
returns by default `/usr/lib/python3/dist-packages` (no minor version)

But `setuptools` affecting setup.py is not patched to create the library
directory at `/usr/lib/python3/dist-packages` by default, rather than a
command line argument `--install-layout deb` is added

Add PYTHON_SETUP_ARGS as argument to affected setup.py calls and add a
note in the global README.md

See https://www.debian.org/doc/packaging-manuals/python-policy/packaging_tools.html
Section B.1

Fixes: https://github.com/SELinuxProject/selinux/issues/187

Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
---
v3:
  - Correctly spell python
  - wrap commit message

v2:
  Use env variable PYTON_SETUP_ARGS instead of internal detection logic

 README.md                | 2 ++
 libselinux/src/Makefile  | 2 +-
 python/sepolicy/Makefile | 2 +-
 3 files changed, 4 insertions(+), 2 deletions(-)

Comments

Petr Lautrbach May 5, 2020, 8:41 a.m. UTC | #1
On Mon, May 04, 2020 at 07:55:01PM +0200, Christian Göttsche wrote:
> On Debian the `distutils` module is patched, so `get_python_lib()`
> returns by default `/usr/lib/python3/dist-packages` (no minor version)
> 
> But `setuptools` affecting setup.py is not patched to create the library
> directory at `/usr/lib/python3/dist-packages` by default, rather than a
> command line argument `--install-layout deb` is added
> 
> Add PYTHON_SETUP_ARGS as argument to affected setup.py calls and add a
> note in the global README.md
> 
> See https://www.debian.org/doc/packaging-manuals/python-policy/packaging_tools.html
> Section B.1
> 
> Fixes: https://github.com/SELinuxProject/selinux/issues/187
> 
> Signed-off-by: Christian Göttsche <cgzones@googlemail.com>

Acked-by: Petr Lautrbach <plautrba@redhat.com>

Thanks!


> ---
> v3:
>   - Correctly spell python
>   - wrap commit message
> 
> v2:
>   Use env variable PYTON_SETUP_ARGS instead of internal detection logic
> 
>  README.md                | 2 ++
>  libselinux/src/Makefile  | 2 +-
>  python/sepolicy/Makefile | 2 +-
>  3 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/README.md b/README.md
> index f3257ef5..9d64f0b5 100644
> --- a/README.md
> +++ b/README.md
> @@ -95,6 +95,8 @@ To build and install everything under a private directory, run:
>  
>      make DESTDIR=~/obj install install-rubywrap install-pywrap
>  
> +On Debian `PYTHON_SETUP_ARGS=--install-layout=deb` needs to be set when installing the python wrappers in order to create the correct python directory structure.
> +
>  To run tests with the built libraries and programs, several paths (relative to `$DESTDIR`) need to be added to variables `$LD_LIBRARY_PATH`, `$PATH` and `$PYTHONPATH`.
>  This can be done using [./scripts/env_use_destdir](./scripts/env_use_destdir):
>  
> diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
> index 73303c36..190016e2 100644
> --- a/libselinux/src/Makefile
> +++ b/libselinux/src/Makefile
> @@ -174,7 +174,7 @@ install: all
>  	ln -sf --relative $(DESTDIR)$(SHLIBDIR)/$(LIBSO) $(DESTDIR)$(LIBDIR)/$(TARGET)
>  
>  install-pywrap: pywrap
> -	$(PYTHON) setup.py install --prefix=$(PREFIX) `test -n "$(DESTDIR)" && echo --root $(DESTDIR)`
> +	$(PYTHON) setup.py install --prefix=$(PREFIX) `test -n "$(DESTDIR)" && echo --root $(DESTDIR)` $(PYTHON_SETUP_ARGS)
>  	install -m 644 $(SWIGPYOUT) $(DESTDIR)$(PYTHONLIBDIR)/selinux/__init__.py
>  	ln -sf --relative $(DESTDIR)$(PYTHONLIBDIR)/selinux/_selinux$(PYCEXT) $(DESTDIR)$(PYTHONLIBDIR)/_selinux$(PYCEXT)
>  
> diff --git a/python/sepolicy/Makefile b/python/sepolicy/Makefile
> index 69f29fa9..3361be4e 100644
> --- a/python/sepolicy/Makefile
> +++ b/python/sepolicy/Makefile
> @@ -27,7 +27,7 @@ test:
>  	@$(PYTHON) test_sepolicy.py -v
>  
>  install:
> -	$(PYTHON) setup.py install --prefix=$(PREFIX) `test -n "$(DESTDIR)" && echo --root $(DESTDIR)`
> +	$(PYTHON) setup.py install --prefix=$(PREFIX) `test -n "$(DESTDIR)" && echo --root $(DESTDIR)` $(PYTHON_SETUP_ARGS)
>  	[ -d $(DESTDIR)$(BINDIR) ] || mkdir -p $(DESTDIR)$(BINDIR)
>  	install -m 755 sepolicy.py $(DESTDIR)$(BINDIR)/sepolicy
>  	(cd $(DESTDIR)$(BINDIR); ln -sf sepolicy sepolgen)
> -- 
> 2.26.2
>
Petr Lautrbach May 6, 2020, 2:20 p.m. UTC | #2
On Tue, May 05, 2020 at 10:41:08AM +0200, Petr Lautrbach wrote:
> On Mon, May 04, 2020 at 07:55:01PM +0200, Christian Göttsche wrote:
> > On Debian the `distutils` module is patched, so `get_python_lib()`
> > returns by default `/usr/lib/python3/dist-packages` (no minor version)
> > 
> > But `setuptools` affecting setup.py is not patched to create the library
> > directory at `/usr/lib/python3/dist-packages` by default, rather than a
> > command line argument `--install-layout deb` is added
> > 
> > Add PYTHON_SETUP_ARGS as argument to affected setup.py calls and add a
> > note in the global README.md
> > 
> > See https://www.debian.org/doc/packaging-manuals/python-policy/packaging_tools.html
> > Section B.1
> > 
> > Fixes: https://github.com/SELinuxProject/selinux/issues/187
> > 
> > Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
> 
> Acked-by: Petr Lautrbach <plautrba@redhat.com>
> 
> Thanks!

Applied.

> 
> > ---
> > v3:
> >   - Correctly spell python
> >   - wrap commit message
> > 
> > v2:
> >   Use env variable PYTON_SETUP_ARGS instead of internal detection logic
> > 
> >  README.md                | 2 ++
> >  libselinux/src/Makefile  | 2 +-
> >  python/sepolicy/Makefile | 2 +-
> >  3 files changed, 4 insertions(+), 2 deletions(-)
> > 
> > diff --git a/README.md b/README.md
> > index f3257ef5..9d64f0b5 100644
> > --- a/README.md
> > +++ b/README.md
> > @@ -95,6 +95,8 @@ To build and install everything under a private directory, run:
> >  
> >      make DESTDIR=~/obj install install-rubywrap install-pywrap
> >  
> > +On Debian `PYTHON_SETUP_ARGS=--install-layout=deb` needs to be set when installing the python wrappers in order to create the correct python directory structure.
> > +
> >  To run tests with the built libraries and programs, several paths (relative to `$DESTDIR`) need to be added to variables `$LD_LIBRARY_PATH`, `$PATH` and `$PYTHONPATH`.
> >  This can be done using [./scripts/env_use_destdir](./scripts/env_use_destdir):
> >  
> > diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
> > index 73303c36..190016e2 100644
> > --- a/libselinux/src/Makefile
> > +++ b/libselinux/src/Makefile
> > @@ -174,7 +174,7 @@ install: all
> >  	ln -sf --relative $(DESTDIR)$(SHLIBDIR)/$(LIBSO) $(DESTDIR)$(LIBDIR)/$(TARGET)
> >  
> >  install-pywrap: pywrap
> > -	$(PYTHON) setup.py install --prefix=$(PREFIX) `test -n "$(DESTDIR)" && echo --root $(DESTDIR)`
> > +	$(PYTHON) setup.py install --prefix=$(PREFIX) `test -n "$(DESTDIR)" && echo --root $(DESTDIR)` $(PYTHON_SETUP_ARGS)
> >  	install -m 644 $(SWIGPYOUT) $(DESTDIR)$(PYTHONLIBDIR)/selinux/__init__.py
> >  	ln -sf --relative $(DESTDIR)$(PYTHONLIBDIR)/selinux/_selinux$(PYCEXT) $(DESTDIR)$(PYTHONLIBDIR)/_selinux$(PYCEXT)
> >  
> > diff --git a/python/sepolicy/Makefile b/python/sepolicy/Makefile
> > index 69f29fa9..3361be4e 100644
> > --- a/python/sepolicy/Makefile
> > +++ b/python/sepolicy/Makefile
> > @@ -27,7 +27,7 @@ test:
> >  	@$(PYTHON) test_sepolicy.py -v
> >  
> >  install:
> > -	$(PYTHON) setup.py install --prefix=$(PREFIX) `test -n "$(DESTDIR)" && echo --root $(DESTDIR)`
> > +	$(PYTHON) setup.py install --prefix=$(PREFIX) `test -n "$(DESTDIR)" && echo --root $(DESTDIR)` $(PYTHON_SETUP_ARGS)
> >  	[ -d $(DESTDIR)$(BINDIR) ] || mkdir -p $(DESTDIR)$(BINDIR)
> >  	install -m 755 sepolicy.py $(DESTDIR)$(BINDIR)/sepolicy
> >  	(cd $(DESTDIR)$(BINDIR); ln -sf sepolicy sepolgen)
> > -- 
> > 2.26.2
> > 
> 
> -- 
> ()  ascii ribbon campaign - against html e-mail 
> /\  www.asciiribbon.org   - against proprietary attachments
diff mbox series

Patch

diff --git a/README.md b/README.md
index f3257ef5..9d64f0b5 100644
--- a/README.md
+++ b/README.md
@@ -95,6 +95,8 @@  To build and install everything under a private directory, run:
 
     make DESTDIR=~/obj install install-rubywrap install-pywrap
 
+On Debian `PYTHON_SETUP_ARGS=--install-layout=deb` needs to be set when installing the python wrappers in order to create the correct python directory structure.
+
 To run tests with the built libraries and programs, several paths (relative to `$DESTDIR`) need to be added to variables `$LD_LIBRARY_PATH`, `$PATH` and `$PYTHONPATH`.
 This can be done using [./scripts/env_use_destdir](./scripts/env_use_destdir):
 
diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
index 73303c36..190016e2 100644
--- a/libselinux/src/Makefile
+++ b/libselinux/src/Makefile
@@ -174,7 +174,7 @@  install: all
 	ln -sf --relative $(DESTDIR)$(SHLIBDIR)/$(LIBSO) $(DESTDIR)$(LIBDIR)/$(TARGET)
 
 install-pywrap: pywrap
-	$(PYTHON) setup.py install --prefix=$(PREFIX) `test -n "$(DESTDIR)" && echo --root $(DESTDIR)`
+	$(PYTHON) setup.py install --prefix=$(PREFIX) `test -n "$(DESTDIR)" && echo --root $(DESTDIR)` $(PYTHON_SETUP_ARGS)
 	install -m 644 $(SWIGPYOUT) $(DESTDIR)$(PYTHONLIBDIR)/selinux/__init__.py
 	ln -sf --relative $(DESTDIR)$(PYTHONLIBDIR)/selinux/_selinux$(PYCEXT) $(DESTDIR)$(PYTHONLIBDIR)/_selinux$(PYCEXT)
 
diff --git a/python/sepolicy/Makefile b/python/sepolicy/Makefile
index 69f29fa9..3361be4e 100644
--- a/python/sepolicy/Makefile
+++ b/python/sepolicy/Makefile
@@ -27,7 +27,7 @@  test:
 	@$(PYTHON) test_sepolicy.py -v
 
 install:
-	$(PYTHON) setup.py install --prefix=$(PREFIX) `test -n "$(DESTDIR)" && echo --root $(DESTDIR)`
+	$(PYTHON) setup.py install --prefix=$(PREFIX) `test -n "$(DESTDIR)" && echo --root $(DESTDIR)` $(PYTHON_SETUP_ARGS)
 	[ -d $(DESTDIR)$(BINDIR) ] || mkdir -p $(DESTDIR)$(BINDIR)
 	install -m 755 sepolicy.py $(DESTDIR)$(BINDIR)/sepolicy
 	(cd $(DESTDIR)$(BINDIR); ln -sf sepolicy sepolgen)