blob: 10c90671909dcc93a6d48336e57536b2377a5e02 (
plain)
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
|
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: Carlo Landmeter <clandmeter@gmail.com>
pkgname=chromium
pkgver=71.0.3578.98
pkgrel=2
pkgdesc="chromium web browser"
url="http://www.chromium.org/"
arch="x86_64" # aarch64 armhf armv7 temp disable because we need clang for arm
license="BSD"
depends="xdg-utils"
depends_dev=""
makedepends="$depends_dev
alsa-lib-dev
bash
binutils-gold
bison flex
bsd-compat-headers
bzip2-dev
cairo-dev
clang
clang-dev
cups-dev
dbus-glib-dev
eudev-dev
ffmpeg-dev
findutils
flac-dev
freetype-dev
gnutls-dev
gperf
gtk+3.0-dev
gzip
harfbuzz-dev
hunspell-dev
hwdata-usb
jpeg-dev
jsoncpp-dev
krb5-dev
libbsd-dev
libcap-dev
libelf-dev
libevent-dev
libexif-dev
libgcrypt-dev
libgnome-keyring-dev
libjpeg-turbo-dev
libpng-dev
libusb-dev
libva-dev
libwebp-dev
libxcomposite-dev
libxcursor-dev
libxinerama-dev
libxml2-dev
libxrandr-dev
libxscrnsaver-dev
libxslt-dev
libxtst-dev
linux-headers
mesa-dev
mesa-dev
minizip-dev
ninja
nodejs
nss-dev
opus-dev
paxmark
pciutils-dev
perl
python2
re2-dev
snappy-dev
speex-dev
sqlite-dev
xdg-utils
yasm
zlib-dev
"
install=""
# explicit depends for --headless
depends="eudev-libs ttf-opensans"
options=suid
subpackages="$pkgname-chromedriver"
source="https://commondatastorage.googleapis.com/chromium-browser-official/$pkgname-$pkgver.tar.xz
pstables-2.8.h::https://git.savannah.gnu.org/cgit/freetype/freetype2.git/plain/src/psnames/pstables.h?h=VER-2-8
chromium-launcher.sh
chromium.conf
chromium.desktop
google-api.keys
default-pthread-stacksize.patch
gn-bootstrap-remove-sysroot-related-options.patch
musl-fixes.patch
musl-fixes-breakpad.patch
musl-hacks.patch
musl-libc++.patch
musl-sandbox.patch
no-execinfo.patch
no-mallinfo.patch
resolver.patch
swiftshader.patch
secure_getenv.patch
chromium-use-alpine-target.patch
chromium-gcc-r1.patch
chromium-skia-harmony.patch
media-base.patch
musl-crashpad.patch
chromium-71-gcc-0.patch
gcc8-alignof.patch
chromium-fix_harfbuzz_2.patch
chromium-enable-vaapi.patch
chromium-i686-vaapi-fpermissive.patch
"
builddir="$srcdir"/$pkgname-$pkgver
if [ -n "$DEBUG" ]; then
_buildtype=Debug
_is_debug=true
else
_buildtype=Release
_is_debug=false
fi
prepare() {
cd "$builddir"
local i
cd "$builddir"
for i in $source; do
case $i in
*.patch) msg $i; patch -p0 -i "$srcdir"/$i;;
esac
done
# https://groups.google.com/a/chromium.org/d/topic/chromium-packagers/9JX1N2nf4PU/discussion
touch chrome/test/data/webui/i18n_process_css_test.html
# Use the file at run time instead of effectively compiling it in
sed 's|//third_party/usb_ids/usb.ids|/usr/share/hwdata/usb.ids|g' \
-i device/usb/BUILD.gn
mkdir -p third_party/node/linux/node-linux-x64/bin
ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/
# reusable system library settings
local use_system="
ffmpeg
flac
fontconfig
harfbuzz-ng
libdrm
libevent
libjpeg
libpng
libwebp
libxml
libxslt
opus
re2
snappy
yasm
"
for _lib in ${use_system} libjpeg_turbo; do
msg "Removing buildscripts for system provided $_lib"
find -type f -path "*third_party/$_lib/*" \
\! -path "*third_party/$_lib/chromium/*" \
\! -path "*third_party/$_lib/google/*" \
\! -path './base/third_party/icu/*' \
\! -path './third_party/pdfium/third_party/freetype/include/pstables.h' \
\! -path './third_party/yasm/run_yasm.py' \
\! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
-delete
done
msg "Replacing gyp files"
python build/linux/unbundle/replace_gn_files.py --system-libraries \
${use_system}
third_party/libaddressinput/chromium/tools/update-strings.py
}
_gn_flags() {
echo $*
}
build() {
cd "$builddir"
##############################################################
# Please dont use these keys outside of Alpine Linux project #
# You can create your own at: #
# http://www.chromium.org/developers/how-tos/api-keys #
##############################################################
eval "$(base64 -d < $srcdir/google-api.keys)"
local _ca=""
msg "Bootstrapping GN"
local _c=$(_gn_flags is_clang=false \
use_sysroot=false \
treat_warnings_as_errors=false \
fatal_linker_warnings=false \
binutils_path=\"/usr/bin\" \
use_gold=false \
use_allocator=\"none\" \
use_allocator_shim=false \
use_vaapi=true \
)
AR="ar" CC="${CC:-gcc}" CXX="${CXX:-g++}" LD="${CXX:-g++}" \
python tools/gn/bootstrap/bootstrap.py -s -v --gn-gen-args "$_c $_ca"
msg "Configuring build"
_c=$(_gn_flags \
clang_use_chrome_plugins=false \
custom_toolchain=\"//build/toolchain/linux/unbundle:default\" \
enable_hangout_services_extension=true \
enable_nacl=false \
enable_nacl_nonsfi=false \
enable_precompiled_headers=false \
fatal_linker_warnings=false \
ffmpeg_branding=\"Chrome\" \
fieldtrial_testing_like_official_build=true \
gold_path=\"/usr/bin/ld.gold\" \
google_api_key=\"$_google_api_key\" \
google_default_client_id=\"$_google_default_client_id\" \
google_default_client_secret=\"$_google_default_client_secret\" \
host_toolchain=\"//build/toolchain/linux/unbundle:default\" \
icu_use_data_file=true \
is_clang=false \
is_debug=$_is_debug \
is_desktop_linux=true \
linux_use_bundled_binutils=false \
proprietary_codecs=true \
remove_webcore_debug_symbols=true \
symbol_level=0 \
treat_warnings_as_errors=false \
use_allocator=\"none\" \
use_allocator_shim=false \
use_cups=true \
use_custom_libcxx=false \
use_gnome_keyring=false \
use_gold=false \
use_lld=false \
use_pulseaudio=false \
use_sysroot=false \
use_system_harfbuzz=true \
use_vaapi=true \
)
AR="ar" CC="${CC:-gcc}" CXX="${CXX:-g++}" LD="${CXX:-g++}" NM=/usr/bin/nm \
out/Release/gn gen out/$_buildtype --args="$_c $_ca"
msg "Ninja turtles GO!"
# workaround parallel build
ninja -C out/Release gen/ui/accessibility/ax_enums.p
# build mksnapshot and paxmark it
ninja -C out/$_buildtype mksnapshot
paxmark -m out/$_buildtype/mksnapshot
ninja -C out/$_buildtype v8_context_snapshot_generator
paxmark -m out/Release/v8_context_snapshot_generator \
out/Release/obj/tools/v8_context_snapshot/v8_context_snapshot_generator
# final link needs lots of file descriptors
ulimit -n 2048
# finish rest of the build
ninja -C out/$_buildtype chrome chrome_sandbox chromedriver
}
package() {
cd "$builddir"/out/$_buildtype
local bin pak
# paxmark inside chroot too
paxmark -m mksnapshot
for bin in chrome chromedriver *.bin; do
install -Dm755 $bin "$pkgdir"/usr/lib/$pkgname/$bin
done
paxmark -m "$pkgdir"/usr/lib/$pkgname/chrome
install -Dm4755 chrome_sandbox "$pkgdir"/usr/lib/$pkgname/chrome-sandbox
install -m644 icudtl.dat "$pkgdir"/usr/lib/$pkgname/icudtl.dat
for pak in *.pak; do
install -Dm644 $pak "$pkgdir"/usr/lib/$pkgname/$pak
done
install -Dm755 "$srcdir"/chromium-launcher.sh \
"$pkgdir"/usr/lib/$pkgname/chromium-launcher.sh
cp -a locales "$pkgdir"/usr/lib/$pkgname/
# It is important that we name the target "chromium-browser",
# xdg-utils expect it; bug #355517.
mkdir -p "$pkgdir"/usr/bin
cd "$pkgdir"/usr/bin
ln -sf /usr/lib/$pkgname/chromium-launcher.sh chromium-browser
ln -sf /usr/lib/$pkgname/chromedriver "$pkgdir"/usr/bin/
install -Dm644 "$srcdir"/chromium.conf \
"$pkgdir"/etc/chromium/chromium.conf
install -Dm644 "$srcdir"/chromium.desktop \
"$pkgdir"/usr/share/applications/chromium.desktop
cd "$builddir"
for size in 22 24 48 64 128 256; do
install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \
"$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
done
for size in 16 32; do
install -Dm644 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \
"$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
done
}
chromedriver() {
pkgdesc="WebDriver driver for the Chromium Browser"
mkdir -p "$subpkgdir"/usr/lib/$pkgname "$subpkgdir"/usr/bin
mv "$pkgdir"/usr/lib/$pkgname/chromedriver \
"$subpkgdir"/usr/lib/$pkgname/
mv "$pkgdir"/usr/bin/chromedriver "$subpkgdir"/usr/bin
}
sha512sums="dbeb90e16c6c05422c1f43e8fe747d60dab49c1fffdd0f33824ca24429f3871bda649eb1e6402470d3d9bb701e47d55d2fff4f46530e3f43e72f516d1837aad6 chromium-71.0.3578.98.tar.xz
a3bb959c65944ae2fb765725cedcffd743a58bc0c2cd1f1999d15fe79801d00f3474b08b4ed7b48859ed921eb57093d0ad09d90f201d729ed9b8a419a591ed29 pstables-2.8.h
b9a810416dd7a8ffc3a5ced85ad9acebda1665bd08a57eec7b189698cc5f74d2c3fd69044e20fcb83297a43214b2772a1312b2c6122ea0eb716abacf39524d60 chromium-launcher.sh
f6d962b9e4c22dd42183df3db5d3202dab33eccecafb1bf63ca678147289581262db1e5e64cbe8f9c212beefb0a6717bb8d311e497f56b55fe95b8bab2db493f chromium.conf
e182c998a43d22d1c76a86c561619afd1fca8c2be668265ad5e2f81a3806f7a154272cc027a2f8b370fb69446892c69e5967a4be76082325c14245ee7915234c chromium.desktop
2d8237a940ea691bd10b08315429677a587f7ef9692a0cca53bfd066eae82998a6c71f402a8669e9de39f94d7f3280745d1628ea6eac5d76ca7116844d4e0dac google-api.keys
230d1819b9d644ebaa6e194e948d662add8d237a99cc3d6b0f8a2fc2b331b43a3cd0766746f1c76c1a114f1730b40504c532d0c40aafa8cbc45022663cbcc245 default-pthread-stacksize.patch
1c7398a68ee01b9d61c1bb1a3e6dfcc88662da42b9012844040bd86e858228dc480c7f21d2c52829e9959e4a3f6e39b8c5cb22f8f7c8394322c8347d828b6625 gn-bootstrap-remove-sysroot-related-options.patch
9cd1defffb55cd1290e82b233a623e962775e19f001b26ae8f74330f3467499fd16067d607ca8e2b0b9b8d8988cd7ea2af93df65d7cc3d9299b8bc2b472c712e musl-fixes.patch
90efbc89151c77f32434364dcbaabaf9d9a207f4a77f147cd51b3fe100832fbfb3a9fb665303a79a3d788e400f4f41890de202ccbb7bd1fc6252e33c6e74e429 musl-fixes-breakpad.patch
0aa3176f1021332088740d6e4fe2eadbe375240df0690c8449426a42a674fdf58e8a1fda85ca527dc1b4451e964d54564283fd81e3b7df059f5bcfccb8e07e84 musl-hacks.patch
95ead57f7338649351948d100e32e5ec1eeadb02bffa136ff15c6c515eceb8013c444be092d777c1b62b945bfb83b97778ba4d3a0ccc2d7c2c9a0a8cd8ee0f01 musl-libc++.patch
9b75d6ac720d1b8ddc597f0f472bc400ff866a733f12b3a4cd3e7e18e724549c5f8e056c7e0d0462ef083bff5e677f8cef6b89b22f4740a40ad6398978269373 musl-sandbox.patch
6403abf957e3497c19578c19567582d65846d532e071211421166944614219dad21e31a3589b484836919d7c1e5904d4dd8c6faf40dc514c043fe14a2ff718ef no-execinfo.patch
db7f676d3476820c29f234b1f8f17a74e82b72d67fc727c715307734fd238e3cb0f99d8b5320d45f820b62c01163283c4829caa37afd6a9ca7592a54d3c65819 no-mallinfo.patch
6833054ef89da20c0de63faac2f87ff250b5aca3ac785fc404da4a9e03c4e00df9d7da009788e611d113cdf3be2ba50f933d85d6baf20f2df6a3711cceff5152 resolver.patch
6b0812725a0fc562527f3556dc4979fec72d1ba92f26a5e78ff2016c39bb2c155a0ff95fc22101f9c097d14b84182d6615276f4247f60ae7833ab45da8366e6d swiftshader.patch
1b8647ab4081ec27f142eb564841b603dbf4c41118502e43b061d06f8866ebd1418d676457ed9ee0dc0a759e0369a29219bea98e74f687ddcba5d4513ca460ba secure_getenv.patch
246c43a0ab557671119ebc4ecb292925ebfee25312fb50e739a179dc085d23b9623bec2d7baecdd37ebd9318f8770664f20c12de6383def74cd89b7845d149ce chromium-use-alpine-target.patch
6e2bcbed44786c6c0d3beda935269f30fdcdf07c400defa6bf73f8359a60b1d59cc2f80dbc106be651a535635995641321d9e524b18919d3975bd6008a641d59 chromium-gcc-r1.patch
cbd99d51178fa5c2c3dee1eb4990240ca2ff829cee9151384e36bc3c634698c0ecaf9b51c99e901f38d0a37eef7187fe5ad39b9b7f528f7a9066a855a0c6e49f chromium-skia-harmony.patch
589a7acf149d44db081da2dd24a7769f2b9572a8cc64d2aad78577a64768d3b6fb2bfa02292b5260acd2c4a28c3ae9b82847ff901ce8a21baeca0b46dcda0ca9 media-base.patch
05c1af43038f76014f5f8b605085310414242f2bfad0e3258ddb29a08e7f4307de31b2d551b0a291986cc7d5a01cf3a003ac864216877195bb4310fd33193f0f musl-crashpad.patch
74fcae35afd964e2dc09508325465ee0d2efd13b94941eaf6464da1f4b32a34b326cf2c290fffcfc930acefda51a64dfbc980527900849efb5a94922cc17bc20 chromium-71-gcc-0.patch
9bfc532fd1e84e30362ac41fcd68253e17ee4cb5e986ceb5bb122e3235e4617e295ce9dddfdfbbd0b9d3e67267096152da2a19e3bb4bb9111c7fdb22fa398872 gcc8-alignof.patch
4e6bfecdece829306b8c2ea2a4b6d9b0598f97e5b164e0f468e765ffa10cac6b9e57c8814b79eb1244a314d81e8954654111a2e1e056b2c450b369994337cb40 chromium-fix_harfbuzz_2.patch
b0e61b4710a8e9009bd9c10722d902391b83c0400a48a6a40cc0e117ca4c1895732babe5baa078f5b3096b72d105fa2d1f4196f8d35c1ae94ff4d8d99d2a17f5 chromium-enable-vaapi.patch
42d64d07215476295a35568e4492297a00b66205b5a41288a98b1663985fe1868e9595e961284dfbbd8b5846cc1b04e365ab89733270ffbc6967e3366571cf47 chromium-i686-vaapi-fpermissive.patch"
|