[apparmor] [patch 3/3] regression tests: build against in-tree libapparmor by default [v2]

Steve Beattie steve at nxnw.org
Tue Dec 24 20:59:35 UTC 2013


This patch converts the regression tests to build against the in-tree
libapparmor, giving an error if libapparmor has not already been built.
It also maintains support for building against the system libapparmor
via passing

  USE_SYSTEM=1

on the make command line. An error is also given if the system
libapparmor cannot be found, indicating that development packages need
to be installed. The check to look for libapparmor is also updated
to make use of libapparmor pkg-config data if available.

Patch history:
  v1: initial submission
  v2: convert from including the apparmor.h on the command line to
      specifying an in-tree libapparmor header include path, now
      that their location has been adjusted to make it safe to do
      so. Remove work around related to defining _GNU_SOURCE.

Signed-off-by: Steve Beattie <steve at nxnw.org>
---
 tests/regression/apparmor/Makefile |   40 ++++++++++++++++++++++++++++++-------
 1 file changed, 33 insertions(+), 7 deletions(-)

Index: b/tests/regression/apparmor/Makefile
===================================================================
--- a/tests/regression/apparmor/Makefile
+++ b/tests/regression/apparmor/Makefile
@@ -1,10 +1,43 @@
 #	Copyright (C) 2002-2005 Novell/SUSE
+#	Copyright (C) 2013 Canonical, Ltd
 #
 #	This program is free software; you can redistribute it and/or
 #	modify it under the terms of the GNU General Public License as
 #	published by the Free Software Foundation, version 2 of the
 #	License.
 
+ifdef USE_SYSTEM
+  # use the system libapparmor headers and library
+  LIBAPPARMOR = $(shell if pkg-config --exists libapparmor ; then \
+				pkg-config --silence-errors --libs libapparmor ; \
+			elif ldconfig -p | grep -q libapparmor\.so$$ ; then \
+				echo -lapparmor ; \
+			fi )
+  ifeq ($(strip $(LIBAPPARMOR)),)
+    $(error Unable to find libapparmor installed on this system; either \
+	    install libapparmor devel packages, set the LIBAPPARMOR variable \
+	    manually, or build against in-tree libapparmor)
+  endif # LIBAPPARMOR not set
+  LDLIBS += -lapparmor
+
+else # !USE_SYSTEM
+  # use in-tree versions
+  LIBAPPARMOR_SRC := ../../../libraries/libapparmor/
+  LIBAPPARMOR_INCLUDE = $(LIBAPPARMOR_SRC)/include
+  LIBAPPARMOR_PATH := $(LIBAPPARMOR_SRC)/src/.libs/
+  ifeq ($(realpath $(LIBAPPARMOR_PATH)/libapparmor.a),)
+    $(error $(LIBAPPARMOR_PATH)/libapparmor.a is missing; either build against \
+	    the in-tree libapparmor by building it first and then trying again \
+	    (see the top-level README for help\) or build against the system \
+	    libapparmor by adding USE_SYSTEM=1 to your make command.)
+  endif
+
+  CFLAGS += -L$(LIBAPPARMOR_PATH) -I$(LIBAPPARMOR_INCLUDE)
+  LDLIBS += -Wl,-Bstatic -lapparmor -Wl,-Bdynamic -lpthread
+endif # USE_SYSTEM
+
+CFLAGS += -Wall -Wstrict-prototypes
+
 SRC=access.c \
     introspect.c \
     changeprofile.c \
@@ -82,13 +115,6 @@ ifneq (,$(findstring $(shell uname -i),i
 SRC+=syscall_ioperm.c syscall_iopl.c
 endif
 
-LIBAPPARMOR:=$(shell	if ldconfig -p | grep -q libapparmor\.so ; then \
-				echo -lapparmor ; \
-			fi )
-
-CFLAGS+=-Wall -Wstrict-prototypes
-LDLIBS+=$(LIBAPPARMOR)
-
 EXEC=$(SRC:%.c=%)
 
 TESTS=access \




More information about the AppArmor mailing list