diff mbox series

[v2] tree-wide: introduce PYTON_SETUP_ARGS to customize setup.py calls on Debian

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

Commit Message

Christian Göttsche May 1, 2020, 1:46 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 PYTON_SETUP_ARGS as argument to affected setup.py calls and add a note in the global ReadMe.

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

Fixes: https://github.com/SELinuxProject/selinux/issues/187
---
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 4, 2020, 1:03 p.m. UTC | #1
On Fri, May 01, 2020 at 03:46:04PM +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).
>

Could you wrap the commit message to 75 chars per line, please?

> 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 PYTON_SETUP_ARGS as argument to affected setup.py calls and add a note in the global ReadMe.

Fix the file name - ReadMe -> 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

Please provide Signed-off-by:

Also there's a conflicting patch which changes README.md as well -
https://patchwork.kernel.org/patch/11522349/ which I'm going to merge. Could you
please rebase this patch based on changes from the mentioned patch?

Other than the comments above, I like the patch. Thanks!


> ---
> 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 974280f9..3c97a5a3 100644
> --- a/README.md
> +++ b/README.md
> @@ -18,6 +18,8 @@ To build and install everything under a private directory, run:
>  
>      make DESTDIR=~/obj install install-pywrap
>  
> +Note: On Debian `PYTON_SETUP_ARGS=--install-layout=deb` needs to be set in order to create the correct python directory structure.
> +
>  To install as the default system libraries and binaries
>  (overwriting any previously installed ones - dangerous!),
>  on x86_64, run:
> diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
> index 73303c36..bccc852d 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)` $(PYTON_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..4ad0d4dc 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)` $(PYTON_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
>
Ondrej Mosnacek May 4, 2020, 2:12 p.m. UTC | #2
On Mon, May 4, 2020 at 3:03 PM Petr Lautrbach <plautrba@redhat.com> wrote:
> On Fri, May 01, 2020 at 03:46:04PM +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).
> >
>
> Could you wrap the commit message to 75 chars per line, please?
>
> > 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 PYTON_SETUP_ARGS as argument to affected setup.py calls and add a note in the global ReadMe.
>
> Fix the file name - ReadMe -> 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
>
> Please provide Signed-off-by:
>
> Also there's a conflicting patch which changes README.md as well -
> https://patchwork.kernel.org/patch/11522349/ which I'm going to merge. Could you
> please rebase this patch based on changes from the mentioned patch?
>
> Other than the comments above, I like the patch. Thanks!

Also, please fix the typo: s/PYTON/PYTHON/g (both in the commit
message and code/README). I only spotted it now after reading Petr's
reply :)
diff mbox series

Patch

diff --git a/README.md b/README.md
index 974280f9..3c97a5a3 100644
--- a/README.md
+++ b/README.md
@@ -18,6 +18,8 @@  To build and install everything under a private directory, run:
 
     make DESTDIR=~/obj install install-pywrap
 
+Note: On Debian `PYTON_SETUP_ARGS=--install-layout=deb` needs to be set in order to create the correct python directory structure.
+
 To install as the default system libraries and binaries
 (overwriting any previously installed ones - dangerous!),
 on x86_64, run:
diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
index 73303c36..bccc852d 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)` $(PYTON_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..4ad0d4dc 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)` $(PYTON_SETUP_ARGS)
 	[ -d $(DESTDIR)$(BINDIR) ] || mkdir -p $(DESTDIR)$(BINDIR)
 	install -m 755 sepolicy.py $(DESTDIR)$(BINDIR)/sepolicy
 	(cd $(DESTDIR)$(BINDIR); ln -sf sepolicy sepolgen)