1# Licensed to the Apache Software Foundation (ASF) under one
2# or more contributor license agreements.  See the NOTICE file
3# distributed with this work for additional information
4# regarding copyright ownership.  The ASF licenses this file
5# to you under the Apache License, Version 2.0 (the
6# "License"); you may not use this file except in compliance
7# with the License.  You may obtain a copy of the License at
8#
9#   http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing,
12# software distributed under the License is distributed on an
13# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14# KIND, either express or implied.  See the License for the
15# specific language governing permissions and limitations
16# under the License.
17
18ARG arch=amd64
19FROM ${arch}/ubuntu:14.04
20
21SHELL ["/bin/bash", "-o", "pipefail", "-c"]
22
23ENV DEBIAN_FRONTEND noninteractive
24RUN apt-get update -y -q && \
25    apt-get install -y -q --no-install-recommends wget software-properties-common && \
26    apt-get install -y -q --no-install-recommends \
27        autoconf \
28        ca-certificates \
29        ccache \
30        g++ \
31        gcc \
32        gdb \
33        git \
34        libbz2-dev \
35        libgoogle-glog-dev \
36        libsnappy-dev \
37        libssl-dev \
38        make \
39        ninja-build \
40        pkg-config \
41        protobuf-compiler \
42        python-pip \
43        tzdata && \
44    apt-get clean && \
45    python -m pip install --upgrade pip && \
46    pip install --upgrade cmake && \
47    rm -rf /var/lib/apt/lists/*
48
49# - Flight is deactivated because the OpenSSL in Ubuntu 14.04 is too old
50# - Disabling Gandiva since LLVM 7 require gcc >= 4.9 toolchain
51# - ORC has compilation warnings that cause errors on gcc 4.8
52# - c-ares in Trusty isn't recognized by gRPC build system
53# - libprotobuf-dev / libprotoc-dev in Trusty too old for gRPC
54# - libbrotli-dev unavailable
55# - libgflags-dev is too old
56# - libre2-dev unavailable
57# - liblz4-dev is too old
58ENV ARROW_BUILD_TESTS=ON \
59    ARROW_DEPENDENCY_SOURCE=SYSTEM \
60    ARROW_DATASET=ON \
61    ARROW_FLIGHT=OFF \
62    ARROW_GANDIVA_JAVA=OFF \
63    ARROW_GANDIVA=OFF \
64    ARROW_HOME=/usr/local \
65    ARROW_ORC=OFF \
66    ARROW_PARQUET=ON \
67    ARROW_USE_CCACHE=ON \
68    ARROW_WITH_BROTLI=ON \
69    ARROW_WITH_BZ2=ON \
70    ARROW_WITH_LZ4=ON \
71    ARROW_WITH_OPENSSL=OFF \
72    ARROW_WITH_SNAPPY=ON \
73    ARROW_WITH_ZLIB=ON \
74    ARROW_WITH_ZSTD=ON \
75    benchmark_SOURCE=BUNDLED \
76    BOOST_SOURCE=BUNDLED \
77    Brotli_SOURCE=BUNDLED \
78    cares_SOURCE=BUNDLED \
79    CC=gcc \
80    CXX=g++ \
81    gflags_SOURCE=BUNDLED \
82    gRPC_SOURCE=BUNDLED \
83    GTest_SOURCE=BUNDLED \
84    Lz4_SOURCE=BUNDLED \
85    ORC_SOURCE=BUNDLED \
86    PARQUET_BUILD_EXECUTABLES=ON \
87    PARQUET_BUILD_EXAMPLES=ON \
88    PATH=/usr/lib/ccache/:$PATH \
89    Protobuf_SOURCE=BUNDLED \
90    RapidJSON_SOURCE=BUNDLED \
91    RE2_SOURCE=BUNDLED \
92    Thrift_SOURCE=BUNDLED \
93    ZSTD_SOURCE=BUNDLED
94