Skip to content

Commit

Permalink
build: Fix support for split build and source dirs
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
danielkza authored and stgraber committed Sep 19, 2014
1 parent 7b188fe commit 90dca54
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 12 deletions.
4 changes: 0 additions & 4 deletions 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

Expand Down
4 changes: 3 additions & 1 deletion configure.ac
Expand Up @@ -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],
Expand Down Expand Up @@ -488,7 +490,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")
Expand Down Expand Up @@ -717,6 +718,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
Expand Down
4 changes: 2 additions & 2 deletions src/lua-lxc/Makefile.am
Expand Up @@ -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
Expand Down
3 changes: 1 addition & 2 deletions src/python-lxc/Makefile.am
Expand Up @@ -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 \
Expand All @@ -21,7 +21,6 @@ clean-local:

endif
EXTRA_DIST = \
setup.py \
lxc.c \
lxc/__init__.py \
examples/api_test.py \
Expand Down
9 changes: 6 additions & 3 deletions src/python-lxc/setup.py → src/python-lxc/setup.py.in
Expand Up @@ -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])

0 comments on commit 90dca54

Please sign in to comment.