]> git.proxmox.com Git - mirror_lxc.git/commitdiff
build: Fix support for split build and source dirs
authorDaniel Miranda <danielkza2@gmail.com>
Thu, 21 Aug 2014 10:56:39 +0000 (07:56 -0300)
committerStéphane Graber <stgraber@ubuntu.com>
Fri, 22 Aug 2014 19:05:27 +0000 (14:05 -0500)
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 <danielkza2@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
config/etc/Makefile.am
configure.ac
src/lua-lxc/Makefile.am
src/python-lxc/Makefile.am
src/python-lxc/setup.py [deleted file]
src/python-lxc/setup.py.in [new file with mode: 0644]

index 81d770921a4c1af823a6f859ef67e9636ca5cdb4..03193da0458d8d4fe1a86353fa7f19945206f4f2 100644 (file)
@@ -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
 
index 462217e06e9a56e2ca5414c48febb11bc045ba31..152ef5a49535c5c23ca007f1f21aa7db4735eafe 100644 (file)
@@ -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
 
index 6201adcafd931da79941df61ec13a7f5f0c52f70..9b73df133557b7c77ebd8adac41aedb24de2c05b 100644 (file)
@@ -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
index b1c10b54f50c546bb4b97340ef0d0118bb73ca53..4a014df7d8b745a0f10fc397c62dfee6cf1cccb6 100644 (file)
@@ -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
deleted file mode 100644 (file)
index a1061f1..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/python3
-#
-# python-lxc: Python bindings for LXC
-#
-# (C) Copyright Canonical Ltd. 2012
-#
-# Authors:
-# Stéphane Graber <stgraber@ubuntu.com>
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# 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
-
-from distutils.core import setup, Extension
-
-module = Extension('_lxc', sources=['lxc.c'], libraries=['lxc'])
-
-setup(name='_lxc',
-      version='0.1',
-      description='LXC',
-      packages=['lxc'],
-      package_dir={'lxc': 'lxc'},
-      ext_modules=[module])
diff --git a/src/python-lxc/setup.py.in b/src/python-lxc/setup.py.in
new file mode 100644 (file)
index 0000000..31e849c
--- /dev/null
@@ -0,0 +1,36 @@
+#!/usr/bin/python3
+#
+# python-lxc: Python bindings for LXC
+#
+# (C) Copyright Canonical Ltd. 2012
+#
+# Authors:
+# Stéphane Graber <stgraber@ubuntu.com>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# 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
+
+from distutils.core import setup, Extension
+
+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': '@srcdir@/lxc'},
+      ext_modules=[module])