aboutsummaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
Diffstat (limited to 'setup.py')
-rw-r--r--setup.py273
1 files changed, 0 insertions, 273 deletions
diff --git a/setup.py b/setup.py
deleted file mode 100644
index 756a0dd9..00000000
--- a/setup.py
+++ /dev/null
@@ -1,273 +0,0 @@
-# Experimental top-level setup.py for rpki CA tools.
-#
-# This is not yet ready for prime time.
-#
-# General idea here is that we can use this with Python-aware platform
-# packaging systems, and our code here deals with the strange build
-# environment required when the system copy of OpenSSL isn't usable.
-#
-# So yes, you are seeing a setup.py which calls autoconf and make.
-# Strange, but so long as it works as Python expects, good enough.
-
-# $Id$
-#
-# Copyright (C) 2011-2013 Internet Systems Consortium ("ISC")
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
-# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
-# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THIS SOFTWARE.
-
-import os
-import stat
-import subprocess
-from distutils.core import setup, Extension, Command
-from distutils.command.build_ext import build_ext as _build_ext
-from distutils.command.install_data import install_data as _install_data
-from distutils.command.sdist import sdist as _sdist
-
-try:
- from ac_rpki import ac
-except ImportError:
- ac = None
-
-class autoconf(Command):
-
- description = "run autoconf if hasn't been run already"
-
- user_options = []
-
- def initialize_options(self):
- pass
-
- def finalize_options(self):
- pass
-
- def run(self):
- global ac
- if ac is None:
- subprocess.check_call(("./configure",))
- import ac_rpki
- ac = ac_rpki.ac
-
-class build_openssl(Command):
-
- description = "build private OpenSSL libraries when needed by POW extension"
-
- user_options = []
-
- def initialize_options(self):
- pass
-
- def finalize_options(self):
- pass
-
- def run(self):
- self.run_command("autoconf")
- if ac.build_openssl:
- subprocess.check_call(("make",), cwd = "openssl")
-
-class build_ext(_build_ext):
- def run(self):
- self.run_command("autoconf")
- self.run_command("build_openssl")
-
- # Non-standard extension build specification: we need to force
- # whatever build options our top-level ./configure selected, and we
- # have to specify our libraries as extra_link_args because they may be
- # complete pathnames to .a files elsewhere in the build tree. Most of
- # this insanity is to kludge around pre-existing OpenSSL libraries
- # that would screw up our build without these gymnastics.
-
- # Not sure yet, but if we use autoconf to update or override
- # options to build_ext, we might need to reinitialize here,
- # something like:
- #
- #self = self.reinitialize_command(self)
- #self.ensure_finalized()
-
- # Might end up just whacking the one and only Extension object
- # queued up for this build_ext command. Ugly, non-standard, but
- # simple.
-
- # For now just try whacking self.extensions and see what happens
-
- assert self.extensions and len(self.extensions) == 1
- ext = self.extensions[0]
- ext.extra_compile_args = ac.CFLAGS
- ext.extra_link_args = ac.LDFLAGS + ac.LIBS
-
- return _build_ext.run(self)
-
-# The following hack uses "svn ls -R" to generate the manifest.
-# Haven't decided yet whether that's a good idea or not, commented out
-# of cmdclass for now.
-
-class sdist(_sdist):
- def add_defaults(self):
- try:
- self.filelist.extend(subprocess.check_output(("svn", "ls", "-R")).splitlines())
- except CalledProcessError:
- return _sdist.add_default(self)
-
-# Be careful constructing data_files, empty file lists here appear to
-# confuse setup into putting dangerous nonsense into the list of
-# installed files.
-#
-# bdist_rpm seems to get confused by relative names for scripts, so we
-# have to prefix source names here with the build directory name.
-
-# We handle these as data files instead of scripts because
-# install_scripts isn't clever enough to let us choose the
-# installation directory. We need to construct these files anyway, so
-# that's not a big deal.
-#
-# At present we build these in rpkid/Makefile, but we need to change that
-# to build these here in a new (not yet written) distutils command.
-
-daemon_scripts = ["rpkid/rpki-sql-backup",
- "rpkid/rpki-sql-setup",
- "rpkid/rpki-start-servers",
- "rpkid/irbe_cli",
- "rpkid/irdbd",
- "rpkid/pubd",
- "rpkid/rootd",
- "rpkid/rpkic",
- "rpkid/rpkid"]
-
-django_scripts = ["rpkid/portal-gui/scripts/rpkigui-rcynic",
- "rpkid/portal-gui/scripts/rpkigui-import-routes",
- "rpkid/portal-gui/scripts/rpkigui-check-expired",
- #"rpkid/portal-gui/scripts/rpki-manage",
- ]
-
-# rpkid/Makefile.in stuff not handled yet:
-# portal-gui/settings.py
-# portal-gui/scripts/rpki-manage
-
-# Not sure these really all should be in sbin, the Django stuff looks
-# more libexec to me. Preserve existing locations for now.
-
-sbin_scripts = daemon_scripts + django_scripts
-
-libexec_scripts = []
-
-daemon_script_template = '''\
-#!%(ac_PYTHON)s
-# Automatically constructed script header
-
-# Set location of global rpki.conf file
-if __name__ == "__main__":
- import rpki.config
- rpki.config.default_dirname = "%(ac_sysconfdir)s"
-
-# Original script starts here
-
-'''
-
-django_script_template = '''\
-#!%(ac_PYTHON)s
-# Automatically constructed script header
-
-import sys, os
-# sys.path[0] is the cwd of the script being executed, so we add the
-# path to the settings.py file after it
-sys.path.insert(1, '%(ac_sysconfdir)s/rpki')
-os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
-
-# Original script starts here
-
-'''
-
-class build_data(Command):
-
- description = 'build various constructed "data" files'
-
- # Most of these are really scripts, but install_scripts has no
- # provision for installing in different directories, and we do have
- # some real data files as well, so it's easiest just to handle all
- # of that here.
-
- user_options = []
-
- def initialize_options(self):
- pass
-
- def finalize_options(self):
- pass
-
- def run(self):
- self.run_command("autoconf")
- for fn in daemon_scripts:
- self.build_script(fn, daemon_script_template,
- ac_PYTHON = ac.PYTHON,
- ac_sysconfdir = ac.sysconfdir)
- for fn in django_scripts:
- self.build_script(fn, django_script_template,
- ac_PYTHON = ac.PYTHON,
- ac_sysconfdir = ac.sysconfdir)
-
- def build_script(self, fn, template, **kwargs):
- pyfn = fn + ".py"
- mode = stat.S_IMODE(os.stat(pyfn).st_mode) | 0555
- f = open(fn, "w")
- f.write(template % kwargs)
- f.write(open(pyfn, "r").read())
- f.close()
- os.chmod(fn, mode)
-
-class install_data(_install_data):
- def run(self):
- self.run_command("build_data")
- return _install_data.run(self)
-
-# Have to be careful with configuration that comes from autoconf.
-
-data_files = []
-
-if ac is not None:
-
- if ac.sbindir and sbin_scripts:
- data_files.append((ac.sbindir,
- ["%s/%s" % (ac.abs_builddir, f) for f in sbin_scripts]))
- if ac.libexecdir and libexec_scripts:
- data_files.append((ac.libexecdir,
- ["%s/%s" % (ac.abs_builddir, f) for f in libexec_scripts]))
-
-# Then there's all the stuff from rpkid/portal-gui/Makefile.in which
-# also needs to go into data_files.
-
-if not data_files:
- data_files = None
-
-setup(name = "rpkitoolkit",
- version = "1.0",
- description = "RPKI Toolkit",
- license = "BSD",
- url = "http://www.rpki.net/",
- cmdclass = {"autoconf" : autoconf,
- "build_ext" : build_ext,
- "build_data" : build_data,
- "build_openssl" : build_openssl,
- "install_data" : install_data,
- # "sdist" : sdist,
- },
- package_dir = {"" : "rpkid"},
- packages = ["rpki", "rpki.POW", "rpki.irdb",
- "rpki.gui", "rpki.gui.app", "rpki.gui.cacheview",
- "rpki.gui.api", "rpki.gui.routeview"],
- ext_modules = [Extension("rpki.POW._POW", ["rpkid/ext/POW.c"])],
- package_data = {"rpki.gui.app" : ["migrations/*.py",
- "static/*/*",
- "templates/*.html",
- "templates/*/*.html",
- "templatetags/*.py"],
- "rpki.gui.cacheview" : ["templates/*/*.html"] },
- data_files = data_files)