Message ID | 20180103211346.27213-1-marcus.folkesson@gmail.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
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 > >
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 --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)
`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(-)