[OpenMadrigal-developers] Some patches to Madrigal system
Christian Häggström
c00chm at cs.umu.se
Tue Jul 1 04:17:19 EDT 2003
Hi all people on this list,
First I would like to thank Bill for the answers and explanation
of why python is included.
I have build the Madrigal system for www.eiscat.com, and here follows
all changes I have made to the code. The intention is that these fixes
should be part of the next release, if they look fine in your eyes.
==============================
A problem with the CVS directory lying in the directories copied:
diff -u -r1.13 configureHtml
--- configureHtml 8 Aug 2002 12:36:47 -0000 1.13
+++ configureHtml 1 Jul 2003 07:16:17 -0000
@@ -121,8 +121,8 @@
puts "Copying doc/*.gif to $madserverdocabs"
eval file copy -force [glob doc/*.gif] $madserverdocabs
-puts "Copying doc/icons/* to $madserverdocabs/icons"
-eval file copy -force [glob icons/*] [file join $madserverdocabs icons]
+puts "Copying icons/* to $madserverdocabs/icons"
+eval file copy -force [glob icons/*.*] [file join $madserverdocabs icons]
puts "Copying doc/madpyDoc to $madserverdocabs"
exec cp -r doc/madpyDoc $madserverdocabs
==============================
The infinite symbolic link MADROOT/experiments/experiments -> ../experiments
is avoided with this patch chunk:
@@ -134,5 +134,4 @@
exec chmod 777 $madserverdocabs/tempReports
puts "Making link to experiments directory in $madserverdocabs"
-catch { exec ln -s [file join $madroot experiments] \
- [file join $madserverdocabs experiments]}
+catch { exec ln -s [file join $madroot experiments] $madserverdocabs }
==============================
These changes made it possible for me to compile it with a f90 compiler
for the Solaris build. The fortran libraries are now specified in the
configuration file instead.
The GNU build, however, succeed without changes.
diff -u -r1.7 configureMake
--- configureMake 4 Feb 2003 16:42:13 -0000 1.7
+++ configureMake 1 Jul 2003 07:16:17 -0000
@@ -19,6 +19,7 @@
set found "false"
# set default value for FORTLIBSOLARIS
set FORTLIBsolaris "FORTLIB = /usr/local/lib"
+set FORTLIBSsolaris "FORTLIBS = -lF77 -lM77 -lsunmath"
while {[gets $fc line] >= 0} {
if {[string range $line 0 8] == "MADROOT ="} {
set madrootval [string range $line 9 end]
@@ -52,6 +53,9 @@
set i1 [string first "/" $line]
set FORTLIBsolaris "FORTLIB = [string range $line $i1 end]"
}
+ if {[string range $line 0 16] == "FORTLIBSSOLARIS ="} {
+ set FORTLIBSsolaris "FORTLIBS = [string range $line 17 end]"
+ }
if {[string range $line 0 10] == "TCLLIBDIR ="} {
set i1 [string first "/" $line]
set TCLLIBDIR "TCLLIBDIR = [string range $line $i1 end]"
@@ -111,6 +115,7 @@
[string match "CC =*" $line] == 1 ||
[string match "FC =*" $line] == 1 ||
[string match "FORTLIB =*" $line] == 1 ||
+ [string match "FORTLIBS =*" $line] == 1 ||
[string match "TCLLIBDIR =*" $line] == 1 ||
[string match "TKLIBDIR =*" $line] == 1 ||
[string match "TCLLIB =*" $line] == 1 ||
@@ -173,6 +178,15 @@
} elseif {[string match "FORTLIB =*" $line] == 1} {
if {[string match "*solaris*" $f] == 1} {
puts $fpn $FORTLIBsolaris
+ } elseif {[string match "*gnu*" $f] == 1} {
+ puts $fpn $FCgnu
+ } else {
+ puts "Error processing $f - neither solaris .nor. Gnu"
+ }
+
+ } elseif {[string match "FORTLIBS =*" $line] == 1} {
+ if {[string match "*solaris*" $f] == 1} {
+ puts $fpn $FORTLIBSsolaris
} elseif {[string match "*gnu*" $f] == 1} {
puts $fpn $FCgnu
} else {
diff -u -r1.9 madrigal.cfg.template
--- madrigal.cfg.template 4 Feb 2003 16:51:34 -0000 1.9
+++ madrigal.cfg.template 1 Jul 2003 07:16:17 -0000
@@ -8,6 +8,7 @@
FCSOLARIS = /opt/local/SUNWspro/bin/f77
# The location of the Fortan libraries F77, M77, and sunmath
FORTLIBSOLARIS = /opt/local/SUNWspro/lib
+FORTLIBSSOLARIS = -lF77 -lM77 -lsunmath
# These must be changed if madrigal will be installed using
# Gnu compilers.
diff -u -r1.18 Makefile.solaris
--- source/madc/madrec/Makefile.solaris 4 Apr 2003 17:39:34 -0000 1.18
+++ source/madc/madrec/Makefile.solaris 1 Jul 2003 07:16:26 -0000
BINDIR = $(MADROOT)/bin/solaris
# Solaris Fortran library directory (where libF77, etc is)
-FORTLIB = /usr/lib
+FORTLIB = /opt/SUNWspro/lib
+
+FORTLIBS = -lfsu -lsunmath
# ----------------------------------------------------------------------
# End of site-dependent definitions
@@ -47,7 +49,7 @@
# ----------------------------------------------------------------------
LDLIBS = -L$(LIBDIR) -lmadrec -lnsl -lgeo \
- -L$(FORTLIB) -lF77 -lM77 -lsunmath -lm
+ -L$(FORTLIB) $(FORTLIBS) -lm
# ----------------------------------------------------------------------
# C compiler options
diff -u -r1.3 Makefile.solaris
--- source/madc/madtcl/Makefile.solaris 4 Feb 2003 16:48:37 -0000 1.3
+++ source/madc/madtcl/Makefile.solaris 1 Jul 2003 07:16:27 -0000
@@ -24,28 +24,29 @@
BINDIR = $(MADROOT)/bin/solaris
# Solaris Fortran library directory (where libF77, etc is)
-FORTLIB = /usr/lib
+FORTLIB = /opt/SUNWspro/lib
+FORTLIBS = -lfsu -lsunmath
# Tcl library directory
-TCLLIBDIR = /opt/tcl/src/tcl8.0/unix/lib
+TCLLIBDIR = /usr/local/lib
# Tk library directory
-TKLIBDIR = /opt/tcl/src/tk8.0/unix/lib/
+TKLIBDIR = /usr/local/lib
# Tcl library
-TCLLIB = tcl8.0
+TCLLIB = tcl8.4
# Tk library
-TKLIB = tk8.0
+TKLIB = tk8.4
# Tcl include directory
-TCLINCLUDE = /opt/tcl/src/tcl8.0/generic
+TCLINCLUDE = /usr/local/include
# Tk include directory
-TKINCLUDE = /opt/tcl/src/tk8.0/generic
+TKINCLUDE = /usr/local/include
# Tcl interpreter
-TCLSH = /opt/tcl/src/tcl8.0/unix/bin/tclsh8.0
+TCLSH = /usr/local/bin/tclsh
# ----------------------------------------------------------------------
# Print Command
@@ -66,12 +67,12 @@
LDLIBSTCL = -L$(LIBDIR) -lmadrec \
-L$(TCLLIBDIR) -l$(TCLLIB) \
-ldl -lsocket -lm -lnsl -lgeo \
- -L$(FORTLIB) -lF77 -lM77 -lsunmath
+ -L$(FORTLIB) $(FORTLIBS)
LDLIBSTK = -L$(LIBDIR) -lmadrec \
-L$(TKLIBDIR) -l$(TKLIB) -L$(TCLLIBDIR) -l$(TCLLIB) \
-L/usr/openwin/lib -lX11 -ldl -lsocket -lm -lnsl -lgeo \
- -L$(FORTLIB) -lF77 -lM77 -lsunmath
+ -L$(FORTLIB) $(FORTLIBS)
# ----------------------------------------------------------------------
# C compiler options
diff -u -r1.3 Makefile.solaris
--- source/madmatlab/Makefile.solaris 27 Jun 2003 14:56:28 -0000 1.3
+++ source/madmatlab/Makefile.solaris 1 Jul 2003 07:16:28 -0000
@@ -23,7 +23,8 @@
BINDIR = $(MADROOT)/bin/solaris
# Solaris Fortran library directory (where libF77, etc is)
-FORTLIB = /opt/local/SUNWspro/lib
+FORTLIB = /opt/SUNWspro/lib
+FORTLIBS = -lfsu -lsunmath
# ----------------------------------------------------------------------
# End of site-dependent definitions
@@ -46,7 +47,7 @@
# ----------------------------------------------------------------------
LDLIBS = -L$(LIBDIR) -lmadrec -lnsl -lgeo \
- -L$(FORTLIB) -lF77 -lM77 -lsunmath -lm
+ -L$(FORTLIB) $(FORTLIBS) -lm
# ----------------------------------------------------------------------
diff -u -r1.11 setup.py
--- source/madpy/setup.py 24 Feb 2003 21:04:46 -0000 1.11
+++ source/madpy/setup.py 1 Jul 2003 07:16:28 -0000
@@ -49,7 +49,7 @@
metadataOrgFile = open('madrigal/metadata_original.py', 'r')
# read file into string
- metadataStr = StringIO.StringIO(metadataOrgFile.read()).getvalue()
+ metadataStr = metadataOrgFile.read()
# substitute all values - order from longest to shortest for MADSERVER
metadataStr = string.replace(metadataStr, 'MADSERVERROOT', parser.get("madrigal", 'MADSERVERROOT'))
@@ -73,6 +73,10 @@
fortLibStr = parser.get("madrigal", 'FORTLIBSOLARIS')
else:
fortLibStr = '/usr/lib'
+ if parser.has_option("madrigal", 'FORTLIBSSOLARIS'):
+ fortLibsStr = parser.get("madrigal", 'FORTLIBSSOLARIS')
+ else:
+ fortLibsStr = '-lF77 -lM77 -lsunmath'
# substitute MAXGLOBALQUERIES only if it exists, otherwise set to blank
if parser.has_option("madrigal", 'MAXGLOBALQUERIES'):
@@ -89,10 +93,10 @@
# close madrigal.cfg
madConfFile.close()
- return (fortLibStr)
+ return (fortLibStr, fortLibsStr)
# call the function above
-fortLibStr = createMetadataPyFile()
+fortLibStr, fortLibsStr = createMetadataPyFile()
# determine whether setup is running on linux. If so, setup needs to be called
# with extra_link_args = ['-Xlinker -R' + os.environ['MADROOT'] +"/lib"]
@@ -101,6 +105,8 @@
if string.find(sys.platform, 'linux') == -1:
+ fortLibs = [ x.replace('-l','') for x in fortLibsStr.split() ]
+
# solaris (or non-linux)
setup(name="madpy",
version="1.0",
@@ -114,7 +120,7 @@
include_dirs=[os.environ['MADROOT'] + "/source/madc/include"],
library_dirs =[os.environ['MADROOT'] +"/lib", fortLibStr],
runtime_library_dirs =[os.environ['MADROOT'] +"/lib", fortLibStr],
- libraries=["madrec", "geo","F77","M77","sunmath"]
+ libraries=["madrec", "geo"]+fortLibs
)
]
==============================
make clean now removes the programs too.
diff -u -r1.18 Makefile.gnu
--- source/madc/madrec/Makefile.gnu 4 Apr 2003 17:39:34 -0000 1.18
+++ source/madc/madrec/Makefile.gnu 1 Jul 2003 07:16:26 -0000
@@ -76,13 +76,14 @@
# Libraries and Programs
# ----------------------------------------------------------------------
-all: libmadrec.a libmadrec.so.1 testMadrec testMadrecs \
+BIN = testMadrec testMadrecs \
testMadrecSequentialFileIO testMadrecRandomFileIO \
testCedarIO testCedarIOBoundaries testCedarMemIO \
testMadrecMemIO testMadrecRand translateCedarFile testCreateRecord \
compareFiles testParmArray testGeometry testMetadata fileDump repairHC \
splitCbfFile testMaddata simpleMaddata simpleNonfileMaddata \
- testMaddataErrors verify
+ testMaddataErrors
+all: libmadrec.a libmadrec.so.1 $(BIN) verify
libmadrec.a: $(OBJECTS)
ar rv $@ $(OBJECTS)
==============================
A typo.
diff -u -r1.1 README
--- source/madc/madrec/README 22 Mar 2002 16:39:39 -0000 1.1
+++ source/madc/madrec/README 1 Jul 2003 07:16:26 -0000
@@ -13,5 +13,5 @@
4. runMadrecDiagnostics - This executes a series tests on all supported
Cedar file types.
-5. Make -f Makefile purify (If on a system that supports purify). Then
+5. Make -f Makefile.purify (If on a system that supports purify). Then
execute runMadrecDiagnostics.
==============================
Prevents compiler warnings about undeclared strtok_r
diff -u -r1.16 maddata.c
--- source/madc/madrec/maddata.c 15 Apr 2003 13:20:53 -0000 1.16
+++ source/madc/madrec/maddata.c 1 Jul 2003 07:16:27 -0000
@@ -4,6 +4,7 @@
Written 11/2002 by B. Rideout
*/
+#define _REENTRANT
#include <maddata.h>
#include <madDeriveEngine.h>
diff -u -r1.6 maddataF77.c
--- source/madc/madrec/maddataF77.c 29 Apr 2003 18:19:41 -0000 1.6
+++ source/madc/madrec/maddataF77.c 1 Jul 2003 07:16:27 -0000
@@ -208,6 +208,7 @@
#include <stdlib.h>
#include <stdio.h>
+#define _REENTRANT
#include <string.h>
#include <maddata.h>
==============================
Prevents segmentation fault when open fails.
diff -u -r1.10 testMadrec.c
--- source/madc/madrec/testMadrec.c 26 Dec 2002 16:15:31 -0000 1.10
+++ source/madc/madrec/testMadrec.c 1 Jul 2003 07:16:27 -0000
@@ -58,6 +58,8 @@
/* Connect the madrec object to a madrigal file */
madrecOpen(madrecp, 30, madfile);
printf("open: %s\n", madrecGetError(madrecp));
+ if (strcmp(madrecGetError(madrecp), "No errors"))
+ return -1;
/* specify a record by date and time */
key = getKey(1998, 1, 20, 15, 0, 0);
==============================
Move all javascript to an own "file". This makes the HTML code valid,
as embedded JavaScript should not contain closing tags. An alternative
solution would be writeing like document.write("<\/HTML>").
This solution saves some bandwidth for non-javascript browsers too.
Index: source/madpy/scripts/cgi/madSearch
===================================================================
RCS file: /opt/local/MillstoneCVS/OpenMadrigal/madroot/source/madpy/scripts/cgi/madSearch,v
retrieving revision 1.10
diff -u -r1.10 madSearch
--- source/madpy/scripts/cgi/madSearch 25 Jun 2003 20:14:46 -0000 1.10
+++ source/madpy/scripts/cgi/madSearch 1 Jul 2003 07:16:28 -0000
@@ -167,6 +167,11 @@
# process requested login or password change
self.success = ''
+ # output javascript if told so
+ if os.environ.get('QUERY_STRING') == 'js':
+ self.outputJavaScript()
+ sys.exit()
+
# output html
#print header
@@ -343,13 +348,25 @@
print '<head>'
print '\t<title>' + title + '</title>'
print '\t<style type="text/css">.lb {background: #eeeeff}</style>'
- self.printJavaScript()
+ if 0: # this is not standard compilant as the javascript block
+ # contains embedded </
+ print '<script language="JavaScript" type="text/javascript"><!--'
+ self.printJavaScript()
+ print '// -->\n</script>'
+ else:
+ print '<script language="JavaScript" type="text/javascript"',
+ print 'src="'+self.__scriptName+'?js"></script>'
print '</head>'
+ def outputJavaScript(self):
+
+ print "Content-Type: application/x-javascript"
+ print # blank line
+ self.scriptHeaders = 1
+ self.printJavaScript()
def printJavaScript(self):
- print '<script language = "JavaScript">'
# data verification functions
self.printPopup()
self.printTrim()
@@ -372,7 +389,6 @@
self.printGetDesc()
self.printMLookup()
self.printCParamDiction()
- print '</script>'
def printPopup(self):
The removed line here closed two tags that was never opened.
@@ -1220,7 +1236,6 @@
self.printFreeForm3()
self.printFreeForm4()
self.printFreeForm5()
- print '\t\t</table></td>'
def printFreeForm1(self):
==============================
More incorrect HTML: a <td> apperared without surrounding <table></table>
diff -u -r1.7 getMadfile.cgi
--- source/madtcl/cgi/getMadfile.cgi 24 Oct 2002 15:41:36 -0000 1.7
+++ source/madtcl/cgi/getMadfile.cgi 1 Jul 2003 07:16:28 -0000
@@ -54,7 +54,9 @@
cgi_p "<INPUT TYPE=\"hidden\" NAME=\"fileName\" VALUE=\"$fileName\" SIZE=15>"
cgi_p "<H3>Translate [file tail $fileName] to the following CEDAR file type:</H3>"
- cgi_table_data valign=top {
+ cgi_center {
+ cgi_table {
+ cgi_table_data valign=top {
cgi_radio_button "fileType=0" checked
cgi_put "Madrigal"
cgi_br
@@ -71,7 +73,7 @@
cgi_put "NCAR ASCII"
cgi_br
}
- cgi_center {
+ }
cgi_submit_button "=Download File"
}
cgi_p "</FORM>"
==============================
Additionally, I suggest removing bin/ and lib/ directories from CVS as
they only contains empty README files.
Tell me what you think about this! I will probably spam more patches on
this list as I proceed with adding some experiment data.
--
Christian Häggström | student computer science
| maintainer of www.eiscat.com
More information about the OpenMadrigal-developers
mailing list