diff mbox

[v2] libselinux: introduce PCPREFIX substitute variable for .pc files

Message ID 20180103211346.27213-1-marcus.folkesson@gmail.com (mailing list archive)
State Not Applicable
Headers show

Commit Message

Marcus Folkesson Jan. 3, 2018, 9:13 p.m. UTC
`prefix` in the .pc file may be messed up when using a buildsystem
that has specified a sysroot as DESTDIR.
We need to make it possible to override the default `libdir`
and `includedir`.

`includedir` may be overridden by `INCLUDEDIR` but `libdir` is using
`PREFIX` to setup the path.

Therefore, introduce PCPREFIX to make it possible to generate a more
customized .pc file.

Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
---

v2:
	- Reword commit message to be easier to understand...

 libselinux/src/Makefile  | 5 +++--
 libsemanage/src/Makefile | 5 +++--
 libsepol/src/Makefile    | 5 +++--
 3 files changed, 9 insertions(+), 6 deletions(-)

Comments

Nicolas Iooss Jan. 7, 2018, 8:38 p.m. UTC | #1
On Wed, Jan 3, 2018 at 10:13 PM, Marcus Folkesson
<marcus.folkesson@gmail.com> wrote:
> `prefix` in the .pc file may be messed up when using a buildsystem
> that has specified a sysroot as DESTDIR.
> We need to make it possible to override the default `libdir`
> and `includedir`.
>
> `includedir` may be overridden by `INCLUDEDIR` but `libdir` is using
> `PREFIX` to setup the path.
>
> Therefore, introduce PCPREFIX to make it possible to generate a more
> customized .pc file.
>
> Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>

Looks good to me. This patch does not seem to break the existing usage
and adds more flexibility for packagers. By the way, I was worried by
the modification on INCLUDEDIR, but as this variable is only used to
generate pkg-config files, it is reasonable to use PCPREFIX instead of
PREFIX in its definition.

Acked-by: Nicolas Iooss <nicolas.iooss@m4x.org>

