blob: bcb09e65c76a18fcadbde793877849e1ef24509e [file] [log] [blame]
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -04001# O-RAN-SC
2#
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -05003# Copyright (C) 2019-2020 AT&T Intellectual Property and Nokia
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -04004#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# 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, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
Lott, Christopher (cl778h)d63fe202019-06-17 09:01:48 -040017# Builder image with superset of CI tools for RIC components
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -040018
Lott, Christopher (cl778h)a92406b2019-06-28 11:18:44 -040019FROM nexus3.o-ran-sc.org:10001/ubuntu:18.04
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -040020
21RUN apt-get update && apt-get install -y \
Lott, Christopher (cl778h)b09f6822019-06-20 09:14:28 -040022 autoconf \
23 autoconf-archive \
24 automake \
25 autotools-dev \
26 build-essential \
27 g++ \
28 gcc \
29 git \
30 libbz2-dev \
31 libicu-dev \
32 libsctp-dev \
33 libtool \
34 lksctp-tools \
35 make \
36 python-dev \
37 pkg-config \
38 software-properties-common \
39 wget \
40 zlib1g \
41 zlib1g-dev \
42 zlibc \
43 zip
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -040044
45WORKDIR /tmp
46
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -050047# Install go versions in /opt
48RUN mkdir -p /opt/go
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -040049
Lott, Christopher (cl778h)b4e65de2020-03-16 11:12:15 -040050ARG g12="1.12.17"
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -050051RUN wget -nv https://dl.google.com/go/go${g12}.linux-amd64.tar.gz \
52 && tar -xf go${g12}.linux-amd64.tar.gz \
53 && mv go /opt/go/1.12 \
54 && rm -f go*.gz
yakiratza852e2a2019-11-21 09:39:36 +020055
Lott, Christopher (cl778h)b4e65de2020-03-16 11:12:15 -040056ARG g13="1.13.8"
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -050057RUN wget -nv https://dl.google.com/go/go${g13}.linux-amd64.tar.gz \
58 && tar -xf go${g13}.linux-amd64.tar.gz \
59 && mv go /opt/go/1.13 \
60 && rm -f go*.gz
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -040061
Lott, Christopher (cl778h)b4e65de2020-03-16 11:12:15 -040062ARG g14="1.14"
63RUN wget -nv https://dl.google.com/go/go${g14}.linux-amd64.tar.gz \
64 && tar -xf go${g14}.linux-amd64.tar.gz \
65 && mv go /opt/go/1.14 \
66 && rm -f go*.gz
67
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -050068ENV GOPATH=/root/go
69# Default path has go version 1.12.x
70# Use /opt/go/1.13/bin for version 1.13.x
Lott, Christopher (cl778h)b4e65de2020-03-16 11:12:15 -040071# Use /opt/go/1.14/bin for version 1.14.x
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -050072ENV PATH=$PATH:/opt/go/1.12/bin:$GOPATH/bin
73
74# This installs go-acc to GOPATH
75RUN go version \
76 && go get -v github.com/ory/go-acc \
77 && go-acc --help
78
79# install a recent version of cmake, ubuntu repo version is old
80ARG cv="3.14.5"
81RUN wget -nv https://github.com/Kitware/CMake/releases/download/v${cv}/cmake-${cv}-Linux-x86_64.sh \
82 && chmod +x cmake-${cv}-Linux-x86_64.sh \
83 && ./cmake-${cv}-Linux-x86_64.sh --prefix=/usr/local --skip-license \
84 && rm -f cmake*.sh
85
86# install a recent version of ninja-build, ubuntu repo version is old
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -040087RUN wget -nv https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-linux.zip \
88 && unzip ninja-linux.zip \
89 && chmod +x ninja \
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -050090 && mv ninja /usr/local/bin \
91 && rm -f ninja*.zip
92
93# sonar-scanner is not available in ubuntu repo
94ARG sv="4.2.0.1873"
95RUN wget -nv https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${sv}-linux.zip \
96 && unzip sonar-scanner-cli-${sv}-linux.zip \
97 && mv sonar-scanner-${sv}-linux /usr/local/sonar-scanner \
98 && rm -f sonar*.zip
99
100# golangci-lint is not available in ubuntu repo
101RUN wget -O- -nv https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $GOPATH/bin v1.23.6 \
102 && rm -f install.sh
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -0400103
E. Scott Daniels134c56f2019-09-25 15:20:50 -0400104# NNG repo is not frequently tagged so it's pinned to a commit hash.
105# This commit provides fix to the proxy-reconnect
106# bug that we identified: https://github.com/nanomsg/nng/issues/970
107RUN git clone https://github.com/nanomsg/nng.git \
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -0400108 && cd nng \
E. Scott Daniels134c56f2019-09-25 15:20:50 -0400109 && git checkout e618abf8f3db2a94269a79c8901a51148d48fcc2 \
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -0400110 && mkdir build \
111 && cd build \
112 && cmake -DBUILD_SHARED_LIBS=1 -G Ninja .. \
113 && ninja \
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -0500114 && ninja install \
115 && cd ../.. \
116 && rm -rf nng
Lott, Christopher (cl778h)d63fe202019-06-17 09:01:48 -0400117
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -0500118# install a recent version of boost, ubuntu repo version is old
119ARG bv="1_69_0"
120RUN wget -nv https://dl.bintray.com/boostorg/release/1.69.0/source/boost_${bv}.zip \
121 && unzip -q boost_${bv}.zip \
122 && cd boost_${bv} \
Lott, Christopher (cl778h)d63fe202019-06-17 09:01:48 -0400123 && ./bootstrap.sh --prefix=/usr/ \
124 && ./b2 \
125 && ./b2 install \
126 && cd ../ \
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -0500127 && rm -rf boost*.zip boost_${bv}