aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ac_rpki.py.in4
-rw-r--r--setup.py130
2 files changed, 112 insertions, 22 deletions
diff --git a/ac_rpki.py.in b/ac_rpki.py.in
index 94c57e6f..4cf912dc 100644
--- a/ac_rpki.py.in
+++ b/ac_rpki.py.in
@@ -74,11 +74,13 @@ ac._configure_lists(
ac._configure_strings(
prefix = '''@prefix@''',
sbindir = '''@sbindir@''',
+ sysconfdir = '''@sysconfdir@''',
abs_top_builddir = '''@abs_top_builddir@''',
abs_top_srcdir = '''@abs_top_srcdir@''',
abs_builddir = '''@abs_builddir@''',
exec_prefix = '''@exec_prefix@''',
- libexecdir = '''@libexecdir@''')
+ libexecdir = '''@libexecdir@''',
+ PYTHON = '''@PYTHON@''')
ac._fixup()
diff --git a/setup.py b/setup.py
index 1203381b..756a0dd9 100644
--- a/setup.py
+++ b/setup.py
@@ -11,7 +11,7 @@
# $Id$
#
-# Copyright (C) 2011-2012 Internet Systems Consortium ("ISC")
+# 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
@@ -26,9 +26,11 @@
# 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:
@@ -130,34 +132,118 @@ class sdist(_sdist):
# 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.
-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",
- "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"]
-
-aux_scripts = []
+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"]
-data_files = []
+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 scripts:
+ if ac.sbindir and sbin_scripts:
data_files.append((ac.sbindir,
- ["%s/%s" % (ac.abs_builddir, f) for f in scripts]))
- if ac.libexecdir and aux_scripts:
+ ["%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 aux_scripts]))
+ ["%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
@@ -168,7 +254,9 @@ setup(name = "rpkitoolkit",
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"},