> ---
>
> v2:
>         - Reword commit message to be easier to understand...
>
>  libselinux/src/Makefile  | 5 +++--
>  libsemanage/src/Makefile | 5 +++--
>  libsepol/src/Makefile    | 5 +++--
>  3 files changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
> index 18df75c8..baa2ba0f 100644
> --- a/libselinux/src/Makefile
> +++ b/libselinux/src/Makefile
> @@ -9,9 +9,10 @@ PKG_CONFIG ?= pkg-config
>
>  # Installation directories.
>  PREFIX ?= $(DESTDIR)/usr
> +PCPREFIX ?= $(PREFIX)
>  LIBDIR ?= $(PREFIX)/lib
>  SHLIBDIR ?= $(DESTDIR)/lib
> -INCLUDEDIR ?= $(PREFIX)/include
> +INCLUDEDIR ?= $(PCPREFIX)/include
>  PYINC ?= $(shell $(PKG_CONFIG) --cflags $(PYPREFIX))
>  PYLIBS ?= $(shell $(PKG_CONFIG) --libs $(PYPREFIX))
>  PYSITEDIR ?= $(DESTDIR)$(shell $(PYTHON) -c 'import site; print(site.getsitepackages()[0])')
> @@ -148,7 +149,7 @@ $(LIBSO): $(LOBJS)
>         ln -sf $@ $(TARGET)
>
>  $(LIBPC): $(LIBPC).in ../VERSION
> -       sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):; s:@PCRE_MODULE@:$(PCRE_MODULE):' < $< > $@
> +       sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PCPREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):; s:@PCRE_MODULE@:$(PCRE_MODULE):' < $< > $@
>
>  selinuxswig_python_exception.i: ../include/selinux/selinux.h
>         bash -e exception.sh > $@ || (rm -f $@ ; false)
> diff --git a/libsemanage/src/Makefile b/libsemanage/src/Makefile
> index fdb178f5..8fe2f6dd 100644
> --- a/libsemanage/src/Makefile
> +++ b/libsemanage/src/Makefile
> @@ -9,9 +9,10 @@ PKG_CONFIG ?= pkg-config
>
>  # Installation directories.
>  PREFIX ?= $(DESTDIR)/usr
> +PCPREFIX ?= $(PREFIX)
>  LIBDIR ?= $(PREFIX)/lib
>  SHLIBDIR ?= $(DESTDIR)/lib
> -INCLUDEDIR ?= $(PREFIX)/include
> +INCLUDEDIR ?= $(PCPREFIX)/include
>  PYINC ?= $(shell $(PKG_CONFIG) --cflags $(PYPREFIX))
>  PYLIBS ?= $(shell $(PKG_CONFIG) --libs $(PYPREFIX))
>  PYSITEDIR ?= $(DESTDIR)$(shell $(PYTHON) -c 'import site; print(site.getsitepackages()[0])')
> @@ -95,7 +96,7 @@ $(LIBSO): $(LOBJS)
>         ln -sf $@ $(TARGET)
>
>  $(LIBPC): $(LIBPC).in ../VERSION
> -       sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@
> +       sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PCPREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@
>
>  semanageswig_python_exception.i: ../include/semanage/semanage.h
>         bash -e exception.sh > $@ || (rm -f $@ ; false)
> diff --git a/libsepol/src/Makefile b/libsepol/src/Makefile
> index 819d261b..59c287aa 100644
> --- a/libsepol/src/Makefile
> +++ b/libsepol/src/Makefile
> @@ -1,6 +1,7 @@
>  # Installation directories.
>  PREFIX ?= $(DESTDIR)/usr
> -INCLUDEDIR ?= $(PREFIX)/include
> +PCPREFIX ?= $(PREFIX)
> +INCLUDEDIR ?= $(PCPREFIX)/include
>  LIBDIR ?= $(PREFIX)/lib
>  SHLIBDIR ?= $(DESTDIR)/lib
>  RANLIB ?= ranlib
> @@ -52,7 +53,7 @@ $(LIBSO): $(LOBJS) $(LIBMAP)
>         ln -sf $@ $(TARGET)
>
>  $(LIBPC): $(LIBPC).in ../VERSION
> -       sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@
> +       sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PCPREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@
>
>  $(LIBMAP): $(LIBMAP).in
>  ifneq ($(DISABLE_CIL),y)
> --
> 2.15.1
>
>
Marcus Folkesson Jan. 7, 2018, 8:49 p.m. UTC | #2
Hi,

On Sun, Jan 07, 2018 at 09:38:58PM +0100, Nicolas Iooss wrote:
> On Wed, Jan 3, 2018 at 10:13 PM, Marcus Folkesson
> <marcus.folkesson@gmail.com> wrote:
> > `prefix` in the .pc file may be messed up when using a buildsystem
> > that has specified a sysroot as DESTDIR.
> > We need to make it possible to override the default `libdir`
> > and `includedir`.
> >
> > `includedir` may be overridden by `INCLUDEDIR` but `libdir` is using
> > `PREFIX` to setup the path.
> >
> > Therefore, introduce PCPREFIX to make it possible to generate a more
> > customized .pc file.
> >
> > Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
> 
> Looks good to me. This patch does not seem to break the existing usage
> and adds more flexibility for packagers. By the way, I was worried by
> the modification on INCLUDEDIR, but as this variable is only used to
> generate pkg-config files, it is reasonable to use PCPREFIX instead of
> PREFIX in its definition.
> 
> Acked-by: Nicolas Iooss <nicolas.iooss@m4x.org>


Thank you for your review Nicolas.

I'm currently reworking the Makefiles again.
After more digging I have came to the conclusion that the main problem
is that the Makefiles does not follow the standard semantic of DESTDIR
and PREFIX.
I will try to fix this.

I suggest that we drop this patch and wait for my new patchsets.

Thank you

Best regards
Marcus Folkesson
diff mbox

