libselinux: introduce PCPREFIX substitute variables for .pc files
PATCH 1/1 libselinux: introduce PCPREFIX substitute variables for .pc files
Some environments (e.g. Buildroot [1] ) when using specified sysroot does not expect prefix (or exec_prefix) to be an absolute paths including sysroot directory.
includedir may be overridden by INCLUDEDIR but libdir is using PREFIX that is used in other places than .pc-files.
Therefor, introduce PCPREFIX to make it possible to generate a more customized .pc file.
--- libselinux/src/Makefile | 5 +++-- libsemanage/src/Makefile | 5 +++-- libsepol/src/Makefile | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-)
libselinux/src/Makefile +3 -2
@@ -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)
libsemanage/src/Makefile +3 -2
@@ -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)
libsepol/src/Makefile +3 -2
@@ -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)
Signature · 1 line
2.15.1
PATCH v2 1/1 libselinux: introduce PCPREFIX substitute variable for .pc files
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.
---
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(-)
libselinux/src/Makefile +3 -2
@@ -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)
libsemanage/src/Makefile +3 -2
@@ -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)
libsepol/src/Makefile +3 -2
@@ -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)
Signature · 1 line
2.15.1
Re: [PATCH v2] libselinux: introduce PCPREFIX substitute variable for .pc files
Quoted 5 lines · Marcus Folkesson
prefixin 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 defaultlibdirandincludedir.
Quoted 7 lines
includedirmay be overridden byINCLUDEDIRbutlibdiris usingPREFIXto setup the path.Therefore, introduce PCPREFIX to make it possible to generate a more customized .pc file.
Signed-off-by Marcus Folkesson <[email protected]>
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.
Quoted 86 lines
---
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(-)libselinux/src/Makefile +3
-2@@ -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)libsemanage/src/Makefile +3
-2@@ -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)libsepol/src/Makefile +3
-3@@ -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
Re: [PATCH v2] libselinux: introduce PCPREFIX substitute variable for .pc files
Hi,
Quoted 15 lines · Nicolas Iooss
Quoted 5 lines · Marcus Folkesson
prefixin 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 defaultlibdirandincludedir.Quoted 7 lines
includedirmay be overridden byINCLUDEDIRbutlibdiris usingPREFIXto setup the path.Therefore, introduce PCPREFIX to make it possible to generate a more customized .pc file.
Signed-off-by Marcus Folkesson <[email protected]>
Quoted 7 lines
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 <[email protected]>
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