HBASE-18434 Address some alerts raised by lgtm.com
[hbase.git] / dev-support / docker / Dockerfile
blobc654ded6ac5912cb74fdde599695ac9eee1f75ab
2 # Licensed to the Apache Software Foundation (ASF) under one
3 # or more contributor license agreements.  See the NOTICE file
4 # distributed with this work for additional information
5 # regarding copyright ownership.  The ASF licenses this file
6 # to you under the Apache License, Version 2.0 (the
7 # "License"); you may not use this file except in compliance
8 # with the License.  You may obtain a copy of the License at
10 #     http://www.apache.org/licenses/LICENSE-2.0
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
18 # Dockerfile for installing the necessary dependencies for building Hadoop.
19 # See BUILDING.txt.
22 FROM ubuntu:trusty
24 WORKDIR /root
26 ENV DEBIAN_FRONTEND noninteractive
27 ENV DEBCONF_TERSE true
29 ######
30 # Install common dependencies from packages
32 # WARNING: DO NOT PUT JAVA APPS HERE! Otherwise they will install default
33 # Ubuntu Java.  See Java section below!
34 ######
35 RUN apt-get -q update && apt-get -q install --no-install-recommends -y \
36     build-essential \
37     bzip2 \
38     cmake \
39     curl \
40     doxygen \
41     fuse \
42     g++ \
43     gcc \
44     git \
45     gnupg-agent \
46     make \
47     libbz2-dev \
48     libcurl4-openssl-dev \
49     libfuse-dev \
50     libperl-critic-perl \
51     libprotobuf-dev \
52     libprotoc-dev \
53     libsnappy-dev \
54     libssl-dev \
55     libtool \
56     pinentry-curses \
57     pkg-config \
58     protobuf-compiler \
59     protobuf-c-compiler \
60     python \
61     python2.7 \
62     python-pip \
63     rsync \
64     snappy \
65     zlib1g-dev
67 #######
68 # Oracle Java
69 #######
71 RUN echo "dot_style = mega" > "/root/.wgetrc"
72 RUN echo "quiet = on" >> "/root/.wgetrc"
74 RUN apt-get -q update && apt-get -q install --no-install-recommends -y software-properties-common
75 RUN add-apt-repository -y ppa:webupd8team/java
77 # Auto-accept the Oracle JDK license
78 RUN echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections
79 RUN apt-get -q update && apt-get -q install --no-install-recommends -y oracle-java8-installer
81 ####
82 # Apps that require Java
83 ###
84 RUN apt-get -q update && apt-get -q install --no-install-recommends -y \
85     ant \
86     maven
88 # Fixing the Apache commons / Maven dependency problem under Ubuntu:
89 # See http://wiki.apache.org/commons/VfsProblems
90 RUN cd /usr/share/maven/lib && ln -s ../../java/commons-lang.jar .
92 ######
93 # Install findbugs
94 ######
95 RUN mkdir -p /opt/findbugs && \
96     curl -L -s -S \
97          https://sourceforge.net/projects/findbugs/files/findbugs/3.0.1/findbugs-noUpdateChecks-3.0.1.tar.gz/download \
98          -o /opt/findbugs.tar.gz && \
99     tar xzf /opt/findbugs.tar.gz --strip-components 1 -C /opt/findbugs
100 ENV FINDBUGS_HOME /opt/findbugs
102 ####
103 # Install shellcheck
104 ####
105 RUN apt-get -q install -y cabal-install
106 RUN mkdir /root/.cabal
107 RUN echo "remote-repo: hackage.fpcomplete.com:http://hackage.fpcomplete.com/" >> /root/.cabal/config
108 #RUN echo "remote-repo: hackage.haskell.org:http://hackage.haskell.org/" > /root/.cabal/config
109 RUN echo "remote-repo-cache: /root/.cabal/packages" >> /root/.cabal/config
110 RUN cabal update
111 RUN cabal install shellcheck --global
113 ####
114 # Install bats
115 ####
116 RUN add-apt-repository -y ppa:duggan/bats
117 RUN apt-get -q update
118 RUN apt-get -q install --no-install-recommends -y bats
120 ####
121 # Install pylint
122 ####
123 RUN pip install pylint
125 ####
126 # Install dateutil.parser
127 ####
128 RUN pip install python-dateutil
130 ####
131 # Install Ruby 2, based on Yetus 0.4.0 dockerfile
133 RUN echo 'gem: --no-rdoc --no-ri' >> /root/.gemrc
134 RUN apt-get -q install -y ruby2.0
136 # on trusty, the above installs ruby2.0 and ruby (1.9.3) exes
137 # but update-alternatives is broken, so we need to do some work
138 # to make 2.0 actually the default without the system flipping out
140 # See https://bugs.launchpad.net/ubuntu/+source/ruby2.0/+bug/1310292
142 RUN dpkg-divert --add --rename --divert /usr/bin/ruby.divert /usr/bin/ruby
143 RUN dpkg-divert --add --rename --divert /usr/bin/gem.divert /usr/bin/gemrc
144 RUN update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby2.0 1
145 RUN update-alternatives --install /usr/bin/gem gem /usr/bin/gem2.0 1
148 ####
149 # Install rubocop
151 RUN gem install rubocop
153 ####
154 # Install ruby-lint
156 RUN gem install ruby-lint
159 # Avoid out of memory errors in builds
161 ENV MAVEN_OPTS -Xmx3g
164 # Everything past this point is either not needed for testing or breaks Yetus.
165 # So tell Yetus not to read the rest of the file:
166 # YETUS CUT HERE