On Fri, 2018-01-12 at 16:11 +0100, Marcus Folkesson wrote: > 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 <marcus.folkesson@xxxxxxxxx> > --- > README | 2 +- > libsepol/include/Makefile | 4 ++-- > libsepol/man/Makefile | 5 +++-- > libsepol/src/Makefile | 23 +++++++++++------------ > libsepol/src/libsepol.pc.in | 2 +- > libsepol/utils/Makefile | 4 ++-- > 6 files changed, 20 insertions(+), 20 deletions(-) > > diff --git a/README b/README > index 7fc7b17b..174551a1 100644 > --- a/README > +++ b/README > @@ -19,6 +19,6 @@ lacks library functions or other dependencies > relied upon by your > distribution. If it breaks, you get to keep both pieces. > > To install libsepol on macOS (mainly for policy analysis): > -cd libsepol; make DESTDIR=/usr/local PREFIX=/usr/local install > +cd libsepol; make PREFIX=/usr/local install > > This requires GNU coreutils (brew install coreutils). > diff --git a/libsepol/include/Makefile b/libsepol/include/Makefile > index 56b7a114..ad5c34a4 100644 > --- a/libsepol/include/Makefile > +++ b/libsepol/include/Makefile > @@ -1,6 +1,6 @@ > # Installation directories. > -PREFIX ?= $(DESTDIR)/usr > -INCDIR ?= $(PREFIX)/include/sepol > +PREFIX ?= /usr > +INCDIR = $(DESTDIR)$(PREFIX)/include/sepol > CILDIR ?= ../cil > > all: > diff --git a/libsepol/man/Makefile b/libsepol/man/Makefile > index 11924334..4f3d9fa2 100644 > --- a/libsepol/man/Makefile > +++ b/libsepol/man/Makefile > @@ -1,6 +1,7 @@ > # Installation directories. > -MAN8DIR ?= $(DESTDIR)/usr/share/man/man8 > -MAN3DIR ?= $(DESTDIR)/usr/share/man/man3 > +PREFIX ?= /usr > +MAN8DIR ?= $(DESTDIR)$(PREFIX)/share/man/man8 > +MAN3DIR ?= $(DESTDIR)$(PREFIX)/share/man/man3 > > all: > > diff --git a/libsepol/src/Makefile b/libsepol/src/Makefile > index 819d261b..35b7829d 100644 > --- a/libsepol/src/Makefile > +++ b/libsepol/src/Makefile > @@ -1,11 +1,10 @@ > # Installation directories. > -PREFIX ?= $(DESTDIR)/usr > +PREFIX ?= /usr > INCLUDEDIR ?= $(PREFIX)/include > LIBDIR ?= $(PREFIX)/lib > -SHLIBDIR ?= $(DESTDIR)/lib > RANLIB ?= ranlib > -LIBBASE ?= $(shell basename $(LIBDIR)) > CILDIR ?= ../cil > +LIBINSTALL = $(DESTDIR)$(LIBDIR) > > VERSION = $(shell cat ../VERSION) > LIBVERSION = 1 > @@ -52,7 +51,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@:$(PREFIX):; > s:@libdir@:$(LIBDIR):; s:@includedir@:$(INCLUDEDIR):' < $< > $@ > > $(LIBMAP): $(LIBMAP).in > ifneq ($(DISABLE_CIL),y) > @@ -80,16 +79,16 @@ endif > $(CC) $(CFLAGS) -fPIC -DSHARED -c -o $@ $< > > 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) This changes where the shared objects are installed, from /lib or /lib64 to /usr/lib or /usr/lib64. On systems with usrmerge, this will not matter, but it will matter on systems without usrmerge. > > relabel: > - /sbin/restorecon $(SHLIBDIR)/$(LIBSO) > + /sbin/restorecon $(LIBINSTALL)/$(LIBSO) > > clean: > -rm -f $(LIBPC) $(LIBMAP) $(OBJS) $(LOBJS) $(LIBA) $(LIBSO) > $(TARGET) $(CIL_GENERATED) > diff --git a/libsepol/src/libsepol.pc.in > b/libsepol/src/libsepol.pc.in > index e52f5892..f807fec6 100644 > --- a/libsepol/src/libsepol.pc.in > +++ b/libsepol/src/libsepol.pc.in > @@ -1,6 +1,6 @@ > prefix=@prefix@ > exec_prefix=${prefix} > -libdir=${exec_prefix}/@libdir@ > +libdir=@libdir@ > includedir=@includedir@ > > Name: libsepol > diff --git a/libsepol/utils/Makefile b/libsepol/utils/Makefile > index fba1d8a0..8ce4bf47 100644 > --- a/libsepol/utils/Makefile > +++ b/libsepol/utils/Makefile > @@ -1,6 +1,6 @@ > # Installation directories. > -PREFIX ?= $(DESTDIR)/usr > -BINDIR ?= $(PREFIX)/bin > +PREFIX ?= /usr > +BINDIR ?= $(DESTDIR)$(PREFIX)/bin > > CFLAGS ?= -Wall -Werror > override CFLAGS += -I../include