-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDockerfile.base
82 lines (69 loc) · 2.56 KB
/
Dockerfile.base
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# Copyright 2022 Red Hat, Inc, and individual contributors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
FROM registry.access.redhat.com/ubi8/ubi:latest
WORKDIR /home
# pre reqs
RUN dnf -y install \
tzdata \
vim \
curl \
wget \
xz \
git \
python39 \
ninja-build \
make \
cmake \
procps-ng \
gcc-toolset-12 \
gcc-toolset-12-libatomic-devel \
glib2-devel \
patch
# extra packages (optional)
RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
RUN dnf -y install ccache
# patch stl_algobase.h system header file
# patch was originally generated with `diff -ru0`
# caused by this bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113960
# TODO(miladfarca): Remove when fix is backported to gcc-toolset-12, also remove patch from pre-req list
COPY ./patches/ /home/patches
RUN patch -p0 /opt/rh/gcc-toolset-12/root/usr/include/c++/12/bits/stl_algobase.h patches/stl_algobase.h.diff
# set timezone
RUN ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime
# python dependencies
RUN pip3 install httplib2 six requests
# clone depot_tools and add it to your path
RUN git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
# build gn
# (optional) run gn unittests
# use a platform specific `ninja` binary
RUN git clone https://gn.googlesource.com/gn && \
cd gn && \
scl enable gcc-toolset-12 'CXX=g++ python3 build/gen.py && ninja -C out' && \
out/gn_unittests && \
cp /home/gn/out/gn /bin/gn && \
chmod +x /bin/gn
# set environment variables
ENV PATH=$PATH:/home/depot_tools/
ENV VPYTHON_BYPASS="manually managed python not supported by chrome operations"
ENV V8_BRANCH="main"
ENV MODE="release"
# (optional) copy bin folder and patches needed by Jenkins CI/CD, not needed when building V8 manually
COPY ./bin/ /home
COPY ./patches/ /home/patches
# (optional) setup git config
COPY ./config/gitconfig /root/.gitconfig
# (optional) setup vim config
RUN git clone https://github.com/john-yan/vimrc.git ~/.vim_runtime && bash ~/.vim_runtime/install_awesome_vimrc.sh