Skip to contentSkip to conversation

libselinux: introduce PCPREFIX substitute variables for .pc files

PATCH Superseded Marcus Folkesson 2 participants 4 messages Jan 3, 2018 – Jan 7, 2018 SELinux security module

lore
Share & tools
lore
#0 lore raw

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.

[1] https://buildroot.org/

---
 libselinux/src/Makefile  | 5 +++--
 libsemanage/src/Makefile | 5 +++--
 libsepol/src/Makefile    | 5 +++--
 3 files changed, 9 insertions(+), 6 deletions(-)
libselinux/src/Makefile +3 -2
index 18df75c8..baa2ba0f 100644
@@ -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
index fdb178f5..8fe2f6dd 100644
@@ -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
index 819d261b..59c287aa 100644
@@ -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
#1 lore raw

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
index 18df75c8..baa2ba0f 100644
@@ -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
index fdb178f5..8fe2f6dd 100644
@@ -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
index 819d261b..59c287aa 100644
@@ -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
Acked-by on v2 1/1
#2 lore raw

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

Quoted 5 lines · Marcus Folkesson

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.

Quoted 7 lines

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.

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
index 18df75c8..baa2ba0f 100644
@@ -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
index fdb178f5..8fe2f6dd 100644
@@ -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
index 819d261b..59c287aa 100644
@@ -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

#3 lore raw

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

Hi,

Quoted 15 lines · Nicolas Iooss
Quoted 5 lines · Marcus Folkesson

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.

Quoted 7 lines

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.

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.

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