blob: d9f1fe52d09fb14ecf0e9cead915a54d40b98130 [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 \
Lott, Christopher (cl778h)4bc973c2020-03-17 09:15:03 -040039 sudo \
Lott, Christopher (cl778h)b09f6822019-06-20 09:14:28 -040040 wget \
41 zlib1g \
42 zlib1g-dev \
43 zlibc \
44 zip
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -040045
46WORKDIR /tmp
47
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -050048# Install go versions in /opt
49RUN mkdir -p /opt/go
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -040050
Lott, Christopher (cl778h)b4e65de2020-03-16 11:12:15 -040051ARG g12="1.12.17"
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -050052RUN wget -nv https://dl.google.com/go/go${g12}.linux-amd64.tar.gz \
53 && tar -xf go${g12}.linux-amd64.tar.gz \
54 && mv go /opt/go/1.12 \
55 && rm -f go*.gz
yakiratza852e2a2019-11-21 09:39:36 +020056
Lott, Christopher (cl778h)b4e65de2020-03-16 11:12:15 -040057ARG g13="1.13.8"
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -050058RUN wget -nv https://dl.google.com/go/go${g13}.linux-amd64.tar.gz \
59 && tar -xf go${g13}.linux-amd64.tar.gz \
60 && mv go /opt/go/1.13 \
61 && rm -f go*.gz
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -040062
Lott, Christopher (cl778h)b4e65de2020-03-16 11:12:15 -040063ARG g14="1.14"
64RUN wget -nv https://dl.google.com/go/go${g14}.linux-amd64.tar.gz \
65 && tar -xf go${g14}.linux-amd64.tar.gz \
66 && mv go /opt/go/1.14 \
67 && rm -f go*.gz
68
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -050069ENV GOPATH=/root/go
70# Default path has go version 1.12.x
71# Use /opt/go/1.13/bin for version 1.13.x
Lott, Christopher (cl778h)b4e65de2020-03-16 11:12:15 -040072# Use /opt/go/1.14/bin for version 1.14.x
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -050073ENV PATH=$PATH:/opt/go/1.12/bin:$GOPATH/bin
74
75# This installs go-acc to GOPATH
76RUN go version \
77 && go get -v github.com/ory/go-acc \
78 && go-acc --help
79
80# install a recent version of cmake, ubuntu repo version is old
81ARG cv="3.14.5"
82RUN wget -nv https://github.com/Kitware/CMake/releases/download/v${cv}/cmake-${cv}-Linux-x86_64.sh \
83 && chmod +x cmake-${cv}-Linux-x86_64.sh \
84 && ./cmake-${cv}-Linux-x86_64.sh --prefix=/usr/local --skip-license \
85 && rm -f cmake*.sh
86
87# install a recent version of ninja-build, ubuntu repo version is old
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -040088RUN wget -nv https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-linux.zip \
89 && unzip ninja-linux.zip \
90 && chmod +x ninja \
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -050091 && mv ninja /usr/local/bin \
92 && rm -f ninja*.zip
93
94# sonar-scanner is not available in ubuntu repo
95ARG sv="4.2.0.1873"
96RUN wget -nv https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${sv}-linux.zip \
97 && unzip sonar-scanner-cli-${sv}-linux.zip \
98 && mv sonar-scanner-${sv}-linux /usr/local/sonar-scanner \
99 && rm -f sonar*.zip
100
101# golangci-lint is not available in ubuntu repo
102RUN wget -O- -nv https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $GOPATH/bin v1.23.6 \
103 && rm -f install.sh
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -0400104
E. Scott Daniels134c56f2019-09-25 15:20:50 -0400105# NNG repo is not frequently tagged so it's pinned to a commit hash.
106# This commit provides fix to the proxy-reconnect
107# bug that we identified: https://github.com/nanomsg/nng/issues/970
108RUN git clone https://github.com/nanomsg/nng.git \
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -0400109 && cd nng \
E. Scott Daniels134c56f2019-09-25 15:20:50 -0400110 && git checkout e618abf8f3db2a94269a79c8901a51148d48fcc2 \
Lott, Christopher (cl778h)52dc4e12019-06-12 15:27:44 -0400111 && mkdir build \
112 && cd build \
113 && cmake -DBUILD_SHARED_LIBS=1 -G Ninja .. \
114 && ninja \
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -0500115 && ninja install \
116 && cd ../.. \
117 && rm -rf nng
Lott, Christopher (cl778h)d63fe202019-06-17 09:01:48 -0400118
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -0500119# install a recent version of boost, ubuntu repo version is old
120ARG bv="1_69_0"
121RUN wget -nv https://dl.bintray.com/boostorg/release/1.69.0/source/boost_${bv}.zip \
122 && unzip -q boost_${bv}.zip \
123 && cd boost_${bv} \
Lott, Christopher (cl778h)d63fe202019-06-17 09:01:48 -0400124 && ./bootstrap.sh --prefix=/usr/ \
125 && ./b2 \
126 && ./b2 install \
127 && cd ../ \
Lott, Christopher (cl778h)bc810962020-02-06 15:18:41 -0500128 && rm -rf boost*.zip boost_${bv}