|
|
#!/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"]
|
|
|
)
|
|
|
]
|
|
|
|
|
|
)
|
|
|
|