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
18FROM nvidia/cuda:9.1-devel-ubuntu16.04
19
20# pipefail is enabled for proper error detection in the `wget | apt-key add`
21# step
22SHELL ["/bin/bash", "-o", "pipefail", "-c"]
23
24ENV DEBIAN_FRONTEND=noninteractive
25
26RUN apt-get update -y -q && \
27    apt-get install -y -q --no-install-recommends \
28      wget software-properties-common && \
29      apt-get clean && rm -rf /var/lib/apt/lists*
30
31# Installs C++ toolchain and dependencies
32RUN apt-get update -y -q && \
33    apt-get install -y -q --no-install-recommends \
34      autoconf \
35      ca-certificates \
36      ccache \
37      cmake \
38      g++ \
39      gcc \
40      gdb \
41      git \
42      libboost-filesystem-dev \
43      libboost-regex-dev \
44      libboost-system-dev \
45      libbrotli-dev \
46      libbz2-dev \
47      libgflags-dev \
48      libgoogle-glog-dev \
49      liblz4-dev \
50      liblzma-dev \
51      libprotobuf-dev \
52      libprotoc-dev \
53      libre2-dev \
54      libsnappy-dev \
55      libssl-dev \
56      libzstd-dev \
57      ninja-build \
58      pkg-config \
59      protobuf-compiler \
60      python-minimal \
61      rapidjson-dev \
62      tzdata && \
63      apt-get clean && rm -rf /var/lib/apt/lists*
64
65# Prioritize system packages and local installation
66# The following dependencies will be downloaded due to missing/invalid packages
67# provided by the distribution:
68# - libc-ares-dev does not install CMake config files
69# - flatbuffer is not packaged
70# - libgtest-dev only provide sources
71# - libprotobuf-dev only provide sources
72# - thrift is too old
73ENV ARROW_BUILD_STATIC=OFF \
74    ARROW_BUILD_TESTS=ON \
75    ARROW_COMPUTE=OFF \
76    ARROW_CSV=OFF \
77    ARROW_CUDA=ON \
78    ARROW_DATASET=OFF \
79    ARROW_DEPENDENCY_SOURCE=SYSTEM \
80    ARROW_FILESYSTEM=OFF \
81    ARROW_FLIGHT=OFF \
82    ARROW_HOME=/usr/local \
83    ARROW_INSTALL_NAME_RPATH=OFF \
84    ARROW_NO_DEPRECATED_API=ON \
85    ARROW_PLASMA=ON \
86    ARROW_USE_CCACHE=ON \
87    GTest_SOURCE=BUNDLED \
88    ORC_SOURCE=BUNDLED \
89    PATH=/usr/lib/ccache/:$PATH \
90    Thrift_SOURCE=BUNDLED
91