[apparmor] [PATCH] towards a common build infrastructure
Kees Cook
kees at ubuntu.com
Sat May 5 21:38:15 UTC 2012
I'd like to start trying to move to a common autoconf infrastructure where
the build elements are selected at configure time, etc. This will let us
get rid of the unusual common/Make.rules logic, provide cleaner common
build targets, potential for easier parallelization of the build, etc.
This is the first step, which moves the configure.ac from
libraries/libapparmor down into the top level directory. Currently
only libraries/libapparmor is automake-ified, but with the autoconf
infrastructure moved, we can start adding directories one at a time
until all the by-hand Makefiles have been replaced.
To help with with transition, I've added some by-hand Makefiles to
needed subdirectories so that the top-level "make", "make check", and
"make clean"s will get passed all the way down.
Signed-off-by: Kees Cook <kees at ubuntu.com>
=== modified file '.bzrignore'
--- .bzrignore 2011-08-09 08:17:42 +0000
+++ .bzrignore 2012-05-05 20:46:57 +0000
@@ -1,4 +1,18 @@
apparmor-*
+aclocal.m4
+autom4te.cache
+compile
+config.guess
+config.log
+config.status
+config.sub
+configure
+depcomp
+install-sh
+libtool
+ltmain.sh
+missing
+ylwrap
parser/po/*.mo
parser/af_names.h
parser/cap_names.h
@@ -25,23 +39,10 @@
parser/techdoc.log
parser/techdoc.pdf
parser/techdoc.toc
+profiles/common
libraries/libapparmor/Makefile
libraries/libapparmor/Makefile.in
-libraries/libapparmor/aclocal.m4
libraries/libapparmor/audit.log
-libraries/libapparmor/autom4te.cache
-libraries/libapparmor/compile
-libraries/libapparmor/config.guess
-libraries/libapparmor/config.log
-libraries/libapparmor/config.status
-libraries/libapparmor/config.sub
-libraries/libapparmor/configure
-libraries/libapparmor/depcomp
-libraries/libapparmor/install-sh
-libraries/libapparmor/libtool
-libraries/libapparmor/ltmain.sh
-libraries/libapparmor/missing
-libraries/libapparmor/ylwrap
libraries/libapparmor/doc/Makefile
libraries/libapparmor/doc/Makefile.in
libraries/libapparmor/doc/*.2
=== modified file 'Makefile'
--- Makefile 2012-03-22 20:17:48 +0000
+++ Makefile 2012-05-05 21:14:28 +0000
@@ -2,15 +2,17 @@
#
OVERRIDE_TARBALL=yes
+all: build
+
include common/Make.rules
-DIRS=parser \
- profiles \
- utils \
- libraries/libapparmor \
- changehat/mod_apparmor \
- changehat/pam_apparmor \
- tests
+SUBDIRS=\
+ libraries \
+ utils \
+ parser \
+ changehat \
+ profiles \
+ tests
REPO_URL?=lp:apparmor
# alternate possibilities to export from
@@ -25,6 +27,24 @@
# embedded in ${VERSION}
TAG_VERSION=$(subst ~,-,${VERSION})
+# Support the top-level automake targets during transition.
+.PHONY: am--refresh
+ for dir in libraries/libapparmor; do \
+ make -C $$dir am--refresh || exit 1; \
+ done
+
+.PHONY: build
+build: configure
+ for dir in $(SUBDIRS); do \
+ make -C $$dir || exit 1; \
+ done
+
+.PHONY: check
+check:
+ for dir in $(SUBDIRS); do \
+ make -C $$dir check || exit 1; \
+ done
+
.PHONY: tarball
tarball: clean
REPO_VERSION=`$(value REPO_VERSION_CMD)` ; \
@@ -50,15 +70,14 @@
.PHONY: clean
clean:
-rm -rf ${RELEASE_DIR} ./apparmor-${VERSION}~*
- for dir in $(DIRS); do \
+ for dir in $(SUBDIRS); do \
make -C $$dir clean; \
done
.PHONY: setup
setup:
- cd $(__SETUP_DIR)/libraries/libapparmor && ./autogen.sh
+ cd $(__SETUP_DIR) && ./autogen.sh
.PHONY: tag
tag:
bzr tag apparmor_${TAG_VERSION}
-
=== modified file 'README'
--- README 2011-09-12 20:30:17 +0000
+++ README 2012-05-05 20:48:29 +0000
@@ -58,9 +58,6 @@
To build and install AppArmor userspace on your system, build and install in
the following order.
-
-libapparmor:
-$ cd ./libraries/libapparmor
$ sh ./autogen.sh
$ sh ./configure --prefix=/usr --with-perl # see below
$ make
@@ -71,40 +68,6 @@
and --with-ruby, to generate python and ruby bindings to libapparmor,
respectively.]
-
-Utilities:
-$ cd utils
-$ make
-$ make check
-$ make install
-
-
-parser:
-$ cd parser
-$ make
-$ make check
-$ make install
-
-
-Apache mod_apparmor:
-$ cd changehat/mod_apparmor
-$ make # depends on libapparmor having been built first
-$ make install
-
-
-PAM AppArmor:
-$ cd changehat/pam_apparmor
-$ make # depends on libapparmor having been built first
-$ make install
-
-
-Profiles:
-$ cd profiles
-$ make
-$ make check # depends on the parser having been built first
-$ make install
-
-
[Note that for the parser and the utils, if you only with to build/use
some of the locale languages, you can override the default by passing
the LANGS arguments to make; e.g. make all install "LANGS=en_US fr".]
@@ -183,4 +146,3 @@
-----------------------------------------------
TODO
-
=== renamed file 'libraries/libapparmor/autogen.sh' => 'autogen.sh'
=== added file 'changehat/Makefile'
--- changehat/Makefile 1970-01-01 00:00:00 +0000
+++ changehat/Makefile 2012-05-05 21:14:51 +0000
@@ -0,0 +1,21 @@
+SUBDIRS=mod_apparmor pam_apparmor
+
+all: build
+
+.PHONY: build
+build:
+ for dir in $(SUBDIRS); do \
+ make -C $$dir || exit 1; \
+ done
+
+.PHONY: check
+check:
+ for dir in $(SUBDIRS); do \
+ make -C $$dir check || exit 1; \
+ done
+
+.PHONY: clean
+clean:
+ for dir in $(SUBDIRS); do \
+ make -C $$dir clean || exit 1; \
+ done
=== modified file 'changehat/mod_apparmor/Makefile'
--- changehat/mod_apparmor/Makefile 2011-03-18 06:32:34 +0000
+++ changehat/mod_apparmor/Makefile 2012-05-05 21:29:24 +0000
@@ -62,3 +62,7 @@
clean: _clean
rm -rf .libs
rm -f *.la *.lo *.so *.o *.slo Make.rules
+
+.PHONY: check
+check:
+ @echo "'check' target unimplemented"
=== modified file 'changehat/pam_apparmor/Makefile'
--- changehat/pam_apparmor/Makefile 2011-02-08 15:21:20 +0000
+++ changehat/pam_apparmor/Makefile 2012-05-05 21:29:19 +0000
@@ -47,9 +47,12 @@
install: $(NAME).so
install -m 755 -d $(SECDIR)
install -m 555 $(NAME).so $(SECDIR)/
-
+
.PHONY: clean
clean: ${MAKE_RULES}
rm -f core core.* *.so *.o *.s *.a *~
rm -f ${NAME}-*.tar.gz Make.rules
+.PHONY: check
+check:
+ @echo "'check' target unimplemented"
=== renamed file 'libraries/libapparmor/configure.in' => 'configure.ac'
--- libraries/libapparmor/configure.in 2010-10-07 22:37:30 +0000
+++ configure.ac 2012-05-05 21:35:40 +0000
@@ -1,11 +1,10 @@
m4_define([__apparmor_version], m4_sinclude(common/Version))
-m4_ifdef(__apparmor_version, , m4_define([__apparmor_version], m4_sinclude(../../common/Version)))
m4_define([__aalen], decr(len(__apparmor_version)))
m4_define([apparmor_version], m4_substr(__apparmor_version, 0, __aalen))
-AC_INIT(configure.in)
+AC_INIT(configure.ac)
-AM_INIT_AUTOMAKE(libapparmor1, apparmor_version)
+AM_INIT_AUTOMAKE(apparmor, apparmor_version)
AM_PROG_LEX
AC_PROG_YACC
@@ -13,8 +12,20 @@
AC_PATH_PROG([SWIG], [swig])
-sinclude(m4/ac_pod2man.m4)
-PROG_POD2MAN
+AC_CHECK_PROG(POD2MAN,pod2man,pod2man,no)
+if test "$POD2MAN" = "no"; then
+ AC_MSG_ERROR([
+The pod2man program was not found in the default path. pod2man is part of
+Perl, which can be retrieved from:
+
+ http://www.perl.com/
+
+The latest version at this time is 5.6.1; it is available packaged as the
+following archive:
+
+ http://www.perl.com/CPAN/src/stable.tar.gz
+])
+fi
AC_MSG_CHECKING(Checking for Python)
AC_ARG_WITH(python,
@@ -70,17 +81,17 @@
AM_PROG_LIBTOOL
AC_OUTPUT(
-Makefile
-doc/Makefile
-src/Makefile
-swig/Makefile
-swig/perl/Makefile
-swig/perl/Makefile.PL
-swig/python/Makefile
-swig/python/setup.py
-swig/ruby/Makefile
-testsuite/Makefile
-testsuite/config/Makefile
-testsuite/libaalogparse.test/Makefile
-testsuite/lib/Makefile
+libraries/libapparmor/Makefile
+libraries/libapparmor/doc/Makefile
+libraries/libapparmor/src/Makefile
+libraries/libapparmor/swig/Makefile
+libraries/libapparmor/swig/perl/Makefile
+libraries/libapparmor/swig/perl/Makefile.PL
+libraries/libapparmor/swig/python/Makefile
+libraries/libapparmor/swig/python/setup.py
+libraries/libapparmor/swig/ruby/Makefile
+libraries/libapparmor/testsuite/Makefile
+libraries/libapparmor/testsuite/config/Makefile
+libraries/libapparmor/testsuite/libaalogparse.test/Makefile
+libraries/libapparmor/testsuite/lib/Makefile
)
=== added file 'libraries/Makefile'
--- libraries/Makefile 1970-01-01 00:00:00 +0000
+++ libraries/Makefile 2012-05-05 21:14:40 +0000
@@ -0,0 +1,21 @@
+SUBDIRS=libapparmor
+
+all: build
+
+.PHONY: build
+build:
+ for dir in $(SUBDIRS); do \
+ make -C $$dir || exit 1; \
+ done
+
+.PHONY: check
+check:
+ for dir in $(SUBDIRS); do \
+ make -C $$dir check || exit 1; \
+ done
+
+.PHONY: clean
+clean:
+ for dir in $(SUBDIRS); do \
+ make -C $$dir clean || exit 1; \
+ done
=== modified file 'libraries/libapparmor/Makefile.am'
--- libraries/libapparmor/Makefile.am 2008-05-19 22:48:31 +0000
+++ libraries/libapparmor/Makefile.am 2012-05-05 21:06:26 +0000
@@ -21,5 +21,5 @@
svn export -r $(REPO_VERSION) $(REPO_URL) $(RELEASE_DIR)
$(SVNTAR) -f $(SVNTARBALL) $(RELEASE_DIR)
rm -rf $(RELEASE_DIR)
-
+
EXTRA_DIST = AUTHORS ChangeLog COPYING.LGPL INSTALL NEWS README
=== removed file 'libraries/libapparmor/m4/ac_pod2man.m4'
--- libraries/libapparmor/m4/ac_pod2man.m4 2009-05-12 21:58:54 +0000
+++ libraries/libapparmor/m4/ac_pod2man.m4 1970-01-01 00:00:00 +0000
@@ -1,16 +0,0 @@
-AC_DEFUN([PROG_POD2MAN],[
- AC_CHECK_PROG(POD2MAN,pod2man,pod2man,no)
- if test "$POD2MAN" = "no"; then
- AC_MSG_ERROR([
-The pod2man program was not found in the default path. pod2man is part of
-Perl, which can be retrieved from:
-
- http://www.perl.com/
-
-The latest version at this time is 5.6.1; it is available packaged as the
-following archive:
-
- http://www.perl.com/CPAN/src/stable.tar.gz
-])
- fi
-])
=== modified file 'libraries/libapparmor/src/Makefile.am'
--- libraries/libapparmor/src/Makefile.am 2012-04-25 19:15:19 +0000
+++ libraries/libapparmor/src/Makefile.am 2012-05-05 21:07:03 +0000
@@ -24,10 +24,11 @@
libapparmor_la_SOURCES = grammar.y libaalogparse.c kernel_interface.c scanner.c
libapparmor_la_LDFLAGS = -version-info 1:2:0 -XCClinker -dynamic \
- -Wl,--version-script=$(top_srcdir)/src/libapparmor.map -Wl,-soname=libapparmor.so.1
+ -Wl,--version-script=$(srcdir)/libapparmor.map -Wl,-soname=libapparmor.so.1
libimmunix_la_SOURCES = kernel_interface.c libimmunix_warning.c
-libimmunix_la_LDFLAGS = -version-info 1:2:0 -Wl,--version-script=$(top_srcdir)/src/libapparmor.map -Wl,-soname=libimmunix.so.1
+libimmunix_la_LDFLAGS = -version-info 1:2:0 \
+ -Wl,--version-script=$(srcdir)/libapparmor.map -Wl,-soname=libimmunix.so.1
tst_aalogmisc_SOURCES = tst_aalogmisc.c
tst_aalogmisc_LDADD = .libs/libapparmor.a
=== modified file 'libraries/libapparmor/swig/java/Makefile.am'
--- libraries/libapparmor/swig/java/Makefile.am 2008-05-19 22:48:31 +0000
+++ libraries/libapparmor/swig/java/Makefile.am 2012-05-05 21:22:22 +0000
@@ -4,18 +4,18 @@
all-local: apparmorlogparse_wrap.o
$(CC) -module apparmorlogparse_wrap.o -o libaalogparse.so
-
+
apparmorlogparse_wrap.o: apparmorlogparse_wrap.c
- $(CC) -c apparmorlogparse_wrap.c $(CFLAGS) -I../../src -I/usr/include/classpath -fno-strict-aliasing -o apparmorlogparse_wrap.o
-
+ $(CC) -c apparmorlogparse_wrap.c $(CFLAGS) -I$(srcdir)/../../src -I/usr/include/classpath -fno-strict-aliasing -o apparmorlogparse_wrap.o
+
clean-local:
rm -rf org
-apparmorlogparse_wrap.c: org/aalogparse ../SWIG/*.i
- $(SWIG) -java -I../SWIG -I../../src -outdir org/aalogparse \
+apparmorlogparse_wrap.c: org/aalogparse $(srcdir)/../SWIG/*.i
+ $(SWIG) -java -I$(srcdir)/../SWIG -I$(srcdir)/../../src -outdir org/aalogparse \
-package org.aalogparse -o apparmorlogparse_wrap.c libaalogparse.i
org/aalogparse:
mkdir -p org/aalogparse
-EXTRA_DIST = $(BUILT_SOURCES)
+EXTRA_DIST = $(BUILT_SOURCES)
=== modified file 'libraries/libapparmor/swig/perl/Makefile.PL.in'
--- libraries/libapparmor/swig/perl/Makefile.PL.in 2012-04-25 19:15:19 +0000
+++ libraries/libapparmor/swig/perl/Makefile.PL.in 2012-05-05 21:04:50 +0000
@@ -10,8 +10,8 @@
'FIRST_MAKEFILE' => 'Makefile.perl',
'ABSTRACT' => q[Perl interface to AppArmor] ,
'VERSION' => q[@VERSION@],
- 'INC' => q[@CPPFLAGS@ -I at top_srcdir@/src @CFLAGS@],
- 'LIBS' => q[-L at top_builddir@/src/.libs/ -lapparmor @LIBS@],
+ 'INC' => q[@CPPFLAGS@ -I at srcdir@/../../src @CFLAGS@],
+ 'LIBS' => q[-L at builddir@/../../src/.libs/ -lapparmor @LIBS@],
'OBJECT' => 'libapparmor_wrap.o', # $(OBJ_EXT)
) ;
=== modified file 'libraries/libapparmor/swig/python/setup.py.in'
--- libraries/libapparmor/swig/python/setup.py.in 2011-11-10 17:22:09 +0000
+++ libraries/libapparmor/swig/python/setup.py.in 2012-05-05 21:24:19 +0000
@@ -12,8 +12,8 @@
packages = [ 'LibAppArmor' ],
ext_package = 'LibAppArmor',
ext_modules = [Extension('_LibAppArmor', ['libapparmor_wrap.c'],
- include_dirs=['@top_srcdir@/src'],
- extra_link_args = '-L at top_builddir@/src/.libs -lapparmor'.split(),
-# static: extra_link_args = '@top_builddir@/src/.libs/libapparmor.a'.split(),
+ include_dirs=['@srcdir@/../../src'],
+ extra_link_args = '-L at builddir@/../../src/.libs -lapparmor'.split(),
+# static: extra_link_args = '@builddir@/../../src/.libs/libapparmor.a'.split(),
)],
)
=== modified file 'libraries/libapparmor/swig/ruby/Makefile.am'
--- libraries/libapparmor/swig/ruby/Makefile.am 2009-05-12 21:56:56 +0000
+++ libraries/libapparmor/swig/ruby/Makefile.am 2012-05-05 21:21:20 +0000
@@ -4,12 +4,12 @@
noinst_DATA = LibAppArmor.so
LibAppArmor_wrap.c : $(srcdir)/../SWIG/libapparmor.i
- $(SWIG) -ruby -module LibAppArmor -I$(top_srcdir)/src -o $@ $(srcdir)/../SWIG/libapparmor.i
+ $(SWIG) -ruby -module LibAppArmor -I$(srcdir)/../../src -o $@ $(srcdir)/../SWIG/libapparmor.i
MOSTLYCLEANFILES=LibAppArmor_wrap.c
Makefile.ruby: extconf.rb
- PREFIX=$(prefix) $(RUBY) $< --with-LibAppArmor-include=$(top_srcdir)/src
+ PREFIX=$(prefix) $(RUBY) $< --with-LibAppArmor-include=$(srcdir)/../../src
LibAppArmor.so: LibAppArmor_wrap.c Makefile.ruby
$(MAKE) -fMakefile.ruby
=== modified file 'libraries/libapparmor/testsuite/Makefile.am'
--- libraries/libapparmor/testsuite/Makefile.am 2012-04-25 19:15:19 +0000
+++ libraries/libapparmor/testsuite/Makefile.am 2012-05-05 21:18:44 +0000
@@ -2,7 +2,7 @@
PACKAGE = libaalogparse
AUTOMAKE_OPTIONS = dejagnu
-INCLUDES = -I. -I$(top_srcdir)/src
+INCLUDES = -I. -I$(srcdir)/../src
AM_CPPFLAGS = $(DEBUG_FLAGS) -DLOCALEDIR=\"${localedir}\"
AM_CFLAGS = -Wall
=== renamed directory 'libraries/libapparmor/m4' => 'm4'
=== modified file 'tests/Makefile'
--- tests/Makefile 2011-05-23 23:05:10 +0000
+++ tests/Makefile 2012-05-05 21:33:48 +0000
@@ -5,3 +5,7 @@
for dir in $(SUBDIRS) ; do \
make clean -C $${dir} ; \
done
+
+.PHONY: check
+check:
+ @echo Automatic testing disabled
--
Kees Cook
More information about the AppArmor
mailing list