summaryrefslogtreecommitdiffstats
path: root/python/setup.py
diff options
context:
space:
mode:
authorValery Febvre <vfebvre at easter-eggs.com>2004-04-02 00:54:07 +0000
committerValery Febvre <vfebvre at easter-eggs.com>2004-04-02 00:54:07 +0000
commitb6c73fd19c79ce9c548090466e5a514a61da36ae (patch)
tree7cccd562a2640b30c2f539e990c96f5881f273ca /python/setup.py
parentd09a0de3b0e667b96ca722f374f04baeb164224b (diff)
downloadlasso-b6c73fd19c79ce9c548090466e5a514a61da36ae.tar.gz
lasso-b6c73fd19c79ce9c548090466e5a514a61da36ae.tar.xz
lasso-b6c73fd19c79ce9c548090466e5a514a61da36ae.zip
Initial commit
Diffstat (limited to 'python/setup.py')
-rwxr-xr-xpython/setup.py210
1 files changed, 210 insertions, 0 deletions
diff --git a/python/setup.py b/python/setup.py
new file mode 100755
index 00000000..9611ca99
--- /dev/null
+++ b/python/setup.py
@@ -0,0 +1,210 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# $Id$
+#
+# PyLasso - Python bindings for Lasso library
+#
+# Copyright (C) 2004 Entr'ouvert
+# http://lasso.labs.libre-entreprise.org
+#
+# Author: Valéry Febvre <vfebvre@easter-eggs.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+__doc__ = """Python bindings for Lasso Library
+
+PyLasso is a set of Python bindings for Lasso Library.
+"""
+
+classifiers = """\
+Development Status :: 2 - Pre-Alpha
+Intended Audience :: Developers
+License :: OSI Approved :: GNU General Public License (GPL)
+Operating System :: POSIX
+Programming Language :: C
+Programming Language :: Python
+Topic :: Software Development :: Libraries :: Python Modules
+"""
+
+from distutils.core import setup, Extension
+import sys, commands
+
+# check python version
+if not hasattr(sys, 'version_info') or sys.version_info < (2,2):
+ raise SystemExit, "PyLasso requires Python version 2.2 or above."
+
+# sanity check for any arguments
+if len(sys.argv) == 1:
+ msg = 'Choose an action :\n' \
+ ' 1. Build\n' \
+ ' 2. Install\n' \
+ ' 3. Clean\n' \
+ ' 4. Exit\n' \
+ 'Your choice : '
+ reply = raw_input(msg)
+ choice = None
+ if reply:
+ choice = reply[0]
+ if choice == '1':
+ sys.argv.append('build')
+ elif choice == '2':
+ sys.argv.append('install')
+ elif choice == '3':
+ sys.argv.append('clean')
+ sys.argv.append('-a')
+ elif choice == '4':
+ sys.exit(0)
+
+# the crypto engine name : openssl, gnutls or nss
+xmlsec1_crypto = "openssl"
+if 'build' in sys.argv:
+ msg = '\nChoose a crypto engine :\n' \
+ ' 1. OpenSSL\n' \
+ ' 2. GnuTLS\n' \
+ ' 3. NSS\n' \
+ 'Your choice : '
+ reply = raw_input(msg)
+ choice = None
+ if reply:
+ choice = reply[0]
+ if choice == '1':
+ xmlsec1_crypto = "openssl"
+ elif choice == '2':
+ xmlsec1_crypto = "gnutls"
+ elif choice == '3':
+ xmlsec1_crypto = "nss"
+
+define_macros = []
+include_dirs = []
+library_dirs = []
+libraries = []
+
+def extract_cflags(cflags):
+ global define_macros, include_dirs
+ list = cflags.split(' ')
+ for flag in list:
+ if flag == '':
+ continue
+ flag = flag.replace("\\\"", "")
+ if flag[:2] == "-I":
+ if flag[2:] not in include_dirs:
+ include_dirs.append(flag[2:])
+ elif flag[:2] == "-D":
+ t = tuple(flag[2:].split('='))
+ if t not in define_macros:
+ define_macros.append(t)
+ else:
+ print "Warning : cflag %s skipped" % flag
+
+def extract_libs(libs):
+ global library_dirs, libraries
+ list = libs.split(' ')
+ for flag in list:
+ if flag == '':
+ continue
+ if flag[:2] == "-l":
+ if flag[2:] not in libraries:
+ libraries.append(flag[2:])
+ elif flag[:2] == "-L":
+ if flag[2:] not in library_dirs:
+ library_dirs.append(flag[2:])
+ else:
+ print "Warning : linker flag %s skipped" % flag
+
+# GObject
+gobject_cflags = commands.getoutput('pkg-config gobject-2.0 --cflags')
+if gobject_cflags[:2] not in ["-I", "-D"]:
+ print "Error : cannot get GObject pre-processor and compiler flags"
+
+gobject_libs = commands.getoutput('pkg-config gobject-2.0 --libs')
+if gobject_libs[:2] not in ["-l", "-L"]:
+ print "Error : cannot get GObject linker flags"
+
+# LibXML2
+libxml2_cflags = commands.getoutput('pkg-config libxml-2.0 --cflags')
+if libxml2_cflags[:2] not in ["-I", "-D"]:
+ libxml2_cflags = commands.getoutput('xml2-config --cflags')
+if libxml2_cflags[:2] not in ["-I", "-D"]:
+ print "Error : cannot get LibXML2 pre-processor and compiler flags"
+
+libxml2_libs = commands.getoutput('pkg-config libxml-2.0 --libs')
+if libxml2_libs[:2] not in ["-l", "-L"]:
+ libxml2_libs = commands.getoutput('xml2-config --libs')
+if libxml2_libs[:2] not in ["-l", "-L"]:
+ print "Error : cannot get LibXML2 linker flags"
+
+# XMLSec1
+cmd = 'pkg-config xmlsec1-%s --cflags' % xmlsec1_crypto
+xmlsec1_cflags = commands.getoutput(cmd)
+if xmlsec1_cflags[:2] not in ["-I", "-D"]:
+ cmd = 'xmlsec1-config --cflags --crypto=%s' % xmlsec1_crypto
+ xmlsec1_cflags = commands.getoutput(cmd)
+if xmlsec1_cflags[:2] not in ["-I", "-D"]:
+ print "Error : cannot get XMLSec1 pre-processor and compiler flags"
+
+cmd = 'pkg-config xmlsec1-%s --libs' % xmlsec1_crypto
+xmlsec1_libs = commands.getoutput(cmd)
+if xmlsec1_libs[:2] not in ["-l", "-L"]:
+ cmd = 'xmlsec1-config --libs --crypto=%s' % xmlsec1_crypto
+ xmlsec1_libs = commands.getoutput(cmd)
+if xmlsec1_libs[:2] not in ["-l", "-L"]:
+ print "Error : cannot get XMLSec1 linker flags"
+
+print gobject_cflags
+print gobject_libs
+print libxml2_cflags
+print libxml2_libs
+print xmlsec1_cflags
+print xmlsec1_libs
+
+extract_cflags(gobject_cflags)
+extract_libs(gobject_libs)
+
+extract_cflags(libxml2_cflags)
+extract_libs(libxml2_libs)
+
+extract_cflags(xmlsec1_cflags)
+extract_libs(xmlsec1_libs)
+
+# FIXME : cflags & libs for lasso
+include_dirs.append('..')
+library_dirs.append('../lasso/.libs')
+libraries.append('lasso')
+
+em = Extension("lassomod",
+ sources = ["py_lasso.c",
+ "lassomod.c",
+ "utils.c", "wrap_objs.c"],
+ define_macros = define_macros,
+ include_dirs = include_dirs,
+ library_dirs = library_dirs,
+ libraries = libraries
+ )
+
+doclines = __doc__.split("\n")
+
+setup(name = "pylasso",
+ version = "0.0.1",
+ description = doclines[0],
+ long_description = "\n" . join(doclines[2:]),
+ author = "Valery Febvre",
+ author_email = "vfebvre@easter-eggs.com",
+ license = "GNU GPL",
+ platforms = ["any"],
+ url = "http://lasso.labs.libre-entreprise.org",
+ ext_modules = [em],
+ py_modules = ["lasso", "lasso_strings"]
+)