setup.py
125 lines
| 5.0 KiB
| text/x-python
|
PythonLexer
r0 | #!/usr/bin/env python | |||
# | ||||
# This is a python DistUtils setup file for the | ||||
# Madrigal Python API. | ||||
# | ||||
# This Python module exists as an API to the madrigal | ||||
# database. Much of its functionality comes from | ||||
# the underlying C API layer written by John Holt | ||||
# and Bill Rideout. | ||||
# | ||||
# To build : | ||||
# | ||||
# 1. Be sure $MADROOT is set (at MLH, set to /opt/madrigal) | ||||
# 2. python setup.py build | ||||
# | ||||
# To install : | ||||
# | ||||
# 1. Be sure $MADROOT is set (at MLH, set to /opt/madrigal) | ||||
# 2. python setup.py install | ||||
# | ||||
import os, sys | ||||
import configparser | ||||
import io | ||||
import numpy | ||||
from setuptools import setup, Extension | ||||
# function to edit madrigal/metadata_original.py, substituting in values | ||||
# from madrigal.cfg in order to create metadata.py | ||||
# Also modifies __bgReport_original.py to create __bgReport.py | ||||
def createMetadataPyFile(): | ||||
# get data from madrigal.cfg | ||||
madConfFile = open('../../madrigal.cfg', 'r') | ||||
# create Parser using standard module ConfigParser | ||||
parser = configparser.ConfigParser() | ||||
# read madrigal.cfg into a StringIO with "[madrigal]\n" section heading prepended | ||||
strMadConfFile = io.StringIO("[madrigal]\n" + madConfFile.read()) | ||||
# parse StringIO madrigal.cfg | ||||
parser.read_string(strMadConfFile.getvalue()) | ||||
# open metadata_original.py | ||||
metadataOrgFile = open('madrigal/metadata_original.py', 'r') | ||||
# read file into string | ||||
metadataStr = io.StringIO(metadataOrgFile.read()).getvalue() | ||||
# substitute all values - order from longest to shortest for MADSERVER | ||||
metadataStr = metadataStr.replace('MADSERVERROOT', parser.get("madrigal", 'MADSERVERROOT')) | ||||
metadataStr = metadataStr.replace('MADSERVER', parser.get("madrigal", 'MADSERVER')) | ||||
metadataStr = metadataStr.replace('MADROOT', parser.get("madrigal", 'MADROOT')) | ||||
metadataStr = metadataStr.replace('SITEID', parser.get("madrigal", 'SITEID')) | ||||
metadataStr = metadataStr.replace('HTMLSTYLE', parser.get("madrigal", 'HTMLSTYLE')) | ||||
metadataStr = metadataStr.replace('INDEXHEAD', parser.get("madrigal", 'INDEXHEAD')) | ||||
metadataStr = metadataStr.replace('CONTACT', parser.get("madrigal", 'CONTACT')) | ||||
metadataStr = metadataStr.replace('MAILSERVER', parser.get("madrigal", 'MAILSERVER')) | ||||
# substitute MAXGLOBALQUERIES only if it exists, otherwise set to blank | ||||
if parser.has_option("madrigal", 'MAXGLOBALQUERIES'): | ||||
metadataStr = metadataStr.replace('MAXGLOBALQUERIES', parser.get("madrigal", 'MAXGLOBALQUERIES')) | ||||
else: | ||||
metadataStr = metadataStr.replace('MAXGLOBALQUERIES', '2') | ||||
# substitute MAXTEMPREPORTS only if it exists, otherwise set to blank | ||||
if parser.has_option("madrigal", 'MAXTEMPREPORTS'): | ||||
metadataStr = metadataStr.replace('MAXTEMPREPORTS', parser.get("madrigal", 'MAXTEMPREPORTS')) | ||||
else: | ||||
metadataStr = metadataStr.replace('MAXTEMPREPORTS', '2') | ||||
# write new string to metadata.py | ||||
metadataNewFile = open('madrigal/metadata.py', 'w') | ||||
metadataNewFile.write(metadataStr) | ||||
metadataNewFile.close() | ||||
metadataOrgFile.close() | ||||
# close madrigal.cfg | ||||
madConfFile.close() | ||||
# make sure MADROOT/eggs exists and is writable by all - for django wsgi | ||||
eggsDir = '../../eggs' | ||||
if not os.access(eggsDir, os.R_OK): | ||||
os.mkdir(eggsDir) | ||||
os.chmod(eggsDir, 0o777) | ||||
# call the function above | ||||
createMetadataPyFile() | ||||
setup(name="madrigal", | ||||
version="3.2.4", | ||||
description="Madrigal Python API - now uses python 3", | ||||
author="Bill Rideout", | ||||
author_email="brideout@mit.edu", | ||||
url="http://www.haystack.mit.edu/~brideout/", | ||||
license='MIT', | ||||
py_modules=['madrigal.admin', 'madrigal.cedar', 'madrigal.data', 'madrigal.derivation', | ||||
'madrigal.isprint', 'madrigal.metadata', 'madrigal.openmadrigal', | ||||
'madrigal.ui.madrigalPlot', 'madrigal.ui.userData', 'madrigal.ui.web'], | ||||
ext_modules=[Extension("madrigal/_Madrec", | ||||
["madrigal/_Madrec.c"], | ||||
include_dirs=[os.environ['MADROOT'] + "/source/madc/include", | ||||
os.environ['MADROOT'] + "/source", | ||||
numpy.get_include()], | ||||
library_dirs =[os.environ['MADROOT'] +"/lib"], | ||||
runtime_library_dirs = [os.environ['MADROOT'] + "/lib"], | ||||
libraries=["madrec","geo"] | ||||
), | ||||
Extension("madrigal/_derive", | ||||
["madrigal/_derive.c"], | ||||
include_dirs=[os.environ['MADROOT'] + "/source/madc/include", | ||||
os.environ['MADROOT'] + "/source", | ||||
numpy.get_include()], | ||||
library_dirs =[os.environ['MADROOT'] +"/lib"], | ||||
runtime_library_dirs = [os.environ['MADROOT'] + "/lib"], | ||||
libraries=["madrec","geo"] | ||||
) | ||||
] | ||||
) | ||||