delete the references to packagecloud.io .deb repositories after installing vpp-ext...
[ci-management.git] / docker / scripts / lib_yum.sh
1 # lib_yum.sh - Docker build script yum library.
2 #              For import only.
3
4 # Copyright (c) 2020 Cisco and/or its affiliates.
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
17 # Don't import more than once.
18 if [ -n "$(alias lib_yum_imported 2> /dev/null)" ] ; then
19     return 0
20 fi
21 alias lib_yum_imported=true
22
23 export CIMAN_DOCKER_SCRIPTS=${CIMAN_DOCKER_SCRIPTS:-"$(dirname $BASH_SOURCE)"}
24 . $CIMAN_DOCKER_SCRIPTS/lib_common.sh
25
26 dump_yum_package_list() {
27     branchname="$(echo $branch | sed -e 's,/,_,')"
28     yum list installed > \
29         "$DOCKER_BUILD_LOG_DIR/$FDIOTOOLS_IMAGENAME-$branchname-yum-packages.log"
30 }
31
32 yum_install_packages() {
33     yum install -y $@
34 }
35
36 yum_install_docker_os_package_dependancies() {
37     yum_install_packages yum-utils
38 }
39
40 yum_install_docker() {
41     yum-config-manager --add-repo \
42                        https://download.docker.com/linux/${OS_ID}/docker-ce.repo
43     yum-config-manager --enablerepo=docker-ce-stable
44     yum_install_packages docker-ce docker-ce-cli containerd.io
45 }
46
47 generate_yum_dockerfile() {
48     local executor_os_name=$1
49     local from_image=$2
50     local executor_image=$3
51     local from_image_os_id="$(echo $from_image | cut -d: -f2)"
52
53     cat <<EOF >$DOCKERFILE
54 FROM $from_image AS executor-image
55 LABEL Description="FD.io CI executor docker image for $executor_os_name/$OS_ARCH"
56 LABEL Vendor="fd.io"
57 LABEL Version="$DOCKER_TAG"
58
59 # Build Environment Variables
60 ENV FDIOTOOLS_IMAGE=$executor_image
61 ENV LC_ALL=en_US.UTF-8
62 ENV CIMAN_ROOT="$DOCKER_CIMAN_ROOT"
63 ENV PATH=$PATH:$DOCKER_CIMAN_ROOT/docker/scripts
64
65 # Copy-in build tree containing
66 # ci-management, vpp, & csit git repos
67 WORKDIR $DOCKER_BUILD_DIR
68 COPY . .
69
70 # Install baseline packages (minimum build & utils).
71 #
72 # ci-management global-jjb requirements:
73 #   for lf-env.sh:
74 #       facter
75 #   from global-jjb/packer/provision/baseline.sh:
76 #       deltarpm
77 #       unzip
78 #       xz
79 #       puppet
80 #       python3-pip
81 #       git
82 #       git-review
83 #       perl-XML-XPath
84 #       make
85 #       wget
86 #
87 # TODO: Fix broken project requirement install targets
88 #
89 #   graphviz           for 'make bootstrap-doxygen' (VPP)
90 #   doxygen            for 'make doxygen' (VPP)
91 #   enchant            for 'make docs' (VPP)
92 #   libffi-devel       for python cffi install (Ubuntu20.04/VPP/aarch64)
93 #   libpcap-devel      for python pypcap install (CSIT)
94 #   liblapack-devel    for python numpy/scipy (CSIT/aarch64)
95 #   libopenblas-devel  for python numpy/scipy (CSIT/aarch64)
96 #
97 RUN yum update -y \\
98     && yum install -y \\
99         epel-release \\
100     && yum clean all
101 RUN yum update -y \\
102     && yum install -y \\
103         yum-utils \\
104         deltarpm \\
105         doxygen \\
106         enchant \\
107         emacs \\
108         facter \\
109         git \\
110         git-review \\
111         graphviz \\
112         iproute \\
113         java-1.8.0-openjdk \\
114         java-1.8.0-openjdk-devel \\
115         jq \\
116         libffi-devel \\
117         liblapack-devel \\
118         libopenblas-devel \\
119         libpcap-devel \\
120         make \\
121         mawk \\
122         mock \\
123         perl \\
124         perl-XML-XPath \\
125         python3-pip \\
126         puppet \\
127         rake \\
128         ruby-devel \\
129         sudo \\
130         tree \\
131         unzip \\
132         vim \\
133         wget \\
134         xz \\
135     && yum clean all
136
137 # Install packages for all project branches
138 #
139 RUN yum update -y \\
140     && dbld_install_docker.sh \\
141     && dbld_vpp_install_packages.sh \\
142     && dbld_csit_install_packages.sh \\
143     && dbld_lfit_requirements.sh \\
144     && yum clean all
145
146 # CI Runtime Environment
147 WORKDIR /
148 ENV VPP_ZOMBIE_NOCHECK=1
149 RUN gem install package_cloud \\
150     && curl -s https://packagecloud.io/install/repositories/fdio/master/script.rpm.sh | sudo bash
151
152 # Clean up
153 RUN dbld_dump_build_logs.sh \\
154     && rm -rf /tmp/*
155 EOF
156 }