setup.py.in revision 4082d0deb030b1b93ab8c0054c3f638252649084
#!/usr/bin/env 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
import os, os.path
# Fix build when PIE is enabled
for var in ("LDFLAGS", "CFLAGS"):
current = os.environ.get(var, None)
if not current:
continue
new = []
for flag in current.split(" "):
if flag.lower() in ("-pie", "-fpie"):
if "-fPIC" not in new:
new.append("-fPIC")
continue
new.append(flag)
os.environ[var] = " ".join(new)
from distutils.core import setup, Extension
# Distutils doesn't cope well with source files that have relative paths going
# up in the directory tree: it tries to navigate outside of the build dir and
# fails miserably. Therefore, we will instead cd to the source directory,
# run this script from there, but write the build products to the correct path.
#
# Since we will be changing directories before building, we must transform
# all the path variables to their forms relative to srcdir.
srcdir, builddir, top_srcdir, top_builddir = map(os.path.abspath,
["@srcdir@", "@builddir@", "@top_srcdir@", "@top_builddir@"])
builddir, top_srcdir, top_builddir = map(lambda d: os.path.relpath(d, srcdir),
[builddir, top_srcdir, top_builddir])
os.chdir(srcdir)
module = Extension('_lxc', sources=['lxc.c'],
include_dirs=[os.path.join(top_srcdir, 'src'),
os.path.join(top_builddir, 'src')],
library_dirs=[os.path.join(top_builddir, 'src/lxc/.libs/')],
libraries=['lxc'])
setup(name='_lxc',
version='0.1',
description='LXC',
packages=['lxc'],
package_dir={'lxc': 'lxc'},
ext_modules=[module],
options={'build': {'build_base': os.path.join(builddir, 'build')}})