diff options
author | Elvis Pranskevichus <elvis@magic.io> | 2017-09-12 17:27:17 -0400 |
---|---|---|
committer | Patrice Clement <monsieurp@gentoo.org> | 2017-09-22 17:21:04 +0200 |
commit | 8cacb0a99ef2edb71b74a1dad60f8cb9b37f22ba (patch) | |
tree | d6648c1ba5d3b0ab8a8240d4a8bda04796199316 /dev-util | |
parent | app-eselect/eselect-electron: version bump to 2.0. (diff) | |
download | gentoo-8cacb0a99ef2edb71b74a1dad60f8cb9b37f22ba.tar.gz gentoo-8cacb0a99ef2edb71b74a1dad60f8cb9b37f22ba.tar.bz2 gentoo-8cacb0a99ef2edb71b74a1dad60f8cb9b37f22ba.zip |
dev-util/electron: version bump to 1.6.11.
Gentoo-Bug: https://bugs.gentoo.org/614238
Package-Manager: Portage-2.3.6, Repoman-2.3.1
Diffstat (limited to 'dev-util')
18 files changed, 2318 insertions, 0 deletions
diff --git a/dev-util/electron/Manifest b/dev-util/electron/Manifest index 1f24dacffc61..9a6d13e1e202 100644 --- a/dev-util/electron/Manifest +++ b/dev-util/electron/Manifest @@ -2,15 +2,26 @@ DIST asar-0.12.1.tar.gz 1016626 SHA256 731714f0036318fe0878b517391a01977954bb088 DIST brightray-8dbaeed37b9c4fb8ae985670b142f659bb265fb4.tar.gz 76965 SHA256 fb5e57cc723500c8a7b5fba8cf0a38d4ca79b3f967dd9f9427e6fca8cde81552 SHA512 eb0ad05107ebfb4151fb0f26f7dbea58c353cde0407c13ea00c7b98487fb29582d5f3e334900749dc43c8aeca828d8885c4d77dff6739de97ec19b33017a6e93 WHIRLPOOL d2aa3bd6361643304158dff859aa071400bc1b74f0fce934d5dc5eb25bf76d599a27efabde6c13bd20dadb15ffec7bb3ea8577bdb1e38e2382f81600d543fd35 DIST brightray-9bc1d21b69ac99bed546d42035dc1205ea6b04af.tar.gz 74416 SHA256 9cb944145085384423efdbdbe4dd523b71eaf517fd040e1993666832ffac4fa6 SHA512 c7a16f3634111a43d45959e0406488dc7417848403a6261204b58f67d62688f888f733ca23f3eac3a2dc76955c185ce845d63a6dc1e5a0fba54fb115202414d0 WHIRLPOOL c1ebe0e3adbd74da772778589f59f30a2e288723d62cf8bc686c1b0795daef4c31e9d38363b29dae9b162ccf856707f7a9eb34c8b31ca76042870d7adfa14e99 DIST brightray-ee26c5218eeec199c54c92a7517a72d2dbd0adbf.tar.gz 82375 SHA256 37090168dfa0d776e28ecca88ef3ba57d3aa2937ef7dc4238e6685aa6f2b3e21 SHA512 7595f5a168d40c42687b8013b588e9c74d6f0047e71549a32d892fa3ca9de9d467303e635364bd779e94094aa9772b705ac027aad481b40d42c0c039ce8f3709 WHIRLPOOL 7b1686cfd9d2189942ab268485a7b230b99ef2a043a4e1b06aaf25c37a01a4278b35769fd73af5b838fdcb782f3a78a2821f95f6a91358d27f11149451437a17 +DIST browserify-14.0.0.tar.gz 1847439 SHA256 616e53fba090d14d673748c12e8ac215b6f7d6f74362666ca91065ce80386344 SHA512 fea8219ab2c5b422c15cc8c305a8aa0396f3de46c8d602eb4976af1d2b0a043214f808e3fa8e31cae0ad7c76d9ddc38239d0208911105f9c851efddfaf96b0c7 WHIRLPOOL 2d2a1dc6f5d5c0db2b43acee8b1dc69c6d3c431e1e0172bf4a3894b628e49dba1aa51155fa8f04e260ce2897ea8c562af200f3e569b9b38e0c783d34c7ae6087 DIST chromium-47.0.2526.110.tar.xz 394673276 SHA256 edab0d78709ba5edd35e85d82241de884d75dc46abdf7621b6178fa6647d14af SHA512 7b83b4b9c192782035984a08f5102dc6bc9c8590f78dc74fe46ff431b7de3d33ee48e41c0b1fb3f8ff2881871f2a1c4c4c4c16297b42456082b514fb741fc1c4 WHIRLPOOL b9b4053089cdf0a37a81ef491a97749a6473d280b7ed9d391ef4b98a844dd8e0ecbc9b97b72b654c65c3ea9f706519262b8f62f5e5ba97cb005a8c98a40f2b28 DIST chromium-49.0.2623.75.tar.xz 452264916 SHA256 a4fd4c85b12b021789d8afc33b27555396e47d9f67c8a062ee3609c4d6b582f5 SHA512 694f0ccd0a4ff10d8b19e52defb48f6d47daeaa47013f01c2924251f3c6ebaccb20813379c3b7dd6fd939138f25122ed7d1a56e1a6b80309aca65b6c854768fa WHIRLPOOL 00d5b37f425714e4bcb2b563759a8a7b084dc01b7abe6e90f21a3aa470c42944675b5a875e3e918506469cb6cd870038791566ad647b26bd4b11502beb97ecad DIST chromium-52.0.2743.82.tar.xz 458110272 SHA256 a7de6015df9cf685d68efd1e070ae9c706c723cd9395d079a7d43672a2c37eb4 SHA512 9bba841cb726bfa06888deefacfcee628e36d25de47dd0303d3fd1ce2f07922148d60befe934f44c33fcdfed6ce3dadfb9e3ee0828b66994807178a488051806 WHIRLPOOL f0d258882db85291262c2381aeb6d85ebf20a252344e114a2da35e75f79dc8b73de95b71926512537af17e109fd7a8dd04386d5b3ed610262d42d11bcc1a5707 +DIST chromium-56.0.2924.87.tar.xz 514429808 SHA256 9aac081ffccaae6497068100477a4e6ac7086bd15ad3c3cd009b9a760b7a53e0 SHA512 1c154004a9bca73e2491c73520a5f7d5c50c5b9d66e8e2660bf46585dd9b6ad3db706a9d824356f319794fa790bc3918ae6199843bcba717b9e74efbf26882c9 WHIRLPOOL ea18fa6d9ad5b296bc561e0fd13f596f3973ec3a020db62de4164b6edf251825a3f26768064ea70ee9e50696b18ec647dc5b9ca3c04dbb3d618ec609302675bc DIST electron-0.36.12.tar.gz 3068567 SHA256 8e4ee7ed37d32ad73f8cbfb132ce0009506a01a68d5a71bafd6858c6bc11f9a6 SHA512 37d016768e57f81b01338cea6d0d5eaa6ea72d83a2122b54c9c73e37b0afc7fb8351b0cb846afda29206379d5625657b815b002c2eb3c31babcd0cffa47ae3de WHIRLPOOL a358e353259d377dd59ae563f38b2fe185ade6d7a00bbad8c61831c92b4e200ac1f2f25b79564eae11d9082a569be342ccd4be6e400955cd65729e9299b48796 DIST electron-0.37.8.tar.gz 3154625 SHA256 d6b01e800aa4cd54b680aa1d78e8c04ed99f82423bab37fe03ad5eb12310f0c0 SHA512 1469129cc6e07da2540ab67d2bb9e2dec4055da77b35bf0abf86a70e82e3ccf443e75edb25feac6c8855c5e841592738319e1a81a52d504e90a5ce9197153754 WHIRLPOOL 677fc9c5bd96d04de43a28c8db23921fb98d3d9a455c32da8235b15c72f2480cce16a3705ae258de1c2b3a5af8d11607c3f868bae248553e593a77c454f94582 DIST electron-1.3.13.tar.gz 4560040 SHA256 36695722484da433e4bfd465c5688a3b1429365385b547973444c8d7ef0cd810 SHA512 c15b8303e1a18674fd828991a118bf670ccd052b35cac7d476b06e7903055fa905a93a79dced4186c70d30c7d220a3b7daa2a4f490b70c87134fbc393d54d94d WHIRLPOOL 4e027b48a076a208c4c83f7a82e8f591de9bf22b4c5146d50dc06772257768db6a996eea974ad6097838573f8e69828899c862b3b9271bd34c92d95e9502376b +DIST electron-1.6.11.tar.gz 4938208 SHA256 b2e1ff38076b0554eae399ef16725643a9484fb923c90be0d65ec2cb1a17dfa3 SHA512 dc44ae9b9e69ed1b0a2b9f2faceea2bc8bac29b3897f1f95273b1e17268159d77b4ba7344e6b0383aa4196d21df203cca404a6356a8674b3dbab7452968cf60f WHIRLPOOL eb1853ab4d04fb77b6d1510d25dbcedd71ddc6431d451ab1a544e12bdf1cb362a8f4589849dacf0d022b0e57cb5fdbb66a7afaead9c8a4d47c118c008dbc55f7 +DIST electron-breakpad-e35167de7516448fcc2bf687ad580b9d8b6aedc2.tar.gz 5161167 SHA256 fc18edfad17167d6b425923722b27b596c2d4bc882ea01154c9a9e9783c581c5 SHA512 96d30cc5476fdb60b5bc1e6fbd5d1823966d264b6b6642a4fb742ee87f17b7b5d79ee9f7c806582d1e05fb153f789859fced6b509fec391830c5ad2364ba3ec9 WHIRLPOOL 413ffe1d0442c16e22f68eef382cc6eee0e88d692e5dbb8334534b54020bdb74a8b376fc1dc675e1203ebadd8a840e1eba7222138d7a5499bcc716fea11f8455 +DIST electron-brightray-909c49265493bd095c27cefd999567be2107899a.tar.gz 98022 SHA256 249424ca00a4b96ea22c58584952748f02376e92ee231e63230403e20e11fed0 SHA512 e1df1159a97c87e1edce9ea896d790e3004cc836d879385cdc5324c1961209ebf884fb7771861f4c6bf86b50ff1d8818540555bbcc77bf10987e0a68cd855127 WHIRLPOOL fe9bd8fb40c34e9278832a8660ab6b03f9ee0f900e9dce940107216d33c72a8e7ce13f7e5556d788c2a0ebabb0a536ff6cfb77e65ef96f4ea5a76441025baff6 +DIST electron-chromium-breakpad-c566c50d81f7b1edeaee9f11f5d07bda858d6b64.tar.gz 1141356 SHA256 ac8cd3e020dd437e60d2d29b712fb7019705a0706c895d6f7935b4f5ed2f2763 SHA512 9fb07facb147d401655cefea103cb1499de9ca27093c756a3b5d6ff1117a288ac491fedf01df61775ce6590e852e942cf7db1e135d6d30e94188283a53dd8e10 WHIRLPOOL fdcd9a90cf7d5156796679a21cd1210ad7e75c910d0f924168e20d8f1ccf61f803f5913a50766ddc2b7b08f864677d1bab6199e1fc06cd615b765f412297405e +DIST electron-grit-9536fb6429147d27ef1563088341825db0a893cd.tar.gz 378461 SHA256 20b80507c29ce7b0eab57d814176fe1b1897a9b69add0bf073d5ba7b1b5d7c56 SHA512 515797740421d5f80912b33dab2039c35b2ae432a0c4351aa031461ef6c82b7a1775c3d4d41ba6c646f81ba3ddf3bbfcb35b81da1ef88b486a2a67d15f09ec86 WHIRLPOOL b6d395d549238f7552fa05eb3640ca8afd6781d998f7c9fdea8d34323b4b57ec77ca714fe4e14d97a5a44e1a4157260cd5e017d9b132fba3c32be49a57559430 +DIST electron-libchromiumcontent-e2ec6935fbf034207d5ad00fa905a4b2cdd60bb7.tar.gz 418797 SHA256 bdf1876c144a72ebb782abf8c00981fd25f317c69611255b6143e1822866ee6f SHA512 aa6d5b16be6e0a218042c11865751fb14b6f4ccf3252075e681309df853f03fda9a38b955749b1fe16f11a127f2aab181edcb3eed8511f69aa5c43395ff9f7f7 WHIRLPOOL e02893b291806d3fa0b2e0c4ae5b7b71a44637ebecd10fec922d03ec261dd152478f12fe9bf9dab60d520bb49cf947f62240edfe386fa355e6c283848fddef3d +DIST electron-native-mate-fd0e7dc4ab778f0d1ccda6c9640464ea06ee771e.tar.gz 23926 SHA256 bbbcdd6de05ea677658df775dc3943820596654e5aecb0f25d1c1bdbb897f376 SHA512 8715c417473340163ca3db2754ab10619679ac72378ff5c7f63899fe891d5c83e7b3db6832af885de63eb5a732ed54f393bcc3aeb8ddd38569e74023c46f72ac WHIRLPOOL aff212822f12a111126116cee60f5c3e8bb3e53bfc7de1209315a7b7671b413e3428088f639b9c6c2132cd1b30f3bb9edf813b74feb74cd7a899ae902e723691 DIST electron-node-6bcd8af891a991f8aa196e49e6bf908ebbe24cae.tar.gz 36600837 SHA256 6b7bb43be6d24bc55a6ccd4b8efd2f88d8d2fd7d8437d7aa33d813c649f791f7 SHA512 7fcafa01027bd68794a7cd2f049a7bdf45e1dd56622583bd5d53d662328e64619dd5dbeec295ff559b1b268e90bf6abf3d76cd6d00f055602bbaa7443e3a3450 WHIRLPOOL c5dd664910a59c7fb1d4aaf3c91b298b7266466596ce2a4f4f41ff6637db9e480450eaf1e9255ab810de13df1abbd769f32bdc73124bea9ab4ed013cda945bd0 +DIST electron-node-9b1683e7000481ec6214eafa3eef7ac4594eb410.tar.gz 46193369 SHA256 7743c91e85b320bb4a4ed1962c34b882d316b003e30cdd7ee198d0210e215ec5 SHA512 bb73b114e2ec162dc69d8467e4423aecd0fc17ae41c163c2de6a6b3fd8e6c788a1de02884793eddc358099708226fc9b54fa6ed74afa43b3a90d6c0571f42827 WHIRLPOOL 72fea9cb4e97b0ced93985b58b7a69a24b77b45bacaf3844874d4b4ed26779e85b60f00df530c76ea70e28d5e312354b984b4b7890d83d7e763deed24235bd80 DIST electron-node-a507a3c3816d6ac085ed46250c489a3d76ab8b3c.tar.gz 36578658 SHA256 56489ffa9d58b736008f5c1c2775bc10f3afe02d3c768035e7742893cc8e1d82 SHA512 a5b62c05ec7300a26b3feab3c1e796a87691d41fa7c039541574878491df51e9075685abc5d630fc62bca95bf821eeede041d4ab36caedaf76156844f1095ea6 WHIRLPOOL 8675b05753cf905cfb2fc0ebb19fc256489a7b932c57be291eb2fc7194de599c07f4120541f4a61cccdb43b09b6280c7c02f9565aef98129c584fdca4c154279 DIST electron-node-c47e9bf9011de682d07c82f7f610a467f30cca60.tar.gz 44172045 SHA256 d0dad2c1ee6eea81fa6f55a70f4142eb7bffcc143532d50e848fea08b31d5ef7 SHA512 830cb5e4aa1956d0f67b0c5ad44241254596791b3bbc533a170b1b7bcb7a45137ff62b885a65a78a64323ad94f660c6b75142109d79256420b8d20a7d26acff7 WHIRLPOOL a69758c90ddbd3f75f9d62efb9cfefba9fe6c52c627fbcab103abe6e11916826c42e1b5072e203ce34657ac7fe9b79c2bc1621dd3b595626e138161bd91c6766 +DIST electron-pdf-viewer-a050a339cfeabcfb5f07c313161d2ee27b6c3a39.tar.gz 38431 SHA256 03a147dfc8273495cf47b53a2a03ca41e03695e1af66c51df9e49ca52ff51233 SHA512 a028b67c0644d4ddcfc5aee4e2abb305648eb666082ea2c151cb6b9b3972503093cadb32b102aa19b04c8e863c2ac55bb20cccbf2abbf7832f9cfd3c3618612e WHIRLPOOL 54dd4ff5fc59e057ce67f409629818accad0ee7c97e18e9cb86174cbfd845fdd7d370b291b2adddc91d81e3743eb744aa6c4f149a74f87cad3ffd32674c5f1e8 DIST libchromiumcontent-27add4cfef98f21d5910539bebb47ae175f024c2.tar.gz 403724 SHA256 cf0342130f4bb929894249a381b6d6433f8d5b6d9331f4bd843250c4e66063b6 SHA512 7995fe40100b91f57ccc8fde445f136fda62d2c88a8a06d1b07aa588bcdb27905a542d62ec9cdf567b626439d8648fc749b73d7e9f52deaa94ead27e191a732f WHIRLPOOL 426d75c7ff7788d6dd208b68407bad7600090f6c1208823db65ef10ab7efcb8b8cbe9fce7ada6886a6711dfea0503a70a088e63f71221a8098cb62f3f3d1131c DIST libchromiumcontent-60c7ec9f9bf465a8c9c7ccc3fcd2aa1cdf644bac.tar.gz 402072 SHA256 69877d4b9def6dc69063f0bf37d9d59721c22acced45e271b3f36bde8446a37c SHA512 ddd52e58df1848edab6c514e0ef8e4155eccec6bec9d4e557dc0ee7d5c2cc4036f25d1786376b5b47a5122a266f00cd589ce665b8463549e9383d60292d180dc WHIRLPOOL 789be242983ab54e212df13c6f51c5c949d6a4ace21a548b99f17e292b37842ce0c748e29c17bd116a95a163ca2bd709dadc59ecacc9d3ab8c58143ddf9f2d71 DIST libchromiumcontent-ad63d8ba890bcaad2f1b7e6de148b7992f4d3af7.tar.gz 400648 SHA256 36b46659fff3053ce273d3ed159fca74e18ebc873694f857a521d3c48fc079b1 SHA512 5fcb5e3dd98d5875ff7aa9f9f4d02af45487534d0301ca7a0a7adde934f528fedc3dfaf886b9031027e41309eb8ba658b72a56af4ad8dc44cce458b9c04a0e47 WHIRLPOOL 31d28804f91bbdece8709ddac359e7f5c079b034137734041f274838d138d8e141fe12c0ecf1e66f92b15e8c653526a1779d3bcc342e3ecc9a39a18c689a94a6 diff --git a/dev-util/electron/electron-1.6.11.ebuild b/dev-util/electron/electron-1.6.11.ebuild new file mode 100644 index 000000000000..e906b0deabce --- /dev/null +++ b/dev-util/electron/electron-1.6.11.ebuild @@ -0,0 +1,886 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI="6" +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 eutils gnome2-utils flag-o-matic multilib \ + multiprocessing pax-utils portability python-any-r1 toolchain-funcs \ + versionator virtualx xdg-utils + +# Keep this in sync with vendor/brightray/vendor/libchromiumcontent/VERSION +CHROMIUM_VERSION="56.0.2924.87" +# Keep this in sync with vendor/breakpad +BREAKPAD_COMMIT="c566c50d81f7b1edeaee9f11f5d07bda858d6b64" +# Keep this in sync with vendor/breakpad/src (and find the corresponding +# commit in https://github.com/google/breakpad/) +BREAKPAD_SRC_COMMIT="e35167de7516448fcc2bf687ad580b9d8b6aedc2" +# Keep this in sync with vendor/brightray +BRIGHTRAY_COMMIT="909c49265493bd095c27cefd999567be2107899a" +# Keep this in sync with vendor/node +NODE_COMMIT="9b1683e7000481ec6214eafa3eef7ac4594eb410" +# Keep this in sync with vendor/native_mate +NATIVE_MATE_COMMIT="fd0e7dc4ab778f0d1ccda6c9640464ea06ee771e" +# Keep this in sync with vendor/pdf_viewer +PDF_VIEWER_COMMIT="a050a339cfeabcfb5f07c313161d2ee27b6c3a39" +# Keep this in sync with vendor/pdf_viewer/vendor/grit +GRIT_COMMIT="9536fb6429147d27ef1563088341825db0a893cd" +# Keep this in sync with script/lib/config.py:LIBCHROMIUMCONTENT_COMMIT +LIBCHROMIUMCONTENT_COMMIT="e2ec6935fbf034207d5ad00fa905a4b2cdd60bb7" +# Keep this in sync with package.json#devDependencies +ASAR_VERSION="0.12.1" +BROWSERIFY_VERSION="14.0.0" + +CHROMIUM_P="chromium-${CHROMIUM_VERSION}" +BREAKPAD_P="chromium-breakpad-${BREAKPAD_COMMIT}" +BREAKPAD_SRC_P="breakpad-${BREAKPAD_SRC_COMMIT}" +BRIGHTRAY_P="brightray-${BRIGHTRAY_COMMIT}" +NODE_P="node-${NODE_COMMIT}" +NATIVE_MATE_P="native-mate-${NATIVE_MATE_COMMIT}" +PDF_VIEWER_P="pdf-viewer-${PDF_VIEWER_COMMIT}" +GRIT_P="grit-${GRIT_COMMIT}" +LIBCHROMIUMCONTENT_P="libchromiumcontent-${LIBCHROMIUMCONTENT_COMMIT}" +ASAR_P="asar-${ASAR_VERSION}" +BROWSERIFY_P="browserify-${BROWSERIFY_VERSION}" + +DESCRIPTION="Cross platform application development framework based on web technologies" +HOMEPAGE="http://electron.atom.io/" +SRC_URI=" + https://commondatastorage.googleapis.com/chromium-browser-official/${CHROMIUM_P}.tar.xz + https://github.com/electron/electron/archive/v${PV}.tar.gz -> ${P}.tar.gz + https://github.com/electron/chromium-breakpad/archive/${BREAKPAD_COMMIT}.tar.gz -> electron-${BREAKPAD_P}.tar.gz + https://github.com/google/breakpad/archive/${BREAKPAD_SRC_COMMIT}.tar.gz -> electron-${BREAKPAD_SRC_P}.tar.gz + https://github.com/electron/brightray/archive/${BRIGHTRAY_COMMIT}.tar.gz -> electron-${BRIGHTRAY_P}.tar.gz + https://github.com/electron/node/archive/${NODE_COMMIT}.tar.gz -> electron-${NODE_P}.tar.gz + https://github.com/zcbenz/native-mate/archive/${NATIVE_MATE_COMMIT}.tar.gz -> electron-${NATIVE_MATE_P}.tar.gz + https://github.com/electron/pdf-viewer/archive/${PDF_VIEWER_COMMIT}.tar.gz -> electron-${PDF_VIEWER_P}.tar.gz + https://github.com/elprans/grit/archive/${GRIT_COMMIT}.tar.gz -> electron-${GRIT_P}.tar.gz + https://github.com/electron/libchromiumcontent/archive/${LIBCHROMIUMCONTENT_COMMIT}.tar.gz -> electron-${LIBCHROMIUMCONTENT_P}.tar.gz + https://github.com/elprans/asar/releases/download/v${ASAR_VERSION}-gentoo/asar-build.tar.gz -> ${ASAR_P}.tar.gz + https://github.com/elprans/node-browserify/releases/download/${BROWSERIFY_VERSION}-gentoo/browserify-build.tar.gz -> ${BROWSERIFY_P}.tar.gz +" + +S="${WORKDIR}/${P}" +CHROMIUM_S="${S}/chromium" +NODE_S="${S}/vendor/node" +BREAKPAD_S="${S}/vendor/breakpad" +BREAKPAD_SRC_S="${BREAKPAD_S}/src" +BRIGHTRAY_S="${S}/vendor/brightray" +NATIVE_MATE_S="${S}/vendor/native_mate" +PDF_VIEWER_S="${S}/vendor/pdf_viewer" +GRIT_S="${PDF_VIEWER_S}/vendor/grit" +LIBCC_S="${BRIGHTRAY_S}/vendor/libchromiumcontent" + +LICENSE="BSD" +SLOT="$(get_version_component_range 1-2)" +KEYWORDS="~amd64" +IUSE="cups custom-cflags gnome gnome-keyring gtk3 kerberos lto neon pic +proprietary-codecs pulseaudio selinux +system-ffmpeg +tcmalloc" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" + +# Native Client binaries are compiled with different set of flags, bug #452066. +QA_FLAGS_IGNORED=".*\.nexe" + +# Native Client binaries may be stripped by the build system, which uses the +# right tools for it, bug #469144 . +QA_PRESTRIPPED=".*\.nexe" + +COMMON_DEPEND=" + app-arch/bzip2:= + >=app-eselect/eselect-electron-2.0 + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/elfutils-0.149 + dev-libs/expat:= + dev-libs/glib:2 + dev-libs/icu:= + >=dev-libs/jsoncpp-0.5.0-r1:= + dev-libs/nspr:= + >=dev-libs/nss-3.14.3:= + >=dev-libs/re2-0.2016.05.01:= + gnome? ( >=gnome-base/gconf-2.24.0:= ) + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + media-libs/libexif:= + media-libs/libjpeg-turbo:= + media-libs/libpng:= + media-libs/libvpx:=[svc] + media-libs/speex:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( >=media-video/ffmpeg-3:= ) + sys-apps/dbus:= + sys-apps/pciutils:= + >=sys-libs/libcap-2.22:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/libdrm + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXinerama:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + dev-libs/libxml2:=[icu] + dev-libs/libxslt:= + media-libs/flac:= + >=media-libs/harfbuzz-1.3.1:=[icu(+)] + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<dev-util/electron-0.36.12-r4 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + !gtk3? ( x11-libs/gtk+:2 ) + gtk3? ( x11-libs/gtk+:3 ) + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +DEPEND="${COMMON_DEPEND} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-perl/JSON + >=dev-util/gperf-3.0.3 + dev-util/ninja + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + dev-vcs/git + x11-libs/gtk+:2 + x11-libs/gtk+:3 + $(python_gen_any_dep ' + dev-python/beautifulsoup:python-2[${PYTHON_USEDEP}] + >=dev-python/beautifulsoup-4.3.2:4[${PYTHON_USEDEP}] + dev-python/html5lib[${PYTHON_USEDEP}] + dev-python/simplejson[${PYTHON_USEDEP}] + ') +" + +# Keep this in sync with the python_gen_any_dep call. +python_check_deps() { + has_version --host-root "dev-python/beautifulsoup:python-2[${PYTHON_USEDEP}]" && + has_version --host-root ">=dev-python/beautifulsoup-4.3.2:4[${PYTHON_USEDEP}]" && + has_version --host-root "dev-python/html5lib[${PYTHON_USEDEP}]" && + has_version --host-root "dev-python/simplejson[${PYTHON_USEDEP}]" +} + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-clang && ! version_is_at_least "3.9.1" "$(clang-fullversion)"; then + # bugs: #601654 + die "At least clang 3.9.1 is required" + fi + if tc-is-gcc && ! version_is_at_least 4.9 "$(gcc-version)"; then + # bugs: #535730, #525374, #518668, #600288 + die "At least gcc 4.9 is required" + fi + fi + + # LTO pass requires more file descriptors + if use lto; then + local lto_n_rlimit_min="16384" + local maxfiles=$(ulimit -n -H) + if [ "${maxfiles}" -lt "${lto_n_rlimit_min}" ]; then + eerror "" + eerror "Building with USE=\"lto\" requires file descriptor" \ + "limit to be no less than ${lto_n_rlimit_min}." + eerror "The current limit for portage is ${maxfiles}." + eerror "Please add the following to /etc/security/limits.conf:" + eerror "" + eerror " root hard nofile ${lto_n_rlimit_min}" + eerror " root soft nofile ${lto_n_rlimit_min}" + eerror "" + die + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + use lto && CHECKREQS_MEMORY="7G" + CHECKREQS_DISK_BUILD="5G" + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + CHECKREQS_DISK_BUILD="25G" + CHECKREQS_MEMORY="16G" + fi + eshopts_pop + check-reqs_pkg_pretend +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + # Make sure the build system will use the right python, bug #344367. + python-any-r1_pkg_setup + + chromium_suid_sandbox_check_kernel_config +} + +_unnest_patches() { + local _s="${1%/}/" relpath out + + for f in $(find "${_s}" -mindepth 2 -name *.patch -printf \"%P\"\\n); do + relpath="$(dirname ${f})" + out="${_s}/${relpath////_}_$(basename ${f})" + sed -r -e "s|^([-+]{3}) (.*)$|\1 ${relpath}/\2 ${f}|g" > "${out}" + done +} + +_get_install_suffix() { + local c=(${SLOT//\// }) + local slot=${c[0]} + local suffix + + if [[ "${slot}" == "0" ]]; then + suffix="" + else + suffix="-${slot}" + fi + + echo -n "${suffix}" +} + +_get_install_dir() { + echo -n "/usr/$(get_libdir)/electron$(_get_install_suffix)" +} + +_get_target_arch() { + local myarch="$(tc-arch)" + local target_arch + + if [[ $myarch = amd64 ]] ; then + target_arch=x64 + elif [[ $myarch = x86 ]] ; then + target_arch=ia32 + elif [[ $myarch = arm64 ]] ; then + target_arch=arm64 + elif [[ $myarch = arm ]] ; then + target_arch=arm + else + die "Failed to determine target arch, got '$myarch'." + fi + + echo -n "${target_arch}" +} + +src_prepare() { + mv "${WORKDIR}/${CHROMIUM_P}" "${CHROMIUM_S}" || die + rm -r "${NODE_S}" && + mv "${WORKDIR}/${NODE_P}" "${NODE_S}" || die + rm -r "${BREAKPAD_S}" && + mv "${WORKDIR}/${BREAKPAD_P}" "${BREAKPAD_S}" || die + rm -r "${BREAKPAD_SRC_S}" && + mv "${WORKDIR}/${BREAKPAD_SRC_P}/src" "${BREAKPAD_SRC_S}" || die + rm -r "${BRIGHTRAY_S}" && + mv "${WORKDIR}/${BRIGHTRAY_P}" "${BRIGHTRAY_S}" || die + rm -r "${NATIVE_MATE_S}" && + mv "${WORKDIR}/${NATIVE_MATE_P}" "${NATIVE_MATE_S}" || die + rm -r "${PDF_VIEWER_S}" && + mv "${WORKDIR}/${PDF_VIEWER_P}" "${PDF_VIEWER_S}" || die + rm -r "${GRIT_S}" && + mv "${WORKDIR}/${GRIT_P}" "${GRIT_S}" || die + rm -r "${LIBCC_S}" && + mv "${WORKDIR}/${LIBCHROMIUMCONTENT_P}" "${LIBCC_S}" || die + rsync -a "${WORKDIR}/${ASAR_P}/node_modules/" \ + "${S}/node_modules/" || die + rsync -a "${WORKDIR}/${BROWSERIFY_P}/node_modules/" \ + "${S}/node_modules/" || die + + # electron patches + cd "${ELECTRON_S}" || die + eapply "${FILESDIR}/${P}.patch" + + # node patches + cd "${NODE_S}" || die + eapply "${FILESDIR}/${P}-vendor-node.patch" + eapply "${FILESDIR}/${PN}-vendor-node-external-snapshots-r2.patch" + # make sure node uses the correct version of v8 + rm -r deps/v8 || die + ln -s "${CHROMIUM_S}/v8" deps/ || die + + # make sure we use python2.* while using gyp + sed -i -e "s/python/${EPYTHON}/" \ + deps/npm/node_modules/node-gyp/gyp/gyp || die + sed -i -e "s/|| 'python'/|| '${EPYTHON}'/" \ + deps/npm/node_modules/node-gyp/lib/configure.js || die + + python_fix_shebang "${CHROMIUM_S}/build/gyp_chromium" + python_fix_shebang "${S}/tools/" + + # less verbose install output (stating the same as portage, basically) + sed -i -e "/print/d" tools/install.py || die + + # proper libdir, hat tip @ryanpcmcquen + # https://github.com/iojs/io.js/issues/504 + local LIBDIR=$(get_libdir) + sed -i -e "s|lib/|${LIBDIR}/|g" tools/install.py || die + sed -i -e "s/'lib'/'${LIBDIR}'/" lib/module.js || die + sed -i -e "s|\"lib\"|\"${LIBDIR}\"|" deps/npm/lib/npm.js || die + + # brightray patches + cd "${BRIGHTRAY_S}" || die + eapply "${FILESDIR}/${P}-vendor-brightray.patch" + + # libchromiumcontent patches + cd "${LIBCC_S}" || die + eapply "${FILESDIR}/${P}-vendor-libchromiumcontent.patch" + + # chromium patches + cd "${CHROMIUM_S}" || die + + eapply "${FILESDIR}/chromium-FORTIFY_SOURCE.patch" + eapply "${FILESDIR}/chromium-glibc-2.24.patch" + eapply "${FILESDIR}/chromium-56-gcc4.patch" + eapply "${FILESDIR}/chromium-system-ffmpeg-r4.patch" + eapply "${FILESDIR}/chromium-disable-widevine.patch" + eapply "${FILESDIR}/chromium-remove-gardiner-mod-font-r1.patch" + eapply "${FILESDIR}/chromium-shared-v8-r2.patch" + eapply "${FILESDIR}/chromium-lto-fixes-r3.patch" + + # libcc chromium patches + _unnest_patches "${LIBCC_S}/patches" + + EPATCH_SOURCE="${LIBCC_S}/patches" \ + EPATCH_SUFFIX="patch" \ + EPATCH_FORCE="yes" \ + EPATCH_EXCLUDE="third_party_icu*" \ + EPATCH_MULTI_MSG="Applying libchromiumcontent patches..." \ + epatch + + # Merge chromiumcontent component into chromium source tree. + mkdir -p "${CHROMIUM_S}/chromiumcontent" || die + cp -a "${LIBCC_S}/chromiumcontent" "${CHROMIUM_S}/" || die + cp -a "${LIBCC_S}/tools/linux/" "${CHROMIUM_S}/tools/" || die + + local keeplibs=( + base/third_party/dmg_fp + base/third_party/dynamic_annotations + base/third_party/icu + base/third_party/nspr + base/third_party/superfasthash + base/third_party/symbolize + base/third_party/valgrind + base/third_party/xdg_mime + base/third_party/xdg_user_dirs + breakpad/src/third_party/curl + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + third_party/WebKit + third_party/analytics + third_party/angle + third_party/angle/src/common/third_party/numerics + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/murmurhash + third_party/angle/src/third_party/trace_event + third_party/boringssl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/third_party/polymer + third_party/catapult/third_party/py_vulcanize + third_party/catapult/third_party/py_vulcanize/third_party/rcssmin + third_party/catapult/third_party/py_vulcanize/third_party/rjsmin + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/ced + third_party/cld_2 + third_party/cld_3 + third_party/cros_system_api + third_party/devscripts + third_party/dom_distiller_js + third_party/fips181 + third_party/flatbuffers + third_party/flot + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libudev + third_party/libusb + third_party/libwebm + third_party/libxml/chromium + third_party/libyuv + third_party/lss + third_party/lzma_sdk + third_party/markupsafe + third_party/mesa + third_party/modp_b64 + third_party/mt19937ar + third_party/openh264 + third_party/openmax_dl + third_party/opus + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms2-2.6 + third_party/pdfium/third_party/libjpeg + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/zlib_v128 + third_party/ply + third_party/polymer + third_party/protobuf + third_party/protobuf/third_party/six + third_party/qcms + third_party/sfntly + third_party/skia + third_party/smhasher + third_party/sqlite + third_party/tcmalloc + third_party/usrsctp + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/widevine + third_party/woff2 + third_party/x86inc + third_party/zlib/google + url/third_party/mozilla + v8/src/third_party/valgrind + v8/third_party/inspector_protocol + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py \ + "${keeplibs[@]}" --do-remove || die + + cd "${S}" || die + + eapply_user +} + +src_configure() { + local myconf_gn="" + local myconf_gyp="" + + cd "${CHROMIUM_S}" || die + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_libusb (http://crbug.com/266149). + # TODO: use_system_opus (https://code.google.com/p/webrtc/issues/detail?id=3077). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=" + flac + harfbuzz-ng + icu + libjpeg + libpng + libvpx + libwebp + libxml + libxslt + re2 + snappy + yasm + zlib" + if use system-ffmpeg; then + gn_system_libraries+=" ffmpeg" + fi + build/linux/unbundle/replace_gn_files.py --system-libraries ${gn_system_libraries} || die + + # Optional dependencies. + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gconf=$(usex gnome true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_gtk3=$(usex gtk3 true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_base_path=\"/usr\" clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local target_arch=$(_get_target_arch) + local ffmpeg_target_arch="${target_arch}" + + if [[ ${ffmpeg_target_arch} = arm ]]; then + ffmpeg_target_arch=$(usex neon arm-neon arm) + fi + + # Make sure that -Werror doesn't get added to CFLAGS by the build system. + # Depending on GCC version the warnings are different and we don't want + # the build to fail because of that. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + filter-flags "-Wl,--as-needed" + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + # https://bugs.gentoo.org/588596 + append-cxxflags $(test-flags-CXX -fno-delete-null-pointer-checks) + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"${FILESDIR}/toolchain:default\"" + + use lto && myconf_gn+=" allow_posix_link_time_opt=true" + + # Tools for building programs to be executed on the build system, bug #410883. + if tc-is-cross-compiler; then + export AR_host=$(tc-getBUILD_AR) + export CC_host=$(tc-getBUILD_CC) + export CXX_host=$(tc-getBUILD_CXX) + export NM_host=$(tc-getBUILD_NM) + fi + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + if ! use system-ffmpeg; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + third_party/libaddressinput/chromium/tools/update-strings.py || die + + touch chrome/test/data/webui/i18n_process_css_test.html || die + + einfo "Configuring bundled nodejs..." + pushd "${S}/vendor/node" > /dev/null || die + # Make sure gyp_node does not run + echo '#!/usr/bin/env python' > tools/gyp_node.py || die + # --shared-libuv cannot be used as electron's node fork + # patches uv_loop structure. + ./configure --shared --without-bundled-v8 --shared-openssl \ + --shared-http-parser --shared-zlib --without-npm \ + --with-intl=system-icu --without-dtrace \ + --dest-cpu=${target_arch} --prefix="" || die + popd > /dev/null || die + + # libchromiumcontent configuration + myconf_gn+=" root_extra_deps = [\"//chromiumcontent:chromiumcontent\"]" + myconf_gn+=" is_electron_build = true" + myconf_gn+=" is_component_build = false" + + einfo "Configuring chromiumcontent..." + # TODO: bootstrapped gn binary hangs when using tcmalloc with portage's sandbox. + tools/gn/bootstrap/bootstrap.py -v --gn-gen-args "${myconf_gn} use_allocator=\"none\"" || die + # Remove the glibc allocator shim so that it doesn't get picked up + # by Electron's build_libs script. + rm out/Release/obj/base/allocator/unified_allocator_shim/allocator_shim_default_dispatch_to_glibc.o || die + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + out/Release/gn gen --args="${myconf_gn}" out/Release || die + + cd "${S}" || die +} + +eninja() { + if [[ -z ${NINJAOPTS+set} ]]; then + local jobs=$(makeopts_jobs) + local loadavg=$(makeopts_loadavg) + + if [[ ${MAKEOPTS} == *-j* && ${jobs} != 999 ]]; then + NINJAOPTS+=" -j ${jobs}" + fi + if [[ ${MAKEOPTS} == *-l* && ${loadavg} != 999 ]]; then + NINJAOPTS+=" -l ${loadavg}" + fi + fi + set -- ninja -v ${NINJAOPTS} "$@" + echo "$@" + "$@" || die +} + +src_compile() { + local compile_target="${S}/out/R" + local myconf_gyp="" + local chromium_target="${CHROMIUM_S}/out/Release" + local libcc_path="${S}/vendor/brightray/vendor/libchromiumcontent" + local libcc_dist_path="${libcc_path}/dist/main" + local libcc_dist_static_path="${libcc_dist_path}/static_library" + local libcc_dist_shared_path="${libcc_dist_path}/shared_library" + local libcc_output="${CHROMIUM_S}/out/Release/obj/chromiumcontent" + local libcc_output_shared="${libcc_output}-shared" + local target_arch=$(_get_target_arch) + + tc-export AR CC CXX NM + + mkdir -p "${compile_target}" || die + + cd "${CHROMIUM_S}" || die + + # Build mksnapshot and pax-mark it. + eninja -C "${chromium_target}" mksnapshot || die + pax-mark m "${chromium_target}/mksnapshot" + + # Build chromedriver. + eninja -C "${chromium_target}" chromedriver + cp -a "${chromium_target}/chromedriver" "${compile_target}/" || die + + # Build libchromiumcontent components. + eninja -C "${chromium_target}" chromiumcontent:chromiumcontent + + cd "${S}" || die + + # Gather and prepare built components of libchromiumcontent. + CHROMIUM_BUILD_DIR="${chromium_target}" \ + python2 "${libcc_path}"/script/create-dist \ + --target_arch=${target_arch} \ + --component=static_library \ + --no_zip || die + + # v8 is built as a shared library, so copy it manually + # for generate_filenames_gypi to find. + mkdir -p "${libcc_dist_shared_path}" || die + cp "${chromium_target}/libv8.so" "${libcc_dist_shared_path}" || die + + python2 "${libcc_path}"/tools/generate_filenames_gypi.py \ + "${libcc_dist_path}/filenames.gypi" \ + "${CHROMIUM_S}" \ + "${libcc_dist_shared_path}" \ + "${libcc_dist_static_path}" + + # Configure electron. + myconf_gyp+=" + $(gyp_use cups) + $(gyp_use gnome use_gconf) + $(gyp_use gnome-keyring use_gnome_keyring) + $(gyp_use gnome-keyring linux_link_gnome_keyring) + $(gyp_use lto)" + + if [[ $(tc-getCC) == *clang* ]]; then + myconf_gyp+=" -Dclang=1" + else + myconf_gyp+=" -Dclang=0" + fi + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + myconf_gyp+=" + -Dclang_use_chrome_plugins=0 + -Dhost_clang=0 + -Dlinux_use_bundled_binutils=0 + -Dlinux_use_bundled_gold=0 + -Dlinux_use_gold_flags=0 + -Dsysroot=" + + myconf_gyp+=" -Dtarget_arch=${target_arch}" + + # Make sure that -Werror doesn't get added to CFLAGS by the build system. + # Depending on GCC version the warnings are different and we don't want + # the build to fail because of that. + myconf_gyp+=" -Dwerror=" + + # Disable fatal linker warnings, bug 506268. + myconf_gyp+=" -Ddisable_fatal_linker_warnings=1" + + # Needed for system icu - we don't need additional data files. + myconf_gyp+=" -Dicu_use_data_file_flag=0" + myconf_gyp+=" -Dgenerate_character_data=0" + + myconf_gyp+=" -Dlibchromiumcontent_component=0" + myconf_gyp+=" -Dcomponent=static_library" + myconf_gyp+=" -Dlibrary=static_library" + myconf_gyp+=" -Ivendor/node/config.gypi -Icommon.gypi electron.gyp" + + EGYP_CHROMIUM_COMMAND="${CHROMIUM_S}/build/gyp_chromium" \ + egyp_chromium ${myconf_gyp} || die + + # Copy libv8 and snapshot files so the node binary can find them. + mkdir -p "${compile_target}/lib/" || die + cp "${chromium_target}/libv8.so" "${compile_target}/lib/" || die + cp "${chromium_target}/natives_blob.bin" "${compile_target}" || die + cp "${chromium_target}/snapshot_blob.bin" "${compile_target}" || die + + # Copy generated shim headers. + mkdir -p "${compile_target}/gen" || die + cp -r "${chromium_target}/gen/shim_headers" \ + "${compile_target}/gen" || die + + # Build the Node binary and pax-mark it. + eninja -C ${compile_target} nodebin + pax-mark m ${compile_target}/nodebin + + # Finally, build Electron. + eninja -C ${compile_target} electron + pax-mark m ${compile_target}/electron + + echo "v${PV}" > ${compile_target}/version +} + +src_install() { + local install_dir="$(_get_install_dir)" + local install_suffix="$(_get_install_suffix)" + local LIBDIR="${ED}/usr/$(get_libdir)" + + pushd out/R/locales > /dev/null || die + chromium_remove_language_paks + popd > /dev/null || die + + # Install Electron + insinto "${install_dir}" + exeinto "${install_dir}" + newexe out/R/nodebin node + doexe out/R/electron + doexe out/R/chromedriver + doins out/R/libv8.so + doins out/R/libnode.so + fperms +x "${install_dir}/libv8.so" "${install_dir}/libnode.so" + doins out/R/natives_blob.bin + doins out/R/snapshot_blob.bin + doins out/R/blink_image_resources_200_percent.pak + doins out/R/content_resources_200_percent.pak + doins out/R/content_shell.pak + doins out/R/pdf_viewer_resources.pak + doins out/R/ui_resources_200_percent.pak + doins out/R/views_resources_200_percent.pak + doins -r out/R/resources + doins -r out/R/locales + dosym "${install_dir}/electron" "/usr/bin/electron${install_suffix}" + + doins out/R/version + + # Install Node headers + HEADERS_ONLY=1 \ + "${S}/vendor/node/tools/install.py" install "${ED}" "/usr" || die + # set up a symlink structure that npm expects.. + dodir /usr/include/node/deps/{v8,uv} + dosym . /usr/include/node/src + for var in deps/{uv,v8}/include; do + dosym ../.. /usr/include/node/${var} + done + + dodir "/usr/include/electron${install_suffix}" + mv "${ED}/usr/include/node" \ + "${ED}/usr/include/electron${install_suffix}/node" || die +} + +pkg_postinst() { + electron-config update +} + +pkg_postrm() { + electron-config update +} diff --git a/dev-util/electron/files/chromium-56-gcc4.patch b/dev-util/electron/files/chromium-56-gcc4.patch new file mode 100644 index 000000000000..e3188668ce5a --- /dev/null +++ b/dev-util/electron/files/chromium-56-gcc4.patch @@ -0,0 +1,48 @@ +From 888874f761fdd69bb9448b3905627289b5fd66dd Mon Sep 17 00:00:00 2001 +From: floppymaster <floppymaster@gmail.com> +Date: Thu, 19 Jan 2017 20:20:45 -0800 +Subject: [PATCH] Allow GCC 4.9 to compile Chromium + +In order to implicit cast an lvalue to an rvalue when returning +from a function, the return type and type of variable in the return +statement previously had to be exactly the same. When this was not +the case, std::move was required. For instance, when returning a +std::unique_ptr<Derived> variable in a function with a +std::unique_ptr<Base> return type, std::move is required. + +DR 1579 changed this, and allows for implicitly converting +to the return type, if the return type has a constructor(T&&), where +T is the type of the local variable being returned. DR 1579 was +implemented in GCC 5, but not in GCC 4.9 and below. By explicitly +qualifying the local variable with std::move, we allow for compiling +with GCC 4.9 and incur no performance penalty. The code is still +absolutely correct to the word of C++11. + +BUG=chromium:682965 + +See also: +* https://bugs.gentoo.org/show_bug.cgi?id=600288 +* https://stackoverflow.com/questions/22018115/converting-stdunique-ptrderived-to-stdunique-ptrbase#comment33375875_22018521 +* http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3833.html#1579 + +Review-Url: https://codereview.webrtc.org/2642053003 +Cr-Commit-Position: refs/heads/master@{#16175} +--- + AUTHORS | 1 + + webrtc/modules/desktop_capture/screen_capturer_x11.cc | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +--- a/third_party/webrtc/modules/desktop_capture/screen_capturer_x11.cc ++++ b/third_party/webrtc/modules/desktop_capture/screen_capturer_x11.cc +@@ -412,7 +412,7 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer( + return nullptr; + } + +- return capturer; ++ return std::move(capturer); + } + + } // namespace webrtc +-- +2.11.0 + diff --git a/dev-util/electron/files/chromium-FORTIFY_SOURCE.patch b/dev-util/electron/files/chromium-FORTIFY_SOURCE.patch new file mode 100644 index 000000000000..c6477d690872 --- /dev/null +++ b/dev-util/electron/files/chromium-FORTIFY_SOURCE.patch @@ -0,0 +1,27 @@ +Drop _FORTIFY_SOURCE=2 from defines + +Gentoo toolchains enable this by default. Removing this prevents spammy +warnings about the macro being redefined. + +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -1069,19 +1069,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && +- (!is_linux || !is_clang || is_official_build)) { +- # _FORTIFY_SOURCE isn't really supported by Clang now, see +- # http://llvm.org/bugs/show_bug.cgi?id=16821. +- # It seems to work fine with Ubuntu 12 headers though, so use it in +- # official builds. +- # +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac || is_ios) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] diff --git a/dev-util/electron/files/chromium-glibc-2.24.patch b/dev-util/electron/files/chromium-glibc-2.24.patch new file mode 100644 index 000000000000..f7bfd816433f --- /dev/null +++ b/dev-util/electron/files/chromium-glibc-2.24.patch @@ -0,0 +1,15 @@ +--- a/third_party/WebKit/Source/wtf/allocator/PageAllocator.cpp.orig 2017-01-05 20:50:56.329369189 +0000 ++++ b/third_party/WebKit/Source/wtf/allocator/PageAllocator.cpp 2017-01-05 20:51:32.926099779 +0000 +@@ -242,6 +242,12 @@ + ASSERT(!(len & kSystemPageOffsetMask)); + #if OS(POSIX) + int ret = madvise(addr, len, MADV_FREE); ++ if (ret != 0 && errno == EINVAL) { ++ // MADV_FREE only works on Linux 4.5+ . If request failed, ++ // retry with older MADV_DONTNEED . Note that MADV_FREE ++ // being defined at compile time doesn't imply runtime support. ++ ret = madvise(addr, len, MADV_DONTNEED); ++ } + RELEASE_ASSERT(!ret); + #else + setSystemPagesInaccessible(addr, len); diff --git a/dev-util/electron/files/chromium-jinja-fix.patch b/dev-util/electron/files/chromium-jinja-fix.patch new file mode 100644 index 000000000000..83ac33be31b6 --- /dev/null +++ b/dev-util/electron/files/chromium-jinja-fix.patch @@ -0,0 +1,24 @@ +--- a/third_party/WebKit/Source/platform/v8_inspector/v8_inspector.gyp +--- b/third_party/WebKit/Source/platform/v8_inspector/v8_inspector.gyp +@@ -53,21 +53,10 @@ + 'type': 'none', + 'dependencies': ['protocol_version'], + 'variables': { +- 'conditions': [ +- ['debug_devtools=="node"', { +- # Node build +- 'jinja_module_files': [ +- '../../deps/jinja2/jinja2/__init__.py', +- '../../deps/markupsafe/markupsafe/__init__.py', # jinja2 dep +- ], +- }, { + 'jinja_module_files': [ + '<(DEPTH)/third_party/jinja2/__init__.py', + '<(DEPTH)/third_party/markupsafe/__init__.py', # jinja2 dep + ], +- } +- ], +- ], + }, + 'actions': [ + { diff --git a/dev-util/electron/files/chromium-lto-fixes-r3.patch b/dev-util/electron/files/chromium-lto-fixes-r3.patch new file mode 100644 index 000000000000..10493e6fd388 --- /dev/null +++ b/dev-util/electron/files/chromium-lto-fixes-r3.patch @@ -0,0 +1,108 @@ +From 2f2028a19fd12477fcd9050ea354174f33b68b46 Mon Sep 17 00:00:00 2001 +From: Elvis Pranskevichus <elvis@magic.io> +Date: Mon, 21 Aug 2017 10:16:44 -0400 +Subject: [PATCH] LTO fixes + +--- + build/config/compiler/BUILD.gn | 35 +++++++++++++++++++++++++---------- + build/config/posix/BUILD.gn | 2 +- + build/toolchain/gcc_ar_wrapper.py | 12 +++++++++++- + 3 files changed, 37 insertions(+), 12 deletions(-) + +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index d0510b8..583f186 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -448,20 +448,35 @@ config("compiler") { + } else { + # Note: ThinLTO does not currently have this feature implemented + # For Full LTO, it provides a measurable runtime speedup of Chrome. +- cflags += [ +- "-flto", +- "-fwhole-program-vtables", +- ] +- ldflags += [ +- "-flto", +- "-fwhole-program-vtables", +- ] ++ if (is_clang) { ++ cflags += [ ++ "-flto", ++ "-fwhole-program-vtables" ++ ] ++ ldflags += [ ++ "-flto", ++ "-fwhole-program-vtables" ++ ] ++ } else { ++ cflags += [ ++ "-flto=4", ++ "-fno-fat-lto-objects", ++ "-fuse-linker-plugin", ++ "--param=lto-partitions=1", ++ ] ++ ldflags += [ ++ "-flto=4", ++ "-fno-fat-lto-objects", ++ "-fuse-linker-plugin", ++ "--param=lto-partitions=1", ++ ] ++ } + + # Apply a lower LTO optimization level as the default is too slow. + if (is_linux) { + if (use_lld) { + ldflags += [ "-Wl,--lto-O1" ] +- } else { ++ } else if (is_clang) { + ldflags += [ "-Wl,-plugin-opt,O1" ] + } + } else if (is_mac) { +@@ -478,7 +493,7 @@ config("compiler") { + # targeting ARM, without this flag, LTO produces a .text section that is + # larger than the maximum call displacement, preventing the linker from + # relocating calls (http://llvm.org/PR22999). +- if (is_linux) { ++ if (is_linux && is_clang) { + ldflags += [ "-Wl,-plugin-opt,-function-sections" ] + } + } +diff --git a/build/config/posix/BUILD.gn b/build/config/posix/BUILD.gn +index d7e917a..fc68864 100644 +--- a/build/config/posix/BUILD.gn ++++ b/build/config/posix/BUILD.gn +@@ -21,7 +21,7 @@ config("compiler") { + if ((allow_posix_link_time_opt || is_cfi) && !is_nacl) { + arflags = [ + "--plugin", +- rebase_path("$clang_base_path/lib/LLVMgold.so", root_build_dir), ++ "auto" + ] + } + } +diff --git a/build/toolchain/gcc_ar_wrapper.py b/build/toolchain/gcc_ar_wrapper.py +index de53df0..39c7b56 100755 +--- a/build/toolchain/gcc_ar_wrapper.py ++++ b/build/toolchain/gcc_ar_wrapper.py +@@ -47,7 +47,17 @@ def main(): + + command = [args.ar, args.operation] + if args.plugin is not None: +- command += ['--plugin', args.plugin] ++ if args.plugin == 'auto': ++ gcc = os.environ.get('CC', '/usr/bin/cc') ++ gcc_ver = subprocess.check_output([gcc, '-dumpversion'], ++ universal_newlines=True) ++ gcc_ver = gcc_ver.strip(' \n') ++ plugin = '/usr/libexec/gcc/x86_64-pc-linux-gnu/{}/liblto_plugin.so'. \ ++ format(gcc_ver) ++ else: ++ plugin = args.plugin ++ ++ command += ['--plugin', plugin] + command.append(args.output) + command += args.inputs + +-- +2.14.1 + diff --git a/dev-util/electron/files/chromium-remove-gardiner-mod-font-r1.patch b/dev-util/electron/files/chromium-remove-gardiner-mod-font-r1.patch new file mode 100644 index 000000000000..f59549094107 --- /dev/null +++ b/dev-util/electron/files/chromium-remove-gardiner-mod-font-r1.patch @@ -0,0 +1,13 @@ +diff --git a/components/test_runner/BUILD.gn~ b/components/test_runner/BUILD.gn +index 3ac8955..6a968cb 100644 +--- a/components/test_runner/BUILD.gn~ ++++ b/components/test_runner/BUILD.gn +@@ -155,8 +155,6 @@ if (use_x11) { + copy("copy_x11_fonts") { + visibility = [ ":*" ] + sources = [ +- "//third_party/gardiner_mod/GardinerModBug.ttf", +- "//third_party/gardiner_mod/GardinerModCat.ttf", + "resources/fonts/fonts.conf", + ] + outputs = [ diff --git a/dev-util/electron/files/chromium-shared-v8-r2.patch b/dev-util/electron/files/chromium-shared-v8-r2.patch new file mode 100644 index 000000000000..475da8193a92 --- /dev/null +++ b/dev-util/electron/files/chromium-shared-v8-r2.patch @@ -0,0 +1,79 @@ +diff --git a/v8/BUILD.gn.orig b/v8/BUILD.gn +index 8587356..4365e03 100644 +--- a/v8/BUILD.gn ++++ b/v8/BUILD.gn +@@ -113,7 +113,7 @@ config("internal_config") { + + include_dirs = [ "." ] + +- if (is_component_build) { ++ if (is_component_build || is_electron_build) { + defines = [ "BUILDING_V8_SHARED" ] + } + } +@@ -127,14 +127,14 @@ config("internal_config_base") { + # This config should be applied to code using the libplatform. + config("libplatform_config") { + include_dirs = [ "include" ] +- if (is_component_build) { ++ if (is_component_build || is_electron_build) { + defines = [ "USING_V8_PLATFORM_SHARED" ] + } + } + + # This config should be applied to code using the libbase. + config("libbase_config") { +- if (is_component_build) { ++ if (is_component_build || is_electron_build) { + defines = [ "USING_V8_BASE_SHARED" ] + } + libs = [] +@@ -151,7 +151,7 @@ config("libsampler_config") { + # This config should only be applied to code using V8 and not any V8 code + # itself. + config("external_config") { +- if (is_component_build) { ++ if (is_component_build || is_electron_build) { + defines = [ "USING_V8_SHARED" ] + } + include_dirs = [ "include" ] +@@ -2265,7 +2265,7 @@ v8_component("v8_libbase") { + + defines = [] + +- if (is_component_build) { ++ if (is_component_build || is_electron_build) { + defines = [ "BUILDING_V8_BASE_SHARED" ] + } + +@@ -2355,7 +2355,7 @@ v8_component("v8_libplatform") { + + configs = [ ":internal_config_base" ] + +- if (is_component_build) { ++ if (is_component_build || is_electron_build) { + defines = [ "BUILDING_V8_PLATFORM_SHARED" ] + } + +@@ -2498,7 +2498,7 @@ group("gn_all") { + } + } + +-if (is_component_build) { ++if (is_component_build || is_electron_build) { + v8_component("v8") { + sources = [ + "src/v8dll-main.cc", +diff --git a/v8/src/inspector/BUILD.gn b/v8/src/inspector/BUILD.gn +index 6ebb91c..b6a2489 100644 +--- a/v8/src/inspector/BUILD.gn ++++ b/v8/src/inspector/BUILD.gn +@@ -106,7 +106,7 @@ config("inspector_config") { + "/wd4996", # Deprecated function call. + ] + } +- if (is_component_build) { ++ if (is_component_build || is_electron_build) { + defines = [ "BUILDING_V8_SHARED" ] + } + } diff --git a/dev-util/electron/files/chromium-system-ffmpeg-r4.patch b/dev-util/electron/files/chromium-system-ffmpeg-r4.patch new file mode 100644 index 000000000000..3abfc163e8a2 --- /dev/null +++ b/dev-util/electron/files/chromium-system-ffmpeg-r4.patch @@ -0,0 +1,48 @@ +--- a/media/ffmpeg/ffmpeg_common.h.orig 2016-09-09 13:16:07.757294768 +0000 ++++ b/media/ffmpeg/ffmpeg_common.h 2016-09-09 13:16:41.705989273 +0000 +@@ -22,10 +22,6 @@ + + // Include FFmpeg header files. + extern "C" { +-// Disable deprecated features which result in spammy compile warnings. This +-// list of defines must mirror those in the 'defines' section of FFmpeg's +-// BUILD.gn file or the headers below will generate different structures! +-#define FF_API_CONVERGENCE_DURATION 0 + // Upstream libavcodec/utils.c still uses the deprecated + // av_dup_packet(), causing deprecation warnings. + // The normal fix for such things is to disable the feature as below, +@@ -35,7 +35,6 @@ + MSVC_PUSH_DISABLE_WARNING(4244); + #include <libavcodec/avcodec.h> + #include <libavformat/avformat.h> +-#include <libavformat/internal.h> + #include <libavformat/avio.h> + #include <libavutil/avutil.h> + #include <libavutil/imgutils.h> +--- a/media/filters/ffmpeg_demuxer.cc.orig 2016-09-09 14:21:40.185828912 +0000 ++++ b/media/filters/ffmpeg_demuxer.cc 2016-09-09 14:21:52.894089352 +0000 +@@ -1185,24 +1185,6 @@ + // If no estimate is found, the stream entry will be kInfiniteDuration. + std::vector<base::TimeDelta> start_time_estimates(format_context->nb_streams, + kInfiniteDuration); +- const AVFormatInternal* internal = format_context->internal; +- if (internal && internal->packet_buffer && +- format_context->start_time != static_cast<int64_t>(AV_NOPTS_VALUE)) { +- struct AVPacketList* packet_buffer = internal->packet_buffer; +- while (packet_buffer != internal->packet_buffer_end) { +- DCHECK_LT(static_cast<size_t>(packet_buffer->pkt.stream_index), +- start_time_estimates.size()); +- const AVStream* stream = +- format_context->streams[packet_buffer->pkt.stream_index]; +- if (packet_buffer->pkt.pts != static_cast<int64_t>(AV_NOPTS_VALUE)) { +- const base::TimeDelta packet_pts = +- ConvertFromTimeBase(stream->time_base, packet_buffer->pkt.pts); +- if (packet_pts < start_time_estimates[stream->index]) +- start_time_estimates[stream->index] = packet_pts; +- } +- packet_buffer = packet_buffer->next; +- } +- } + + std::unique_ptr<MediaTracks> media_tracks(new MediaTracks()); + diff --git a/dev-util/electron/files/chromium-system-jinja-r11.patch b/dev-util/electron/files/chromium-system-jinja-r11.patch new file mode 100644 index 000000000000..0b3c9b72478b --- /dev/null +++ b/dev-util/electron/files/chromium-system-jinja-r11.patch @@ -0,0 +1,79 @@ +--- third_party/WebKit/Source/bindings/scripts/scripts.gyp.orig 2014-08-19 09:55:10.330972228 +0000 ++++ third_party/WebKit/Source/bindings/scripts/scripts.gyp 2014-08-19 09:55:26.387286232 +0000 +@@ -54,7 +54,6 @@ + 'actions': [{ + 'action_name': 'cache_jinja_templates', + 'inputs': [ +- '<@(jinja_module_files)', + 'code_generator_v8.py', + '<@(code_generator_template_files)', + ], +--- third_party/WebKit/Source/build/scripts/scripts.gypi.orig 2014-08-19 10:00:00.216521733 +0000 ++++ third_party/WebKit/Source/build/scripts/scripts.gypi 2014-08-19 10:00:11.464735099 +0000 +@@ -2,10 +2,6 @@ + { + 'variables': { + 'scripts_for_in_files': [ +- # jinja2/__init__.py contains version string, so sufficient as +- # dependency for whole jinja2 package +- '<(DEPTH)/third_party/jinja2/__init__.py', +- '<(DEPTH)/third_party/markupsafe/__init__.py', # jinja2 dep + 'hasher.py', + 'in_file.py', + 'in_generator.py', +--- third_party/WebKit/Source/bindings/scripts/scripts.gypi.orig 2014-08-19 10:53:02.824618979 +0000 ++++ third_party/WebKit/Source/bindings/scripts/scripts.gypi 2014-08-19 10:53:20.784957370 +0000 +@@ -12,9 +12,6 @@ + '<(DEPTH)/third_party/markupsafe/__init__.py', # jinja2 dep + ], + 'idl_lexer_parser_files': [ +- # PLY (Python Lex-Yacc) +- '<(DEPTH)/third_party/ply/lex.py', +- '<(DEPTH)/third_party/ply/yacc.py', + # Web IDL lexer/parser (base parser) + '<(DEPTH)/tools/idl_parser/idl_lexer.py', + '<(DEPTH)/tools/idl_parser/idl_node.py', +--- third_party/WebKit/Source/build/scripts/scripts.gni.orig 2016-06-02 09:54:28.510152077 +0000 ++++ third_party/WebKit/Source/build/scripts/scripts.gni 2016-06-02 09:54:50.966612510 +0000 +@@ -9,10 +9,6 @@ + _scripts_dir = "//third_party/WebKit/Source/build/scripts" + + scripts_for_in_files = [ +- # jinja2/__init__.py contains version string, so sufficient as +- # dependency for whole jinja2 package +- "//third_party/jinja2/__init__.py", +- "//third_party/markupsafe/__init__.py", # jinja2 dep + "$_scripts_dir/hasher.py", + "$_scripts_dir/in_file.py", + "$_scripts_dir/in_generator.py", +--- third_party/WebKit/Source/bindings/scripts/BUILD.gn.orig 2016-06-02 10:03:01.100658943 +0000 ++++ third_party/WebKit/Source/bindings/scripts/BUILD.gn 2016-06-02 10:03:13.240907715 +0000 +@@ -36,7 +36,7 @@ + action("cached_jinja_templates") { + script = "code_generator_v8.py" + +- inputs = jinja_module_files + [ "code_generator_v8.py" ] + ++ inputs = [ "code_generator_v8.py" ] + + code_generator_template_files + + # Dummy file to track dependency. +--- third_party/WebKit/Source/platform/v8_inspector/v8_inspector.gyp.orig 2016-06-03 12:31:49.844954196 +0000 ++++ third_party/WebKit/Source/platform/v8_inspector/v8_inspector.gyp 2016-06-03 12:32:01.869198425 +0000 +@@ -60,7 +60,6 @@ + { + 'action_name': 'generateV8InspectorProtocolBackendSources', + 'inputs': [ +- '<@(jinja_module_files)', + # The python script in action below. + '../inspector_protocol/CodeGenerator.py', + # Input files for the script. +--- third_party/WebKit/Source/core/inspector/inspector.gyp.orig 2016-06-03 12:38:20.712891692 +0000 ++++ third_party/WebKit/Source/core/inspector/inspector.gyp 2016-06-03 12:38:31.197104557 +0000 +@@ -52,7 +52,6 @@ + { + 'action_name': 'generateInspectorProtocolBackendSources', + 'inputs': [ +- '<@(jinja_module_files)', + # The python script in action below. + '../../platform/inspector_protocol/CodeGenerator.py', + # Input files for the script. diff --git a/dev-util/electron/files/electron-1.6.11-vendor-brightray.patch b/dev-util/electron/files/electron-1.6.11-vendor-brightray.patch new file mode 100644 index 000000000000..a1a351195d00 --- /dev/null +++ b/dev-util/electron/files/electron-1.6.11-vendor-brightray.patch @@ -0,0 +1,163 @@ +From 610ee2681f9532a13f63edf78aab55b1dcb8abf2 Mon Sep 17 00:00:00 2001 +From: Elvis Pranskevichus <elvis@magic.io> +Date: Mon, 8 Feb 2016 15:14:58 -0500 +Subject: [PATCH] brightray build fixes + +--- + brightray.gyp | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---- + brightray.gypi | 14 ++----------- + 2 files changed, 64 insertions(+), 16 deletions(-) + +diff --git a/brightray.gyp b/brightray.gyp +index e60d17a..37e5159 100644 +--- a/brightray.gyp ++++ b/brightray.gyp +@@ -1,7 +1,7 @@ + { + 'variables': { + # The libraries brightray will be compiled to. +- 'linux_system_libraries': 'gtk+-2.0 dbus-1 x11 x11-xcb xcb xi xcursor xdamage xrandr xcomposite xext xfixes xrender xtst xscrnsaver gconf-2.0 gmodule-2.0 nss' ++ 'linux_system_libraries': 'gtk+-2.0 dbus-1 x11 x11-xcb xcb xi xcursor xdamage xrandr xcomposite xext xfixes xrender xtst xscrnsaver gmodule-2.0 nss' + }, + 'includes': [ + 'filenames.gypi', +@@ -9,6 +9,10 @@ + 'targets': [ + { + 'target_name': 'brightray', ++ 'dependencies': [ ++ 'cups', ++ 'gconf', ++ ], + 'type': 'static_library', + 'include_dirs': [ + '.', +@@ -130,18 +134,30 @@ + }, { + 'link_settings': { + 'libraries': [ +- # Link with ffmpeg. +- '<(libchromiumcontent_dir)/libffmpeg.so', + # Following libraries are required by libchromiumcontent: + '-lasound', + '-lcap', +- '-lcups', + '-lrt', + '-ldl', + '-lresolv', + '-lfontconfig', + '-lfreetype', + '-lexpat', ++ '-lre2', ++ '-ljpeg', ++ '-lsnappy', ++ '-lharfbuzz', ++ '-lpng', ++ '-lxml2', ++ '-lxslt', ++ '-lwebp', ++ '-lwebpdemux', ++ '-lavcodec', ++ '-lavformat', ++ '-lavutil', ++ '-lvpx', ++ '-lFLAC', ++ '-lminizip', + ], + }, + }], +@@ -390,5 +406,47 @@ + }], # OS=="win" + ], + }, ++ { ++ 'target_name': 'gconf', ++ 'type': 'none', ++ 'conditions': [ ++ ['use_gconf==1 and _toolset=="target"', { ++ 'direct_dependent_settings': { ++ 'cflags': [ ++ '<!@(<(pkg-config) --cflags gconf-2.0)', ++ ], ++ 'defines': [ ++ 'USE_GCONF', ++ ], ++ }, ++ 'link_settings': { ++ 'ldflags': [ ++ '<!@(<(pkg-config) --libs-only-L --libs-only-other gconf-2.0)', ++ ], ++ 'libraries': [ ++ '<!@(<(pkg-config) --libs-only-l gconf-2.0)', ++ ], ++ }, ++ }], ++ ], ++ }, ++ { ++ 'target_name': 'cups', ++ 'type': 'none', ++ 'conditions': [ ++ ['use_cups==1', { ++ 'direct_dependent_settings': { ++ 'defines': [ ++ 'USE_CUPS', ++ ], ++ 'link_settings': { ++ 'libraries': [ ++ '-lcups', ++ ], ++ }, ++ }, ++ }], ++ ], ++ }, + ], + } +diff --git a/brightray.gypi b/brightray.gypi +index 064ae1a..95d6f14 100644 +--- a/brightray.gypi ++++ b/brightray.gypi +@@ -1,6 +1,6 @@ + { + 'includes': [ +- 'vendor/download/libchromiumcontent/filenames.gypi', ++ 'vendor/libchromiumcontent/dist/main/filenames.gypi', + ], + 'variables': { + 'libchromiumcontent_component%': 1, +@@ -14,7 +14,7 @@ + }, { + 'libchromiumcontent_dir%': '<(libchromiumcontent_static_libraries_dir)', + 'libchromiumcontent_libraries%': '<(libchromiumcontent_static_libraries)', +- 'libchromiumcontent_v8_libraries%': '<(libchromiumcontent_static_v8_libraries)', ++ 'libchromiumcontent_v8_libraries%': '<(libchromiumcontent_shared_v8_libraries)', + }], + ], + }, +@@ -235,22 +235,12 @@ + 'conditions': [ + ['OS=="linux"', { + 'cflags': [ +- '-O2', +- # Generate symbols, will be stripped later. +- '-g', +- # Don't emit the GCC version ident directives, they just end up +- # in the .comment section taking up binary size. +- '-fno-ident', + # Put data and code in their own sections, so that unused symbols + # can be removed at link time with --gc-sections. + '-fdata-sections', + '-ffunction-sections', + ], + 'ldflags': [ +- # Specifically tell the linker to perform optimizations. +- # See http://lwn.net/Articles/192624/ . +- '-Wl,-O1', +- '-Wl,--as-needed', + '-Wl,--gc-sections', + ], + }], # OS=="linux" +-- +2.13.3 + diff --git a/dev-util/electron/files/electron-1.6.11-vendor-libchromiumcontent.patch b/dev-util/electron/files/electron-1.6.11-vendor-libchromiumcontent.patch new file mode 100644 index 000000000000..d724e41f1fdb --- /dev/null +++ b/dev-util/electron/files/electron-1.6.11-vendor-libchromiumcontent.patch @@ -0,0 +1,86 @@ +From 0a28ad879b544f73f74491ddd58646750335bf1d Mon Sep 17 00:00:00 2001 +From: Elvis Pranskevichus <elvis@magic.io> +Date: Fri, 28 Apr 2017 17:22:38 -0400 +Subject: [PATCH] Gentoo build fixes + +--- + chromiumcontent/BUILD.gn | 8 ++------ + chromiumcontent/build_libs.py | 2 +- + script/create-dist | 4 ---- + script/lib/config.py | 2 +- + 4 files changed, 4 insertions(+), 12 deletions(-) + +diff --git a/chromiumcontent/BUILD.gn b/chromiumcontent/BUILD.gn +index e4e4166..25be865 100644 +--- a/chromiumcontent/BUILD.gn ++++ b/chromiumcontent/BUILD.gn +@@ -343,12 +343,8 @@ if (is_electron_build && !is_component_build) { + } + } + +- static_library("v8") { +- complete_static_lib = true +- sources = [] +- if (defined(obj_v8)) { +- sources += obj_v8 +- } ++ shared_library("v8") { ++ deps = [ "//v8:v8", "//v8:v8_libplatform" ] + } + + } else { +diff --git a/chromiumcontent/build_libs.py b/chromiumcontent/build_libs.py +index e10f320..716c5f2 100644 +--- a/chromiumcontent/build_libs.py ++++ b/chromiumcontent/build_libs.py +@@ -82,7 +82,7 @@ with open(args.out, 'w') as out: + "third_party/usrsctp", + "third_party/woff2", + "third_party/zlib", +- "tools", ++ "tools/battor_agent", + "ui", + "url", + ]) +diff --git a/script/create-dist b/script/create-dist +index aec75e5..64c7401 100755 +--- a/script/create-dist ++++ b/script/create-dist +@@ -45,7 +45,6 @@ COMPONENTS = ['static_library', 'shared_library'] + BINARIES = { + 'all': [ + 'content_shell.pak', +- 'icudtl.dat', + 'natives_blob.bin', + 'snapshot_blob.bin', + os.path.join('gen', 'blink', 'public', 'resources', 'blink_image_resources_200_percent.pak'), +@@ -59,7 +58,6 @@ BINARIES = { + 'libffmpeg.dylib', + ], + 'linux': [ +- 'libffmpeg.so', + ], + 'win32': [ + 'd3dcompiler_47.dll', +@@ -312,8 +310,6 @@ def main(): + copy_generated_sources(target_arch, component) + copy_locales(target_arch, component) + +- copy_ffmpeg(target_arch) +- copy_sources() + generate_licenses() + if not args.no_zip: + create_zip(create_debug_archive) +diff --git a/script/lib/config.py b/script/lib/config.py +index 3455161..195b2a1 100644 +--- a/script/lib/config.py ++++ b/script/lib/config.py +@@ -4,4 +4,4 @@ import os + + + def get_output_dir(source_root, target_arch, component): +- return os.path.join(source_root, 'src', 'out-' + target_arch, component) ++ return os.environ.get('CHROMIUM_BUILD_DIR') +-- +2.13.3 + diff --git a/dev-util/electron/files/electron-1.6.11-vendor-node.patch b/dev-util/electron/files/electron-1.6.11-vendor-node.patch new file mode 100644 index 000000000000..2f931771f91a --- /dev/null +++ b/dev-util/electron/files/electron-1.6.11-vendor-node.patch @@ -0,0 +1,80 @@ +From fc6ba3a74ffa88b22435531d6522d934a52187e5 Mon Sep 17 00:00:00 2001 +From: Elvis Pranskevichus <elvis@magic.io> +Date: Wed, 10 Feb 2016 14:45:13 -0500 +Subject: [PATCH] Build fixes + +--- + lib/internal/bootstrap_node.js | 2 ++ + node.gyp | 9 +++++++++ + src/node_main.cc | 2 ++ + 3 files changed, 13 insertions(+) + +diff --git a/lib/internal/bootstrap_node.js b/lib/internal/bootstrap_node.js +index 085ea00fd0..cb49fc87a7 100644 +--- a/lib/internal/bootstrap_node.js ++++ b/lib/internal/bootstrap_node.js +@@ -40,7 +40,9 @@ + setupGlobalConsole(); + } + ++ if (!process.env.ELECTRON_NODE_DISABLE_ASAR_SUPPORT) { + setupAsarSupport(); ++ } + + const _process = NativeModule.require('internal/process'); + +diff --git a/node.gyp b/node.gyp +index 95f24933fc..1434904324 100644 +--- a/node.gyp ++++ b/node.gyp +@@ -17,6 +17,7 @@ + 'node_shared_libuv%': 'false', + 'node_use_openssl%': 'true', + 'node_shared_openssl%': 'false', ++ 'node_v8_path%': 'deps/v8', + 'node_v8_options%': '', + 'node_enable_v8_vtunejit%': 'false', + 'node_core_target_name%': 'node', +@@ -133,6 +134,7 @@ + ], + + 'include_dirs': [ ++ '<(node_v8_path)/include', + 'src', + 'tools/msvs/genfiles', + 'deps/uv/src/ares', +@@ -238,6 +240,13 @@ + 'V8_DEPRECATION_WARNINGS=1', + ], + ++ 'link_settings': { ++ 'ldflags': [ ++ '-Wl,-rpath=\$$ORIGIN/', ++ # Make native module dynamic loading work. ++ '-rdynamic', ++ ], ++ }, + + 'conditions': [ + [ 'node_shared=="false"', { +diff --git a/src/node_main.cc b/src/node_main.cc +index 16bda81ae6..fd559ef1c3 100644 +--- a/src/node_main.cc ++++ b/src/node_main.cc +@@ -50,11 +50,13 @@ int wmain(int argc, wchar_t *wargv[]) { + } + #else + // UNIX ++#include <stdlib.h> + int main(int argc, char *argv[]) { + // Disable stdio buffering, it interacts poorly with printf() + // calls elsewhere in the program (e.g., any logging from V8.) + setvbuf(stdout, nullptr, _IONBF, 0); + setvbuf(stderr, nullptr, _IONBF, 0); ++ putenv("ELECTRON_NODE_DISABLE_ASAR_SUPPORT=1"); + return node::Start(argc, argv); + } + #endif +-- +2.13.3 + diff --git a/dev-util/electron/files/electron-1.6.11.patch b/dev-util/electron/files/electron-1.6.11.patch new file mode 100644 index 000000000000..b40d471348ab --- /dev/null +++ b/dev-util/electron/files/electron-1.6.11.patch @@ -0,0 +1,512 @@ +From b756fa976480791c76e9338a16ee2b0a29265b93 Mon Sep 17 00:00:00 2001 +From: Elvis Pranskevichus <elvis@magic.io> +Date: Mon, 8 Feb 2016 15:16:40 -0500 +Subject: [PATCH] electron build fixes + +--- + common.gypi | 43 ++++++++++++++++++++++----- + electron.gyp | 74 +++++++++++++++++++++++++++++++++++---------- + toolchain.gypi | 76 +++++++++++++++++++---------------------------- + tools/ar-flags.py | 15 ++++++++++ + tools/atom_source_root.py | 5 ++++ + tools/browserify.py | 24 +++++++++++++++ + tools/get-endianness.py | 4 +++ + tools/js2asar.py | 13 ++++---- + 8 files changed, 179 insertions(+), 75 deletions(-) + create mode 100644 tools/ar-flags.py + create mode 100644 tools/atom_source_root.py + create mode 100644 tools/browserify.py + create mode 100644 tools/get-endianness.py + +diff --git a/common.gypi b/common.gypi +index 7c1bf366a..c441ae04b 100644 +--- a/common.gypi ++++ b/common.gypi +@@ -2,6 +2,7 @@ + 'includes': [ + 'toolchain.gypi', + 'vendor/brightray/brightray.gypi', ++ 'vendor/node/common.gypi', + ], + 'variables': { + # Tell crashpad to build as external project. +@@ -16,26 +17,23 @@ + 'openssl_no_asm': 1, + 'use_openssl_def': 0, + 'OPENSSL_PRODUCT': 'libopenssl.a', +- 'node_release_urlbase': 'https://atom.io/download/atom-shell', +- 'node_byteorder': '<!(node <(DEPTH)/tools/get-endianness.js)', ++ 'node_release_urlbase': 'https://atom.io/download/electron', ++ 'node_byteorder': '<!(python <(DEPTH)/tools/get-endianness.py)', + 'node_target_type': 'shared_library', ++ 'node_module_version': '', + 'node_install_npm': 'false', + 'node_prefix': '', + 'node_shared': 'true', +- 'node_shared_cares': 'false', +- 'node_shared_http_parser': 'false', +- 'node_shared_libuv': 'false', +- 'node_shared_openssl': 'false', + 'node_shared_v8': 'true', +- 'node_shared_zlib': 'false', + 'node_tag': '', + 'node_use_dtrace': 'false', + 'node_use_etw': 'false', + 'node_use_mdb': 'false', + 'node_use_openssl': 'true', + 'node_use_perfctr': 'false', +- 'node_use_v8_platform': 'false', ++ 'node_use_v8_platform': 'true', + 'node_use_bundled_v8': 'false', ++ 'node_v8_path': '<(DEPTH)/chromium/v8/', + 'node_enable_d8': 'false', + 'uv_library': 'static_library', + 'uv_parent_path': 'vendor/node/deps/uv', +@@ -44,10 +42,16 @@ + 'v8_postmortem_support': 'false', + 'v8_enable_i18n_support': 'false', + 'v8_inspector': 'false', ++ 'v8_use_snapshot': 'true', ++ 'v8_use_external_startup_data': 1, + }, + # Settings to compile node under Windows. + 'target_defaults': { + 'target_conditions': [ ++ ['_target_name in ["icuuc", "icui18n"]', { ++ 'cflags_cc!': ['-fno-rtti'] ++ }], ++ + ['_target_name in ["libuv", "http_parser", "openssl", "openssl-cli", "cares", "node", "zlib"]', { + 'msvs_disabled_warnings': [ + 4003, # not enough actual parameters for macro 'V' +@@ -128,6 +132,14 @@ + ], + }], + ['_target_name=="node"', { ++ 'cflags!': [ ++ '-fvisibility=hidden', ++ '-fdata-sections', ++ '-ffunction-sections', ++ ], ++ 'cflags_cc!': [ ++ '-fvisibility-inlines-hidden', ++ ], + 'include_dirs': [ + '<(libchromiumcontent_src_dir)', + '<(libchromiumcontent_src_dir)/third_party/icu/source/common', +@@ -228,6 +240,21 @@ + }], # OS=="win" + ], + }], ++ ['_target_name=="shell_runner_host_lib"', { ++ 'conditions': [ ++ ['icu_use_data_file_flag==1', { ++ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE'], ++ }, { # else icu_use_data_file_flag !=1 ++ 'conditions': [ ++ ['OS=="win"', { ++ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_SHARED'], ++ }, { ++ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC'], ++ }], ++ ], ++ }], ++ ], ++ }], + ], + 'msvs_cygwin_shell': 0, # Strangely setting it to 1 would make building under cygwin fail. + 'msvs_disabled_warnings': [ +diff --git a/electron.gyp b/electron.gyp +index b415525b1..4d0185561 100644 +--- a/electron.gyp ++++ b/electron.gyp +@@ -191,7 +191,7 @@ + }, { + 'copied_libraries': [ + '<(PRODUCT_DIR)/lib/libnode.so', +- '<(libchromiumcontent_dir)/libffmpeg.so', ++ '<@(libchromiumcontent_shared_v8_libraries)', + ], + }], + ], +@@ -200,7 +200,6 @@ + 'files': [ + '<@(copied_libraries)', + '<(libchromiumcontent_dir)/locales', +- '<(libchromiumcontent_dir)/icudtl.dat', + '<(libchromiumcontent_dir)/blink_image_resources_200_percent.pak', + '<(libchromiumcontent_dir)/content_resources_200_percent.pak', + '<(libchromiumcontent_dir)/content_shell.pak', +@@ -245,15 +244,17 @@ + '<@(lib_sources)', + ], + 'include_dirs': [ +- '.', + 'chromium_src', ++ '.', + 'vendor/brightray', + 'vendor/native_mate', ++ # libicu headers shim. ++ '<(SHARED_INTERMEDIATE_DIR)/shim_headers/icui18n_shim', ++ '<(SHARED_INTERMEDIATE_DIR)/shim_headers/icuuc_shim', + # Include atom_natives.h. + '<(SHARED_INTERMEDIATE_DIR)', + # Include directories for uv and node. + 'vendor/node/src', +- 'vendor/node/deps/http_parser', + 'vendor/node/deps/uv/include', + # The `node.h` is using `#include"v8.h"`. + '<(libchromiumcontent_src_dir)/v8/include', +@@ -342,11 +343,12 @@ + '<@(lib_sources_nss)', + ], + 'link_settings': { ++ 'libraries': [ '<@(libchromiumcontent_v8_libraries)' ], + 'ldflags': [ + # Make binary search for libraries under current directory, so we + # don't have to manually set $LD_LIBRARY_PATH: + # http://serverfault.com/questions/279068/cant-find-so-in-the-same-directory-as-the-executable +- '-rpath \$$ORIGIN', ++ '-Wl,-rpath=\$$ORIGIN/', + # Make native module dynamic loading work. + '-rdynamic', + ], +@@ -368,6 +370,9 @@ + { + 'target_name': 'js2asar', + 'type': 'none', ++ 'dependencies': [ ++ 'nodebin' ++ ], + 'actions': [ + { + 'action_name': 'js2asar', +@@ -389,6 +394,7 @@ + 'action': [ + 'python', + 'tools/js2asar.py', ++ '<(PRODUCT_DIR)/nodebin', + '<@(_outputs)', + 'lib', + '<@(_inputs)', +@@ -399,6 +405,9 @@ + { + 'target_name': 'app2asar', + 'type': 'none', ++ 'dependencies': [ ++ 'nodebin' ++ ], + 'actions': [ + { + 'action_name': 'app2asar', +@@ -420,6 +429,7 @@ + 'action': [ + 'python', + 'tools/js2asar.py', ++ '<(PRODUCT_DIR)/nodebin', + '<@(_outputs)', + 'default_app', + '<@(_inputs)', +@@ -445,6 +455,7 @@ + 'dependencies': [ + # depend on this target to ensure the '<(js2c_input_dir)' is created + 'atom_js2c_copy', ++ 'nodebin' + ], + 'variables': { + 'sandbox_args': [ +@@ -474,11 +485,9 @@ + '<(js2c_input_dir)/preload_bundle.js', + ], + 'action': [ +- 'npm', +- 'run', +- '--silent', +- 'browserify', +- '--', ++ 'python', ++ 'tools/browserify.py', ++ '<(PRODUCT_DIR)/nodebin', + '<@(sandbox_args)', + '-o', + '<@(_outputs)', +@@ -493,12 +502,11 @@ + '<(js2c_input_dir)/isolated_bundle.js', + ], + 'action': [ +- 'npm', +- 'run', +- '--silent', +- 'browserify', +- '--', ++ 'python', ++ 'tools/browserify.py', ++ '<(PRODUCT_DIR)/nodebin', + '<@(isolated_args)', ++ 'lib/isolated_renderer/init.js', + '-o', + '<@(_outputs)', + ], +@@ -533,6 +541,42 @@ + } + ], + }, # target atom_js2c ++ { ++ 'target_name': 'nodebin', ++ 'type': 'executable', ++ 'defines': [ ++ 'ELECTRON_NODE_BUILD_NO_ASAR' ++ ], ++ 'sources': [ ++ 'vendor/node/src/node_main.cc', ++ ], ++ 'dependencies': [ ++ 'vendor/node/node.gyp:node', ++ ], ++ 'include_dirs': [ ++ '.', ++ '<(node_v8_path)/include', ++ 'vendor/native_mate', ++ # Include atom_natives.h. ++ '<(SHARED_INTERMEDIATE_DIR)', ++ # Include directories for uv and node. ++ 'vendor/node/src', ++ 'vendor/node/deps/uv/include', ++ '<(libchromiumcontent_src_dir)', ++ # The `node.h` is using `#include"v8.h"`. ++ '<(libchromiumcontent_src_dir)/v8/include', ++ # The `node.h` is using `#include"ares.h"`. ++ 'vendor/node/deps/cares/include', ++ ], ++ 'link_settings': { ++ 'libraries': [ '<@(libchromiumcontent_v8_libraries)' ], ++ 'ldflags': [ ++ '-Wl,-rpath=\$$ORIGIN/', ++ # Make native module dynamic loading work. ++ '-rdynamic', ++ ], ++ }, ++ }, # target nodebin + ], + 'conditions': [ + ['OS=="mac"', { +diff --git a/toolchain.gypi b/toolchain.gypi +index 1c5f8a713..c20ed1a0f 100644 +--- a/toolchain.gypi ++++ b/toolchain.gypi +@@ -16,7 +16,7 @@ + 'arm_neon%': 1, + + # Abosulte path to source root. +- 'source_root%': '<!(node <(DEPTH)/tools/atom_source_root.js)', ++ 'source_root%': '<!(python <(DEPTH)/tools/atom_source_root.py)', + }, + + # Copy conditionally-set variables out one scope. +@@ -40,34 +40,6 @@ + 'mac_sdk%': '<!(python <(DEPTH)/tools/mac/find_sdk.py <(mac_sdk_min))', + }], + +- ['OS=="linux"', { +- 'variables': { +- # The system libdir used for this ABI. +- 'system_libdir%': 'lib', +- +- # Setting the path to sysroot. +- 'conditions': [ +- ['target_arch=="arm"', { +- # sysroot needs to be an absolute path otherwise it generates +- # incorrect results when passed to pkg-config +- 'sysroot%': '<(source_root)/vendor/debian_wheezy_arm-sysroot', +- }], +- ['target_arch=="ia32"', { +- 'sysroot%': '<(source_root)/vendor/debian_wheezy_i386-sysroot', +- }], +- ['target_arch=="x64"', { +- 'sysroot%': '<(source_root)/vendor/debian_wheezy_amd64-sysroot', +- }], +- ], +- }, +- # Copy conditionally-set variables out one scope. +- 'sysroot%': '<(sysroot)', +- 'system_libdir%': '<(system_libdir)', +- +- # Redirect pkg-config to search from sysroot. +- 'pkg-config%': '<(source_root)/tools/linux/pkg-config-wrapper "<(sysroot)" "<(target_arch)" "<(system_libdir)"', +- }], +- + # Set default compiler flags depending on ARM version. + ['arm_version==6', { + 'arm_arch%': 'armv6', +@@ -136,23 +108,6 @@ + }, + }], + +- # Setup sysroot environment. +- ['OS=="linux" and target_arch in ["arm", "ia32", "x64"]', { +- 'target_defaults': { +- 'target_conditions': [ +- ['_toolset=="target"', { +- 'cflags': [ +- '--sysroot=<(sysroot)', +- ], +- 'ldflags': [ +- '--sysroot=<(sysroot)', +- '<!(<(source_root)/tools/linux/sysroot_ld_path.sh <(sysroot))', +- ], +- }] +- ], +- }, +- }], # sysroot +- + # Setup cross-compilation on Linux. + ['OS=="linux"', { + 'target_defaults': { +@@ -179,6 +134,35 @@ + 'ldflags': [ + '-m64', + ], ++ 'conditions': [ ++ ['use_lto==1 and clang==0', { ++ 'cflags': [ ++ '-fno-fat-lto-objects', ++ '-fuse-linker-plugin', ++ '-flto=4', ++ '--param=lto-partitions=1', ++ ], ++ 'ldflags': [ ++ '-fno-fat-lto-objects', ++ '-fuse-linker-plugin', ++ '-flto=4', ++ '--param=lto-partitions=1', ++ ], ++ 'arflags': [ ++ '<!@(python <(DEPTH)/tools/ar-flags.py)', ++ ] ++ }], ++ ['use_lto==1 and clang==1', { ++ 'cflags': [ ++ '-flto', ++ '-fwhole-program-vtables' ++ ], ++ 'ldflags': [ ++ '-flto', ++ '-fwhole-program-vtables' ++ ], ++ }], ++ ], + }], # target_arch=="x64" and _toolset=="target" + ['target_arch=="arm" and _toolset=="target"', { + 'conditions': [ +diff --git a/tools/ar-flags.py b/tools/ar-flags.py +new file mode 100644 +index 000000000..80b338a6e +--- /dev/null ++++ b/tools/ar-flags.py +@@ -0,0 +1,15 @@ ++#!/usr/bin/env python ++ ++import os ++import subprocess ++ ++if __name__ == '__main__': ++ cc = os.environ.get('CC', '/usr/bin/cc') ++ gcc_version = subprocess.check_output( ++ [cc, '-dumpversion'], universal_newlines=True).strip(' \n') ++ ++ lto_plugin = os.path.join( ++ '/usr/libexec/gcc/x86_64-pc-linux-gnu/', gcc_version, ++ 'liblto_plugin.so') ++ ++ print('--plugin={}'.format(lto_plugin)) +diff --git a/tools/atom_source_root.py b/tools/atom_source_root.py +new file mode 100644 +index 000000000..316e99701 +--- /dev/null ++++ b/tools/atom_source_root.py +@@ -0,0 +1,5 @@ ++#!/usr/bin/env python ++ ++import os.path ++ ++print(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))) +diff --git a/tools/browserify.py b/tools/browserify.py +new file mode 100644 +index 000000000..15472c953 +--- /dev/null ++++ b/tools/browserify.py +@@ -0,0 +1,24 @@ ++#!/usr/bin/env python ++ ++import os ++import subprocess ++import sys ++ ++SOURCE_ROOT = os.path.dirname(os.path.dirname(__file__)) ++ ++ ++def main(): ++ node = sys.argv[1] ++ args = sys.argv[2:] ++ ++ call_browserify(node, args) ++ ++ ++def call_browserify(node, args): ++ browserify = os.path.join( ++ SOURCE_ROOT, 'node_modules', '.bin', 'browserify') ++ subprocess.check_call([node, browserify] + args) ++ ++ ++if __name__ == '__main__': ++ sys.exit(main()) +diff --git a/tools/get-endianness.py b/tools/get-endianness.py +new file mode 100644 +index 000000000..31507936f +--- /dev/null ++++ b/tools/get-endianness.py +@@ -0,0 +1,4 @@ ++#!/usr/bin/env python ++ ++import sys ++print(sys.byteorder) +diff --git a/tools/js2asar.py b/tools/js2asar.py +index adad1751e..ca7686893 100755 +--- a/tools/js2asar.py ++++ b/tools/js2asar.py +@@ -11,13 +11,14 @@ SOURCE_ROOT = os.path.dirname(os.path.dirname(__file__)) + + + def main(): +- archive = sys.argv[1] +- folder_name = sys.argv[2] +- source_files = sys.argv[3:] ++ node = sys.argv[1] ++ archive = sys.argv[2] ++ folder_name = sys.argv[3] ++ source_files = sys.argv[4:] + + output_dir = tempfile.mkdtemp() + copy_files(source_files, output_dir) +- call_asar(archive, os.path.join(output_dir, folder_name)) ++ call_asar(node, archive, os.path.join(output_dir, folder_name)) + shutil.rmtree(output_dir) + + +@@ -28,11 +29,11 @@ def copy_files(source_files, output_dir): + shutil.copy2(source_file, output_path) + + +-def call_asar(archive, output_dir): ++def call_asar(node, archive, output_dir): + asar = os.path.join(SOURCE_ROOT, 'node_modules', '.bin', 'asar') + if sys.platform in ['win32', 'cygwin']: + asar += '.cmd' +- subprocess.check_call([asar, 'pack', output_dir, archive]) ++ subprocess.check_call([node, asar, 'pack', output_dir, archive]) + + + def safe_mkdir(path): +-- +2.14.1 + diff --git a/dev-util/electron/files/electron-vendor-node-external-snapshots-r2.patch b/dev-util/electron/files/electron-vendor-node-external-snapshots-r2.patch new file mode 100644 index 000000000000..b3cd18c2fe2b --- /dev/null +++ b/dev-util/electron/files/electron-vendor-node-external-snapshots-r2.patch @@ -0,0 +1,117 @@ +From da7d4d995b31fcdc94158bbc4adc01bf9bab78a9 Mon Sep 17 00:00:00 2001 +From: Elvis Pranskevichus <elvis@magic.io> +Date: Sat, 11 Jun 2016 18:27:19 -0400 +Subject: [PATCH] Add support for external V8 snapshots + +--- + src/node.cc | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 87 insertions(+) + +diff --git a/src/node.cc b/src/node.cc +index 66233d451..96e4e22d6 100644 +--- a/src/node.cc ++++ b/src/node.cc +@@ -4493,6 +4493,91 @@ inline int Start(Isolate* isolate, IsolateData* isolate_data, + return exit_code; + } + ++#include <sys/mman.h> ++ ++const char kProcSelfExe[] = "/proc/self/exe"; ++const char kNativesFileName[] = "natives_blob.bin"; ++const char kSnapshotFileName[] = "snapshot_blob.bin"; ++const char *g_mapped_natives = nullptr; ++const char *g_mapped_snapshot = nullptr; ++ ++static char* SnapshotPath(const char* filename) { ++ char *path; ++ char *dir; ++ ssize_t r; ++ ++ path = reinterpret_cast<char*>(malloc(4096 + strlen(filename) + 2)); ++ if (path == nullptr) { ++ fprintf(stderr, "out of memory\n"); ++ ABORT(); ++ } ++ ++ r = readlink(kProcSelfExe, path, 4096 + 1); ++ if (r == -1) { ++ perror("could not determine node executable directory"); ++ ABORT(); ++ } ++ ++ path[r] = '\0'; ++ ++ dir = strrchr(path, '/'); ++ ++ strcpy(dir + 1, filename); ++ ++ return path; ++} ++ ++static void LoadV8Snapshot(const char* name, const char** addr, size_t *size) { ++ char *path = SnapshotPath(name); ++ int fd; ++ struct stat sb; ++ ++ fd = open(path, O_RDONLY); ++ ++ if (fd == -1) { ++ fprintf(stderr, "could not open snapshot file '%s': %s\n", ++ path, sys_errlist[errno]); ++ ABORT(); ++ } ++ ++ if (fstat(fd, &sb) == -1) { ++ fprintf(stderr, "could not stat snapshot file '%s': %s\n", ++ path, sys_errlist[errno]); ++ ABORT(); ++ } ++ ++ *size = sb.st_size; ++ ++ *addr = reinterpret_cast<const char*>( ++ mmap(NULL, sb.st_size, PROT_READ, MAP_PRIVATE, fd, 0)); ++ if (*addr == MAP_FAILED) { ++ fprintf(stderr, "could not read snapshot file '%s': %s\n", ++ path, sys_errlist[errno]); ++ ABORT(); ++ } ++ ++ close(fd); ++ free(path); ++} ++ ++static void LoadV8Snapshots() { ++ size_t natives_size; ++ size_t snapshot_size; ++ ++ LoadV8Snapshot(kNativesFileName, &g_mapped_natives, &natives_size); ++ LoadV8Snapshot(kSnapshotFileName, &g_mapped_snapshot, &snapshot_size); ++ ++ v8::StartupData natives; ++ natives.data = g_mapped_natives; ++ natives.raw_size = natives_size; ++ V8::SetNativesDataBlob(&natives); ++ ++ v8::StartupData snapshot; ++ snapshot.data = g_mapped_snapshot; ++ snapshot.raw_size = snapshot_size; ++ V8::SetSnapshotDataBlob(&snapshot); ++} ++ + inline int Start(uv_loop_t* event_loop, + int argc, const char* const* argv, + int exec_argc, const char* const* exec_argv) { +@@ -4557,6 +4642,8 @@ int Start(int argc, char** argv) { + const char** exec_argv; + Init(&argc, const_cast<const char**>(argv), &exec_argc, &exec_argv); + ++ LoadV8Snapshots(); ++ + #if HAVE_OPENSSL + if (const char* extra = secure_getenv("NODE_EXTRA_CA_CERTS")) + crypto::UseExtraCaCerts(extra); +-- +2.11.1 + diff --git a/dev-util/electron/files/toolchain/BUILD.gn b/dev-util/electron/files/toolchain/BUILD.gn new file mode 100644 index 000000000000..78f7b57e3be5 --- /dev/null +++ b/dev-util/electron/files/toolchain/BUILD.gn @@ -0,0 +1,19 @@ +import("//build/toolchain/gcc_toolchain.gni") + +gcc_toolchain("default") { + cc = getenv("CC") + cxx = getenv("CXX") + ar = getenv("AR") + nm = getenv("NM") + ld = cxx + + extra_cflags = getenv("CFLAGS") + extra_cppflags = getenv("CPPFLAGS") + extra_cxxflags = getenv("CXXFLAGS") + extra_ldflags = getenv("LDFLAGS") + + toolchain_args = { + current_cpu = current_cpu + current_os = current_os + } +} diff --git a/dev-util/electron/metadata.xml b/dev-util/electron/metadata.xml index fbd23cbc1d7a..3c3adf33f304 100644 --- a/dev-util/electron/metadata.xml +++ b/dev-util/electron/metadata.xml @@ -11,6 +11,7 @@ </maintainer> <longdescription>Electron is a cross platform application development framework based on web technologies based on Chromium</longdescription> <use> + <flag name="gtk3">Build with GTK+3 instead of GTK+2</flag> <flag name="hidpi">Enable support for high-resolution screens (high dots per inch)</flag> <flag name="lto">Build with link time optimization enabled</flag> <flag name="pic">Disable optimized assembly code that is not PIC friendly</flag> @@ -20,5 +21,7 @@ </use> <upstream> <remote-id type="github">elprans/asar</remote-id> + <remote-id type="github">elprans/grit</remote-id> + <remote-id type="github">elprans/node-browserify</remote-id> </upstream> </pkgmetadata> |