Patch

diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
index 18df75c8..baa2ba0f 100644
--- a/libselinux/src/Makefile
+++ b/libselinux/src/Makefile
@@ -9,9 +9,10 @@  PKG_CONFIG ?= pkg-config
 
 # Installation directories.
 PREFIX ?= $(DESTDIR)/usr
+PCPREFIX ?= $(PREFIX)
 LIBDIR ?= $(PREFIX)/lib
 SHLIBDIR ?= $(DESTDIR)/lib
-INCLUDEDIR ?= $(PREFIX)/include
+INCLUDEDIR ?= $(PCPREFIX)/include
 PYINC ?= $(shell $(PKG_CONFIG) --cflags $(PYPREFIX))
 PYLIBS ?= $(shell $(PKG_CONFIG) --libs $(PYPREFIX))
 PYSITEDIR ?= $(DESTDIR)$(shell $(PYTHON) -c 'import site; print(site.getsitepackages()[0])')
@@ -148,7 +149,7 @@  $(LIBSO): $(LOBJS)
 	ln -sf $@ $(TARGET)
 
 $(LIBPC): $(LIBPC).in ../VERSION
-	sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):; s:@PCRE_MODULE@:$(PCRE_MODULE):' < $< > $@
+	sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PCPREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):; s:@PCRE_MODULE@:$(PCRE_MODULE):' < $< > $@
 
 selinuxswig_python_exception.i: ../include/selinux/selinux.h
 	bash -e exception.sh > $@ || (rm -f $@ ; false)
diff --git a/libsemanage/src/Makefile b/libsemanage/src/Makefile
index fdb178f5..8fe2f6dd 100644
--- a/libsemanage/src/Makefile
+++ b/libsemanage/src/Makefile
@@ -9,9 +9,10 @@  PKG_CONFIG ?= pkg-config
 
 # Installation directories.
 PREFIX ?= $(DESTDIR)/usr
+PCPREFIX ?= $(PREFIX)
 LIBDIR ?= $(PREFIX)/lib
 SHLIBDIR ?= $(DESTDIR)/lib
-INCLUDEDIR ?= $(PREFIX)/include
+INCLUDEDIR ?= $(PCPREFIX)/include
 PYINC ?= $(shell $(PKG_CONFIG) --cflags $(PYPREFIX))
 PYLIBS ?= $(shell $(PKG_CONFIG) --libs $(PYPREFIX))
 PYSITEDIR ?= $(DESTDIR)$(shell $(PYTHON) -c 'import site; print(site.getsitepackages()[0])')
@@ -95,7 +96,7 @@  $(LIBSO): $(LOBJS)
 	ln -sf $@ $(TARGET)
 
 $(LIBPC): $(LIBPC).in ../VERSION
-	sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@
+	sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PCPREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@
 
 semanageswig_python_exception.i: ../include/semanage/semanage.h
 	bash -e exception.sh > $@ || (rm -f $@ ; false)
diff --git a/libsepol/src/Makefile b/libsepol/src/Makefile
index 819d261b..59c287aa 100644
--- a/libsepol/src/Makefile
+++ b/libsepol/src/Makefile
@@ -1,6 +1,7 @@ 
 # Installation directories.
 PREFIX ?= $(DESTDIR)/usr
-INCLUDEDIR ?= $(PREFIX)/include
+PCPREFIX ?= $(PREFIX)
+INCLUDEDIR ?= $(PCPREFIX)/include
 LIBDIR ?= $(PREFIX)/lib
 SHLIBDIR ?= $(DESTDIR)/lib
 RANLIB ?= ranlib
@@ -52,7 +53,7 @@  $(LIBSO): $(LOBJS) $(LIBMAP)
 	ln -sf $@ $(TARGET) 
 
 $(LIBPC): $(LIBPC).in ../VERSION
-	sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@
+	sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PCPREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@
 
 $(LIBMAP): $(LIBMAP).in
 ifneq ($(DISABLE_CIL),y)