Giter Club home page Giter Club logo

combined's Introduction

The new Hyrax Project

Under construction

The combined project is similar to the hyrax project in that it contains all the code OPeNDAP has written that is currently in the the production release of the Hyrax Data Server. However, unlike 'hyrax,' this project uses git submodules and a single configure/Makefile to build the code.

Problems

  • When the code is built (make -j9) and then installed (make -j9 install), the BES will be recompiled since the libdap4 headers, just installed into $prefix/include will be seen as new (they are) and this triggers a (re)compile of the whole BES.
  • Running make check is not particularly meaningful since check in the OLFS requires a running server and will run end-to-end tests (but doesn't know how to start the server). The check target in libdap and BES is self contained
  • The hyrax-dependencies project uses a completely hand built Makefile and thus lacks some/many/most of the automake targets. Running 'make some target' will result in an error. The only supported standard targets are: all, dist, install, uninstall, clean and check. There are some unique targets too.

What's here

This meta-project contains the libdap4, bes, hyrax-dependencies and olfs repositories along with autotools builds scripts (configure, make, etc.) to build them. You can work within one of the repos as if it was independently cloned as well as building the whole server.

OLFS

This software implements the web API of the Data Access Protocol (DAP) and other web interfaces for Hyrax. Most of the 'web functionality' is here. Written in Java.

libdap4

The DAP2 and 4 implementations. C++

BES

A Unix Daemon that is the data processing engine at the heart of the Hyrax server. C++

hyrax dependencies

There is a GitHub project called hyrax-dependencies that holds all of the odd dependencies that hyrax needs - not the stuff you can get easily from yum. The code included in hyrax-dependencies includes, new(er) versins of HDF5, netCDF, ..., as well as more unusual things like gridfields.

Details

Linux/OSX

You need a Linux/OSX/Unix computer that can compile C, C++ and Java. Most of the requirements are fairly plain, with the exception that you'll need a recent copy of bison and flex. Since CentOS/RedHat comes with 'yum' and the yum command syntax is fairly concise, I'll use it as shorthand for the packages you need (with the advantage that some users can cut and paste in a plain machine and get the packages installed very quickly):

yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel ant git \
    gcc-c++ flex bison autoconf automake libtool emacs openssl-devel \
    libuuid-devel readline-devel zlib-devel bzip2 bzip2-devel \
    libjpeg-devel libxml2-devel curl-devel libicu-devel

OSX

NB: If you get odd errors during the hyrax-depedencies build, make sure that the OSX command line decloper tools have been installed.

Install Xcode and the command line tools. In addition, you will need to build install newer versions of bison, automake, autoconf, libtool. You will also need ant for the olfs build.

Clone

Use a reccursive clone operation to get all the submodules that are part of this repository:

git clone --recursive --jos=9 https://github.com/opendap/combined

or, if you used a simple git clone already

git submodule update --init --recursive --jobs=9

Configure the build environment

Set up the prefix and PATH environment variables in the shell you're using. Use source spath.sh to do this. This will set the prefix environment variable to pwd/build and add pwd/build/bin to the front of PATH so that libdap, BES and the various modules/handlers for the BES can find the dependencies once they are built.

source spath.sh

Build it

autoreconf --force --include --verbose
configure --prefix=$prefix --with-dependencies=$prefix/deps --enable-developer \
     --with-libdap=`pwd`/libdap4
make -j9
make -j9 install

See the TOMCAT section below if you want a running server (and not just the BES daemon.

Comveniences

I have defined an alias update that will pull and recursively update all the child repos. To use this, run git update in this directory. The alias is defined as:

git config --global alias.update '!git pull && git submodule update --init --recursive

Caveat Emptor

The BES repository has submodules of its own. Currently (Jan 2018) those are the HDF4 and HDF5 handlers and the SQL handler. If you work with those, you must commit, push, et c., from within those directories. Then, make sure to update the BES too, so that the correct commit hashes are recorded in the .gitsubmodules file.

The repository URLs all use the HTTPS protocol. On older versions of git, you cannot push commits and will need to switch the repos to use ssh.

Tomcat

Get the Tomcat distribution from hyrax-dependencies/extra_downloads and unpack it in the build directory. Use make install in the olfs or top level direcotry to install the oepndap.war file (that implements the web interface for Hyrax. You can install tomcat using:

tar -C build -xzf hyrax-dependencies/extra_downloads/apache-tomcat-7.0.57.tar.gz

For a real deployment of Hyrax, using the Tomcat from a RPM or DEB packages is better, but for development, using a local Tomcat will simply testing.

Test

TBD

combined's People

Contributors

jgallagher59701 avatar

Watchers

James Cloos avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.