#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    http:#www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

[external]

zlibURL = http://oodt.jpl.nasa.gov/dist/easy-rcmet/zlib-1.2.7.tar.gz
zlibMD5 = 60df6a37c56e7c1366cca812414f7b85

curlURL = http://zipper.jpl.nasa.gov/dist/easy-rcmet/curl-7.29.0.tar.gz
curlMD5 = 4f57d3b4a3963038bd5e04dbff385390

szipURL = http://oodt.jpl.nasa.gov/dist/easy-rcmet/szip-2.1.tar.gz
szipMD5 = 902f831bcefb69c6b635374424acbead

jpegURL = http://oodt.jpl.nasa.gov/dist/easy-rcmet/jpegsrc.v8.tar.gz
jpegMD5 = 9c6b3514e922ad42298706163bb5e2d7

libpngURL = http://oodt.jpl.nasa.gov/dist/easy-rcmet/libpng-1.5.13.tar.gz
libpngMD5 = 9c5a584d4eb5fe40d0f1bc2090112c65

freetypeURL = http://oodt.jpl.nasa.gov/dist/easy-rcmet/freetype-2.4.11.tar.gz
freetypeMD5 = 5af8234cf36f64dc2b97f44f89325117

numpyURL = http://oodt.jpl.nasa.gov/dist/easy-rcmet/numpy.1.6.2.tar.gz
numpyMD5 = 95ed6c9dcc94af1fc1642ea2a33c1bba

scipyURL = http://oodt.jpl.nasa.gov/dist/easy-rcmet/scipy-0.11.0.tar.gz
scipyMD5 = 842c81d35fd63579c41a8ca21a2419b9

# matplotlib has an issue with compiling on OS X with 1.1.0. Once, 1.1.1 is released this will be
#  fixed. For now, stick with the latest pull from github and it should be fine.
#matplotlibURL = https://github.com/downloads/matplotlib/matplotlib/matplotlib-1.1.0.tar.gz
#matplotlibMD5 = 57a627f30b3b27821f808659889514c2
#
# This was pulled from https://github.como/matplotlib/matplotlib on 17 Jan 2013 at 0746
# and mirrored to avoid changes breaking the install.
# SHA: a6af0b22769da3d34d43a77457f250bb7cc9a5f1
matplotlibURL = http://oodt.jpl.nasa.gov/dist/easy-rcmet/matplotlib.zip
matplotlibMD5 = e809fa57efb9c3782e1bd4e019dd38fc

hdf5URL = http://oodt.jpl.nasa.gov/dist/easy-rcmet/hdf5-1.8.10-patch1.tar.gz
hdf5MD5 = 2147a289fb33c887464ad2b6c5a8ae4c

netcdfURL = http://oodt.jpl.nasa.gov/dist/easy-rcmet/netcdf-4.2.1.1.tar.gz
netcdfMD5 = 5eebcf19e6ac78a61c73464713cbfafc

netCDF4-pythonURL = http://zipper.jpl.nasa.gov/dist/easy-rcmet/netCDF4-1.0.2.tar.gz
netCDF4-pythonMD5 = 22bfe58aefa177f7ab34dd12e70c7679

nclBinURL_OSX32   = http://zipper.jpl.nasa.gov/dist/easy-rcmet/ncl_ncarg-6.0.0.MacOS_10.5_i386_gcc401.tar.gz
nclBinURL_OSX64   = http://zipper.jpl.nasa.gov/dist/easy-rcmet/ncl_ncarg-6.0.0.MacOS_10.6_64bit_gcc421.tar.gz
nclBinURL_Linux32 = http://zipper.jpl.nasa.gov/dist/easy-rcmet/ncl_ncarg-6.0.0.Linux_Debian_i686_gcc445.tar.gz
nclBinURL_Linux64 = http://zipper.jpl.nasa.gov/dist/easy-rcmet/ncl_ncarg-6.0.0.Linux_Debian_x86_64_gcc445.tar.gz

pynioURL = http://oodt.jpl.nasa.gov/dist/easy-rcmet/PyNIO-1.4.1.tar.gz
pynioMD5 = eec7b6b7ed960de253632d0636d0cc2d

pynioBinURL_OSX32 = http://zipper.jpl.nasa.gov/dist/easy-rcmet/PyNIO-1.4.1.macos-10.5-i386-py271-numpy160.tar.gz
pynioBinURL_OSX64 = http://zipper.jpl.nasa.gov/dist/easy-rcmet/PyNIO-1.4.1.macos-10.6-x86_64-py271-numpy160.tar.gz
pynioBinURL_Linux32 = http://zipper.jpl.nasa.gov/dist/easy-rcmet/PyNIO-1.4.1.linux-debian-i686-gcc445-py267-numpy160.tar.gz
pynioBinURL_Linux64 = http://zipper.jpl.nasa.gov/dist/easy-rcmet/PyNIO-1.4.1.linux-debian-x86_64-gcc445-py271-numpy160.tar.gz

pynglBinURL_OSX32   = http://zipper.jpl.nasa.gov/dist/easy-rcmet/PyNGL-1.4.0.macos-10.5-i386-py271-numpy160.tar.gz
pynglBinURL_OSX64   = http://zipper.jpl.nasa.gov/dist/easy-rcmet/PyNGL-1.4.0.macos-10.6-x86_64-py271-numpy160.tar.gz
pynglBinURL_Linux32 = http://zipper.jpl.nasa.gov/dist/easy-rcmet/PyNGL-1.4.0.linux-debian-i686-gcc445-py271-numpy160.tar.gz
pynglBinURL_Linux64 = http://zipper.jpl.nasa.gov/dist/easy-rcmet/PyNGL-1.4.0.linux-debian-x86_64-gcc445-py271-numpy160.tar.gz


