libsemanage: build: follow standard semantics for DESTDIR and PREFIX

This patch solves the following issues:
- 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@gmail.com>
This commit is contained in:
Marcus Folkesson 2018-02-14 10:57:05 +01:00 committed by Nicolas Iooss
parent b24980ec07
commit e15f61e5d2
6 changed files with 32 additions and 37 deletions

View File

@ -1,12 +1,12 @@
# Installation directories.
PREFIX ?= $(DESTDIR)/usr
PREFIX ?= /usr
INCDIR ?= $(PREFIX)/include/semanage
all:
install: all
test -d $(INCDIR) || install -m 755 -d $(INCDIR)
install -m 644 $(wildcard semanage/*.h) $(INCDIR)
test -d $(DESTDIR)$(INCDIR) || install -m 755 -d $(DESTDIR)$(INCDIR)
install -m 644 $(wildcard semanage/*.h) $(DESTDIR)$(INCDIR)
indent:
../../scripts/Lindent $(wildcard semanage/*.h)

View File

@ -1,12 +1,13 @@
# Installation directories.
MAN3DIR ?= $(DESTDIR)/usr/share/man/man3
MAN5DIR ?= $(DESTDIR)/usr/share/man/man5
PREFIX ?= /usr
MAN3DIR ?= $(PREFIX)/share/man/man3
MAN5DIR ?= $(PREFIX)/share/man/man5
all:
install: all
mkdir -p $(MAN3DIR)
mkdir -p $(MAN5DIR)
install -m 644 man3/*.3 $(MAN3DIR)
install -m 644 man5/*.5 $(MAN5DIR)
mkdir -p $(DESTDIR)$(MAN3DIR)
mkdir -p $(DESTDIR)$(MAN5DIR)
install -m 644 man3/*.3 $(DESTDIR)$(MAN3DIR)
install -m 644 man5/*.5 $(DESTDIR)$(MAN5DIR)

View File

@ -8,21 +8,18 @@ RUBYPREFIX ?= $(notdir $(RUBY))
PKG_CONFIG ?= pkg-config
# Installation directories.
PREFIX ?= $(DESTDIR)/usr
PREFIX ?= /usr
LIBDIR ?= $(PREFIX)/lib
SHLIBDIR ?= $(DESTDIR)/lib
INCLUDEDIR ?= $(PREFIX)/include
PYINC ?= $(shell $(PKG_CONFIG) --cflags $(PYPREFIX))
PYLIBS ?= $(shell $(PKG_CONFIG) --libs $(PYPREFIX))
PYSITEDIR ?= $(DESTDIR)$(shell $(PYTHON) -c 'import site; print(site.getsitepackages()[0])')
PYSITEDIR ?= $(shell $(PYTHON) -c 'import site; print(site.getsitepackages()[0])')
PYCEXT ?= $(shell $(PYTHON) -c 'import imp;print([s for s,m,t in imp.get_suffixes() if t == imp.C_EXTENSION][0])')
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"]')
RUBYINSTALL ?= $(shell $(RUBY) -e 'puts RbConfig::CONFIG["vendorarchdir"]')
LIBBASE=$(shell basename $(LIBDIR))
DEFAULT_SEMANAGE_CONF_LOCATION=$(DESTDIR)/etc/selinux/semanage.conf
DEFAULT_SEMANAGE_CONF_LOCATION=/etc/selinux/semanage.conf
ifeq ($(DEBUG),1)
export CFLAGS = -g3 -O0 -gdwarf-2 -fno-strict-aliasing -Wall -Wshadow -Werror
@ -95,7 +92,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@:$(PREFIX):; s:@libdir@:$(LIBDIR):; s:@includedir@:$(INCLUDEDIR):' < $< > $@
semanageswig_python_exception.i: ../include/semanage/semanage.h
bash -e exception.sh > $@ || (rm -f $@ ; false)
@ -136,26 +133,26 @@ swigify: $(SWIGIF)
$(SWIG) $<
install: all
test -d $(LIBDIR) || install -m 755 -d $(LIBDIR)
install -m 644 $(LIBA) $(LIBDIR)
install -m 755 $(LIBSO) $(LIBDIR)
test -d $(LIBDIR)/pkgconfig || install -m 755 -d $(LIBDIR)/pkgconfig
install -m 644 $(LIBPC) $(LIBDIR)/pkgconfig
test -f $(DEFAULT_SEMANAGE_CONF_LOCATION) || install -m 644 -D semanage.conf $(DEFAULT_SEMANAGE_CONF_LOCATION)
cd $(LIBDIR) && ln -sf $(LIBSO) $(TARGET)
test -d $(DESTDIR)$(LIBDIR) || install -m 755 -d $(DESTDIR)$(LIBDIR)
install -m 644 $(LIBA) $(DESTDIR)$(LIBDIR)
install -m 755 $(LIBSO) $(DESTDIR)$(LIBDIR)
test -d $(DESTDIR)$(LIBDIR)/pkgconfig || install -m 755 -d $(DESTDIR)$(LIBDIR)/pkgconfig
install -m 644 $(LIBPC) $(DESTDIR)$(LIBDIR)/pkgconfig
test -f $(DESTDIR)$(DEFAULT_SEMANAGE_CONF_LOCATION) || install -m 644 -D semanage.conf $(DESTDIR)$(DEFAULT_SEMANAGE_CONF_LOCATION)
cd $(DESTDIR)$(LIBDIR) && ln -sf $(LIBSO) $(TARGET)
install-pywrap: pywrap
test -d $(PYSITEDIR) || install -m 755 -d $(PYSITEDIR)
install -m 755 $(SWIGSO) $(PYSITEDIR)/_semanage$(PYCEXT)
install -m 644 semanage.py $(PYSITEDIR)
test -d $(DESTDIR)$(PYSITEDIR) || install -m 755 -d $(DESTDIR)$(PYSITEDIR)
install -m 755 $(SWIGSO) $(DESTDIR)$(PYSITEDIR)/_semanage$(PYCEXT)
install -m 644 semanage.py $(DESTDIR)$(PYSITEDIR)
install-rubywrap: rubywrap
test -d $(RUBYINSTALL) || install -m 755 -d $(RUBYINSTALL)
install -m 755 $(SWIGRUBYSO) $(RUBYINSTALL)/semanage.so
test -d $(DESTDIR)$(RUBYINSTALL) || install -m 755 -d $(DESTDIR)$(RUBYINSTALL)
install -m 755 $(SWIGRUBYSO) $(DESTDIR)$(RUBYINSTALL)/semanage.so
relabel:
/sbin/restorecon $(LIBDIR)/$(LIBSO)
/sbin/restorecon $(DESTDIR)$(LIBDIR)/$(LIBSO)
clean:
-rm -f $(LIBPC) $(OBJS) $(LOBJS) $(LIBA) $(LIBSO) $(SWIGLOBJ) $(SWIGSO) $(SWIGRUBYSO) $(TARGET) conf-parse.c conf-parse.h conf-scan.c *.o *.lo *~

View File

@ -1,6 +1,6 @@
prefix=@prefix@
exec_prefix=${prefix}
libdir=${exec_prefix}/@libdir@
libdir=@libdir@
includedir=@includedir@
Name: libsemanage

View File

@ -1,6 +1,3 @@
PREFIX ?= $(DESTDIR)/usr
LIBDIR ?= $(PREFIX)/lib
# Add your test source files here:
SOURCES = $(sort $(wildcard *.c))

View File

@ -1,13 +1,13 @@
# Installation directories.
PREFIX ?= $(DESTDIR)/usr
PREFIX ?= /usr
LIBEXECDIR ?= $(PREFIX)/libexec
SELINUXEXECDIR ?= $(LIBEXECDIR)/selinux/
all:
install: all
-mkdir -p $(SELINUXEXECDIR)
install -m 755 semanage_migrate_store $(SELINUXEXECDIR)
-mkdir -p $(DESTDIR)$(SELINUXEXECDIR)
install -m 755 semanage_migrate_store $(DESTDIR)$(SELINUXEXECDIR)
clean: