From: Daniel Miranda Date: Thu, 21 Aug 2014 10:56:39 +0000 (-0300) Subject: build: Fix support for split build and source dirs X-Git-Tag: lxc-1.1.0.alpha2~59 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d79067a726f1b4a06828220cc11dd3cfbc244856;p=thirdparty%2Flxc.git build: Fix support for split build and source dirs Building LXC in a separate target directory, by running configure from outside the source tree, failed with multiple errors, mostly in the Python and Lua extensions, due to assuming the source dir and build dir are the same in a few places. To fix that: - Pre-process setup.py with the appropriate directories at configure time - Introduce the build dir as an include path in the Lua Makefile - Link the default container configuration file from the alternatives in the configure stage, instead of setting a variable and using it in the Makefile Signed-off-by: Daniel Miranda Acked-by: Stéphane Graber --- diff --git a/config/etc/Makefile.am b/config/etc/Makefile.am index 81d770921..03193da04 100644 --- a/config/etc/Makefile.am +++ b/config/etc/Makefile.am @@ -1,12 +1,8 @@ configdir = $(sysconfdir)/lxc config_DATA = default.conf -distroconf = @LXC_DISTRO_CONF@ EXTRA_DIST = default.conf.ubuntu default.conf.libvirt default.conf.unknown -default.conf: - cp $(distroconf) $@ - clean-local: @$(RM) -f default.conf diff --git a/configure.ac b/configure.ac index 462217e06..152ef5a49 100644 --- a/configure.ac +++ b/configure.ac @@ -73,6 +73,8 @@ AC_MSG_RESULT([$with_distro]) AM_CONDITIONAL([HAVE_DEBIAN], [test x"$with_distro" = "xdebian" -o x"$with_distro" = "xubuntu" -o x"$with_distro" = "xraspbian"]) AM_CONDITIONAL([DISTRO_UBUNTU], [test "x$with_distro" = "xubuntu"]) +AC_CONFIG_LINKS([config/etc/default.conf:config/etc/${distroconf}]) + # Check for init system type AC_MSG_CHECKING([for init system type]) AC_ARG_WITH([init-script], @@ -523,7 +525,6 @@ AS_AC_EXPAND(LXC_DEFAULT_CONFIG, "$sysconfdir/lxc/default.conf") AS_AC_EXPAND(DATADIR, "$datadir") AS_AC_EXPAND(LOCALSTATEDIR, "$localstatedir") AS_AC_EXPAND(DOCDIR, "$docdir") -AS_AC_EXPAND(LXC_DISTRO_CONF, "$distroconf") AS_AC_EXPAND(LXC_GENERATE_DATE, "$(date)") AS_AC_EXPAND(LXCPATH, "$with_config_path") AS_AC_EXPAND(LXC_GLOBAL_CONF, "$with_global_conf") @@ -759,6 +760,7 @@ AC_CONFIG_FILES([ src/lxc/lxc.functions src/lxc/version.h src/python-lxc/Makefile + src/python-lxc/setup.py src/lua-lxc/Makefile diff --git a/src/lua-lxc/Makefile.am b/src/lua-lxc/Makefile.am index 6201adcaf..9b73df133 100644 --- a/src/lua-lxc/Makefile.am +++ b/src/lua-lxc/Makefile.am @@ -11,13 +11,13 @@ so_PROGRAMS = core.so core_so_SOURCES = core.c -AM_CFLAGS=-I$(top_srcdir)/src $(LUA_CFLAGS) -DVERSION=\"$(VERSION)\" -DLXCPATH=\"$(LXCPATH)\" +AM_CFLAGS=-I$(top_builddir)/src -I$(top_srcdir)/src $(LUA_CFLAGS) -DVERSION=\"$(VERSION)\" -DLXCPATH=\"$(LXCPATH)\" core_so_CFLAGS = -fPIC -DPIC $(AM_CFLAGS) core_so_LDFLAGS = \ -shared \ - -L$(top_srcdir)/src/lxc \ + -L$(top_builddir)/src/lxc \ -Wl,-soname,core.so.$(firstword $(subst ., ,$(VERSION))) core_so_LDADD = -llxc diff --git a/src/python-lxc/Makefile.am b/src/python-lxc/Makefile.am index b1c10b54f..4a014df7d 100644 --- a/src/python-lxc/Makefile.am +++ b/src/python-lxc/Makefile.am @@ -7,7 +7,7 @@ else endif all: - CFLAGS="$(CFLAGS) -I ../../src -L../../src/lxc/" $(PYTHON) setup.py build + $(PYTHON) setup.py build install: if [ "$(DESTDIR)" = "" ]; then \ @@ -21,7 +21,6 @@ clean-local: endif EXTRA_DIST = \ - setup.py \ lxc.c \ lxc/__init__.py \ examples/api_test.py \ diff --git a/src/python-lxc/setup.py b/src/python-lxc/setup.py.in similarity index 79% rename from src/python-lxc/setup.py rename to src/python-lxc/setup.py.in index a1061f14e..31e849c16 100644 --- a/src/python-lxc/setup.py +++ b/src/python-lxc/setup.py.in @@ -19,15 +19,18 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA from distutils.core import setup, Extension -module = Extension('_lxc', sources=['lxc.c'], libraries=['lxc']) +module = Extension('_lxc', sources=['@srcdir@/lxc.c'], + include_dirs=['@top_builddir@/src', '@top_srcdir@/src'], + library_dirs=['@top_builddir@/src/lxc'], libraries=['lxc']) setup(name='_lxc', version='0.1', description='LXC', packages=['lxc'], - package_dir={'lxc': 'lxc'}, + package_dir={'lxc': '@srcdir@/lxc'}, ext_modules=[module])