[lxc-devel] [PATCH] build: Fix support for split build and source dirs
Stéphane Graber
stgraber at ubuntu.com
Fri Aug 22 19:02:16 UTC 2014
On Thu, Aug 21, 2014 at 07:56:39AM -0300, Daniel Miranda wrote:
> 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 at gmail.com>
Acked-by: Stéphane Graber <stgraber at ubuntu.com>
> ---
> config/etc/Makefile.am | 4 ----
> configure.ac | 4 +++-
> src/lua-lxc/Makefile.am | 4 ++--
> src/python-lxc/Makefile.am | 3 +--
> src/python-lxc/setup.py | 33 ---------------------------------
> src/python-lxc/setup.py.in | 35 +++++++++++++++++++++++++++++++++++
> 6 files changed, 41 insertions(+), 42 deletions(-)
> delete mode 100644 src/python-lxc/setup.py
> create mode 100644 src/python-lxc/setup.py.in
>
> diff --git a/config/etc/Makefile.am b/config/etc/Makefile.am
> index 81d7709..03193da 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 462217e..152ef5a 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 6201adc..9b73df1 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 b1c10b5..4a014df 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
> deleted file mode 100644
> index a1061f1..0000000
> --- a/src/python-lxc/setup.py
> +++ /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 at 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
> index 0000000..4304f75
> --- /dev/null
> +++ b/src/python-lxc/setup.py.in
> @@ -0,0 +1,35 @@
> +#!/usr/bin/python3
> +#
> +# python-lxc: Python bindings for LXC
> +#
> +# (C) Copyright Canonical Ltd. 2012
> +#
> +# Authors:
> +# Stéphane Graber <stgraber at 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])
> --
> 1.9.3
>
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel
--
Stéphane Graber
Ubuntu developer
http://www.ubuntu.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20140822/dbf9d380/attachment.sig>
More information about the lxc-devel
mailing list