libselinux: build: follow standard semantics for DESTDIR and PREFIX This patch solves the following issues: - The pkg-config files generates odd paths when using DESTDIR without PREFIX - DESTDIR is needed during compile time to compute library and header paths which it should not. - Installing with both DESTDIR and PREFIX set gives us odd paths - Make usage of DESTDIR and PREFIX more standard Signed-off-by: Marcus Folkesson diff -durN libselinux.orig/include/Makefile libselinux/include/Makefile --- libselinux.orig/include/Makefile 2018-01-12 12:42:30.898709792 +0100 +++ libselinux/include/Makefile 2018-01-12 10:02:57.745478435 +0100 @@ -1,6 +1,6 @@ # Installation directories. -PREFIX ?= $(DESTDIR)/usr -INCDIR ?= $(PREFIX)/include/selinux +PREFIX ?= /usr +INCDIR = $(DESTDIR)$(PREFIX)/include/selinux all: diff -durN libselinux.orig/man/Makefile libselinux/man/Makefile --- libselinux.orig/man/Makefile 2018-01-12 12:42:30.898709792 +0100 +++ libselinux/man/Makefile 2018-01-12 10:02:57.745478435 +0100 @@ -1,7 +1,8 @@ # Installation directories. -MAN8DIR ?= $(DESTDIR)/usr/share/man/man8 -MAN5DIR ?= $(DESTDIR)/usr/share/man/man5 -MAN3DIR ?= $(DESTDIR)/usr/share/man/man3 +PREFIX ?= /usr +MAN8DIR ?= $(DESTDIR)$(PREFIX)/share/man/man8 +MAN5DIR ?= $(DESTDIR)$(PREFIX)/share/man/man5 +MAN3DIR ?= $(DESTDIR)$(PREFIX)/share/man/man3 all: diff -durN libselinux.orig/src/libselinux.pc.in libselinux/src/libselinux.pc.in --- libselinux.orig/src/libselinux.pc.in 2018-01-12 12:42:30.905376458 +0100 +++ libselinux/src/libselinux.pc.in 2018-01-12 10:02:57.745478435 +0100 @@ -1,6 +1,6 @@ prefix=@prefix@ exec_prefix=${prefix} -libdir=${exec_prefix}/@libdir@ +libdir=@libdir@ includedir=@includedir@ Name: libselinux diff -durN libselinux.orig/src/Makefile libselinux/src/Makefile --- libselinux.orig/src/Makefile 2018-01-12 12:42:30.902043126 +0100 +++ libselinux/src/Makefile 2018-01-12 10:02:57.745478435 +0100 @@ -8,10 +8,10 @@ PKG_CONFIG ?= pkg-config # Installation directories. -PREFIX ?= $(DESTDIR)/usr +PREFIX ?= /usr LIBDIR ?= $(PREFIX)/lib -SHLIBDIR ?= $(DESTDIR)/lib INCLUDEDIR ?= $(PREFIX)/include +LIBINSTALL = $(DESTDIR)$(LIBDIR) PYINC ?= $(shell $(PKG_CONFIG) --cflags $(PYPREFIX)) PYLIBS ?= $(shell $(PKG_CONFIG) --libs $(PYPREFIX)) PYSITEDIR ?= $(DESTDIR)$(shell $(PYTHON) -c 'import site; print(site.getsitepackages()[0])') @@ -19,8 +19,6 @@ RUBYINC ?= $(shell $(RUBY) -e 'puts "-I" + RbConfig::CONFIG["rubyarchhdrdir"] + " -I" + RbConfig::CONFIG["rubyhdrdir"]') RUBYLIBS ?= $(shell $(RUBY) -e 'puts "-L" + RbConfig::CONFIG["libdir"] + " -L" + RbConfig::CONFIG["archlibdir"] + " " + RbConfig::CONFIG["LIBRUBYARG_SHARED"]') RUBYINSTALL ?= $(DESTDIR)$(shell $(RUBY) -e 'puts RbConfig::CONFIG["vendorarchdir"]') -LIBBASE ?= $(shell basename $(LIBDIR)) -LIBSEPOLA ?= $(LIBDIR)/libsepol.a VERSION = $(shell cat ../VERSION) LIBVERSION = 1 @@ -148,7 +146,7 @@ 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@:$(PREFIX):; s:@libdir@:$(LIBDIR):; s:@includedir@:$(INCLUDEDIR):' < $< > $@ selinuxswig_python_exception.i: ../include/selinux/selinux.h bash -e exception.sh > $@ || (rm -f $@ ; false) @@ -156,8 +154,8 @@ $(AUDIT2WHYLOBJ): audit2why.c $(CC) $(filter-out -Werror, $(CFLAGS)) $(PYINC) -fPIC -DSHARED -c -o $@ $< -$(AUDIT2WHYSO): $(AUDIT2WHYLOBJ) $(LIBSEPOLA) - $(CC) $(CFLAGS) $(LDFLAGS) -L. -shared -o $@ $^ -lselinux $(PYLIBS) +$(AUDIT2WHYSO): $(AUDIT2WHYLOBJ) + $(CC) $(CFLAGS) $(LDFLAGS) -L. -shared -o $@ $^ -lselinux $(PYLIBS) -l:libsepol.a %.o: %.c policy.h $(CC) $(CFLAGS) $(TLSFLAGS) -c -o $@ $< @@ -177,13 +175,13 @@ $(SWIG) $< install: all - test -d $(LIBDIR) || install -m 755 -d $(LIBDIR) - install -m 644 $(LIBA) $(LIBDIR) - test -d $(SHLIBDIR) || install -m 755 -d $(SHLIBDIR) - install -m 755 $(LIBSO) $(SHLIBDIR) - test -d $(LIBDIR)/pkgconfig || install -m 755 -d $(LIBDIR)/pkgconfig - install -m 644 $(LIBPC) $(LIBDIR)/pkgconfig - ln -sf --relative $(SHLIBDIR)/$(LIBSO) $(LIBDIR)/$(TARGET) + test -d $(LIBINSTALL) || install -m 755 -d $(LIBINSTALL) + install -m 644 $(LIBA) $(LIBINSTALL) + test -d $(LIBINSTALL) || install -m 755 -d $(LIBINSTALL) + install -m 755 $(LIBSO) $(LIBINSTALL) + test -d $(LIBINSTALL)/pkgconfig || install -m 755 -d $(LIBINSTALL)/pkgconfig + install -m 644 $(LIBPC) $(LIBINSTALL)/pkgconfig + ln -sf --relative $(LIBINSTALL)/$(LIBSO) $(LIBINSTALL)/$(TARGET) install-pywrap: pywrap test -d $(PYSITEDIR)/selinux || install -m 755 -d $(PYSITEDIR)/selinux @@ -196,7 +194,7 @@ install -m 755 $(SWIGRUBYSO) $(RUBYINSTALL)/selinux.so relabel: - /sbin/restorecon $(SHLIBDIR)/$(LIBSO) + /sbin/restorecon $(LIBINSTALL)/$(LIBSO) clean-pywrap: -rm -f $(SWIGLOBJ) $(SWIGSO) $(AUDIT2WHYLOBJ) $(AUDIT2WHYSO) diff -durN libselinux.orig/utils/Makefile libselinux/utils/Makefile --- libselinux.orig/utils/Makefile 2018-01-12 12:42:30.905376458 +0100 +++ libselinux/utils/Makefile 2018-01-12 10:02:57.745478435 +0100 @@ -1,8 +1,6 @@ # Installation directories. -PREFIX ?= $(DESTDIR)/usr -LIBDIR ?= $(PREFIX)/lib -SBINDIR ?= $(PREFIX)/sbin -INCLUDEDIR ?= $(PREFIX)/include +PREFIX ?= /usr +SBINDIR ?= $(DESTDIR)$(PREFIX)/sbin OS ?= $(shell uname)