# 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.

FROM centos:centos6.6
MAINTAINER Trafodion Community <dev@trafodion.incubator.apache.org>

LABEL Vendor="Apache Trafodion (incubating)"
LABEL version=unstable

# download and install environment dependencies
RUN	yum install -y epel-release alsa-lib-devel ant ant-nodeps boost-devel cmake \
	     device-mapper-multipath dhcp flex gcc-c++ gd git glibc-devel \
       glibc-devel.i686 graphviz-perl gzip java-1.7.0-openjdk-devel \
  		 apr-devel apr-util-devel \
       libX11-devel libXau-devel libaio-devel \
       libcurl-devel libibcm.i686 libibumad-devel libibumad-devel.i686 \
       libiodbc libiodbc-devel librdmacm-devel librdmacm-devel.i686 \
       libxml2-devel lua-devel lzo-minilzo \
       net-snmp-devel net-snmp-perl openldap-clients openldap-devel \
       openldap-devel.i686 openmotif openssl-devel openssl-devel.i686 \
       openssl-static perl-Config-IniFiles perl-Config-Tiny \
       perl-DBD-SQLite perl-Expect perl-IO-Tty perl-Math-Calc-Units \
       perl-Params-Validate perl-Parse-RecDescent perl-TermReadKey \
       perl-Time-HiRes protobuf-compiler protobuf-devel \
       readline-devel saslwrapper sqlite-devel \
       unixODBC unixODBC-devel uuid-perl wget xerces-c-devel xinetd \
  && yum -y erase pdsh \
	&& yum clean all

# set environment
ENV	JAVA_HOME /usr/lib/jvm/java-1.7.0-openjdk.x86_64
ENV PATH $PATH:$JAVA_HOME/bin
