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 |
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 >
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 --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)
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(-)