diff options
author | pat-s | 2019-07-01 07:38:30 +0200 |
---|---|---|
committer | pat-s | 2019-07-01 07:38:30 +0200 |
commit | ec58921e79c054037b688b658b13c3a851a9b596 (patch) | |
tree | 6dc74093ff10516c955d2a44569d45ac0286424d | |
download | aur-ec58921e79c054037b688b658b13c3a851a9b596.tar.gz |
v3.1.11
-rw-r--r-- | .SRCINFO | 100 | ||||
-rw-r--r-- | PKGBUILD | 254 | ||||
-rw-r--r-- | breakpad-glibc2.26.patch | 208 | ||||
-rw-r--r-- | chromium-use-system-ffmpeg.patch | 22 | ||||
-rw-r--r-- | chromium-use-system-re2.patch | 10 | ||||
-rw-r--r-- | default_app-icon.patch | 22 | ||||
-rw-r--r-- | dont-bootstrap-libchromiumcontent.patch | 11 | ||||
-rw-r--r-- | dont-update-submodules.patch | 11 | ||||
-rw-r--r-- | dont-use-sysroot.patch | 27 | ||||
-rw-r--r-- | electron.desktop | 7 | ||||
-rw-r--r-- | gyp-no-rpath.patch | 12 | ||||
-rw-r--r-- | libchromiumcontent-remove-useless-patches.patch | 518 | ||||
-rw-r--r-- | libchromiumcontent-settings.patch | 44 | ||||
-rw-r--r-- | libchromiumcontent-sort-filenames.patch | 32 | ||||
-rw-r--r-- | libchromiumcontent-static-library-only.patch | 43 | ||||
-rw-r--r-- | libchromiumcontent-use-system-tools.patch | 34 | ||||
-rw-r--r-- | no-clang-plugins.patch | 38 | ||||
-rw-r--r-- | no-whole-archive.patch | 22 | ||||
-rw-r--r-- | use-system-ffmpeg.patch | 21 | ||||
-rw-r--r-- | use-system-libraries-in-node.patch | 31 |
20 files changed, 1467 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..5c0dd69942f4 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,100 @@ +pkgbase = electron3 + pkgdesc = Build cross platform desktop apps with web technologies + pkgver = 3.1.11 + pkgrel = 1 + url = https://electronjs.org/ + arch = x86_64 + license = MIT + license = custom + makedepends = clang + makedepends = git + makedepends = gn + makedepends = gperf + makedepends = harfbuzz-icu + makedepends = jsoncpp + makedepends = libnotify + makedepends = lld + makedepends = llvm + makedepends = ninja + makedepends = npm + makedepends = pciutils + makedepends = python2 + makedepends = wget + makedepends = yasm + depends = c-ares + depends = ffmpeg + depends = gtk3 + depends = http-parser + depends = libevent + depends = libxslt + depends = libxss + depends = minizip + depends = nss + depends = snappy + optdepends = kde-cli-tools: file deletion support (kioclient5) + optdepends = trash-cli: file deletion support (trash-put) + optdepends = xdg-utils: open URLs with desktop's default (xdg-email, xdg-open) + noextract = electron-chromium-66.0.3359.181.tar.bz2 + source = git+https://github.com/electron/electron.git#tag=v3.1.11 + source = git+https://github.com/boto/boto.git + source = breakpad::git+https://github.com/electron/chromium-breakpad.git + source = git+https://chromium.googlesource.com/chromium/src/tools/grit.git + source = git+https://github.com/electron/gyp.git + source = git+https://github.com/electron/libchromiumcontent.git + source = git+https://github.com/electron/node.git + source = pdf_viewer::git+https://github.com/electron/pdf-viewer.git + source = git+https://github.com/yaml/pyyaml.git + source = git+https://github.com/kennethreitz/requests.git + source = google-breakpad::git+https://chromium.googlesource.com/breakpad/breakpad/src + source = electron-chromium-66.0.3359.181.tar.bz2::https://s3.amazonaws.com/github-janky-artifacts/libchromiumcontent/linux/src/66.0.3359.181/src.tar.bz2 + source = electron.desktop + source = default_app-icon.patch + source = dont-bootstrap-libchromiumcontent.patch + source = dont-update-submodules.patch + source = dont-use-sysroot.patch + source = no-clang-plugins.patch + source = no-whole-archive.patch + source = use-system-libraries-in-node.patch + source = use-system-ffmpeg.patch + source = breakpad-glibc2.26.patch + source = gyp-no-rpath.patch + source = libchromiumcontent-remove-useless-patches.patch + source = libchromiumcontent-settings.patch + source = libchromiumcontent-sort-filenames.patch + source = libchromiumcontent-static-library-only.patch + source = libchromiumcontent-use-system-tools.patch + source = chromium-use-system-ffmpeg.patch + source = chromium-use-system-re2.patch + sha512sums = SKIP + sha512sums = SKIP + sha512sums = SKIP + sha512sums = SKIP + sha512sums = SKIP + sha512sums = SKIP + sha512sums = SKIP + sha512sums = SKIP + sha512sums = SKIP + sha512sums = SKIP + sha512sums = SKIP + sha512sums = 64e3c617aba3af71213e8e36af38a39934f1f5c7eea53b2c09d9d9ac189397d8f3e95196f47552fbde83d9e062fb38f5ca48b6791caf5db42663b8a969cb7394 + sha512sums = 418b9f1c796bb8b9276afc44975988ae8ebc8a31420a08303c9fcf0fa9628f1bafa128542c07c39274346f7391acad9d2e167be043eca742ce8b07c01b0f4e66 + sha512sums = 7644e4cb173cb66d83cfc121b6eb9696d4b60ea119230e767aa17bb438c35a94b2d8fddd1369ebe052905c8c85765e927adb540a5c2310b4a2e9bb546597c4e6 + sha512sums = 144bc8f7ad1ec1c99d59f4a8db375d786f3e4d042d295e860397c76b80e0deaeb4a931fb0e19f30ee1fe192f597f046e7716af6f7795320d5573a7b30c461d3d + sha512sums = b660afcc9a61527e6f532d12905ed65175c226ff46b23bc3fdb79b37f73c6961722887042c01ccddebefb0ec249206979506e12e78bbe468fd648b9d34094db9 + sha512sums = e18f210dc4c225038c8093685bc9eb5cb957f7c1fd38998bd475ed15a771595738d72183adecc6434896b410b0692e6cadda0dbd5e99b6123e92443341bcb042 + sha512sums = b1884d78d37b4c2690546c681a1b485539b2b9af928e8177192c08bf5985c08481ca4d75a4f2f5e8f0a6b73776df851835e32913bd77a2dcc2586a9efb1f8d63 + sha512sums = 7f48da3c06155bd15bc938ce4ae8f95185dc8b51d924602d8b905db25083aba3fe1d095c087eeff11a274aa21874a0c986add52bcac7a5c0c40b62c91c60bdfa + sha512sums = 9b2d16d51d092901db8738ad4a520a6a06b42326201866069dcd2ae5b7a393cc7097d0eef752866a11072c61ab7a1dc60c175e8c60aa600d88088dff6f8e29f1 + sha512sums = 4e77ccd0aefe8bb0885cea88ceb5ef362e7838677c622427510027cd9866180345b7aa55be7dcacf61a28ba5b609cccb5c5fc3ca407f6ebf7ac21f5d43027575 + sha512sums = 2dd594a07f8ce62a7706a0365d764ab3ee3cc2d050d6ae4460db3152269e84f43516438a4f48f47fc54fe758a70c462baed6b7defa8b2bd277e67cb1bae8da12 + sha512sums = d77a2045f03c1327eb78517028c083e8965297a41d5a81df8c7dac5a8500aa242faa644a38be5d12914b68ba3a0b944c1bfe6dbfd7b88b1a0aeeec1d87a1619a + sha512sums = 3941928af296d14e82232824aebb2a3eaddba4211c4d383f2c98d2394500ddd5847e2efd4044c1d4bdbb44d145d55aab5d5b111381305398bbf356bdfc9ee10c + sha512sums = 9e1eea0ae01852a32ff3c391156da04fe8abba632890a3a5599471f415c84ac7d8ffdc5cf1317dcd7a17c043d4658267a9c9504dcd9f27168b1239a69c659995 + sha512sums = 5e14b4bff2746b7aaf6c6f53fb69949e51d999402c47b6f957cc87466b06867aef10471ad28e750401f1882c9225b8d42c61d57c71b536e215e9db69a52207d5 + sha512sums = cde43f9479cbb572abf6214ed448b0074feb3b0f8ba69c12ab929d1ac81ccd192cb7b9878d14fa65cebdc2d63bceecd4369678dbd27ee3ca557f6b8c2b1f2af7 + sha512sums = 16418d54549e605cc55dbcc0efab4dbe01c62f85604c552a641dd83de961d42d7843c72831e29f98f3f5fb173c73a6feee5300dcb8a19388d71a481167d3f4a9 + sha512sums = c186d1e76f68f412779b8ccac2a6ea84614b73e51d27cfdfcba6e0be04cb009a9f4e04e1dca03a0c5a5aa34656e52c980288f4985a4cacefc874ab27e55f62c3 + sha512sums = 5552e8918462f6c3a4e1baef3c22b57d70c732766945ea0b39f63df7d7b8fca9646f1f9b28b0528fa586799842c949298fc97e1041875da0ca1aacff046f6c9b + +pkgname = electron3 + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..df0c5a3304d9 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,254 @@ +# Maintainer: Patrick Schratz <patrick.schratz@gmail.com> +# adapted from last v3 build of community/electron + +_chromiumver=66.0.3359.181 +pkgname=electron3 +pkgver=3.1.11 +pkgrel=1 +pkgdesc='Build cross platform desktop apps with web technologies' +arch=('x86_64') +url='https://electronjs.org/' +license=('MIT' 'custom') +depends=('c-ares' 'ffmpeg' 'gtk3' 'http-parser' 'libevent' 'libxslt' 'libxss' + 'minizip' 'nss' 'snappy') +makedepends=('clang' 'git' 'gn' 'gperf' 'harfbuzz-icu' 'jsoncpp' 'libnotify' + 'lld' 'llvm' 'ninja' 'npm' 'pciutils' 'python2' 'wget' 'yasm') +optdepends=('kde-cli-tools: file deletion support (kioclient5)' + 'trash-cli: file deletion support (trash-put)' + "xdg-utils: open URLs with desktop's default (xdg-email, xdg-open)") +source=("git+https://github.com/electron/electron.git#tag=v${pkgver}" + 'git+https://github.com/boto/boto.git' + 'breakpad::git+https://github.com/electron/chromium-breakpad.git' + 'git+https://chromium.googlesource.com/chromium/src/tools/grit.git' + 'git+https://github.com/electron/gyp.git' + "git+https://github.com/electron/libchromiumcontent.git" + 'git+https://github.com/electron/node.git' + 'pdf_viewer::git+https://github.com/electron/pdf-viewer.git' + 'git+https://github.com/yaml/pyyaml.git' + 'git+https://github.com/kennethreitz/requests.git' + 'google-breakpad::git+https://chromium.googlesource.com/breakpad/breakpad/src' + "electron-chromium-${_chromiumver}.tar.bz2::https://s3.amazonaws.com/github-janky-artifacts/libchromiumcontent/linux/src/${_chromiumver}/src.tar.bz2" + 'electron.desktop' + 'default_app-icon.patch' + 'dont-bootstrap-libchromiumcontent.patch' + 'dont-update-submodules.patch' + 'dont-use-sysroot.patch' + 'no-clang-plugins.patch' + 'no-whole-archive.patch' + 'use-system-libraries-in-node.patch' + 'use-system-ffmpeg.patch' + 'breakpad-glibc2.26.patch' + 'gyp-no-rpath.patch' + 'libchromiumcontent-remove-useless-patches.patch' + 'libchromiumcontent-settings.patch' + 'libchromiumcontent-sort-filenames.patch' + 'libchromiumcontent-static-library-only.patch' + 'libchromiumcontent-use-system-tools.patch' + 'chromium-use-system-ffmpeg.patch' + 'chromium-use-system-re2.patch' + ) +noextract=("electron-chromium-${_chromiumver}.tar.bz2") +sha512sums=('SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + '64e3c617aba3af71213e8e36af38a39934f1f5c7eea53b2c09d9d9ac189397d8f3e95196f47552fbde83d9e062fb38f5ca48b6791caf5db42663b8a969cb7394' + '418b9f1c796bb8b9276afc44975988ae8ebc8a31420a08303c9fcf0fa9628f1bafa128542c07c39274346f7391acad9d2e167be043eca742ce8b07c01b0f4e66' + '7644e4cb173cb66d83cfc121b6eb9696d4b60ea119230e767aa17bb438c35a94b2d8fddd1369ebe052905c8c85765e927adb540a5c2310b4a2e9bb546597c4e6' + '144bc8f7ad1ec1c99d59f4a8db375d786f3e4d042d295e860397c76b80e0deaeb4a931fb0e19f30ee1fe192f597f046e7716af6f7795320d5573a7b30c461d3d' + 'b660afcc9a61527e6f532d12905ed65175c226ff46b23bc3fdb79b37f73c6961722887042c01ccddebefb0ec249206979506e12e78bbe468fd648b9d34094db9' + 'e18f210dc4c225038c8093685bc9eb5cb957f7c1fd38998bd475ed15a771595738d72183adecc6434896b410b0692e6cadda0dbd5e99b6123e92443341bcb042' + 'b1884d78d37b4c2690546c681a1b485539b2b9af928e8177192c08bf5985c08481ca4d75a4f2f5e8f0a6b73776df851835e32913bd77a2dcc2586a9efb1f8d63' + '7f48da3c06155bd15bc938ce4ae8f95185dc8b51d924602d8b905db25083aba3fe1d095c087eeff11a274aa21874a0c986add52bcac7a5c0c40b62c91c60bdfa' + '9b2d16d51d092901db8738ad4a520a6a06b42326201866069dcd2ae5b7a393cc7097d0eef752866a11072c61ab7a1dc60c175e8c60aa600d88088dff6f8e29f1' + '4e77ccd0aefe8bb0885cea88ceb5ef362e7838677c622427510027cd9866180345b7aa55be7dcacf61a28ba5b609cccb5c5fc3ca407f6ebf7ac21f5d43027575' + '2dd594a07f8ce62a7706a0365d764ab3ee3cc2d050d6ae4460db3152269e84f43516438a4f48f47fc54fe758a70c462baed6b7defa8b2bd277e67cb1bae8da12' + 'd77a2045f03c1327eb78517028c083e8965297a41d5a81df8c7dac5a8500aa242faa644a38be5d12914b68ba3a0b944c1bfe6dbfd7b88b1a0aeeec1d87a1619a' + '3941928af296d14e82232824aebb2a3eaddba4211c4d383f2c98d2394500ddd5847e2efd4044c1d4bdbb44d145d55aab5d5b111381305398bbf356bdfc9ee10c' + '9e1eea0ae01852a32ff3c391156da04fe8abba632890a3a5599471f415c84ac7d8ffdc5cf1317dcd7a17c043d4658267a9c9504dcd9f27168b1239a69c659995' + '5e14b4bff2746b7aaf6c6f53fb69949e51d999402c47b6f957cc87466b06867aef10471ad28e750401f1882c9225b8d42c61d57c71b536e215e9db69a52207d5' + 'cde43f9479cbb572abf6214ed448b0074feb3b0f8ba69c12ab929d1ac81ccd192cb7b9878d14fa65cebdc2d63bceecd4369678dbd27ee3ca557f6b8c2b1f2af7' + '16418d54549e605cc55dbcc0efab4dbe01c62f85604c552a641dd83de961d42d7843c72831e29f98f3f5fb173c73a6feee5300dcb8a19388d71a481167d3f4a9' + 'c186d1e76f68f412779b8ccac2a6ea84614b73e51d27cfdfcba6e0be04cb009a9f4e04e1dca03a0c5a5aa34656e52c980288f4985a4cacefc874ab27e55f62c3' + '5552e8918462f6c3a4e1baef3c22b57d70c732766945ea0b39f63df7d7b8fca9646f1f9b28b0528fa586799842c949298fc97e1041875da0ca1aacff046f6c9b') + +_system_libs=('ffmpeg' + 'flac' + 'harfbuzz-ng' +# 'icu' + 'libevent' + 'libjpeg' +# 'libpng' +# 'libvpx' + 'libwebp' + 'libxml' + 'libxslt' +# 're2' + 'snappy' + 'yasm' + 'zlib' + ) + +prepare() { + cd "${srcdir}"/electron + + patch -Np1 -i "${srcdir}"/default_app-icon.patch # Icon from .desktop file + patch -Np1 -i "${srcdir}"/use-system-libraries-in-node.patch + patch -Np1 -i "${srcdir}"/use-system-ffmpeg.patch + patch -Np1 -i "${srcdir}"/dont-update-submodules.patch + patch -Np1 -i "${srcdir}"/dont-use-sysroot.patch + patch -Np1 -i "${srcdir}"/dont-bootstrap-libchromiumcontent.patch + patch -Np1 -i "${srcdir}"/no-clang-plugins.patch + patch -Np1 -i "${srcdir}"/no-whole-archive.patch + + # Add extra libraries for unbundling, remove unneeded libraries + sed -e "s/'-lexpat',/'-lexpat', '<\!@(pkg-config --libs-only-l libavcodec libavformat libavutil libevent flac harfbuzz-icu libjpeg jsoncpp minizip libpulse snappy libwebpdemux libwebpmux libxml-2.0 libxslt zlib)', '-latomic',/" \ + -e 's/ gconf-2.0//' \ + -i brightray/brightray.gyp + + mkdir -p "${srcdir}"/python2-path + ln -sf /usr/bin/python2 "${srcdir}/python2-path/python" + + for m in boto breakpad gyp libchromiumcontent node pdf_viewer requests; do + git submodule init vendor/${m} + git config submodule.vendor/${m}.url "${srcdir}/${m}" + done + git submodule update + + cd "${srcdir}"/electron/vendor/pdf_viewer + git submodule init vendor/grit + git config submodule.vendor/grit.url "${srcdir}/grit" + git submodule update + + cd "${srcdir}"/electron/vendor/breakpad + git submodule init src + git config submodule.src.url "${srcdir}"/google-breakpad + git submodule update + patch -Np1 -i "${srcdir}"/breakpad-glibc2.26.patch + + cd "${srcdir}"/electron/vendor/gyp + # Remove a useless $ORIGIN/lib/ rpath from the electron binary + patch -Np1 -i "${srcdir}"/gyp-no-rpath.patch + + cd "${srcdir}"/electron/vendor/libchromiumcontent + for m in pyyaml; do + git submodule init vendor/${m} + git config submodule.vendor/${m}.url "${srcdir}/${m}" + done + git submodule update + patch -Np1 -i "${srcdir}"/libchromiumcontent-remove-useless-patches.patch + patch -Np1 -i "${srcdir}"/libchromiumcontent-settings.patch + patch -Np1 -i "${srcdir}"/libchromiumcontent-sort-filenames.patch # deterministic build + patch -Np1 -i "${srcdir}"/libchromiumcontent-use-system-tools.patch + patch -Np1 -i "${srcdir}"/libchromiumcontent-static-library-only.patch + rm -r patches/common/ffmpeg # Use system FFmpeg + echo 'Extracting chromium source...' + tar -xf "${srcdir}"/electron-chromium-${_chromiumver}.tar.bz2 + cd src + patch -Np1 -i "${srcdir}"/chromium-use-system-ffmpeg.patch + patch -Np1 -i "${srcdir}"/chromium-use-system-re2.patch + + for lib in "${_system_libs[@]}" libjpeg_turbo; do + find -type f -path "*third_party/${lib}/*" \ + \! -path "*third_party/${lib}/chromium/*" \ + \! -path "*third_party/${lib}/google/*" \ + \! -path "*base/third_party/icu/*" \ + \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \ + -delete + done + python2 build/linux/unbundle/replace_gn_files.py --system-libraries "${_system_libs[@]}" + + # Create sysmlink to system Node.js + mkdir -p third_party/node/linux/node-linux-x64/bin + ln -sf /usr/bin/node third_party/node/linux/node-linux-x64/bin +} + +build() { + export PATH="${srcdir}/python2-path:${PATH}" + export CC=clang + export CXX=clang++ + export AR=ar + export NM=nm + + cd "${srcdir}/electron/vendor/libchromiumcontent" + script/update -t x64 --skip_gclient + script/build -t x64 -c static_library + script/create-dist -c static_library --no_zip -t x64 + + cd "${srcdir}"/electron + LDFLAGS="${LDFLAGS} -Wl,-z,noexecstack" + distdir="${srcdir}/electron/vendor/libchromiumcontent/dist/main" + script/bootstrap.py --verbose \ + --clang_dir=/usr \ + --libcc_source_path="${distdir}/src" \ + --libcc_shared_library_path="${distdir}/shared_library" \ + --libcc_static_library_path="${distdir}/static_library" + script/build.py -c Release --ninja-path=ninja +} + +package() { + cd "${srcdir}"/electron + + _cc="${srcdir}"/electron/vendor/libchromiumcontent/dist/main + + install -d -m755 "${pkgdir}"/usr/share/licenses/electron + install -m644 LICENSE "${pkgdir}"/usr/share/licenses/electron + install -m644 LICENSE "${_cc}"/LICENSES.chromium.html \ + "${pkgdir}"/usr/share/licenses/electron + install -m644 native_mate/LICENSE.chromium \ + "${pkgdir}"/usr/share/licenses/electron/LICENSE-native_mate + install -m644 vendor/node/LICENSE \ + "${pkgdir}"/usr/share/licenses/electron/LICENSE-node + install -m644 vendor/libchromiumcontent/LICENSE.txt \ + "${pkgdir}"/usr/share/licenses/electron/LICENSE-libchromiumcontent + install -m644 vendor/libchromiumcontent/src/LICENSE \ + "${pkgdir}"/usr/share/licenses/electron/LICENSE-chromium + + cd out/R + install -d -m755 "${pkgdir}"/usr/lib/electron + install -m644 blink_image_resources_200_percent.pak \ + content_resources_200_percent.pak content_shell.pak icudtl.dat \ + natives_blob.bin \ + ui_resources_200_percent.pak \ + v8_context_snapshot.bin \ + views_resources_200_percent.pak \ + "${pkgdir}"/usr/lib/electron + install -m755 electron "${pkgdir}"/usr/lib/electron + install -dm755 "${pkgdir}"/usr/bin + ln -s ../lib/electron/electron "${pkgdir}"/usr/bin + # namcap warning: Referenced library 'libnode.so' is an uninstalled dependency + # Fixable by moving libnode.so to /usr/lib + install -m644 libnode.so "${pkgdir}"/usr/lib/electron + cp -r locales resources "${pkgdir}"/usr/lib/electron + cd ../.. + + echo -n "v${pkgver}" > "${pkgdir}"/usr/lib/electron/version + + # Install .desktop and icon file + install -Dm644 "${srcdir}"/electron.desktop \ + "${pkgdir}"/usr/share/applications/electron.desktop + install -Dm644 default_app/icon.png \ + "${pkgdir}"/usr/share/pixmaps/electron.png # hicolor has no 1024x1024 + + # Install Node headers + _headers_dest="${pkgdir}/usr/lib/electron/node" + install -d -m755 "${_headers_dest}" + cd "${srcdir}"/electron/vendor/node + find src deps/http_parser deps/zlib deps/uv deps/npm \ + -name "*.gypi" \ + -exec install -D -m644 '{}' "${_headers_dest}/{}" \; \ + -or -name "*.h" \ + -exec install -D -m644 '{}' "${_headers_dest}/{}" \; + install -m644 {common,config}.gypi "${_headers_dest}" + cd "${_cc}"/src + find v8 -name "*.h" \ + -exec install -D -m644 '{}' "${_headers_dest}/deps/{}" \; + # echo '9' > "${_headers_dest}/installVersion" +} diff --git a/breakpad-glibc2.26.patch b/breakpad-glibc2.26.patch new file mode 100644 index 000000000000..116fd4b204ef --- /dev/null +++ b/breakpad-glibc2.26.patch @@ -0,0 +1,208 @@ +--- a/src/client/linux/dump_writer_common/ucontext_reader.cc ++++ b/src/client/linux/dump_writer_common/ucontext_reader.cc +@@ -36,19 +36,19 @@ namespace google_breakpad { + + // Minidump defines register structures which are different from the raw + // structures which we get from the kernel. These are platform specific +-// functions to juggle the ucontext and user structures into minidump format. ++// functions to juggle the ucontext_t and user structures into minidump format. + + #if defined(__i386__) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[REG_ESP]; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[REG_EIP]; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc, + const struct _libc_fpstate* fp) { + const greg_t* regs = uc->uc_mcontext.gregs; + +@@ -88,15 +88,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, + + #elif defined(__x86_64) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[REG_RSP]; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[REG_RIP]; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc, + const struct _libc_fpstate* fpregs) { + const greg_t* regs = uc->uc_mcontext.gregs; + +@@ -145,15 +145,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, + + #elif defined(__ARM_EABI__) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.arm_sp; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.arm_pc; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) { ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) { + out->context_flags = MD_CONTEXT_ARM_FULL; + + out->iregs[0] = uc->uc_mcontext.arm_r0; +@@ -184,15 +184,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) { + + #elif defined(__aarch64__) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.sp; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.pc; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc, + const struct fpsimd_context* fpregs) { + out->context_flags = MD_CONTEXT_ARM64_FULL; + +@@ -210,15 +210,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, + + #elif defined(__mips__) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[MD_CONTEXT_MIPS_REG_SP]; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.pc; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) { ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) { + #if _MIPS_SIM == _ABI64 + out->context_flags = MD_CONTEXT_MIPS64_FULL; + #elif _MIPS_SIM == _ABIO32 +--- a/src/client/linux/dump_writer_common/ucontext_reader.h ++++ b/src/client/linux/dump_writer_common/ucontext_reader.h +@@ -39,23 +39,23 @@ + + namespace google_breakpad { + +-// Wraps platform-dependent implementations of accessors to ucontext structs. ++// Wraps platform-dependent implementations of accessors to ucontext_t structs. + struct UContextReader { +- static uintptr_t GetStackPointer(const struct ucontext* uc); ++ static uintptr_t GetStackPointer(const ucontext_t* uc); + +- static uintptr_t GetInstructionPointer(const struct ucontext* uc); ++ static uintptr_t GetInstructionPointer(const ucontext_t* uc); + +- // Juggle a arch-specific ucontext into a minidump format ++ // Juggle a arch-specific ucontext_t into a minidump format + // out: the minidump structure + // info: the collection of register structures. + #if defined(__i386__) || defined(__x86_64) +- static void FillCPUContext(RawContextCPU *out, const ucontext *uc, ++ static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc, + const struct _libc_fpstate* fp); + #elif defined(__aarch64__) +- static void FillCPUContext(RawContextCPU *out, const ucontext *uc, ++ static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc, + const struct fpsimd_context* fpregs); + #else +- static void FillCPUContext(RawContextCPU *out, const ucontext *uc); ++ static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc); + #endif + }; + +--- a/src/client/linux/handler/exception_handler.cc ++++ b/src/client/linux/handler/exception_handler.cc +@@ -439,9 +439,9 @@ bool ExceptionHandler::HandleSignal(int /*sig*/, siginfo_t* info, void* uc) { + // Fill in all the holes in the struct to make Valgrind happy. + memset(&g_crash_context_, 0, sizeof(g_crash_context_)); + memcpy(&g_crash_context_.siginfo, info, sizeof(siginfo_t)); +- memcpy(&g_crash_context_.context, uc, sizeof(struct ucontext)); ++ memcpy(&g_crash_context_.context, uc, sizeof(ucontext_t)); + #if defined(__aarch64__) +- struct ucontext* uc_ptr = (struct ucontext*)uc; ++ ucontext_t* uc_ptr = (ucontext_t*)uc; + struct fpsimd_context* fp_ptr = + (struct fpsimd_context*)&uc_ptr->uc_mcontext.__reserved; + if (fp_ptr->head.magic == FPSIMD_MAGIC) { +@@ -450,9 +450,9 @@ bool ExceptionHandler::HandleSignal(int /*sig*/, siginfo_t* info, void* uc) { + } + #elif !defined(__ARM_EABI__) && !defined(__mips__) + // FP state is not part of user ABI on ARM Linux. +- // In case of MIPS Linux FP state is already part of struct ucontext ++ // In case of MIPS Linux FP state is already part of ucontext_t + // and 'float_state' is not a member of CrashContext. +- struct ucontext* uc_ptr = (struct ucontext*)uc; ++ ucontext_t* uc_ptr = (ucontext_t*)uc; + if (uc_ptr->uc_mcontext.fpregs) { + memcpy(&g_crash_context_.float_state, uc_ptr->uc_mcontext.fpregs, + sizeof(g_crash_context_.float_state)); +@@ -476,7 +476,7 @@ bool ExceptionHandler::SimulateSignalDelivery(int sig) { + // ExceptionHandler::HandleSignal(). + siginfo.si_code = SI_USER; + siginfo.si_pid = getpid(); +- struct ucontext context; ++ ucontext_t context; + getcontext(&context); + return HandleSignal(sig, &siginfo, &context); + } +--- a/src/client/linux/handler/exception_handler.h ++++ b/src/client/linux/handler/exception_handler.h +@@ -191,11 +191,11 @@ class ExceptionHandler { + struct CrashContext { + siginfo_t siginfo; + pid_t tid; // the crashing thread. +- struct ucontext context; ++ ucontext_t context; + #if !defined(__ARM_EABI__) && !defined(__mips__) + // #ifdef this out because FP state is not part of user ABI for Linux ARM. + // In case of MIPS Linux FP state is already part of struct +- // ucontext so 'float_state' is not required. ++ // ucontext_t so 'float_state' is not required. + fpstate_t float_state; + #endif + }; +--- a/src/client/linux/microdump_writer/microdump_writer.cc ++++ b/src/client/linux/microdump_writer/microdump_writer.cc +@@ -560,7 +560,7 @@ class MicrodumpWriter { + + void* Alloc(unsigned bytes) { return dumper_->allocator()->Alloc(bytes); } + +- const struct ucontext* const ucontext_; ++ const ucontext_t* const ucontext_; + #if !defined(__ARM_EABI__) && !defined(__mips__) + const google_breakpad::fpstate_t* const float_state_; + #endif +--- a/src/client/linux/minidump_writer/minidump_writer.cc ++++ b/src/client/linux/minidump_writer/minidump_writer.cc +@@ -1248,7 +1248,7 @@ class MinidumpWriter { + const int fd_; // File descriptor where the minidum should be written. + const char* path_; // Path to the file where the minidum should be written. + +- const struct ucontext* const ucontext_; // also from the signal handler ++ const ucontext_t* const ucontext_; // also from the signal handler + #if !defined(__ARM_EABI__) && !defined(__mips__) + const google_breakpad::fpstate_t* const float_state_; // ditto + #endif diff --git a/chromium-use-system-ffmpeg.patch b/chromium-use-system-ffmpeg.patch new file mode 100644 index 000000000000..e40bdb308002 --- /dev/null +++ b/chromium-use-system-ffmpeg.patch @@ -0,0 +1,22 @@ +--- a/build/linux/unbundle/ffmpeg.gn ++++ b/build/linux/unbundle/ffmpeg.gn +@@ -14,8 +14,8 @@ + ] + } + +-buildflag_header("ffmpeg_buildflags") { +- header = "ffmpeg_buildflags.h" ++buildflag_header("ffmpeg_features") { ++ header = "ffmpeg_features.h" + flags = [ "USE_SYSTEM_FFMPEG=true" ] + } + +@@ -30,7 +30,7 @@ + + source_set("ffmpeg") { + deps = [ +- ":ffmpeg_buildflags", ++ ":ffmpeg_features", + ":ffmpeg_shim", + ] + public_configs = [ ":system_ffmpeg" ] diff --git a/chromium-use-system-re2.patch b/chromium-use-system-re2.patch new file mode 100644 index 000000000000..e8237b5c2d6c --- /dev/null +++ b/chromium-use-system-re2.patch @@ -0,0 +1,10 @@ +--- a/build/linux/unbundle/re2.gn ++++ b/build/linux/unbundle/re2.gn +@@ -11,7 +11,6 @@ + "re2/re2.h", + "re2/set.h", + "re2/stringpiece.h", +- "re2/variadic_function.h", + ] + } + diff --git a/default_app-icon.patch b/default_app-icon.patch new file mode 100644 index 000000000000..a6c53aa5a9aa --- /dev/null +++ b/default_app-icon.patch @@ -0,0 +1,22 @@ +--- a/default_app/default_app.js ++++ b/default_app/default_app.js +@@ -20,9 +20,6 @@ exports.load = (appUrl) => { + }, + useContentSize: true + } +- if (process.platform === 'linux') { +- options.icon = path.join(__dirname, 'icon.png') +- } + + mainWindow = new BrowserWindow(options) + mainWindow.loadURL(appUrl) +--- a/filenames.gypi ++++ b/filenames.gypi +@@ -93,7 +93,6 @@ + ], + 'default_app_sources': [ + 'default_app/default_app.js', +- 'default_app/icon.png', + 'default_app/index.html', + 'default_app/main.js', + 'default_app/package.json', diff --git a/dont-bootstrap-libchromiumcontent.patch b/dont-bootstrap-libchromiumcontent.patch new file mode 100644 index 000000000000..e6971e848467 --- /dev/null +++ b/dont-bootstrap-libchromiumcontent.patch @@ -0,0 +1,11 @@ +--- a/script/build-libchromiumcontent.py ++++ b/script/build-libchromiumcontent.py +@@ -44,7 +44,7 @@ def main(): + build = os.path.join(script_dir, 'build') + create_dist = os.path.join(script_dir, 'create-dist') + if args.force_update or libchromiumcontent_outdated(): +- execute_stdout([sys.executable, bootstrap]) ++ # execute_stdout([sys.executable, bootstrap]) + execute_stdout([sys.executable, update, '-t', args.target_arch]) + update_gclient_done_marker() + if args.debug: diff --git a/dont-update-submodules.patch b/dont-update-submodules.patch new file mode 100644 index 000000000000..9d4419d3e5d4 --- /dev/null +++ b/dont-update-submodules.patch @@ -0,0 +1,11 @@ +--- a/script/bootstrap.py ++++ b/script/bootstrap.py +@@ -33,7 +33,7 @@ def main(): + + check_tls(args.verbose) + +- update_submodules() ++ # update_submodules() + + libcc_source_path = args.libcc_source_path + libcc_shared_library_path = args.libcc_shared_library_path diff --git a/dont-use-sysroot.patch b/dont-use-sysroot.patch new file mode 100644 index 000000000000..6e23b81e3279 --- /dev/null +++ b/dont-use-sysroot.patch @@ -0,0 +1,27 @@ +--- a/script/bootstrap.py ++++ b/script/bootstrap.py +@@ -65,9 +65,6 @@ def main(): + libcc_source_path, libcc_shared_library_path, + libcc_static_library_path) + +- if PLATFORM == 'linux' and args.target_arch != 'mips64el': +- download_sysroot(args.target_arch) +- + create_chrome_version_h() + touch_config_gypi() + run_update(defines, args.msvs) +--- a/toolchain.gypi ++++ b/toolchain.gypi +@@ -62,10 +62,10 @@ + 'sysroot%': '<(source_root)/vendor/debian_stretch_arm64-sysroot', + }], + ['target_arch=="ia32"', { +- 'sysroot%': '<(source_root)/vendor/debian_stretch_i386-sysroot', ++ 'sysroot%': '/', + }], + ['target_arch=="x64"', { +- 'sysroot%': '<(source_root)/vendor/debian_stretch_amd64-sysroot', ++ 'sysroot%': '/', + }], + ['target_arch=="mips64el"', { + 'sysroot%': '<(source_root)/vendor/debian_jessie_mips64-sysroot', diff --git a/electron.desktop b/electron.desktop new file mode 100644 index 000000000000..792ecb1635ca --- /dev/null +++ b/electron.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Type=Application +Name=Electron3 +Icon=electron +Exec=electron3 %u +Categories=Development;GTK; +StartupNotify=true diff --git a/gyp-no-rpath.patch b/gyp-no-rpath.patch new file mode 100644 index 000000000000..2843e98fc1a6 --- /dev/null +++ b/gyp-no-rpath.patch @@ -0,0 +1,12 @@ +--- a/pylib/gyp/generator/ninja.py ++++ b/pylib/gyp/generator/ninja.py +@@ -1231,9 +1231,6 @@ + rpath = 'lib/' + if self.toolset != 'target': + rpath += self.toolset +- ldflags.append(r'-Wl,-rpath=\$$ORIGIN/%s' % rpath) +- else: +- ldflags.append('-Wl,-rpath=%s' % self.target_rpath) + ldflags.append('-Wl,-rpath-link=%s' % rpath) + self.WriteVariableList(ninja_file, 'ldflags', + map(self.ExpandSpecial, ldflags)) diff --git a/libchromiumcontent-remove-useless-patches.patch b/libchromiumcontent-remove-useless-patches.patch new file mode 100644 index 000000000000..4a7f3b2ebe20 --- /dev/null +++ b/libchromiumcontent-remove-useless-patches.patch @@ -0,0 +1,518 @@ +--- a/patches/common/v8/.patches.yaml ++++ b/patches/common/v8/.patches.yaml +@@ -22,11 +22,6 @@ + file: dcheck.patch + description: null + - +- owners: nitsakh +- file: disable-warning-win.patch +- description: +- Disable unit test windows build warning +-- + owners: alexeykuzmin + file: backport_b767cde1e7.patch + description: Node 10.0.0 needs it. +--- a/patches/common/v8/backport_23652c5f.patch ++++ b/patches/common/v8/backport_23652c5f.patch +@@ -55,107 +55,3 @@ + ~JSONTraceWriter(); + void AppendTraceEvent(TraceObject* trace_event) override; + void Flush() override; +-diff --git a/test/cctest/libplatform/test-tracing.cc b/test/cctest/libplatform/test-tracing.cc +-index da202057de..b949785bcf 100644 +---- a/test/cctest/libplatform/test-tracing.cc +-+++ b/test/cctest/libplatform/test-tracing.cc +-@@ -128,44 +128,42 @@ TEST(TestTraceBufferRingBuffer) { +- delete ring_buffer; +- } +- +--TEST(TestJSONTraceWriter) { +-- std::ostringstream stream; +-- // Create a scope for the tracing controller to terminate the trace writer. +-- { +-- v8::Platform* old_platform = i::V8::GetCurrentPlatform(); +-- std::unique_ptr<v8::Platform> default_platform( +-- v8::platform::NewDefaultPlatform()); +-- i::V8::SetPlatformForTesting(default_platform.get()); +-- auto tracing = +-- base::make_unique<v8::platform::tracing::TracingController>(); +-- v8::platform::tracing::TracingController* tracing_controller = +-- tracing.get(); +-- static_cast<v8::platform::DefaultPlatform*>(default_platform.get()) +-- ->SetTracingController(std::move(tracing)); +-- TraceWriter* writer = TraceWriter::CreateJSONTraceWriter(stream); +-+void PopulateJSONWriter(TraceWriter* writer) { +-+ v8::Platform* old_platform = i::V8::GetCurrentPlatform(); +-+ std::unique_ptr<v8::Platform> default_platform( +-+ v8::platform::NewDefaultPlatform()); +-+ i::V8::SetPlatformForTesting(default_platform.get()); +-+ auto tracing = base::make_unique<v8::platform::tracing::TracingController>(); +-+ v8::platform::tracing::TracingController* tracing_controller = tracing.get(); +-+ static_cast<v8::platform::DefaultPlatform*>(default_platform.get()) +-+ ->SetTracingController(std::move(tracing)); +- +-- TraceBuffer* ring_buffer = +-- TraceBuffer::CreateTraceBufferRingBuffer(1, writer); +-- tracing_controller->Initialize(ring_buffer); +-- TraceConfig* trace_config = new TraceConfig(); +-- trace_config->AddIncludedCategory("v8-cat"); +-- tracing_controller->StartTracing(trace_config); +-+ TraceBuffer* ring_buffer = +-+ TraceBuffer::CreateTraceBufferRingBuffer(1, writer); +-+ tracing_controller->Initialize(ring_buffer); +-+ TraceConfig* trace_config = new TraceConfig(); +-+ trace_config->AddIncludedCategory("v8-cat"); +-+ tracing_controller->StartTracing(trace_config); +- +-- TraceObject trace_object; +-- trace_object.InitializeForTesting( +-- 'X', tracing_controller->GetCategoryGroupEnabled("v8-cat"), "Test0", +-- v8::internal::tracing::kGlobalScope, 42, 123, 0, nullptr, nullptr, +-- nullptr, nullptr, TRACE_EVENT_FLAG_HAS_ID, 11, 22, 100, 50, 33, 44); +-- writer->AppendTraceEvent(&trace_object); +-- trace_object.InitializeForTesting( +-- 'Y', tracing_controller->GetCategoryGroupEnabled("v8-cat"), "Test1", +-- v8::internal::tracing::kGlobalScope, 43, 456, 0, nullptr, nullptr, +-- nullptr, nullptr, 0, 55, 66, 110, 55, 77, 88); +-- writer->AppendTraceEvent(&trace_object); +-- tracing_controller->StopTracing(); +-- i::V8::SetPlatformForTesting(old_platform); +-- } +-+ TraceObject trace_object; +-+ trace_object.InitializeForTesting( +-+ 'X', tracing_controller->GetCategoryGroupEnabled("v8-cat"), "Test0", +-+ v8::internal::tracing::kGlobalScope, 42, 123, 0, nullptr, nullptr, +-+ nullptr, nullptr, TRACE_EVENT_FLAG_HAS_ID, 11, 22, 100, 50, 33, 44); +-+ writer->AppendTraceEvent(&trace_object); +-+ trace_object.InitializeForTesting( +-+ 'Y', tracing_controller->GetCategoryGroupEnabled("v8-cat"), "Test1", +-+ v8::internal::tracing::kGlobalScope, 43, 456, 0, nullptr, nullptr, +-+ nullptr, nullptr, 0, 55, 66, 110, 55, 77, 88); +-+ writer->AppendTraceEvent(&trace_object); +-+ tracing_controller->StopTracing(); +-+ i::V8::SetPlatformForTesting(old_platform); +-+} +- +-+TEST(TestJSONTraceWriter) { +-+ std::ostringstream stream; +-+ TraceWriter* writer = TraceWriter::CreateJSONTraceWriter(stream); +-+ PopulateJSONWriter(writer); +- std::string trace_str = stream.str(); +- std::string expected_trace_str = +- "{\"traceEvents\":[{\"pid\":11,\"tid\":22,\"ts\":100,\"tts\":50," +-@@ -177,6 +175,21 @@ TEST(TestJSONTraceWriter) { +- CHECK_EQ(expected_trace_str, trace_str); +- } +- +-+TEST(TestJSONTraceWriterWithCustomtag) { +-+ std::ostringstream stream; +-+ TraceWriter* writer = TraceWriter::CreateJSONTraceWriter(stream, "customTag"); +-+ PopulateJSONWriter(writer); +-+ std::string trace_str = stream.str(); +-+ std::string expected_trace_str = +-+ "{\"customTag\":[{\"pid\":11,\"tid\":22,\"ts\":100,\"tts\":50," +-+ "\"ph\":\"X\",\"cat\":\"v8-cat\",\"name\":\"Test0\",\"dur\":33," +-+ "\"tdur\":44,\"id\":\"0x2a\",\"args\":{}},{\"pid\":55,\"tid\":66," +-+ "\"ts\":110,\"tts\":55,\"ph\":\"Y\",\"cat\":\"v8-cat\",\"name\":" +-+ "\"Test1\",\"dur\":77,\"tdur\":88,\"args\":{}}]}"; +-+ +-+ CHECK_EQ(expected_trace_str, trace_str); +-+} +-+ +- TEST(TestTracingController) { +- v8::Platform* old_platform = i::V8::GetCurrentPlatform(); +- std::unique_ptr<v8::Platform> default_platform( +--- a/patches/common/v8/backport_2eb23a17.patch ++++ b/patches/common/v8/backport_2eb23a17.patch +@@ -709,300 +709,3 @@ + F(SystemBreak, 0, 1) \ + F(TraceEnter, 0, 1) \ + F(TraceExit, 1, 1) \ +-diff --git a/test/cctest/test-typedarrays.cc b/test/cctest/test-typedarrays.cc +-index 7ec9197b65..bab6e0f2f6 100644 +---- a/test/cctest/test-typedarrays.cc +-+++ b/test/cctest/test-typedarrays.cc +-@@ -117,12 +117,12 @@ void TestSpeciesProtector(char* code, +- +- v8::internal::Isolate* i_isolate = +- reinterpret_cast<v8::internal::Isolate*>(isolate); +-- CHECK(i_isolate->IsSpeciesLookupChainIntact()); +-+ CHECK(i_isolate->IsTypedArraySpeciesLookupChainIntact()); +- CompileRun(code); +- if (invalidates_species_protector) { +-- CHECK(!i_isolate->IsSpeciesLookupChainIntact()); +-+ CHECK(!i_isolate->IsTypedArraySpeciesLookupChainIntact()); +- } else { +-- CHECK(i_isolate->IsSpeciesLookupChainIntact()); +-+ CHECK(i_isolate->IsTypedArraySpeciesLookupChainIntact()); +- } +- +- v8::Local<v8::Value> my_typed_array = CompileRun("MyTypedArray"); +-diff --git a/test/mjsunit/es6/array-species-constructor-accessor.js b/test/mjsunit/es6/array-species-constructor-accessor.js +-index 7ebf328a8a..7185d98b58 100644 +---- a/test/mjsunit/es6/array-species-constructor-accessor.js +-+++ b/test/mjsunit/es6/array-species-constructor-accessor.js +-@@ -18,7 +18,7 @@ assertEquals(1, x.concat([1])[0]); +- class MyArray extends Array { } +- +- Object.defineProperty(x, 'constructor', {get() { return MyArray; }}); +--assertFalse(%SpeciesProtector()); +-+assertFalse(%ArraySpeciesProtector()); +- +- assertEquals(MyArray, x.map(()=>{}).constructor); +- assertEquals(MyArray, x.filter(()=>{}).constructor); +-diff --git a/test/mjsunit/es6/array-species-constructor-delete.js b/test/mjsunit/es6/array-species-constructor-delete.js +-index fff22a2a8c..3b85d52565 100644 +---- a/test/mjsunit/es6/array-species-constructor-delete.js +-+++ b/test/mjsunit/es6/array-species-constructor-delete.js +-@@ -19,7 +19,7 @@ class MyArray extends Array { } +- +- Object.prototype.constructor = MyArray; +- delete Array.prototype.constructor; +--assertFalse(%SpeciesProtector()); +-+assertFalse(%ArraySpeciesProtector()); +- +- assertEquals(MyArray, x.map(()=>{}).constructor); +- assertEquals(MyArray, x.filter(()=>{}).constructor); +-diff --git a/test/mjsunit/es6/array-species-constructor.js b/test/mjsunit/es6/array-species-constructor.js +-index 0d888f46ee..07e897d458 100644 +---- a/test/mjsunit/es6/array-species-constructor.js +-+++ b/test/mjsunit/es6/array-species-constructor.js +-@@ -18,7 +18,7 @@ assertEquals(1, x.concat([1])[0]); +- class MyArray extends Array { } +- +- x.constructor = MyArray; +--assertFalse(%SpeciesProtector()); +-+assertFalse(%ArraySpeciesProtector()); +- +- assertEquals(MyArray, x.map(()=>{}).constructor); +- assertEquals(MyArray, x.filter(()=>{}).constructor); +-diff --git a/test/mjsunit/es6/array-species-delete.js b/test/mjsunit/es6/array-species-delete.js +-index 16a2fa26f9..2f0f50a1b2 100644 +---- a/test/mjsunit/es6/array-species-delete.js +-+++ b/test/mjsunit/es6/array-species-delete.js +-@@ -19,7 +19,7 @@ class MyArray extends Array { } +- +- Object.prototype[Symbol.species] = MyArray; +- delete Array[Symbol.species]; +--assertFalse(%SpeciesProtector()); +-+assertFalse(%ArraySpeciesProtector()); +- +- assertEquals(MyArray, x.map(()=>{}).constructor); +- assertEquals(MyArray, x.filter(()=>{}).constructor); +-diff --git a/test/mjsunit/es6/array-species-modified.js b/test/mjsunit/es6/array-species-modified.js +-index 58feb31669..d5a707997a 100644 +---- a/test/mjsunit/es6/array-species-modified.js +-+++ b/test/mjsunit/es6/array-species-modified.js +-@@ -18,7 +18,7 @@ assertEquals(1, x.concat([1])[0]); +- class MyArray extends Array { } +- +- Object.defineProperty(Array, Symbol.species, {value: MyArray}); +--assertFalse(%SpeciesProtector()); +-+assertFalse(%ArraySpeciesProtector()); +- +- assertEquals(MyArray, x.map(()=>{}).constructor); +- assertEquals(MyArray, x.filter(()=>{}).constructor); +-diff --git a/test/mjsunit/es6/array-species-parent-constructor.js b/test/mjsunit/es6/array-species-parent-constructor.js +-index b4fb1d56e3..8a861fb05d 100644 +---- a/test/mjsunit/es6/array-species-parent-constructor.js +-+++ b/test/mjsunit/es6/array-species-parent-constructor.js +-@@ -18,7 +18,7 @@ assertEquals(1, x.concat([1])[0]); +- class MyArray extends Array { } +- +- Array.prototype.constructor = MyArray; +--assertFalse(%SpeciesProtector()); +-+assertFalse(%ArraySpeciesProtector()); +- +- assertEquals(MyArray, x.map(()=>{}).constructor); +- assertEquals(MyArray, x.filter(()=>{}).constructor); +-diff --git a/test/mjsunit/es6/array-species-proto.js b/test/mjsunit/es6/array-species-proto.js +-index 6b55881cd6..d8e2ae5ddd 100644 +---- a/test/mjsunit/es6/array-species-proto.js +-+++ b/test/mjsunit/es6/array-species-proto.js +-@@ -18,7 +18,7 @@ assertEquals(1, x.concat([1])[0]); +- class MyArray extends Array { } +- +- x.__proto__ = MyArray.prototype; +--assertTrue(%SpeciesProtector()); +-+assertTrue(%ArraySpeciesProtector()); +- +- assertEquals(MyArray, x.map(()=>{}).constructor); +- assertEquals(MyArray, x.filter(()=>{}).constructor); +-diff --git a/test/mjsunit/harmony/regexp-named-captures.js b/test/mjsunit/harmony/regexp-named-captures.js +-index 72041b99bf..aab8393392 100644 +---- a/test/mjsunit/harmony/regexp-named-captures.js +-+++ b/test/mjsunit/harmony/regexp-named-captures.js +-@@ -425,7 +425,7 @@ function toSlowMode(re) { +- { +- const re = /./; +- const result = re.exec("a"); +-- assertTrue(%SpeciesProtector()); +-+ assertTrue(%ArraySpeciesProtector()); +- assertEquals(result.__proto__, Array.prototype); +- assertTrue(result.hasOwnProperty('groups')); +- assertArrayEquals(["a"], result); +-@@ -433,7 +433,7 @@ function toSlowMode(re) { +- assertEquals(undefined, result.groups); +- +- Array.prototype.groups = { a: "b" }; +-- assertTrue(%SpeciesProtector()); +-+ assertTrue(%ArraySpeciesProtector()); +- assertEquals("$<a>", "a".replace(re, "$<a>")); +- Array.prototype.groups = undefined; +- } +-@@ -441,7 +441,7 @@ function toSlowMode(re) { +- { +- const re = toSlowMode(/./); +- const result = re.exec("a"); +-- assertTrue(%SpeciesProtector()); +-+ assertTrue(%ArraySpeciesProtector()); +- assertEquals(result.__proto__, Array.prototype); +- assertTrue(result.hasOwnProperty('groups')); +- assertArrayEquals(["a"], result); +-@@ -449,7 +449,7 @@ function toSlowMode(re) { +- assertEquals(undefined, result.groups); +- +- Array.prototype.groups = { a: "b" }; +-- assertTrue(%SpeciesProtector()); +-+ assertTrue(%ArraySpeciesProtector()); +- assertEquals("$<a>", "a".replace(re, "$<a>")); +- Array.prototype.groups = undefined; +- } +-@@ -457,7 +457,7 @@ function toSlowMode(re) { +- { +- const re = /(?<a>a).|(?<x>x)/; +- const result = re.exec("ab"); +-- assertTrue(%SpeciesProtector()); +-+ assertTrue(%ArraySpeciesProtector()); +- assertEquals(result.__proto__, Array.prototype); +- assertTrue(result.hasOwnProperty('groups')); +- assertArrayEquals(["ab", "a", undefined], result); +-@@ -467,7 +467,7 @@ function toSlowMode(re) { +- // a is a matched named capture, b is an unmatched named capture, and z +- // is not a named capture. +- Array.prototype.groups = { a: "b", x: "y", z: "z" }; +-- assertTrue(%SpeciesProtector()); +-+ assertTrue(%ArraySpeciesProtector()); +- assertEquals("a", "ab".replace(re, "$<a>")); +- assertEquals("", "ab".replace(re, "$<x>")); +- assertEquals("", "ab".replace(re, "$<z>")); +-@@ -477,7 +477,7 @@ function toSlowMode(re) { +- { +- const re = toSlowMode(/(?<a>a).|(?<x>x)/); +- const result = re.exec("ab"); +-- assertTrue(%SpeciesProtector()); +-+ assertTrue(%ArraySpeciesProtector()); +- assertEquals(result.__proto__, Array.prototype); +- assertTrue(result.hasOwnProperty('groups')); +- assertArrayEquals(["ab", "a", undefined], result); +-@@ -487,7 +487,7 @@ function toSlowMode(re) { +- // a is a matched named capture, b is an unmatched named capture, and z +- // is not a named capture. +- Array.prototype.groups = { a: "b", x: "y", z: "z" }; +-- assertTrue(%SpeciesProtector()); +-+ assertTrue(%ArraySpeciesProtector()); +- assertEquals("a", "ab".replace(re, "$<a>")); +- assertEquals("", "ab".replace(re, "$<x>")); +- assertEquals("", "ab".replace(re, "$<z>")); +-@@ -506,13 +506,13 @@ function toSlowMode(re) { +- +- const re = new FakeRegExp(); +- const result = re.exec("ab"); +-- assertTrue(%SpeciesProtector()); +-+ assertTrue(%ArraySpeciesProtector()); +- assertEquals(result.__proto__, Array.prototype); +- assertFalse(result.hasOwnProperty('groups')); +- +- Array.prototype.groups = { a: "b" }; +- Array.prototype.groups.__proto__.b = "c"; +-- assertTrue(%SpeciesProtector()); +-+ assertTrue(%ArraySpeciesProtector()); +- assertEquals("b", "ab".replace(re, "$<a>")); +- assertEquals("c", "ab".replace(re, "$<b>")); +- Array.prototype.groups = undefined; +-@@ -531,7 +531,7 @@ function toSlowMode(re) { +- +- const re = new FakeRegExp(); +- const result = re.exec("ab"); +-- assertTrue(%SpeciesProtector()); +-+ assertTrue(%ArraySpeciesProtector()); +- assertEquals(result.__proto__, Array.prototype); +- assertTrue(result.hasOwnProperty('groups')); +- assertEquals({ a: "b" }, result.groups); +-diff --git a/test/mjsunit/keyed-store-generic.js b/test/mjsunit/keyed-store-generic.js +-index c2c48dd96d..e5d6ab41f2 100644 +---- a/test/mjsunit/keyed-store-generic.js +-+++ b/test/mjsunit/keyed-store-generic.js +-@@ -16,7 +16,7 @@ f("make it generic", 0, 0); +- +- (function TestSpeciesProtector() { +- function MyArray() {} +-- assertTrue(%SpeciesProtector()); +-+ assertTrue(%ArraySpeciesProtector()); +- f(Array.prototype, "constructor", MyArray); +-- assertFalse(%SpeciesProtector()); +-+ assertFalse(%ArraySpeciesProtector()); +- })(); +-diff --git a/tools/v8heapconst.py b/tools/v8heapconst.py +-index 5659cdd03c..b4a98dcc11 100644 +---- a/tools/v8heapconst.py +-+++ b/tools/v8heapconst.py +-@@ -322,34 +322,35 @@ KNOWN_OBJECTS = { +- ("OLD_SPACE", 0x02519): "TerminationException", +- ("OLD_SPACE", 0x02579): "OptimizedOut", +- ("OLD_SPACE", 0x025d1): "StaleRegister", +-- ("OLD_SPACE", 0x02651): "EmptyByteArray", +-- ("OLD_SPACE", 0x02661): "EmptyFixedUint8Array", +-- ("OLD_SPACE", 0x02681): "EmptyFixedInt8Array", +-- ("OLD_SPACE", 0x026a1): "EmptyFixedUint16Array", +-- ("OLD_SPACE", 0x026c1): "EmptyFixedInt16Array", +-- ("OLD_SPACE", 0x026e1): "EmptyFixedUint32Array", +-- ("OLD_SPACE", 0x02701): "EmptyFixedInt32Array", +-- ("OLD_SPACE", 0x02721): "EmptyFixedFloat32Array", +-- ("OLD_SPACE", 0x02741): "EmptyFixedFloat64Array", +-- ("OLD_SPACE", 0x02761): "EmptyFixedUint8ClampedArray", +-- ("OLD_SPACE", 0x027c1): "EmptyScript", +-- ("OLD_SPACE", 0x02849): "ManyClosuresCell", +-- ("OLD_SPACE", 0x02859): "EmptySloppyArgumentsElements", +-- ("OLD_SPACE", 0x02879): "EmptySlowElementDictionary", +-- ("OLD_SPACE", 0x028c1): "EmptyOrderedHashMap", +-- ("OLD_SPACE", 0x028e9): "EmptyOrderedHashSet", +-- ("OLD_SPACE", 0x02911): "EmptyPropertyCell", +-- ("OLD_SPACE", 0x02939): "EmptyWeakCell", +-- ("OLD_SPACE", 0x029a9): "NoElementsProtector", +-- ("OLD_SPACE", 0x029d1): "IsConcatSpreadableProtector", +-- ("OLD_SPACE", 0x029e1): "SpeciesProtector", +-- ("OLD_SPACE", 0x02a09): "StringLengthProtector", +-- ("OLD_SPACE", 0x02a19): "FastArrayIterationProtector", +-- ("OLD_SPACE", 0x02a29): "ArrayIteratorProtector", +-- ("OLD_SPACE", 0x02a51): "ArrayBufferNeuteringProtector", +-- ("OLD_SPACE", 0x02ac9): "InfinityValue", +-- ("OLD_SPACE", 0x02ad9): "MinusZeroValue", +-- ("OLD_SPACE", 0x02ae9): "MinusInfinityValue", +-+ ("OLD_SPACE", 0x02661): "EmptyByteArray", +-+ ("OLD_SPACE", 0x02681): "EmptyFixedUint8Array", +-+ ("OLD_SPACE", 0x026a1): "EmptyFixedInt8Array", +-+ ("OLD_SPACE", 0x026c1): "EmptyFixedUint16Array", +-+ ("OLD_SPACE", 0x026e1): "EmptyFixedInt16Array", +-+ ("OLD_SPACE", 0x02701): "EmptyFixedUint32Array", +-+ ("OLD_SPACE", 0x02721): "EmptyFixedInt32Array", +-+ ("OLD_SPACE", 0x02741): "EmptyFixedFloat32Array", +-+ ("OLD_SPACE", 0x02761): "EmptyFixedFloat64Array", +-+ ("OLD_SPACE", 0x02781): "EmptyFixedUint8ClampedArray", +-+ ("OLD_SPACE", 0x027e1): "EmptyScript", +-+ ("OLD_SPACE", 0x02879): "ManyClosuresCell", +-+ ("OLD_SPACE", 0x02889): "EmptySloppyArgumentsElements", +-+ ("OLD_SPACE", 0x028a9): "EmptySlowElementDictionary", +-+ ("OLD_SPACE", 0x028f1): "EmptyOrderedHashMap", +-+ ("OLD_SPACE", 0x02919): "EmptyOrderedHashSet", +-+ ("OLD_SPACE", 0x02951): "EmptyPropertyCell", +-+ ("OLD_SPACE", 0x02979): "EmptyWeakCell", +-+ ("OLD_SPACE", 0x029e9): "NoElementsProtector", +-+ ("OLD_SPACE", 0x02a11): "IsConcatSpreadableProtector", +-+ ("OLD_SPACE", 0x02a21): "ArraySpeciesProtector", +-+ ("OLD_SPACE", 0x02a49): "TypedArraySpeciesProtector", +-+ ("OLD_SPACE", 0x02a71): "PromiseSpeciesProtector", +-+ ("OLD_SPACE", 0x02a99): "StringLengthProtector", +-+ ("OLD_SPACE", 0x02aa9): "ArrayIteratorProtector", +-+ ("OLD_SPACE", 0x02ad1): "ArrayBufferNeuteringProtector", +-+ ("OLD_SPACE", 0x02b59): "InfinityValue", +-+ ("OLD_SPACE", 0x02b69): "MinusZeroValue", +-+ ("OLD_SPACE", 0x02b79): "MinusInfinityValue", +- } +- +- # List of known V8 Frame Markers. +--- +-2.11.0 (Apple Git-81) +- +--- a/patches/common/v8/backport_39d546a.patch ++++ b/patches/common/v8/backport_39d546a.patch +@@ -42,43 +42,3 @@ + MaybeLocal<String> Value::ToString(Local<Context> context) const { + auto obj = Utils::OpenHandle(this); + if (obj->IsString()) return ToApiHandle<String>(obj); +-diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc +-index 54afc61f4c..b7483a7c5e 100644 +---- a/test/cctest/test-api.cc +-+++ b/test/cctest/test-api.cc +-@@ -27239,6 +27239,35 @@ TEST(ImportMeta) { +- CHECK(result->StrictEquals(Local<v8::Value>::Cast(v8::Utils::ToLocal(meta)))); +- } +- +-+TEST(GetModuleNamespace) { +-+ LocalContext context; +-+ v8::Isolate* isolate = context->GetIsolate(); +-+ v8::HandleScope scope(isolate); +-+ +-+ Local<String> url = v8_str("www.google.com"); +-+ Local<String> source_text = v8_str("export default 5; export const a = 10;"); +-+ v8::ScriptOrigin origin(url, Local<v8::Integer>(), Local<v8::Integer>(), +-+ Local<v8::Boolean>(), Local<v8::Integer>(), +-+ Local<v8::Value>(), Local<v8::Boolean>(), +-+ Local<v8::Boolean>(), True(isolate)); +-+ v8::ScriptCompiler::Source source(source_text, origin); +-+ Local<Module> module = +-+ v8::ScriptCompiler::CompileModule(isolate, &source).ToLocalChecked(); +-+ module->InstantiateModule(context.local(), UnexpectedModuleResolveCallback) +-+ .ToChecked(); +-+ module->Evaluate(context.local()).ToLocalChecked(); +-+ +-+ Local<Value> ns_val = module->GetModuleNamespace(); +-+ CHECK(ns_val->IsModuleNamespaceObject()); +-+ Local<Object> ns = ns_val.As<Object>(); +-+ CHECK(ns->Get(context.local(), v8_str("default")) +-+ .ToLocalChecked() +-+ ->StrictEquals(v8::Number::New(isolate, 5))); +-+ CHECK(ns->Get(context.local(), v8_str("a")) +-+ .ToLocalChecked() +-+ ->StrictEquals(v8::Number::New(isolate, 10))); +-+} +-+ +- TEST(GlobalTemplateWithDoubleProperty) { +- v8::Isolate* isolate = CcTest::isolate(); +- v8::HandleScope handle_scope(isolate); +--- a/patches/common/v8/backport_9fb02b526.patch ++++ b/patches/common/v8/backport_9fb02b526.patch +@@ -73,42 +73,3 @@ + } + + raw_holder = GetCompatibleReceiver(isolate, *fun_data, *js_receiver); +-diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc +-index 7887cbfa75..0605f439e5 100644 +---- a/test/cctest/test-api.cc +-+++ b/test/cctest/test-api.cc +-@@ -1088,6 +1088,34 @@ THREADED_PROFILED_TEST(FunctionTemplate) { +- TestFunctionTemplateAccessor(construct_callback, Return239Callback); +- } +- +-+static void FunctionCallbackForProxyTest( +-+ const v8::FunctionCallbackInfo<Value>& info) { +-+ info.GetReturnValue().Set(info.This()); +-+} +-+ +-+THREADED_TEST(FunctionTemplateWithProxy) { +-+ LocalContext env; +-+ v8::Isolate* isolate = env->GetIsolate(); +-+ v8::HandleScope scope(isolate); +-+ +-+ v8::Local<v8::FunctionTemplate> function_template = +-+ v8::FunctionTemplate::New(isolate, FunctionCallbackForProxyTest); +-+ v8::Local<v8::Function> function = +-+ function_template->GetFunction(env.local()).ToLocalChecked(); +-+ CHECK((*env)->Global()->Set(env.local(), v8_str("f"), function).FromJust()); +-+ v8::Local<v8::Value> proxy = +-+ CompileRun("var proxy = new Proxy({}, {}); proxy"); +-+ CHECK(proxy->IsProxy()); +-+ +-+ v8::Local<v8::Value> result = CompileRun("f(proxy)"); +-+ CHECK(result->Equals(env.local(), (*env)->Global()).FromJust()); +-+ +-+ result = CompileRun("f.call(proxy)"); +-+ CHECK(result->Equals(env.local(), proxy).FromJust()); +-+ +-+ result = CompileRun("Reflect.apply(f, proxy, [1])"); +-+ CHECK(result->Equals(env.local(), proxy).FromJust()); +-+} +- +- static void SimpleCallback(const v8::FunctionCallbackInfo<v8::Value>& info) { +- ApiTestFuzzer::Fuzz(); diff --git a/libchromiumcontent-settings.patch b/libchromiumcontent-settings.patch new file mode 100644 index 000000000000..65091f68353d --- /dev/null +++ b/libchromiumcontent-settings.patch @@ -0,0 +1,44 @@ +--- a/chromiumcontent/args/native_mksnapshot.gn ++++ b/chromiumcontent/args/native_mksnapshot.gn +@@ -11,3 +11,10 @@ + if (target_cpu == "arm64") { + v8_snapshot_toolchain="//build/toolchain/linux:clang_arm64" + } ++clang_base_path = "/usr" ++clang_use_chrome_plugins = false ++treat_warnings_as_errors = false ++use_custom_libcxx = false ++use_sysroot = false ++use_gconf = false ++use_gnome_keyring = false +--- a/chromiumcontent/args/static_library.gn ++++ b/chromiumcontent/args/static_library.gn +@@ -1,13 +1,26 @@ + root_extra_deps = [ "//libchromiumcontent/chromiumcontent" ] + is_electron_build = true + is_component_build = false +-is_official_build = true +-symbol_level = 2 ++is_debug = false ++symbol_level = 0 + enable_nacl = false + enable_widevine = true + proprietary_codecs = true + is_component_ffmpeg = true + ffmpeg_branding = "Chrome" ++custom_toolchain="//build/toolchain/linux/unbundle:default" ++host_toolchain="//build/toolchain/linux/unbundle:default" ++clang_base_path = "/usr" ++clang_use_chrome_plugins = false ++fatal_linker_warnings = false ++treat_warnings_as_errors = false ++fieldtrial_testing_like_official_build = true ++remove_webcore_debug_symbols = true ++link_pulseaudio = true ++linux_use_bundled_binutils = false ++use_cups = true ++use_sysroot = false ++use_gnome_keyring = false + + # This may be guarded behind is_chrome_branded alongside + # proprietary_codecs https://webrtc-review.googlesource.com/c/src/+/36321, diff --git a/libchromiumcontent-sort-filenames.patch b/libchromiumcontent-sort-filenames.patch new file mode 100644 index 000000000000..54322772c495 --- /dev/null +++ b/libchromiumcontent-sort-filenames.patch @@ -0,0 +1,32 @@ +--- a/chromiumcontent/build_libs.py ++++ b/chromiumcontent/build_libs.py +@@ -22,7 +22,8 @@ def gen_list(out, name, obj_dirs): + for base_dir in obj_dirs: + base_path = os.path.join('obj', base_dir) + for dir, subdirs, files in walk_dir(base_path, exclude_dirs): +- for f in files: ++ subdirs.sort() ++ for f in sorted(files): + if f.endswith('.obj') or f.endswith('.o'): + out.write('"' + os.path.abspath(os.path.join(dir, f)) + '",\n') + out.write("]\n") +--- a/tools/generate_filenames_gypi.py ++++ b/tools/generate_filenames_gypi.py +@@ -99,7 +99,7 @@ def main(target_file, code_dir, shared_dir, static_dir): + + + def find_libraries(dirpath, library_suffix, list_of_excludes): +- libraries = glob.glob(os.path.join(dirpath, '*.' + library_suffix)) ++ libraries = sorted(glob.glob(os.path.join(dirpath, '*.' + library_suffix))) + if (library_suffix == 'so'): + # Handle "libname.so.123" + libraries += find_files_by_regex(dirpath, re.compile('.*\.so\.[0-9]+')) +@@ -132,7 +132,7 @@ def find_files_by_regex(dirpath, regex): + if regex.match(file): + files_found.append(os.path.join(root, file)) + +- return files_found ++ return sorted(files_found) + + + def is_v8_library(p): diff --git a/libchromiumcontent-static-library-only.patch b/libchromiumcontent-static-library-only.patch new file mode 100644 index 000000000000..df9ea8ff6150 --- /dev/null +++ b/libchromiumcontent-static-library-only.patch @@ -0,0 +1,43 @@ +--- a/script/create-dist ++++ b/script/create-dist +@@ -69,7 +69,7 @@ BINARIES = { + 'libffmpeg.dylib', + ], + 'linux': [ +- 'libffmpeg.so', ++ # 'libffmpeg.so', + ], + 'win32': [ + 'd3dcompiler_47.dll', +@@ -448,7 +448,7 @@ def generate_ninja(args, ninja): + copy_locales(target_arch, component, ninja) + + if args.component != 'native_mksnapshot': +- copy_ffmpeg(target_arch, ninja) ++ # copy_ffmpeg(target_arch, ninja) + copy_sources(ninja) + generate_licenses(ninja) + +@@ -576,9 +576,9 @@ def copy_binaries(target_arch, component, create_debug_archive, + elif target_arch == 'mips64el': + binaries = [ 'chromedriver', 'clang_x64_v8_mips64el/mksnapshot' ] + else: +- binaries = [ 'chromedriver', 'mksnapshot' ] ++ binaries = [ 'mksnapshot' ] + +- ffmpeg_output_dir = get_output_dir(SOURCE_ROOT, target_arch, 'ffmpeg') ++ ffmpeg_output_dir = get_output_dir(SOURCE_ROOT, target_arch, 'static_library') + for binary in binaries: + ninja.copy(os.path.join(ffmpeg_output_dir, binary), target_dir) + +--- a/script/lib/config.py ++++ b/script/lib/config.py +@@ -10,7 +10,7 @@ + VENDOR_DIR = os.path.join(SOURCE_ROOT, 'vendor') + DEPOT_TOOLS_DIR = os.path.join(VENDOR_DIR, 'depot_tools') + +-COMPONENTS = ['static_library', 'shared_library', 'ffmpeg', 'tests', 'native_mksnapshot'] ++COMPONENTS = ['static_library', 'native_mksnapshot'] + + # URL to the mips64el sysroot image. + MIPS64EL_SYSROOT = 'https://github.com/electron/debian-sysroot-image-creator/releases/download/v0.5.0/debian_jessie_mips64-sysroot.tar.bz2' diff --git a/libchromiumcontent-use-system-tools.patch b/libchromiumcontent-use-system-tools.patch new file mode 100644 index 000000000000..26aa1c66dfc9 --- /dev/null +++ b/libchromiumcontent-use-system-tools.patch @@ -0,0 +1,34 @@ +--- a/script/lib/ninja.py ++++ b/script/lib/ninja.py +@@ -15,7 +15,7 @@ + + + def run(directory, target=None, env=None): +- ninja_binary = __get_binary_path() ++ ninja_binary = 'ninja' + + args = [ninja_binary, + '-C', directory +--- a/script/run-gn ++++ b/script/run-gn +@@ -56,7 +56,7 @@ + if sys.platform in ['win32', 'cygwin']: + env['DEPOT_TOOLS_WIN_TOOLCHAIN'] = '0' + +- gn.generate(build_dir, chromium_root_dir=SRC_DIR, depot_tools_dir=DEPOT_TOOLS_DIR, env=env) ++ gn.generate(build_dir, chromium_root_dir=SRC_DIR, depot_tools_dir=os.path.join('/usr', 'bin'), env=env) + + + def create_gn_config(component, build_dir, **gnargs): +--- a/script/update ++++ b/script/update +@@ -89,9 +89,7 @@ + install_aarch64_bintools() + + return ((apply_patches(target_arch) if args.apply_patches else 0) or +- install_sysroot_if_needed(target_arch) or + copy_chromiumcontent_files() or +- update_clang() or + setup_mips64el_toolchain(target_arch) or + run_gn(target_arch, args.cc_wrapper)) + diff --git a/no-clang-plugins.patch b/no-clang-plugins.patch new file mode 100644 index 000000000000..70cf3933a381 --- /dev/null +++ b/no-clang-plugins.patch @@ -0,0 +1,38 @@ +--- a/toolchain.gypi ++++ b/toolchain.gypi +@@ -134,35 +134,6 @@ + 'CLANG_CXX_LANGUAGE_STANDARD': 'c++14', # -std=c++14 + }, + 'target_conditions': [ +- ['_target_name in ["electron", "brightray"]', { +- 'conditions': [ +- ['OS=="mac"', { +- 'xcode_settings': { +- 'OTHER_CFLAGS': [ +- "-Xclang", +- "-load", +- "-Xclang", +- "<(source_root)/<(make_clang_dir)/lib/libFindBadConstructs.dylib", +- "-Xclang", +- "-add-plugin", +- "-Xclang", +- "find-bad-constructs", +- ], +- }, +- }, { # OS=="mac" +- 'cflags_cc': [ +- "-Xclang", +- "-load", +- "-Xclang", +- "<(source_root)/<(make_clang_dir)/lib/libFindBadConstructs.so", +- "-Xclang", +- "-add-plugin", +- "-Xclang", +- "find-bad-constructs", +- ], +- }], +- ], +- }], + ['OS=="mac" and _type in ["executable", "shared_library"]', { + 'xcode_settings': { + # On some machines setting CLANG_CXX_LIBRARY doesn't work for diff --git a/no-whole-archive.patch b/no-whole-archive.patch new file mode 100644 index 000000000000..3c7a63be740e --- /dev/null +++ b/no-whole-archive.patch @@ -0,0 +1,22 @@ +--- a/brightray/brightray.gyp ++++ b/brightray/brightray.gyp +@@ -55,14 +55,13 @@ + 'conditions': [ + # Link with libraries of libchromiumcontent. + ['OS=="linux" and libchromiumcontent_component==0', { +- # On Linux we have to use "--whole-archive" to force executable +- # to include all symbols, otherwise we will have plenty of ++ # On Linux we have to use "--start-group" or we will have plenty of + # unresolved symbols errors. +- 'direct_dependent_settings': { +- 'ldflags': [ +- '-Wl,--whole-archive', ++ 'link_settings': { ++ 'libraries': [ ++ '-Wl,--start-group', + '<@(libchromiumcontent_libraries)', +- '-Wl,--no-whole-archive', ++ '-Wl,--end-group' + ], + } + }, { # (Release build on Linux) diff --git a/use-system-ffmpeg.patch b/use-system-ffmpeg.patch new file mode 100644 index 000000000000..19efa524e06c --- /dev/null +++ b/use-system-ffmpeg.patch @@ -0,0 +1,21 @@ +--- a/brightray/brightray.gyp ++++ b/brightray/brightray.gyp +@@ -157,8 +157,6 @@ + }, { + 'link_settings': { + 'libraries': [ +- # Link with ffmpeg. +- '<(libchromiumcontent_dir)/libffmpeg.so', + # Following libraries are required by libchromiumcontent: + '-lasound', + '-lcap', +--- a/electron.gyp ++++ b/electron.gyp +@@ -233,7 +233,6 @@ + }, { + 'copied_libraries': [ + '<(PRODUCT_DIR)/lib/libnode.so', +- '<(libchromiumcontent_dir)/libffmpeg.so', + ], + }], + ], diff --git a/use-system-libraries-in-node.patch b/use-system-libraries-in-node.patch new file mode 100644 index 000000000000..7767691ba50c --- /dev/null +++ b/use-system-libraries-in-node.patch @@ -0,0 +1,31 @@ +--- a/common.gypi ++++ b/common.gypi +@@ -27,12 +27,12 @@ + 'node_install_npm': 'false', + 'node_prefix': '', + 'node_shared': 'true', +- 'node_shared_cares': 'false', +- 'node_shared_http_parser': 'false', ++ 'node_shared_cares': 'true', ++ 'node_shared_http_parser': 'true', + 'node_shared_libuv': 'false', + 'node_shared_openssl': 'false', + 'node_shared_v8': 'true', +- 'node_shared_zlib': 'false', ++ 'node_shared_zlib': 'true', + 'node_tag': '', + 'node_use_dtrace': 'false', + 'node_use_etw': 'false', +@@ -198,6 +198,12 @@ + }, + }], + ['OS=="linux" and libchromiumcontent_component==0', { ++ 'libraries': [ ++ '-lcares', ++ '-lcrypto', ++ '-lhttp_parser', ++ '-lz', ++ ], + # Prevent the linker from stripping symbols. + 'ldflags': [ + '-Wl,--whole-archive', |