Use the in-tree parser, by default, or use the system parser when
USE_SYSTEM is set.

If the parser cannot be found, print an error message before running
the tests.

Signed-off-by: Tyler Hicks <[email protected]>
---
 tests/regression/apparmor/Makefile | 55 +++++++++++++++++++++++++++-----------
 1 file changed, 40 insertions(+), 15 deletions(-)

diff --git a/tests/regression/apparmor/Makefile 
b/tests/regression/apparmor/Makefile
index 1c4d01a..543baf7 100644
--- a/tests/regression/apparmor/Makefile
+++ b/tests/regression/apparmor/Makefile
@@ -7,6 +7,14 @@
 #      License.
 
 ifdef USE_SYSTEM
+  # use the system parser
+  APPARMOR_PARSER = $(shell which apparmor_parser)
+  ifeq ($(strip $(APPARMOR_PARSER)),)
+    PARSER_ERROR_MESSAGE = Unable to find apparmor_parser installed on this \
+          system; either install the apparmor package, set the \
+          APPARMOR_PARSER variable manually, or use the in-tree parser)
+  endif
+
   # use the system libapparmor headers and library
   LIBAPPARMOR = $(shell if pkg-config --exists libapparmor ; then \
                                pkg-config --silence-errors --libs libapparmor 
; \
@@ -14,22 +22,33 @@ ifdef USE_SYSTEM
                                echo -lapparmor ; \
                        fi )
   ifeq ($(strip $(LIBAPPARMOR)),)
-    ERROR_MESSAGE = Unable to find libapparmor installed on this system; 
either \
-           install libapparmor devel packages, set the LIBAPPARMOR variable \
-           manually, or build against in-tree libapparmor)
+    LIBAPPARMOR_ERROR_MESSAGE = 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 += $(LIBAPPARMOR)
 
 else # !USE_SYSTEM
+  # use the in-tree parser
+  APPARMOR_PARSER = ../../../parser/apparmor_parser
+  ifeq ($(realpath $(APPARMOR_PARSER)),)
+    PARSER_ERROR_MESSAGE = $(APPARMOR_PARSER) is missing; either build the \
+           in-tree parser first and then try again (see the top-level README \
+           for help) or use the system parser by adding USE_SYSTEM=1 to your \
+           make command.)
+  endif
+
   # 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_MESSAGE = $(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.)
+    LIBAPPARMOR_ERROR_MESSAGE = $(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)
@@ -172,11 +191,17 @@ TESTS=access \
 # Tests that can crash the kernel should be placed here
 RISKY_TESTS=
 
-.PHONY: libapparmor_check
-.SILENT: libapparmor_check
+.PHONY: parser_check libapparmor_check
+.SILENT: parser_check libapparmor_check
+parser_check:
+       @if [ -n "$(PARSER_ERROR_MESSAGE)" ] ; then \
+               echo "$(PARSER_ERROR_MESSAGE)" 1>&2 ; \
+               return 1 ; \
+       fi
+
 libapparmor_check:
-       @if [ -n "$(ERROR_MESSAGE)" ] ; then \
-               echo "$(ERROR_MESSAGE)" 1>&2 ; \
+       @if [ -n "$(LIBAPPARMOR_ERROR_MESSAGE)" ] ; then \
+               echo "$(LIBAPPARMOR_ERROR_MESSAGE)" 1>&2 ; \
                return 1 ; \
        fi
 
@@ -197,7 +222,7 @@ dbus_message: dbus_message.c dbus_common.o
 dbus_service: dbus_message dbus_service.c dbus_common.o
        ${CC} ${CFLAGS} ${LDFLAGS} $(filter-out dbus_message, $^) -o 
dbus_service ${LDLIBS} $(shell pkg-config --cflags --libs dbus-1)
 
-tests: all
+tests: parser_check all
        @if [ `whoami` = "root" ] ;\
        then \
                rc=0; \
@@ -205,7 +230,7 @@ tests: all
                do \
                        echo ;\
                        echo "running $$i" ;\
-                       bash $$i.sh ;\
+                       APPARMOR_PARSER=$(APPARMOR_PARSER) bash $$i.sh ;\
                        if [ $$? -ne 0 ] ; then \
                                rc=1;\
                        fi;\
@@ -216,7 +241,7 @@ tests: all
                exit 1;\
        fi
 
-alltests: all
+alltests: parser_check all
        @if [ `whoami` = "root" ] ;\
        then \
                rc=0; \
@@ -224,7 +249,7 @@ alltests: all
                do \
                        echo ;\
                        echo "running $$i" ;\
-                       bash $$i.sh ;\
+                       APPARMOR_PARSER=$(APPARMOR_PARSER) bash $$i.sh ;\
                        if [ $$? -ne 0 ] ; then \
                                rc=1;\
                        fi;\
-- 
1.8.3.2


-- 
AppArmor mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/apparmor

Reply via email to