setup.sh 5.68 KB
Newer Older
1
2
3
4
5
#!/bin/bash

if [[ $OS_NAME == "macos" ]]; then
    if  [[ $COMPILER == "clang" ]]; then
        brew install libomp
6
        if [[ $AZURE == "true" ]]; then
7
            sudo xcode-select -s /Applications/Xcode_11.7.app/Contents/Developer || exit -1
8
        fi
Nikita Titov's avatar
Nikita Titov committed
9
    else  # gcc
10
        sudo xcode-select -s /Applications/Xcode_14.1.app/Contents/Developer || exit -1
11
12
13
14
15
16
17
        if [[ $TASK != "mpi" ]]; then
            brew install gcc
        fi
    fi
    if [[ $TASK == "mpi" ]]; then
        brew install open-mpi
    fi
18
19
    if [[ $TASK == "swig" ]]; then
        brew install swig
20
    fi
21
22
23
24
    curl \
        -sL \
        -o miniforge.sh \
        https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-x86_64.sh
25
else  # Linux
26
27
28
29
30
31
    if [[ $IN_UBUNTU_LATEST_CONTAINER == "true" ]]; then
        # fixes error "unable to initialize frontend: Dialog"
        # https://github.com/moby/moby/issues/27988#issuecomment-462809153
        echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections

        sudo apt-get update
32
        sudo apt-get install --no-install-recommends -y \
33
34
            software-properties-common

35
        sudo apt-get install --no-install-recommends -y \
36
37
38
            apt-utils \
            build-essential \
            ca-certificates \
39
            cmake \
40
41
42
43
44
            curl \
            git \
            iputils-ping \
            jq \
            libcurl4 \
45
46
            libicu-dev \
            libssl-dev \
47
48
49
50
            libunwind8 \
            locales \
            netcat \
            unzip \
51
            zip || exit -1
52
53
54
55
56
        if [[ $COMPILER == "clang" ]]; then
            sudo apt-get install --no-install-recommends -y \
                clang \
                libomp-dev
        fi
57
58
59
60
61
62

        export LANG="en_US.UTF-8"
        export LC_ALL="${LANG}"
        sudo locale-gen ${LANG}
        sudo update-locale
    fi
63
64
65
66
    if [[ $TASK == "r-package" ]] && [[ $COMPILER == "clang" ]]; then
        sudo apt-get install --no-install-recommends -y \
            libomp-dev
    fi
67
    if [[ $TASK == "mpi" ]]; then
68
69
70
71
72
73
74
75
76
77
78
        if [[ $IN_UBUNTU_LATEST_CONTAINER == "true" ]]; then
            sudo apt-get update
            sudo apt-get install --no-install-recommends -y \
                libopenmpi-dev \
                openmpi-bin
        else  # in manylinux image
            sudo yum update -y
            sudo yum install -y \
                openmpi-devel \
            || exit -1
        fi
79
80
    fi
    if [[ $TASK == "gpu" ]]; then
81
        if [[ $IN_UBUNTU_LATEST_CONTAINER == "true" ]]; then
82
            sudo apt-get update
83
            sudo apt-get install --no-install-recommends -y \
84
                libboost1.74-dev \
85
                libboost-filesystem1.74-dev \
86
                ocl-icd-opencl-dev
87
88
89
90
91
92
93
        else  # in manylinux image
            sudo yum update -y
            sudo yum install -y \
                boost-devel \
                ocl-icd-devel \
                opencl-headers \
            || exit -1
94
        fi
95
    fi
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
    if [[ $TASK == "gpu" || $TASK == "bdist" ]]; then
        if [[ $IN_UBUNTU_LATEST_CONTAINER == "true" ]]; then
            sudo apt-get update
            sudo apt-get install --no-install-recommends -y \
                pocl-opencl-icd
        elif [[ $(uname -m) == "aarch64" ]]; then
            yum install -y \
                epel-release \
                gcc-c++ \
                hwloc-devel \
                sudo
            yum install -y \
                llvm-toolset-7.0-clang-devel \
                llvm-toolset-7.0-llvm-devel \
                ocl-icd-devel
            git clone --depth 1 --branch v1.8 https://github.com/pocl/pocl.git
            cmake \
              -B pocl/build \
              -S pocl \
              -DCMAKE_BUILD_TYPE=release \
              -DCMAKE_C_COMPILER=/usr/bin/gcc \
              -DCMAKE_CXX_COMPILER=/usr/bin/g++ \
              -DCMAKE_C_FLAGS=-std=gnu99 \
              -DPOCL_INSTALL_ICD_VENDORDIR=/etc/OpenCL/vendors \
              -DPOCL_DEBUG_MESSAGES=OFF \
              -DINSTALL_OPENCL_HEADERS=OFF \
              -DENABLE_SPIR=OFF \
              -DENABLE_POCLCC=OFF \
              -DENABLE_TESTS=OFF \
              -DENABLE_EXAMPLES=OFF \
              -DLLC_HOST_CPU=generic
            cmake --build pocl/build -j4
            sudo cmake --install pocl/build
        elif [[ $(uname -m) == "x86_64" ]]; then
            sudo yum update -y
            sudo yum install -y \
                ocl-icd-devel \
                opencl-headers \
            || exit -1
        fi
    fi
137
    if [[ $TASK == "cuda" || $TASK == "cuda_exp" ]]; then
138
        echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
Nikita Titov's avatar
Nikita Titov committed
139
        apt-get update
140
141
        apt-get install --no-install-recommends -y \
            curl \
142
            lsb-release \
143
            software-properties-common
144
145
146
147
148
        if [[ $COMPILER == "clang" ]]; then
            apt-get install --no-install-recommends -y \
                clang \
                libomp-dev
        fi
149
        curl -sL https://apt.kitware.com/keys/kitware-archive-latest.asc | apt-key add -
150
        apt-add-repository "deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" -y
151
        apt-get update
152
153
        apt-get install --no-install-recommends -y \
            cmake
Nikita Titov's avatar
Nikita Titov committed
154
    fi
155
    if [[ $SETUP_CONDA != "false" ]]; then
156
157
158
159
160
        ARCH=$(uname -m)
        curl \
            -sL \
            -o miniforge.sh \
            https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-${ARCH}.sh
161
162
163
    fi
fi

164
if [[ "${TASK}" != "r-package" ]] && [[ "${TASK}" != "r-rchk" ]]; then
165
    if [[ $SETUP_CONDA != "false" ]]; then
166
        sh miniforge.sh -b -p $CONDA
167
168
169
    fi
    conda config --set always_yes yes --set changeps1 no
    conda update -q -y conda
170
fi