This repository was archived by the owner on Jul 22, 2024. It is now read-only.
Repository navigation
Expand file tree
/
Copy pathDockerfile
More file actions
134 lines (124 loc) · 4.88 KB
/
Copy pathDockerfile
File metadata and controls
134 lines (124 loc) · 4.88 KB
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
83
84
85
86
87
88
89
90
91
92
93
94
95
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
############################################################
# Dockerfile to build V8 container images
# Based on Ubuntu
############################################################
# Set the base image to Ubuntu
FROM ubuntu:16.04
# File Author / Maintainer
MAINTAINER Example prmis@microsoft.com
################## BEGIN INSTALLATION ######################
# Update Image
RUN apt-get update
RUN apt-get install -y sudo
RUN apt-get install -y apt-utils
RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo
RUN echo "docker ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
user docker
# Update depedency of V8
RUN sudo apt-get install -y \
lsb-core \
git \
python \
lbzip2 \
curl \
wget \
xz-utils \
zip
RUN sudo echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
WORKDIR /home/docker
# Get depot_tool
RUN git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
ENV PATH /home/docker/depot_tools:"$PATH"
RUN echo $PATH
# Fetch V8 code
RUN fetch v8
RUN echo "target_os= ['android']">>.gclient
RUN gclient sync
RUN sudo echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
# Update V8 depedency
RUN echo y | sudo /home/docker/v8/build/install-build-deps-android.sh
WORKDIR /home/docker/v8
ARG CACHEBUST=1
# checkout required V8 Branch
RUN git checkout 8.1.307.28
RUN gclient sync
#ARG CACHEBUST=1
# ARM64
RUN python ./tools/dev/v8gen.py arm64.release -vv
RUN rm out.gn/arm64.release/args.gn
COPY ./args_arm64.gn out.gn/arm64.release/args.gn
RUN ls -al out.gn/arm64.release/
RUN cat out.gn/arm64.release/args.gn
RUN sudo chmod 777 out.gn/arm64.release/args.gn
RUN touch out.gn/arm64.release/args.gn
RUN ninja -C out.gn/arm64.release -t clean
RUN ninja -C out.gn/arm64.release
# Prepare files for archiving
RUN rm -rf target/arm64-v8a
RUN mkdir -p target/arm64-v8a target/symbols/arm64-v8a
RUN cp -rf out.gn/arm64.release/*.so ./target/arm64-v8a
RUN cp -rf out.gn/arm64.release/lib.unstripped/*.so ./target/symbols/arm64-v8a
# ARM
RUN python ./tools/dev/v8gen.py arm.release -vv
RUN rm out.gn/arm.release/args.gn
COPY ./args_arm.gn out.gn/arm.release/args.gn
RUN ls -al out.gn/arm.release/
RUN cat out.gn/arm.release/args.gn
RUN sudo chmod 777 out.gn/arm.release/args.gn
RUN touch out.gn/arm.release/args.gn
# Build the V8 liblary
RUN ninja -C out.gn/arm.release -t clean
RUN ninja -C out.gn/arm.release
# Prepare files for archiving
RUN rm -rf target/armeabi-v7a target/symbols/armeabi-v7a
RUN mkdir -p target/armeabi-v7a target/symbols/armeabi-v7a
RUN cp -rf out.gn/arm.release/*.so ./target/armeabi-v7a
RUN cp -rf out.gn/arm.release/lib.unstripped/*.so ./target/symbols/armeabi-v7a
# X86_64
RUN python ./tools/dev/v8gen.py x64.release -vv
RUN rm out.gn/x64.release/args.gn
COPY ./args_x86_64.gn out.gn/x64.release/args.gn
RUN ls -al out.gn/x64.release/
RUN cat out.gn/x64.release/args.gn
RUN sudo chmod 777 out.gn/x64.release/args.gn
RUN touch out.gn/x64.release/args.gn
# Build the V8 liblary
RUN ninja -C out.gn/x64.release -t clean
RUN ninja -C out.gn/x64.release
# Prepare files for archiving
RUN rm -rf target/x86_64
RUN mkdir -p target/x86_64 target/symbols/x86_64
RUN cp -rf out.gn/x64.release/*.so ./target/x86_64
RUN cp -rf out.gn/x64.release/lib.unstripped/*.so ./target/symbols/x86_64
# X86
RUN python ./tools/dev/v8gen.py ia32.release -vv
RUN rm out.gn/ia32.release/args.gn
COPY ./args_x86.gn out.gn/ia32.release/args.gn
RUN ls -al out.gn/ia32.release/
RUN cat out.gn/ia32.release/args.gn
RUN sudo chmod 777 out.gn/ia32.release/args.gn
RUN touch out.gn/ia32.release/args.gn
# Build the V8 liblary
RUN ninja -C out.gn/ia32.release -t clean
RUN ninja -C out.gn/ia32.release
# Prepare files for archiving
RUN rm -rf target/x86
RUN mkdir -p target/x86 target/symbols/x86
RUN cp -rf out.gn/ia32.release/*.so ./target/x86
RUN cp -rf out.gn/ia32.release/lib.unstripped/*.so ./target/symbols/x86
# Creating release archive
RUN mkdir ./target/headers
RUN cp -rf include ./target/headers
# We don't need testing lib in resulting package
RUN find target -name "libv8_for_testing.cr.so" -delete
# stl lib from android-ndk have no symbols, so why bother copy them?
RUN find target/symbols -name "libc++_shared.so" -delete
# some V8 versions copy stl to release folder, some not. We need exact version of stl V8 built with to be on the safe side.
RUN cp ./third_party/android_ndk/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++_shared.so ./target/arm64-v8a/
RUN cp ./third_party/android_ndk/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/libc++_shared.so ./target/armeabi-v7a
RUN cp ./third_party/android_ndk/sources/cxx-stl/llvm-libc++/libs/x86/libc++_shared.so ./target/x86/
RUN cp ./third_party/android_ndk/sources/cxx-stl/llvm-libc++/libs/x86_64/libc++_shared.so ./target/x86_64/
WORKDIR /home/docker/v8/target/
RUN zip -r ../v8.zip ./*
RUN ls -al /home/docker/v8/v8.zip
#End of docker Command