diff options
author | Antoine Brodin <antoine@FreeBSD.org> | 2021-01-01 10:11:34 +0000 |
---|---|---|
committer | Antoine Brodin <antoine@FreeBSD.org> | 2021-01-01 10:11:34 +0000 |
commit | 26b4c8f71f91d22e081b27814782686edde0c90a (patch) | |
tree | 1c321c39372c25d8634e75b5c8e08edc676b296d /devel/electron5/files | |
parent | New port: math/py-optuna: A hyperparameter optimization framework (diff) |
Revert r559792 to unbreak INDEX and bulk -a
It seems a lot of reverse dependencies were missed
With hat: portmgr
Diffstat (limited to 'devel/electron5/files')
749 files changed, 31215 insertions, 0 deletions
diff --git a/devel/electron5/files/apply-electron-patches.sh b/devel/electron5/files/apply-electron-patches.sh new file mode 100644 index 000000000000..300c8166f223 --- /dev/null +++ b/devel/electron5/files/apply-electron-patches.sh @@ -0,0 +1,20 @@ +#! /bin/sh + +PATH=/bin:/usr/bin:/usr/local/bin + +PATCH_CMD="git apply" +#PATCH_FLAGS="--numstat --check" # for debugging +PATCH_FLAGS="--verbose --reject" + +WRKSRC=$1 +PATCH_CONF=${WRKSRC}/electron/patches/common/config.json + +PATCHD_REPOD_PAIRS=$(sed -e '1d; $d; /^$/d; s/[",]//g; s/: */:/' "${PATCH_CONF}") +for prp in ${PATCHD_REPOD_PAIRS}; do + pd=$(echo "${prp}" | awk -F: '{print $1}' | sed -e 's/src/./') + rd=$(echo "${prp}" | awk -F: '{print $2}' | sed -e 's/src/./') + (cd "${WRKSRC}/${rd}" && \ + while read -r p; do + ${PATCH_CMD} ${PATCH_FLAGS} "${WRKSRC}/${pd}/${p}" + done < "${WRKSRC}/${pd}/.patches") +done diff --git a/devel/electron5/files/package-lock.json b/devel/electron5/files/package-lock.json new file mode 100644 index 000000000000..4069b69a54ee --- /dev/null +++ b/devel/electron5/files/package-lock.json @@ -0,0 +1,13356 @@ +{ + "name": "electron", + "version": "5.0.13", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@iamstarkov/listr-update-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@iamstarkov/listr-update-renderer/-/listr-update-renderer-0.4.1.tgz", + "integrity": "sha512-IJyxQWsYDEkf8C8QthBn5N8tIUR9V9je6j3sMIpAkonaadjbvxmRC6RAhpa3RKxndhNnU2M6iNbtJwd7usQYIA==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + } + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.2.tgz", + "integrity": "sha512-yprFYuno9FtNsSHVlSWd+nRlmGoAbqbeCwOryP6sC/zoCjhpArcRMYp19EvpSUSizJAlsXEwJv+wcWS9XaXdMw==", + "dev": true + }, + "@octokit/endpoint": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-3.1.1.tgz", + "integrity": "sha512-KPkoTvKwCTetu/UqonLs1pfwFO5HAqTv/Ksp9y4NAg//ZgUCpvJsT4Hrst85uEzJvkB8+LxKyR4Bfv2X8O4cmQ==", + "dev": true, + "requires": { + "deepmerge": "3.0.0", + "is-plain-object": "^2.0.4", + "universal-user-agent": "^2.0.1", + "url-template": "^2.0.8" + } + }, + "@octokit/request": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-2.2.1.tgz", + "integrity": "sha512-enwbVOl3vWWIUuEj0LJRq+mxWNyv95fa13GJitz7qGt/ycYCwtSoVssW3pCqvxS4GlJfHfO2OA+8czIcEF522A==", + "dev": true, + "requires": { + "@octokit/endpoint": "^3.1.1", + "is-plain-object": "^2.0.4", + "node-fetch": "^2.3.0", + "universal-user-agent": "^2.0.1" + }, + "dependencies": { + "node-fetch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", + "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==", + "dev": true + } + } + }, + "@octokit/rest": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.6.1.tgz", + "integrity": "sha512-3F9c6ldPT6N123iGcuEZMfrE6BvL/Z4F+V80zbA3KS6vGWRm3RS4OblF6age+dCtlMsa99t13AeTmWD7Bsea0Q==", + "dev": true, + "requires": { + "@octokit/request": "2.2.1", + "before-after-hook": "^1.2.0", + "btoa-lite": "^1.0.0", + "lodash.get": "^4.4.2", + "lodash.pick": "^4.4.0", + "lodash.set": "^4.3.2", + "lodash.uniq": "^4.5.0", + "octokit-pagination-methods": "^1.1.0", + "universal-user-agent": "^2.0.0", + "url-template": "^2.0.8" + } + }, + "@samverschueren/stream-to-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", + "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", + "dev": true, + "requires": { + "any-observable": "^0.3.0" + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@types/node": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.3.tgz", + "integrity": "sha512-HeyK+csRk7Khhg9krpMGJeT9pLzjsmiJFHYRzYpPv/dQ5tPclQsbvceiX/HKynRt/9lMLorWUYTbBHC3hRI4sg==", + "dev": true + }, + "JSONStream": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", + "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true, + "optional": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + }, + "acorn-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", + "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", + "dev": true, + "optional": true, + "requires": { + "acorn": "^2.1.0" + }, + "dependencies": { + "acorn": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", + "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", + "dev": true, + "optional": true + } + } + }, + "acorn-jsx": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-4.1.1.tgz", + "integrity": "sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw==", + "dev": true, + "requires": { + "acorn": "^5.0.3" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + } + } + }, + "acorn-node": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.3.0.tgz", + "integrity": "sha512-efP54n3d1aLfjL2UMdaXa6DsswwzJeI5rqhbFvXMrKiJ6eJFpf+7R0zN7t8IC+XKn2YOAFAv6xbBNgHUkoHWLw==", + "dev": true, + "requires": { + "acorn": "^5.4.1", + "xtend": "^4.0.1" + }, + "dependencies": { + "acorn": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "dev": true + } + } + }, + "add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", + "dev": true + }, + "address": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", + "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==", + "dev": true + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "aliasify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/aliasify/-/aliasify-2.1.0.tgz", + "integrity": "sha1-fDCCW5RQueYYW6J1M+r24gZ9S0I=", + "dev": true, + "requires": { + "browserify-transform-tools": "~1.7.0" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "ansi-escapes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + }, + "arch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", + "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==", + "dev": true + }, + "arg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-2.0.0.tgz", + "integrity": "sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "args": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/args/-/args-4.0.0.tgz", + "integrity": "sha512-4b7lVF58nlo7sNtq8s2OueroOY/UHn0Nt/NVjsx9zn28u6yDVb9bQ/uy/5jKtHCbUDil4MlMyDLF5+OHEgnTug==", + "dev": true, + "requires": { + "camelcase": "5.0.0", + "chalk": "2.3.2", + "leven": "2.1.0", + "mri": "1.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true + }, + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" + } + }, + "array-iterate": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.2.tgz", + "integrity": "sha512-1hWSHTIlG/8wtYD+PPX5AOBtKWngpDFjrsrHgZpe+JdgNGz0udYu6ZIkAa/xuenIUEqFv7DvE2Yr60jxweJSrQ==", + "dev": true + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asar": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-0.11.0.tgz", + "integrity": "sha1-uSbnksMV+MBIxDNx4yWwnJenZGQ=", + "dev": true, + "requires": { + "chromium-pickle-js": "^0.1.0", + "commander": "^2.9.0", + "cuint": "^0.2.1", + "glob": "^6.0.4", + "minimatch": "^3.0.0", + "mkdirp": "^0.5.0", + "mksnapshot": "^0.3.0" + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astw": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz", + "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=", + "dev": true, + "requires": { + "acorn": "^4.0.3" + } + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "bail": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz", + "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "basic-auth": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", + "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "before-after-hook": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-1.3.1.tgz", + "integrity": "sha512-BIjg60OP/sQvG7Q2L9Xkc77gyyFw1B4T73LIfZVQtXbutJinC1+t2HRl4qeR3EWAmY+tA6z9vpRi02q6ZXyluQ==", + "dev": true + }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "dev": true, + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "dev": true, + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-pack": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", + "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "combine-source-map": "~0.8.0", + "defined": "^1.0.0", + "safe-buffer": "^5.1.1", + "through2": "^2.0.0", + "umd": "^3.0.0" + } + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browserify": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-13.3.0.tgz", + "integrity": "sha1-tanJAgJD8McORnW+yCI7xifkFc4=", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^1.11.0", + "browserify-zlib": "~0.1.2", + "buffer": "^4.1.0", + "cached-path-relative": "^1.0.0", + "concat-stream": "~1.5.1", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.0", + "domain-browser": "~1.1.0", + "duplexer2": "~0.1.2", + "events": "~1.1.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "~0.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.0.0", + "labeled-stream-splicer": "^2.0.0", + "module-deps": "^4.0.8", + "os-browserify": "~0.1.1", + "parents": "^1.0.1", + "path-browserify": "~0.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^2.0.0", + "stream-http": "^2.0.0", + "string_decoder": "~0.10.0", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "~0.0.0", + "url": "~0.11.0", + "util": "~0.10.1", + "vm-browserify": "~0.0.1", + "xtend": "^4.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + } + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", + "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-transform-tools": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/browserify-transform-tools/-/browserify-transform-tools-1.7.0.tgz", + "integrity": "sha1-g+J3Ih9jJZvtLn6yooOpcKUB9MQ=", + "dev": true, + "requires": { + "falafel": "^2.0.0", + "through": "^2.3.7" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "dev": true, + "requires": { + "pako": "~0.2.0" + } + }, + "btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", + "dev": true + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "cacheable-request": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.0.0.tgz", + "integrity": "sha512-2N7AmszH/WPPpl5Z3XMw1HAP+8d+xugnKQAeKvxFZ/04dbT/CAznqwbl+7eSr3HkwdepNwtb2yx3CAMQWvG01Q==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^4.0.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^1.0.1", + "normalize-url": "^3.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "cached-path-relative": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", + "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=", + "dev": true + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "^0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "ccount": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz", + "integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw==", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "dev": true, + "requires": { + "traverse": ">=0.3.0 <0.4" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "character-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz", + "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==", + "dev": true + }, + "character-entities-html4": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.2.tgz", + "integrity": "sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", + "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz", + "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==", + "dev": true + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-for-leaks": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/check-for-leaks/-/check-for-leaks-1.2.0.tgz", + "integrity": "sha1-6jtQFk6XV3kzLGKBMZX/jGr4Jsw=", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "minimist": "^1.2.0", + "parse-gitignore": "^0.4.0", + "walk-sync": "^0.3.2" + } + }, + "checksum": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/checksum/-/checksum-0.1.1.tgz", + "integrity": "sha1-3GUn1MkL6FYNvR7Uzs8yl9Uo6ek=", + "dev": true, + "requires": { + "optimist": "~0.3.5" + } + }, + "cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", + "dev": true, + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "chromium-pickle-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.1.0.tgz", + "integrity": "sha1-HUixB9ghJqLz4hHC6iX4A7pVGyE=", + "dev": true + }, + "ci-info": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", + "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha1-gVyZ6oT2gJUp0vRXkb34JxE1LWY=", + "dev": true + }, + "clang-format": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clang-format/-/clang-format-1.2.3.tgz", + "integrity": "sha512-x90Hac4ERacGDcZSvHKK58Ga0STuMD+Doi5g0iG2zf7wlJef5Huvhs/3BvMRFxwRYyYSdl6mpQNrtfMxE8MQzw==", + "dev": true, + "requires": { + "async": "^1.5.2", + "glob": "^7.0.0", + "resolve": "^1.1.6" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "clean-deep": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clean-deep/-/clean-deep-2.0.2.tgz", + "integrity": "sha1-d83ZTmsmZkTw95Cy9XbL7wOOJ8E=", + "dev": true, + "requires": { + "lodash.isempty": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.transform": "^4.6.0" + } + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "cli-spinners": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", + "dev": true + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + } + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "clipboardy": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", + "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", + "dev": true, + "requires": { + "arch": "^2.1.0", + "execa": "^0.8.0" + }, + "dependencies": { + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + } + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collapse-white-space": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", + "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "^1.1.1" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", + "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", + "dev": true + }, + "combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", + "dev": true, + "requires": { + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" + } + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "compare-func": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", + "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^3.0.0" + } + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "compressible": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.14.tgz", + "integrity": "sha1-MmxfUH+7BV9UEWeCuWmoG2einac=", + "dev": true, + "requires": { + "mime-db": ">= 1.34.0 < 2" + }, + "dependencies": { + "mime-db": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", + "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==", + "dev": true + } + } + }, + "compression": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.14", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", + "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "~2.0.0", + "typedarray": "~0.0.5" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + } + } + }, + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "dev": true, + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "dependencies": { + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + } + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "conventional-changelog": { + "version": "1.1.24", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-1.1.24.tgz", + "integrity": "sha512-2WcSUst4Y3Z4hHvoMTWXMJr/DmgVdLiMOVY1Kak2LfFz+GIz2KDp5naqbFesYbfXPmaZ5p491dO0FWZIJoJw1Q==", + "dev": true, + "requires": { + "conventional-changelog-angular": "^1.6.6", + "conventional-changelog-atom": "^0.2.8", + "conventional-changelog-codemirror": "^0.3.8", + "conventional-changelog-core": "^2.0.11", + "conventional-changelog-ember": "^0.3.12", + "conventional-changelog-eslint": "^1.0.9", + "conventional-changelog-express": "^0.3.6", + "conventional-changelog-jquery": "^0.1.0", + "conventional-changelog-jscs": "^0.1.0", + "conventional-changelog-jshint": "^0.3.8", + "conventional-changelog-preset-loader": "^1.1.8" + } + }, + "conventional-changelog-angular": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz", + "integrity": "sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==", + "dev": true, + "requires": { + "compare-func": "^1.3.1", + "q": "^1.5.1" + } + }, + "conventional-changelog-atom": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-0.2.8.tgz", + "integrity": "sha512-8pPZqhMbrnltNBizjoDCb/Sz85KyUXNDQxuAEYAU5V/eHn0okMBVjqc8aHWYpHrytyZWvMGbayOlDv7i8kEf6g==", + "dev": true, + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-cli": { + "version": "1.3.22", + "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-1.3.22.tgz", + "integrity": "sha512-pnjdIJbxjkZ5VdAX/H1wndr1G10CY8MuZgnXuJhIHglOXfIrXygb7KZC836GW9uo1u8PjEIvIw/bKX0lOmOzZg==", + "dev": true, + "requires": { + "add-stream": "^1.0.0", + "conventional-changelog": "^1.1.24", + "lodash": "^4.2.1", + "meow": "^4.0.0", + "tempfile": "^1.1.1" + } + }, + "conventional-changelog-codemirror": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.3.8.tgz", + "integrity": "sha512-3HFZKtBXTaUCHvz7ai6nk2+psRIkldDoNzCsom0egDtVmPsvvHZkzjynhdQyULfacRSsBTaiQ0ol6nBOL4dDiQ==", + "dev": true, + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-core": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-2.0.11.tgz", + "integrity": "sha512-HvTE6RlqeEZ/NFPtQeFLsIDOLrGP3bXYr7lFLMhCVsbduF1MXIe8OODkwMFyo1i9ku9NWBwVnVn0jDmIFXjDRg==", + "dev": true, + "requires": { + "conventional-changelog-writer": "^3.0.9", + "conventional-commits-parser": "^2.1.7", + "dateformat": "^3.0.0", + "get-pkg-repo": "^1.0.0", + "git-raw-commits": "^1.3.6", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^1.3.6", + "lodash": "^4.2.1", + "normalize-package-data": "^2.3.5", + "q": "^1.5.1", + "read-pkg": "^1.1.0", + "read-pkg-up": "^1.0.1", + "through2": "^2.0.0" + } + }, + "conventional-changelog-ember": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-0.3.12.tgz", + "integrity": "sha512-mmJzA7uzbrOqeF89dMMi6z17O07ORTXlTMArnLG9ZTX4oLaKNolUlxFUFlFm9JUoVWajVpaHQWjxH1EOQ+ARoQ==", + "dev": true, + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-eslint": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-1.0.9.tgz", + "integrity": "sha512-h87nfVh2fdk9fJIvz26wCBsbDC/KxqCc5wSlNMZbXcARtbgNbNDIF7Y7ctokFdnxkzVdaHsbINkh548T9eBA7Q==", + "dev": true, + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-express": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-0.3.6.tgz", + "integrity": "sha512-3iWVtBJZ9RnRnZveNDzOD8QRn6g6vUif0qVTWWyi5nUIAbuN1FfPVyKdAlJJfp5Im+dE8Kiy/d2SpaX/0X678Q==", + "dev": true, + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-jquery": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz", + "integrity": "sha1-Agg5cWLjhGmG5xJztsecW1+A9RA=", + "dev": true, + "requires": { + "q": "^1.4.1" + } + }, + "conventional-changelog-jscs": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz", + "integrity": "sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw=", + "dev": true, + "requires": { + "q": "^1.4.1" + } + }, + "conventional-changelog-jshint": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-0.3.8.tgz", + "integrity": "sha512-hn9QU4ZI/5V50wKPJNPGT4gEWgiBFpV6adieILW4MaUFynuDYOvQ71EMSj3EznJyKi/KzuXpc9dGmX8njZMjig==", + "dev": true, + "requires": { + "compare-func": "^1.3.1", + "q": "^1.5.1" + } + }, + "conventional-changelog-preset-loader": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-1.1.8.tgz", + "integrity": "sha512-MkksM4G4YdrMlT2MbTsV2F6LXu/hZR0Tc/yenRrDIKRwBl/SP7ER4ZDlglqJsCzLJi4UonBc52Bkm5hzrOVCcw==", + "dev": true + }, + "conventional-changelog-writer": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-3.0.9.tgz", + "integrity": "sha512-n9KbsxlJxRQsUnK6wIBRnARacvNnN4C/nxnxCkH+B/R1JS2Fa+DiP1dU4I59mEDEjgnFaN2+9wr1P1s7GYB5/Q==", + "dev": true, + "requires": { + "compare-func": "^1.3.1", + "conventional-commits-filter": "^1.1.6", + "dateformat": "^3.0.0", + "handlebars": "^4.0.2", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.2.1", + "meow": "^4.0.0", + "semver": "^5.5.0", + "split": "^1.0.0", + "through2": "^2.0.0" + } + }, + "conventional-commits-filter": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-1.1.6.tgz", + "integrity": "sha512-KcDgtCRKJCQhyk6VLT7zR+ZOyCnerfemE/CsR3iQpzRRFbLEs0Y6rwk3mpDvtOh04X223z+1xyJ582Stfct/0Q==", + "dev": true, + "requires": { + "is-subset": "^0.1.1", + "modify-values": "^1.0.0" + } + }, + "conventional-commits-parser": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz", + "integrity": "sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ==", + "dev": true, + "requires": { + "JSONStream": "^1.0.4", + "is-text-path": "^1.0.0", + "lodash": "^4.2.1", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^2.0.0", + "trim-off-newlines": "^1.0.0" + } + }, + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.6.tgz", + "integrity": "sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "cssom": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", + "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==", + "dev": true, + "optional": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true, + "optional": true, + "requires": { + "cssom": "0.3.x" + } + }, + "cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dargs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", + "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "decompress-zip": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz", + "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=", + "dev": true, + "requires": { + "binary": "^0.3.0", + "graceful-fs": "^4.1.3", + "mkpath": "^0.1.0", + "nopt": "^3.0.1", + "q": "^1.1.2", + "readable-stream": "^1.1.8", + "touch": "0.0.3" + } + }, + "dedent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.6.0.tgz", + "integrity": "sha1-Dm2o8M5Sg471zsXI+TlrDBtko8s=", + "dev": true + }, + "deep-extend": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.0.0.tgz", + "integrity": "sha512-a8z8bkgHsAML+uHLqmMS83HHlpy3PvZOOuiTQqaa3wu8ZVg3h0hqHk6aCsGdOnZV2XMM/FRimNGjUh0KCcmHBw==", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "defer-to-connect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz", + "integrity": "sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + }, + "dependencies": { + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "dev": true + } + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "deglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz", + "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==", + "dev": true, + "requires": { + "find-root": "^1.0.0", + "glob": "^7.0.5", + "ignore": "^3.0.9", + "pkg-config": "^1.1.0", + "run-parallel": "^1.1.2", + "uniq": "^1.0.1" + }, + "dependencies": { + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "deps-sort": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", + "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "shasum": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" + } + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-port": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.2.3.tgz", + "integrity": "sha512-IDbrX6PxqnYy8jV4wSHBaJlErYKTJvW8OQb9F7xivl1iQLqiUYHGa+nZ61Do6+N5uuOn/pReXKNqI9rUn04vug==", + "dev": true, + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + } + }, + "detective": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", + "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", + "dev": true, + "requires": { + "acorn": "^5.2.1", + "defined": "^1.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "dev": true + } + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "dev": true + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "dotenv": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", + "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=", + "dev": true + }, + "dotenv-safe": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/dotenv-safe/-/dotenv-safe-4.0.4.tgz", + "integrity": "sha1-iw587Y5wsdPF2HTvlCDkBvOUJbM=", + "dev": true, + "requires": { + "dotenv": "^4.0.0" + } + }, + "dugite": { + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/dugite/-/dugite-1.63.0.tgz", + "integrity": "sha512-CFd0sWTB2oouat0kJA4/rEQAeh6ZUvCDL9uFOaSBhLX+2CM/YL+ebKJXd8dYVIe8iVXmK5R9P31NVbRw4Ccoxw==", + "dev": true, + "requires": { + "checksum": "^0.1.1", + "mkdirp": "^0.5.1", + "progress": "^2.0.0", + "request": "^2.85.0", + "rimraf": "^2.5.4", + "tar": "^4.0.2" + } + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-docs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/electron-docs/-/electron-docs-2.0.1.tgz", + "integrity": "sha1-ARI6T8y2vieswSgAJ7/LJAxUsdI=", + "dev": true, + "requires": { + "got": "^6.3.0", + "gunzip-maybe": "^1.3.1", + "node-dir": "^0.1.12", + "ora": "^0.2.3", + "path-exists": "^3.0.0", + "pify": "^2.3.0", + "semver": "^5.1.0", + "tar-fs": "^1.13.0" + }, + "dependencies": { + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + } + }, + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "cli-cursor": "^1.0.2", + "cli-spinners": "^0.1.2", + "object-assign": "^4.0.1" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } + } + } + }, + "electron-docs-linter": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/electron-docs-linter/-/electron-docs-linter-2.4.0.tgz", + "integrity": "sha512-WvxXsk6kl4x0nrQOqMYAXsMMbSouSwa8VeNd+Bps9HM7QXuNNNVPFB1UEdykq06HWS60lUt4VUiAjQjAJJpcSg==", + "dev": true, + "requires": { + "cheerio": "^0.22.0", + "clean-deep": "^2.0.1", + "decamelize": "^1.2.0", + "dedent": "^0.6.0", + "electron-docs": "^2.0.1", + "entities": "^1.1.1", + "keyed-array": "^2.1.2", + "lodash.merge": "^4.6.0", + "lodash.pick": "^4.2.1", + "marky-markdown-lite": "^1.2.0", + "minimist": "^1.2.0", + "ora": "^0.3.0", + "path-exists": "^3.0.0", + "pify": "^2.3.0", + "revalidator": "^0.3.1", + "semver": "^5.3.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "electron-typescript-definitions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/electron-typescript-definitions/-/electron-typescript-definitions-7.0.0.tgz", + "integrity": "sha512-9/BkCl/sJdVn09fn42+bihGsYymBKxzaFM2VY/LYoPe4/7B+3TPhgQyunOgWRaPT1Kx+ZJBgJbYj+rQYEUFR2w==", + "dev": true, + "requires": { + "@types/node": "^7.0.18", + "colors": "^1.1.2", + "debug": "^2.6.3", + "electron-docs": "^2.0.0", + "electron-docs-linter": "^2.4.0", + "lodash": "^4.17.11", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "tslint": "^4.5.1", + "typescript": "^2.2.1" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "ensure-posix-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ensure-posix-path/-/ensure-posix-path-1.0.2.tgz", + "integrity": "sha1-pls+QtC3HPxYXrd0+ZQ8jZuRsMI=", + "dev": true + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", + "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "optional": true, + "requires": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" + }, + "dependencies": { + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "eslint": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.6.0.tgz", + "integrity": "sha512-/eVYs9VVVboX286mBK7bbKnO1yamUy2UCRjiY6MryhQL2PaaXCExsCQ2aO83OeYRhU2eCU/FMFP+tVMoOrzNrA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.5.3", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.0.0", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "imurmurhash": "^0.1.4", + "inquirer": "^6.1.0", + "is-resolvable": "^1.1.0", + "js-yaml": "^3.12.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^2.0.0", + "require-uncached": "^1.0.3", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^4.0.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "semver": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "eslint-config-standard": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", + "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", + "dev": true + }, + "eslint-config-standard-jsx": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz", + "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", + "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.5.0" + } + }, + "eslint-module-utils": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", + "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", + "dev": true, + "requires": { + "debug": "^2.6.8", + "pkg-dir": "^1.0.0" + } + }, + "eslint-plugin-es": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.3.1.tgz", + "integrity": "sha512-9XcVyZiQRVeFjqHw8qHNDAZcQLqaHlOGGpeYqzYh8S4JYCWTCO3yzyen8yVmA5PratfzTRWDwCOFphtDEG+w/w==", + "dev": true, + "requires": { + "eslint-utils": "^1.3.0", + "regexpp": "^2.0.0" + } + }, + "eslint-plugin-import": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", + "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", + "dev": true, + "requires": { + "contains-path": "^0.1.0", + "debug": "^2.6.8", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.1", + "eslint-module-utils": "^2.2.0", + "has": "^1.0.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.3", + "read-pkg-up": "^2.0.0", + "resolve": "^1.6.0" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "eslint-plugin-mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-5.2.0.tgz", + "integrity": "sha512-4VTX/qIoxUFRnXLNm6bEhEJyfGnGagmQzV4TWXKzkZgIYyP2FSubEdCjEFTyS/dGwSVRWCWGX7jO7BK8R0kppg==", + "dev": true, + "requires": { + "ramda": "^0.25.0" + } + }, + "eslint-plugin-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", + "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", + "dev": true, + "requires": { + "eslint-plugin-es": "^1.3.1", + "eslint-utils": "^1.3.1", + "ignore": "^4.0.2", + "minimatch": "^3.0.4", + "resolve": "^1.8.1", + "semver": "^5.5.0" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + } + } + }, + "eslint-plugin-promise": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz", + "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==", + "dev": true + }, + "eslint-plugin-react": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz", + "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.0.1", + "prop-types": "^15.6.2" + }, + "dependencies": { + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + } + } + }, + "eslint-plugin-standard": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz", + "integrity": "sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA==", + "dev": true + }, + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "eslint-utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", + "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.0.0.tgz", + "integrity": "sha512-kapdTCt1bjmspxStVKX6huolXVV5ZfyZguY1lcfhVVZstce3bqxH9mcLzNn3/mlgW6wQ732+0fuG9v7h0ZQoKg==", + "dev": true, + "requires": { + "acorn": "^5.6.0", + "acorn-jsx": "^4.1.1" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + } + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true, + "optional": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true, + "optional": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + } + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "falafel": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", + "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=", + "dev": true, + "requires": { + "acorn": "^5.0.0", + "foreach": "^2.0.5", + "isarray": "0.0.1", + "object-keys": "^1.0.6" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", + "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.0.1", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.1", + "micromatch": "^3.1.10" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fault": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.2.tgz", + "integrity": "sha512-o2eo/X2syzzERAtN5LcGbiVQ0WwZSlN3qLtadwAz3X8Bu+XWD16dja/KMsjZLiQr+BLGPDnHGkc4yUJf1Xpkpw==", + "dev": true, + "requires": { + "format": "^0.2.2" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "find-parent-dir": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", + "dev": true + }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha1-q8/Iunb3CMQql7PWhbfpRQv7nOQ=", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "dev": true, + "requires": { + "glob": "~5.0.0" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "^0.3.1", + "del": "^2.0.2", + "graceful-fs": "^4.1.2", + "write": "^0.2.1" + } + }, + "fn-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", + "dev": true + }, + "folder-hash": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/folder-hash/-/folder-hash-2.1.1.tgz", + "integrity": "sha512-owr5AVhj+nxnzsyDLOiwSUC6S3mqcxJSfZneFgOYoaScMBwPGt3cz0XiBPRrCIUk2Hs1ucQXFGwfB40JxBqb4w==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "graceful-fs": "~4.1.11", + "minimatch": "~3.0.4" + }, + "dependencies": { + "debug": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, + "format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-extra": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", + "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "fs-minipass": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "dev": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": false, + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": false, + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "resolved": false, + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": false, + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": false, + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": false, + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": false, + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": false, + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": false, + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "resolved": false, + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "resolved": false, + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": false, + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "resolved": false, + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "resolved": false, + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": false, + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": false, + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "resolved": false, + "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "resolved": false, + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": false, + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": false, + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "resolved": false, + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": false, + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": false, + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.2.4", + "resolved": false, + "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "resolved": false, + "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": false, + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": false, + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "resolved": false, + "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==", + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "resolved": false, + "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "resolved": false, + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "resolved": false, + "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==", + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "resolved": false, + "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": false, + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": false, + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": false, + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": false, + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "resolved": false, + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": false, + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": false, + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "resolved": false, + "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": false, + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": false, + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": false, + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": false, + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": false, + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "resolved": false, + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "resolved": false, + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": false, + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": false, + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": false, + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": false, + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": false, + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "resolved": false, + "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==", + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "resolved": false, + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.2", + "resolved": false, + "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "g-status": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/g-status/-/g-status-2.0.2.tgz", + "integrity": "sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "matcher": "^1.0.0", + "simple-git": "^1.85.0" + } + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz", + "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==", + "dev": true + }, + "get-pkg-repo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", + "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "meow": "^3.3.0", + "normalize-package-data": "^2.3.0", + "parse-github-repo-url": "^1.3.0", + "through2": "^2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + } + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "git-raw-commits": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.3.6.tgz", + "integrity": "sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==", + "dev": true, + "requires": { + "dargs": "^4.0.1", + "lodash.template": "^4.0.2", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^2.0.0" + } + }, + "git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", + "dev": true, + "requires": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + } + }, + "git-semver-tags": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-1.3.6.tgz", + "integrity": "sha512-2jHlJnln4D/ECk9FxGEBh3k44wgYdWjWDtMmJPaecjoRmxKo3Y1Lh8GMYuOPu04CHw86NTAODchYjC5pnpMQig==", + "dev": true, + "requires": { + "meow": "^4.0.0", + "semver": "^5.5.0" + } + }, + "gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", + "dev": true, + "requires": { + "ini": "^1.3.2" + } + }, + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, + "globals": { + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", + "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "gunzip-maybe": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/gunzip-maybe/-/gunzip-maybe-1.4.1.tgz", + "integrity": "sha512-qtutIKMthNJJgeHQS7kZ9FqDq59/Wn0G2HYCRNjpup7yKfVI6/eqwpmroyZGFoCYaG+sW6psNVb4zoLADHpp2g==", + "dev": true, + "requires": { + "browserify-zlib": "^0.1.4", + "is-deflate": "^1.0.0", + "is-gzip": "^1.0.0", + "peek-stream": "^1.1.0", + "pumpify": "^1.3.3", + "through2": "^2.0.3" + } + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "dev": true, + "requires": { + "ajv": "^5.3.0", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "^1.0.2" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha1-NA3tvmKQGHFRweodd3o0SJNd+EY=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "dev": true + }, + "htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", + "dev": true + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "http-cache-semantics": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz", + "integrity": "sha512-laeSTWIkuFa6lUgZAt+ic9RwOSEwbi9VDQNcCvMFO4sZiDc2Ha8DaZVCJnfpLLQCcS8rvCnIWYmz0POLxt7Dew==", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", + "dev": true + }, + "husky": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-0.14.3.tgz", + "integrity": "sha1-xp7XTi0neXaaF7qDmbVM4LY8EsM=", + "dev": true, + "requires": { + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", + "dev": true + } + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "ieee754": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", + "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==", + "dev": true + }, + "ignore": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", + "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==", + "dev": true + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "dev": true, + "requires": { + "source-map": "~0.5.3" + } + }, + "inquirer": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz", + "integrity": "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.0", + "figures": "^2.0.0", + "lodash": "^4.17.10", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.1.0", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "insert-module-globals": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.6.tgz", + "integrity": "sha512-R3sidKJr3SsggqQQ5cEwQb3pWG8RNx0UnpyeiOSR6jorRIeAOzH2gkTWnNdMnyRiVbjrG047K7UCtlMkQ1Mo9w==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "combine-source-map": "^0.8.0", + "concat-stream": "^1.6.1", + "is-buffer": "^1.1.0", + "lexical-scope": "^1.2.0", + "path-is-absolute": "^1.0.1", + "process": "~0.11.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "irregular-plurals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", + "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-alphabetical": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", + "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==", + "dev": true + }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", + "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-ci": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", + "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", + "dev": true, + "requires": { + "ci-info": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-decimal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz", + "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==", + "dev": true + }, + "is-deflate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-deflate/-/is-deflate-1.0.0.tgz", + "integrity": "sha1-yGKQHDwWH7CdrHzcfnhPgOmPLxQ=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-empty": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", + "integrity": "sha1-3pu1snhzigWgsJpX4ftNSjQan2s=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-file/-/is-file-1.0.0.tgz", + "integrity": "sha1-KKRM+9nT2xkwRfIrZfzo7fliBZY=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-gzip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", + "integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=", + "dev": true + }, + "is-hexadecimal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", + "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==", + "dev": true + }, + "is-hidden": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-hidden/-/is-hidden-1.1.1.tgz", + "integrity": "sha512-175UKecS8+U4hh2PSY0j4xnm2GKYzvSKnbh+naC93JjuBA7LgIo6YxlbcsSo6seFBdQO3RuIcH980yvqqD/2cA==", + "dev": true + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "requires": { + "symbol-observable": "^1.1.0" + }, + "dependencies": { + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-subset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", + "dev": true + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "dev": true, + "requires": { + "text-extensions": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-whitespace-character": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz", + "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-word-character": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz", + "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jest-get-type": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", + "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", + "dev": true + }, + "jest-validate": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz", + "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.1.0", + "leven": "^2.1.0", + "pretty-format": "^23.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", + "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha1-RJnt3NERDgshi6zy+n9/WfVcqAQ=", + "dev": true + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsdom": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz", + "integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=", + "dev": true, + "optional": true, + "requires": { + "abab": "^1.0.0", + "acorn": "^2.4.0", + "acorn-globals": "^1.0.4", + "cssom": ">= 0.3.0 < 0.4.0", + "cssstyle": ">= 0.2.29 < 0.3.0", + "escodegen": "^1.6.1", + "nwmatcher": ">= 1.3.7 < 2.0.0", + "parse5": "^1.5.1", + "request": "^2.55.0", + "sax": "^1.1.4", + "symbol-tree": ">= 3.1.0 < 4.0.0", + "tough-cookie": "^2.2.0", + "webidl-conversions": "^2.0.0", + "whatwg-url-compat": "~0.6.5", + "xml-name-validator": ">= 2.0.1 < 3.0.0" + }, + "dependencies": { + "acorn": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", + "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", + "dev": true, + "optional": true + } + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", + "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jsx-ast-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "dev": true, + "requires": { + "array-includes": "^3.0.3" + } + }, + "keyed-array": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/keyed-array/-/keyed-array-2.1.2.tgz", + "integrity": "sha1-isE3thMi7V7Rx7Qbn5zQZmMcrOA=", + "dev": true + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "labeled-stream-splicer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz", + "integrity": "sha512-MC94mHZRvJ3LfykJlTUipBqenZz1pacOZEMhhQ8dMGcDHs0SBE5GbsavUXV7YtP3icBW17W0Zy1I0lfASmo9Pg==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "isarray": "^2.0.4", + "stream-splicer": "^2.0.0" + }, + "dependencies": { + "isarray": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.4.tgz", + "integrity": "sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA==", + "dev": true + } + } + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, + "requires": { + "package-json": "^4.0.0" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lexical-scope": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz", + "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=", + "dev": true, + "requires": { + "astw": "^2.0.0" + } + }, + "linkify-it": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-1.2.4.tgz", + "integrity": "sha1-B3NSbDF8j9E71TTuHRgP+Iq/iBo=", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, + "lint": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/lint/-/lint-1.1.2.tgz", + "integrity": "sha1-Ne0GTzIlR8MxNY2JmGhmSWi6Nx8=", + "dev": true + }, + "lint-staged": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-8.1.0.tgz", + "integrity": "sha512-yfSkyJy7EuVsaoxtUSEhrD81spdJOe/gMTGea3XaV7HyoRhTb9Gdlp6/JppRZERvKSEYXP9bjcmq6CA5oL2lYQ==", + "dev": true, + "requires": { + "@iamstarkov/listr-update-renderer": "0.4.1", + "chalk": "^2.3.1", + "commander": "^2.14.1", + "cosmiconfig": "5.0.6", + "debug": "^3.1.0", + "dedent": "^0.7.0", + "del": "^3.0.0", + "execa": "^1.0.0", + "find-parent-dir": "^0.3.0", + "g-status": "^2.0.2", + "is-glob": "^4.0.0", + "is-windows": "^1.0.2", + "jest-validate": "^23.5.0", + "listr": "^0.14.2", + "lodash": "^4.17.5", + "log-symbols": "^2.2.0", + "micromatch": "^3.1.8", + "npm-which": "^3.0.1", + "p-map": "^1.1.1", + "path-is-inside": "^1.0.2", + "pify": "^3.0.0", + "please-upgrade-node": "^3.0.2", + "staged-git-files": "1.1.2", + "string-argv": "^0.0.2", + "stringify-object": "^3.2.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "dev": true, + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + }, + "dependencies": { + "p-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.0.0.tgz", + "integrity": "sha512-GO107XdrSUmtHxVoi60qc9tUl/KkNKm+X2CF4P9amalpGxv5YqVPJNfSb0wcA+syCopkZvYYIzW8OVTQW59x/w==", + "dev": true + }, + "rxjs": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + } + } + }, + "listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + } + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "load-plugin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-2.2.2.tgz", + "integrity": "sha512-FYzamtURIJefQykZGtiClYuZkJBUKzmx8Tc74y8JGAulDzbzVm/C+w/MbAljHRr+REL0cRzy3WgnHE+T8gce5g==", + "dev": true, + "requires": { + "npm-prefix": "^1.2.0", + "resolve-from": "^4.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=", + "dev": true + }, + "lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.isempty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=", + "dev": true + }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", + "dev": true + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", + "dev": true + }, + "lodash.range": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.range/-/lodash.range-3.2.0.tgz", + "integrity": "sha1-9GHliPZmg/fq3q3lE+OKaaVloV0=", + "dev": true + }, + "lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=", + "dev": true + }, + "lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=", + "dev": true + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "dev": true + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", + "dev": true + }, + "lodash.template": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", + "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", + "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~3.0.0" + } + }, + "lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", + "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "dependencies": { + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + } + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true, + "optional": true + }, + "longest-streak": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz", + "integrity": "sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + }, + "dependencies": { + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "macos-release": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.0.0.tgz", + "integrity": "sha512-iCM3ZGeqIzlrH7KxYK+fphlJpCCczyHXc+HhRVbEu9uNTCrzYJjvvtefzeKTCVHd5AP/aD/fzC80JZ4ZP+dQ/A==", + "dev": true + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "markdown-escapes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz", + "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==", + "dev": true + }, + "markdown-extensions": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", + "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", + "dev": true + }, + "markdown-it": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-6.1.1.tgz", + "integrity": "sha1-ztA39Ec+6fUVOsQU933IPJG6knw=", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "entities": "~1.1.1", + "linkify-it": "~1.2.2", + "mdurl": "~1.0.1", + "uc.micro": "^1.0.1" + } + }, + "markdown-it-named-headers": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/markdown-it-named-headers/-/markdown-it-named-headers-0.0.4.tgz", + "integrity": "sha1-gu/CgyQkCmsed7mq5QF3HV81HB8=", + "dev": true, + "requires": { + "string": "^3.0.1" + } + }, + "markdown-table": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.2.tgz", + "integrity": "sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw==", + "dev": true + }, + "marky-markdown-lite": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/marky-markdown-lite/-/marky-markdown-lite-1.2.0.tgz", + "integrity": "sha1-dO2phLgTZVfe4QZO/RXkBhdAaZc=", + "dev": true, + "requires": { + "cheerio": "^0.20.0", + "conventional-changelog-cli": "^1.2.0", + "is-file": "^1.0.0", + "markdown-it": "^6.0.1", + "markdown-it-named-headers": "0.0.4" + }, + "dependencies": { + "cheerio": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz", + "integrity": "sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=", + "dev": true, + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "~3.8.1", + "jsdom": "^7.0.2", + "lodash": "^4.1.0" + } + }, + "domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "dev": true, + "requires": { + "domelementtype": "1", + "domhandler": "2.3", + "domutils": "1.5", + "entities": "1.0", + "readable-stream": "1.1" + }, + "dependencies": { + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", + "dev": true + } + } + } + } + }, + "matcher": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz", + "integrity": "sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.4" + } + }, + "matcher-collection": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-1.0.5.tgz", + "integrity": "sha1-LuCVQ4Nyy4iE8FgjQTjAXGROwzk=", + "dev": true, + "requires": { + "minimatch": "^3.0.2" + } + }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "mdast-comment-marker": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-1.0.2.tgz", + "integrity": "sha1-Hd8O+BH7UkOQF8jSwLkiA18rp0o=", + "dev": true + }, + "mdast-util-compact": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.1.tgz", + "integrity": "sha1-zbX4TitqLTEU3zO9BdnLMuPECDo=", + "dev": true, + "requires": { + "unist-util-modify-children": "^1.0.0", + "unist-util-visit": "^1.1.0" + } + }, + "mdast-util-heading-style": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-1.0.3.tgz", + "integrity": "sha1-77OQ28iqAWw89XegNJANsn7nJHw=", + "dev": true + }, + "mdast-util-to-string": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.0.4.tgz", + "integrity": "sha1-XEVch4yTVfDB5/PotxnPWDaRrPs=", + "dev": true + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "merge2": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", + "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==", + "dev": true + }, + "micro": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/micro/-/micro-9.3.1.tgz", + "integrity": "sha512-83uimpPJqfwkfKvJl2WWontBlV3hmzrIgyJ+L2uhDXKNk7Ll+/ezK3zBz7TljubpKPqjM0JdT2Ker4MTPmhjgA==", + "dev": true, + "requires": { + "arg": "2.0.0", + "chalk": "2.4.0", + "content-type": "1.0.4", + "is-stream": "1.1.0", + "raw-body": "2.3.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz", + "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "micro-compress": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micro-compress/-/micro-compress-1.0.0.tgz", + "integrity": "sha1-U/WoC0rQMgyhZaVZtuPfFF1PcE8=", + "dev": true, + "requires": { + "compression": "^1.6.2" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "requires": { + "mime-db": "~1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "minipass": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.0.tgz", + "integrity": "sha512-jWC2Eg+Np4bxah7llu1IrUNSJQxtLz/J+pOjTM0nFpJXGAaV18XBWhUn031Q1tAA/TJtA1jgwnOe9S2PQa4Lbg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", + "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", + "dev": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "mkpath": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", + "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=", + "dev": true + }, + "mksnapshot": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.3.1.tgz", + "integrity": "sha1-JQHAVldDbXQs6Vik/5LHfkDdN+Y=", + "dev": true, + "requires": { + "decompress-zip": "0.3.0", + "fs-extra": "0.26.7", + "request": "^2.79.0" + } + }, + "modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true + }, + "module-deps": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz", + "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "browser-resolve": "^1.7.0", + "cached-path-relative": "^1.0.0", + "concat-stream": "~1.5.0", + "defined": "^1.0.0", + "detective": "^4.0.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.3", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "mri": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.0.tgz", + "integrity": "sha1-XAo/KcjM/7ux7JQdzsCdcfoy82o=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", + "dev": true, + "requires": { + "minimatch": "^3.0.2" + } + }, + "node-version": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/node-version/-/node-version-1.1.3.tgz", + "integrity": "sha512-rEwE51JWn0yN3Wl5BXeGn5d52OGbSXzWiiXRjAQeuyvcGKyvuSILW2rb3G7Xh+nexzLwhTpek6Ehxd6IjvHePg==", + "dev": true + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "npm-path": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", + "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", + "dev": true, + "requires": { + "which": "^1.2.10" + } + }, + "npm-prefix": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/npm-prefix/-/npm-prefix-1.2.0.tgz", + "integrity": "sha1-5hlFX3B0ulTMZtbQ033Z8b5ry8A=", + "dev": true, + "requires": { + "rc": "^1.1.0", + "shellsubstitute": "^1.1.0", + "untildify": "^2.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npm-which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", + "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", + "dev": true, + "requires": { + "commander": "^2.9.0", + "npm-path": "^2.0.2", + "which": "^1.2.10" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "nugget": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz", + "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=", + "dev": true, + "requires": { + "debug": "^2.1.3", + "minimist": "^1.1.0", + "pretty-bytes": "^1.0.2", + "progress-stream": "^1.1.0", + "request": "^2.45.0", + "single-line-log": "^1.1.2", + "throttleit": "0.0.2" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwmatcher": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz", + "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==", + "dev": true, + "optional": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "octicons": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/octicons/-/octicons-7.3.0.tgz", + "integrity": "sha512-UVjlkmUL15Ef/7Rd72Io634Bdl61QgSMasAZpvXPoR2XNFj1RelAyhl4QJuR1hBGlPWFDR7KFj2jEzsFax2IUg==", + "dev": true, + "requires": { + "object-assign": "^4.1.1" + } + }, + "octokit-pagination-methods": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", + "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "openssl-self-signed-certificate": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/openssl-self-signed-certificate/-/openssl-self-signed-certificate-1.1.6.tgz", + "integrity": "sha1-nTpHdrGlfphHNQOSEUrS+RWoPdQ=", + "dev": true + }, + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimist": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", + "dev": true, + "requires": { + "wordwrap": "~0.0.2" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "ora": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.3.0.tgz", + "integrity": "sha1-NnoHitJc+wltpQERXrW0AeB9dJU=", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "cli-cursor": "^1.0.2", + "cli-spinners": "^0.2.0", + "log-symbols": "^1.0.2" + }, + "dependencies": { + "cli-spinners": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.2.0.tgz", + "integrity": "sha1-hQeHN5E7iA9uyf/ntl6D7Hd2KE8=", + "dev": true + } + } + }, + "os-browserify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz", + "integrity": "sha1-ScoCk+CxlZCl9d4Qx/JlphfY/lQ=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.0.0.tgz", + "integrity": "sha512-7c74tib2FsdFbQ3W+qj8Tyd1R3Z6tuVRNNxXjJcZ4NgjIEQU9N/prVMqcW29XZPXGACqaXN3jq58/6hoaoXH6g==", + "dev": true, + "requires": { + "macos-release": "^2.0.0", + "windows-release": "^3.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-cancelable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.0.0.tgz", + "integrity": "sha512-USgPoaC6tkTGlS831CxsVdmZmyb8tR1D+hStI84MyckLOzfJlYQUweomrwE3D8T7u5u5GVuW064LT501wHTYYA==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, + "requires": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + }, + "dependencies": { + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } + } + } + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "dev": true, + "requires": { + "path-platform": "~0.11.15" + } + }, + "parse-asn1": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" + } + }, + "parse-entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.2.tgz", + "integrity": "sha512-5N9lmQ7tmxfXf+hO3X6KRG6w7uYO/HL9fHalSySTdyn63C3WNvTM/1R8tn1u1larNcEbo3Slcy2bsVDQqvEpUg==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-github-repo-url": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", + "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=", + "dev": true + }, + "parse-gitignore": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-0.4.0.tgz", + "integrity": "sha1-q/cC5LkAUk//eQK2g4YoV7Y/k/4=", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "is-glob": "^3.1.0" + }, + "dependencies": { + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse5": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", + "dev": true, + "optional": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pbkdf2": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", + "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "peek-stream": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz", + "integrity": "sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "duplexify": "^3.5.0", + "through2": "^2.0.3" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "pkg-config": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", + "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", + "dev": true, + "requires": { + "debug-log": "^1.0.0", + "find-root": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + }, + "please-upgrade-node": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz", + "integrity": "sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, + "plist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", + "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", + "dev": true, + "requires": { + "base64-js": "^1.2.3", + "xmlbuilder": "^9.0.7", + "xmldom": "0.1.x" + } + }, + "plur": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", + "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", + "dev": true, + "requires": { + "irregular-plurals": "^1.0.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-bytes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", + "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.1.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + } + } + }, + "pretty-format": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", + "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "progress-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz", + "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", + "dev": true, + "requires": { + "speedometer": "~0.1.2", + "through2": "~0.2.3" + }, + "dependencies": { + "through2": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", + "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9", + "xtend": "~2.1.1" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "prop-types": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", + "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", + "dev": true, + "requires": { + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", + "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, + "ramda": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz", + "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==", + "dev": true + }, + "randomatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", + "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", + "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", + "dev": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.0.tgz", + "integrity": "sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA==", + "dev": true + }, + "registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "^1.0.1" + } + }, + "remark": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-8.0.0.tgz", + "integrity": "sha512-K0PTsaZvJlXTl9DN6qYlvjTkqSZBFELhROZMrblm2rB+085flN84nz4g/BscKRMqDvhzlK1oQ/xnWQumdeNZYw==", + "dev": true, + "requires": { + "remark-parse": "^4.0.0", + "remark-stringify": "^4.0.0", + "unified": "^6.0.0" + } + }, + "remark-cli": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-4.0.0.tgz", + "integrity": "sha512-q5GMjGypUS4rTZb3WfMQcGpClSC38A9Ogg1h/HB2GLsqypDetmAfy0X+tuJ6JeyCPVOXXCDgsDCQq4QPqKmxBA==", + "dev": true, + "requires": { + "markdown-extensions": "^1.1.0", + "remark": "^8.0.0", + "unified-args": "^4.0.0" + } + }, + "remark-lint": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-6.0.1.tgz", + "integrity": "sha512-wvTTuB5O5pF8SxqahQjjrU3dtuhygYjaGcOZTw+4ACgSE4RBINDlNqN46HjcV3X0ib5GmObJUt5a2mmhtmuTqw==", + "dev": true, + "requires": { + "remark-message-control": "^4.0.0" + } + }, + "remark-lint-blockquote-indentation": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-1.0.1.tgz", + "integrity": "sha512-YrP99MJ3+dQ5JXzq39fUOcYzwcumva/xEM1eFtD2TrQcSdlMLoqYa7gj+aEEhZCjlA5BssTiVoWWW0RjyPPGZw==", + "dev": true, + "requires": { + "mdast-util-to-string": "^1.0.2", + "plur": "^2.1.2", + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-code-block-style": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-1.0.1.tgz", + "integrity": "sha512-FRUMhhKwCruH4vkatdMhVO4WlYpysV1NmMILVoK/k+/7uFLSfgvlqo66nzhpMdWL8TQHqdo0LhiXuetGC2WjsQ==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-definition-case": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-definition-case/-/remark-lint-definition-case-1.0.1.tgz", + "integrity": "sha512-TxLye5KF4o/rKVTvmPRX5jS9itamFS02yy1IG8bIYcIAJvWsW3GlJaXq4ohK3hKwSQOhtCherEfD6XF9BHLNYQ==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-definition-spacing": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-1.0.1.tgz", + "integrity": "sha512-ewzdlFfpTSP11ZuiOln0yfz6Y03aWtgJmLVQNfF1spaT1gURaShjs8Hiilbo719bz96DgvXSZLP6UnkSiZL1vg==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-emphasis-marker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-emphasis-marker/-/remark-lint-emphasis-marker-1.0.1.tgz", + "integrity": "sha512-QyNsD6y8EZQqhechw0XFGybYMlxn6PFLSlFUO50KSQlJEOgkImN2yJfrNrET2GY4t/fc/uYmeI/q7auUIkLX2w==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-fenced-code-flag": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-1.0.1.tgz", + "integrity": "sha512-P24T9DRe/nnywPFRpE1UAXAVzN1CX6HmINr15UHbQZo1Cy8KYt7uV9YOR0/XzphtnO/AFenAqZyf7tchW5AUNQ==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-fenced-code-marker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-1.0.1.tgz", + "integrity": "sha512-mX7xAMl5m7xGX+YtOtyXIyv+egD4IQAm6DPGdfunI734QwODwcoBydtpTD56jrY+48nVcQ/anFYT1Blg3Xk3sQ==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-file-extension": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-1.0.1.tgz", + "integrity": "sha512-K1Pf5oviaFyCs0FhZqaNZ2odgd5KoV6AlA4nNAMxyylB0Y6t0mYpzECoLSS5Bgxf6f8Op9YbuM2cbjBAsv0dIA==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0" + } + }, + "remark-lint-final-definition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-1.0.1.tgz", + "integrity": "sha512-DK6bphJdQ0xSOQAn+8wOyLIVc3SZW2+ZzCMCLkQnVtHiQ9GHMzFiCkeE3Cq+OClsMI5Yn8wFTHZHPUn58VhNEQ==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-hard-break-spaces": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-1.0.2.tgz", + "integrity": "sha512-uh7LqHgRPCphiCvRzBVA4D0Ml2IqPaw89lWJdQ6HvYiV8ChB/OFLBapHi6OKW7NVVVPPJsElPMB/UPUsKFaPTg==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-heading-increment": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-heading-increment/-/remark-lint-heading-increment-1.0.1.tgz", + "integrity": "sha512-jBAJacXAU5drUpvmymOoFmrdCCNDiz8bzGgJIMjpT0Vyjd0+qdXu2iyFMl/4RkkUli25rpUDXkTHTcxmNbh7Zw==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-heading-style": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-1.0.1.tgz", + "integrity": "sha512-m9Gqr091YdxUtG69xdXYH8fSd3+nsrsMamB/qSWpVSZuWQKZ1mRotr1LO9NphJh6vhw8IfBtG07wgEDn6b40sQ==", + "dev": true, + "requires": { + "mdast-util-heading-style": "^1.0.2", + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-link-title-style": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-link-title-style/-/remark-lint-link-title-style-1.0.1.tgz", + "integrity": "sha512-91MyqmZjokSzRbgvlKq5sLCJEFkM/MNKT1PDaWa3+GDLBGu7D4eMQGd2x49xX8IdJDEoWy5D8W+2Gb8XKWMUyw==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1", + "vfile-location": "^2.0.1" + } + }, + "remark-lint-list-item-content-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-content-indent/-/remark-lint-list-item-content-indent-1.0.1.tgz", + "integrity": "sha512-R5cdXFFywoBcg+2UUcF9OJ/vt9oqJv+KmTKIQV9CFHWeAfMFiZbxazsSPNaCcO1fW9622hxPCawN/AofDTbP7Q==", + "dev": true, + "requires": { + "plur": "^2.1.2", + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-list-item-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-1.0.1.tgz", + "integrity": "sha512-dSUFGQYtduuaos+5oXH89RTk0rGUe6DFf04q+rxQ7Z3YRbuXhAU2nYeY0/HENYiWJU1xFLteZkDvKMj0NfS3DQ==", + "dev": true, + "requires": { + "plur": "^2.1.2", + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-list-item-spacing": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-spacing/-/remark-lint-list-item-spacing-1.1.1.tgz", + "integrity": "sha512-HlPEzRq4LJB6tQ72zgIZ42mOaOSX92O268BLolys/H1x6N29/JNMLfurWqLsrxZrxxHH3H7EUP4dNM2P1kDGBw==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-maximum-heading-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-maximum-heading-length/-/remark-lint-maximum-heading-length-1.0.1.tgz", + "integrity": "sha512-f8ChV9U238gncyvTqmzJ+UpCMj+hFyluWBjVYr2K8CNh+MdSivIxS4zw4170sBRoqNuS3gBxRHG9f4rmdqotJA==", + "dev": true, + "requires": { + "mdast-util-to-string": "^1.0.2", + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-maximum-line-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-1.0.2.tgz", + "integrity": "sha512-M4UIXAAbtLgoQbTDVwdKOEFbTKtJSZ+pCW7ZqMFs+cbIN0Svm32LM9+xpVfVU0hLYt3Ypl++EAPfguBNe1PZEw==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-no-auto-link-without-protocol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-1.0.1.tgz", + "integrity": "sha512-MHl0hNtF8Rc0lg6iuVP7/0rnp4uZadm3S07/1TiFeqzU22KFxxzcC8980Q4+I8oPZE0d1x80h9DmkNAVFwhDjQ==", + "dev": true, + "requires": { + "mdast-util-to-string": "^1.0.2", + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-no-blockquote-without-marker": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-2.0.1.tgz", + "integrity": "sha512-8VTQ/MP3flvG4U0tFSD+DMVT7F/4u9SnQLb/jjeRC3DzgbsIagIUqpWYAKkc+yBz9S/lgftA92lLP5PrlOa5DA==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1", + "vfile-location": "^2.0.1" + } + }, + "remark-lint-no-consecutive-blank-lines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-1.0.1.tgz", + "integrity": "sha512-IhyUiGTpb/hjtusIVg10q963KeL5CyNfbWOfDZ1KtY2tvdoSPRGrrCuTKo6OG8r1qavM6bU0mtRuIBqNh4lIzA==", + "dev": true, + "requires": { + "plur": "^2.1.2", + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-no-duplicate-headings": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-headings/-/remark-lint-no-duplicate-headings-1.0.1.tgz", + "integrity": "sha512-iZZxyZgwnjvDkydKZzqHBueJvIpGbxnITmgd8xN8TOLZoAg9/KGTQRAkotL1HXNRdkzwggfgB9ONxv/rWtYBmg==", + "dev": true, + "requires": { + "mdast-util-to-string": "^1.0.2", + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-no-emphasis-as-heading": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-emphasis-as-heading/-/remark-lint-no-emphasis-as-heading-1.0.1.tgz", + "integrity": "sha512-+x17Hrjwne4Mhk2x/Zolnuv/sOclF1oYMDBSEYhBUpn/UAwxhXEXYKkeo0KkWA7Q3+UCLELJvzsk4cGNP6Sgow==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-no-file-name-articles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-1.0.1.tgz", + "integrity": "sha512-SzebnFnilrsINA6QZP1YqPa3SrfSotrLkRWl5FUCoVshBvEFNKJFWXj6Xyt4NjWQ5tJWFtOMysAuHdGT+Odhjg==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0" + } + }, + "remark-lint-no-file-name-consecutive-dashes": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-1.0.1.tgz", + "integrity": "sha512-YP2HBwA00yeD7phvxp4ftiqbfBPfYHPgPfcEcb8oNa1WlUh/58cs9DbSHWKsZG+XLkvEaheC6qUQG02jEKZHPA==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0" + } + }, + "remark-lint-no-file-name-irregular-characters": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-irregular-characters/-/remark-lint-no-file-name-irregular-characters-1.0.1.tgz", + "integrity": "sha512-+ks/V6OVMGOPZKw+fe2E4DPvLoslGxvdgtqXq2Nyz0cEdYX8RP45kI79V4w95H7UCJAeOFM9mZzVLvmCY1sEbg==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0" + } + }, + "remark-lint-no-file-name-mixed-case": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-mixed-case/-/remark-lint-no-file-name-mixed-case-1.0.1.tgz", + "integrity": "sha512-bcqPsow1C0LrsKII1YehUO7VPOER7nze6FzsZZ8/NP+d200OL7Y7VMCqN1kscAvG+PTJgjznyXuLEpy7KQnVFg==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0" + } + }, + "remark-lint-no-file-name-outer-dashes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-1.0.2.tgz", + "integrity": "sha512-BVEwLrA4kipalgKrxhncpgtmh6eUmHBH1ggC+X3csYR4X5vXv4vHQqpov4I1vMyWxMLMBnq7lTL3Iqp0CS4vwg==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0" + } + }, + "remark-lint-no-heading-punctuation": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-punctuation/-/remark-lint-no-heading-punctuation-1.0.1.tgz", + "integrity": "sha512-/7kGRmPT+JLxEME1Z/rQn99mP8yr4qXFwcniKYsefR1jl8pCZciwCIp2Tq92Nn+FPELVrpk9sloRBb2JP3UB0A==", + "dev": true, + "requires": { + "mdast-util-to-string": "^1.0.2", + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-no-inline-padding": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-1.0.1.tgz", + "integrity": "sha512-nRl6vA45ZPdMz3/rVMZw7WRRqLFuMrzhdkrbrGLjwBovdIeD/IGCEbDA5NR60g2xT9V5dAmKogvHEH1bIr8SdQ==", + "dev": true, + "requires": { + "mdast-util-to-string": "^1.0.2", + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-no-literal-urls": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-1.0.1.tgz", + "integrity": "sha512-YMsZFVYQDt9gvpc6THL76GzyhCR+cK79vjyEOEmX+O3tOjxQstbi0oW6Lngbl1WbpkCW5TWEzSKOorQowYI2wg==", + "dev": true, + "requires": { + "mdast-util-to-string": "^1.0.2", + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-no-multiple-toplevel-headings": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-1.0.1.tgz", + "integrity": "sha512-LFfgjF3NKFkt0tGNnJ8Exf8+DrVcMRwek5qu5mvh2KrZnmSpm5flYWzUy2UnnIyicDL3CZYC/r3Fjz6CeBYgZA==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-no-shell-dollars": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-1.0.1.tgz", + "integrity": "sha512-YryHem73PTxjCkuC4HONJWHsmrLyXmF7r+cCH36Ys3vuWsfAbwkbOwpyuPB4KXn+6fHaTUfz/B5BPp3iwzJwyA==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-no-shortcut-reference-image": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-1.0.1.tgz", + "integrity": "sha512-nUQ+4xB5hKZTCl9gvg7c+W1T3ddsnjgu4zwRza2Bn+21cKmUzx+z9dvlZ4aVuNGmxuWHbKI8/ZkKuB8Eu27vJw==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-no-shortcut-reference-link": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-1.0.2.tgz", + "integrity": "sha512-A6ZexZ6XyQ7fXebrj5WgW5FkSJ81GobjWyMFVmBxgxPd9GH2BkRsZ10aFSkQQvfKSrqbnOL2vrigGMgbiERRxA==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-no-table-indentation": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-1.0.1.tgz", + "integrity": "sha512-QrtT1GvJmAoNsWh+gmHFajFlM+ubm9rd3Cbz2OYPix8ZM6g907aIfG2NusJFXL9D8/CExQWYhlBvelFBbHgqbQ==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-ordered-list-marker-style": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-1.0.1.tgz", + "integrity": "sha512-LJICUZIxqHHi360EP90zbDP+2QQIVVgPGlz0AatuR9ifd7xqAzraQKxsQajAZpuOepZgjBMTOz9L9W0Znx7ujA==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-ordered-list-marker-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-1.0.1.tgz", + "integrity": "sha512-P6fYui3MvuB21+6AYH8Lbe7SVZ2VQL+FVJUuDCBhe01bgx6SajGmQ/f4Iqt0gCHEAaKw7e2B7tdwd36ifbs1EA==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-rule-style": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-1.0.1.tgz", + "integrity": "sha512-dzH+K6DcPIIMBq6LUQgE4dR9TiQGZrQOoULD7m0Y0lIb2EoR2FK5Zd4TgZg/LnvTs6fid37t0xFoaY4/lXV/5Q==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-strong-marker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-1.0.1.tgz", + "integrity": "sha512-+bwWKWAqDwqd21Vw+ndqVFh5V27Dp4MKhk9AUlKmcvgJYHuvQ8UfWQdpZcP218ps/4EbwTfyi33TaPyXqOTlXA==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-table-cell-padding": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-1.0.1.tgz", + "integrity": "sha512-o3WwC9YysXbQKf0D5nvhhJPcLagqedLwGdifukdgyaKvuIQVbtWbNv1/UOdB3LL+D+2fUrwrCmnQ8J3E1r0lBw==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-table-pipe-alignment": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-table-pipe-alignment/-/remark-lint-table-pipe-alignment-1.0.1.tgz", + "integrity": "sha512-lYfK2gWGN45hYfAOZw5gscQ4uDaO9bJLp+H64jvrTQzBV+OCvB9kRQwI0oIrJAa4XMmipAZR+2XhjNSCfQ0fRA==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-table-pipes": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-1.0.1.tgz", + "integrity": "sha512-VHfDRvcovLBl/cvSjwDoA0xRizdZU33A6F2qFD9A5hu1sDWgGxMLg5m2MOvFlRkUVxSwUv47cuD0/yxB4THYXQ==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-lint-unordered-list-marker-style": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-1.0.1.tgz", + "integrity": "sha512-dHYD9cHM9ZJ7BKUZ1nEPGfLAHgUmYxccXtms1GSEM/uyUtR2SU/ao1RwZZ+LvacZFCNZ1yG2yKCJhGI/5U/GrA==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.1" + } + }, + "remark-message-control": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-4.1.0.tgz", + "integrity": "sha512-e1dszks4YKY7hLAkhS2367jBjBpAfvi+kVgSN/tOFrdp3qxITjiNR5fOFnyYF8vvorkQ9uxlKJoZUOW8T7rKDg==", + "dev": true, + "requires": { + "mdast-comment-marker": "^1.0.0", + "unified-message-control": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "remark-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-4.0.0.tgz", + "integrity": "sha512-XZgICP2gJ1MHU7+vQaRM+VA9HEL3X253uwUM/BGgx3iv6TH2B3bF3B8q00DKcyP9YrJV+/7WOWEWBFF/u8cIsw==", + "dev": true, + "requires": { + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^1.0.0", + "vfile-location": "^2.0.0", + "xtend": "^4.0.1" + } + }, + "remark-preset-lint-markdown-style-guide": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/remark-preset-lint-markdown-style-guide/-/remark-preset-lint-markdown-style-guide-2.1.1.tgz", + "integrity": "sha512-Ao6fB63WuGtz1fa4rjoI+u1EOu21rWVGPmJlUKZlCICPPB6I815nJ52V0sLYjaw2cs+ZiXsXhdVinN7UpVgXcQ==", + "dev": true, + "requires": { + "remark-lint": "^6.0.0", + "remark-lint-blockquote-indentation": "^1.0.0", + "remark-lint-code-block-style": "^1.0.0", + "remark-lint-definition-case": "^1.0.0", + "remark-lint-definition-spacing": "^1.0.0", + "remark-lint-emphasis-marker": "^1.0.0", + "remark-lint-fenced-code-flag": "^1.0.0", + "remark-lint-fenced-code-marker": "^1.0.0", + "remark-lint-file-extension": "^1.0.0", + "remark-lint-final-definition": "^1.0.0", + "remark-lint-hard-break-spaces": "^1.0.0", + "remark-lint-heading-increment": "^1.0.0", + "remark-lint-heading-style": "^1.0.0", + "remark-lint-link-title-style": "^1.0.0", + "remark-lint-list-item-content-indent": "^1.0.0", + "remark-lint-list-item-indent": "^1.0.0", + "remark-lint-list-item-spacing": "^1.0.0", + "remark-lint-maximum-heading-length": "^1.0.0", + "remark-lint-maximum-line-length": "^1.0.0", + "remark-lint-no-auto-link-without-protocol": "^1.0.0", + "remark-lint-no-blockquote-without-marker": "^2.0.0", + "remark-lint-no-consecutive-blank-lines": "^1.0.0", + "remark-lint-no-duplicate-headings": "^1.0.0", + "remark-lint-no-emphasis-as-heading": "^1.0.0", + "remark-lint-no-file-name-articles": "^1.0.0", + "remark-lint-no-file-name-consecutive-dashes": "^1.0.0", + "remark-lint-no-file-name-irregular-characters": "^1.0.0", + "remark-lint-no-file-name-mixed-case": "^1.0.0", + "remark-lint-no-file-name-outer-dashes": "^1.0.0", + "remark-lint-no-heading-punctuation": "^1.0.0", + "remark-lint-no-inline-padding": "^1.0.0", + "remark-lint-no-literal-urls": "^1.0.0", + "remark-lint-no-multiple-toplevel-headings": "^1.0.0", + "remark-lint-no-shell-dollars": "^1.0.0", + "remark-lint-no-shortcut-reference-image": "^1.0.0", + "remark-lint-no-shortcut-reference-link": "^1.0.0", + "remark-lint-no-table-indentation": "^1.0.0", + "remark-lint-ordered-list-marker-style": "^1.0.0", + "remark-lint-ordered-list-marker-value": "^1.0.0", + "remark-lint-rule-style": "^1.0.0", + "remark-lint-strong-marker": "^1.0.0", + "remark-lint-table-cell-padding": "^1.0.0", + "remark-lint-table-pipe-alignment": "^1.0.0", + "remark-lint-table-pipes": "^1.0.0", + "remark-lint-unordered-list-marker-style": "^1.0.0" + } + }, + "remark-stringify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-4.0.0.tgz", + "integrity": "sha512-xLuyKTnuQer3ke9hkU38SUYLiTmS078QOnoFavztmbt/pAJtNSkNtFgR0U//uCcmG0qnyxao+PDuatQav46F1w==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "mime-db": { + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", + "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", + "dev": true + }, + "mime-types": { + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", + "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", + "dev": true, + "requires": { + "mime-db": "~1.36.0" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + } + } + }, + "resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "revalidator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.3.1.tgz", + "integrity": "sha1-/yzEz3zHxjhaxxAXgnbm280Ddi8=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", + "dev": true, + "requires": { + "glob": "^7.0.5" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, + "rxjs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.2.tgz", + "integrity": "sha512-hV7criqbR0pe7EeL3O66UYVg92IR0XsA97+9y+BWTePK9SKmEI5Qd3Zj6uPnGkNzXsBywBQWTvujPl+1Kn9Zjw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "optional": true + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "^5.0.3" + } + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + } + } + }, + "serve": { + "version": "6.5.8", + "resolved": "https://registry.npmjs.org/serve/-/serve-6.5.8.tgz", + "integrity": "sha512-GZYlJz7f6E7Xq6xbg1rTSvQQV9x4v/yYB/sum6egzSBLa/mdk1PViDSX2JvL0Me83sxu3JpEpQELfakDKbGcrw==", + "dev": true, + "requires": { + "args": "4.0.0", + "basic-auth": "2.0.0", + "bluebird": "3.5.1", + "boxen": "1.3.0", + "chalk": "2.4.1", + "clipboardy": "1.2.3", + "dargs": "5.1.0", + "detect-port": "1.2.3", + "filesize": "3.6.1", + "fs-extra": "6.0.1", + "handlebars": "4.0.11", + "ip": "1.1.5", + "micro": "9.3.1", + "micro-compress": "1.0.0", + "mime-types": "2.1.18", + "node-version": "1.1.3", + "openssl-self-signed-certificate": "1.1.6", + "opn": "5.3.0", + "path-is-inside": "1.0.2", + "path-type": "3.0.0", + "send": "0.16.2", + "update-check": "1.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "dargs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz", + "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=", + "dev": true + }, + "fs-extra": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", + "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shasum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", + "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", + "dev": true, + "requires": { + "json-stable-stringify": "~0.0.0", + "sha.js": "~2.4.4" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "shellsubstitute": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shellsubstitute/-/shellsubstitute-1.2.0.tgz", + "integrity": "sha1-5PcCpQxRiw9v6YRRiQ1wWvKba3A=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "simple-git": { + "version": "1.107.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.107.0.tgz", + "integrity": "sha512-t4OK1JRlp4ayKRfcW6owrWcRVLyHRUlhGd0uN6ZZTqfDq8a5XpcUdOKiGRNobHEuMtNqzp0vcJNvhYWwh5PsQA==", + "dev": true, + "requires": { + "debug": "^4.0.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "single-line-log": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz", + "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=", + "dev": true, + "requires": { + "string-width": "^1.0.1" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, + "speedometer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", + "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", + "dev": true + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "split2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "dev": true, + "requires": { + "through2": "^2.0.2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "staged-git-files": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.2.tgz", + "integrity": "sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA==", + "dev": true + }, + "standard": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/standard/-/standard-12.0.1.tgz", + "integrity": "sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg==", + "dev": true, + "requires": { + "eslint": "~5.4.0", + "eslint-config-standard": "12.0.0", + "eslint-config-standard-jsx": "6.0.2", + "eslint-plugin-import": "~2.14.0", + "eslint-plugin-node": "~7.0.1", + "eslint-plugin-promise": "~4.0.0", + "eslint-plugin-react": "~7.11.1", + "eslint-plugin-standard": "~4.0.0", + "standard-engine": "~9.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "eslint": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz", + "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==", + "dev": true, + "requires": { + "ajv": "^6.5.0", + "babel-code-frame": "^6.26.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.0.0", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.2", + "imurmurhash": "^0.1.4", + "inquirer": "^5.2.0", + "is-resolvable": "^1.1.0", + "js-yaml": "^3.11.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^2.0.0", + "require-uncached": "^1.0.3", + "semver": "^5.5.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^4.0.3", + "text-table": "^0.2.0" + } + }, + "external-editor": { + "version": "2.2.0", + "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "inquirer": { + "version": "5.2.0", + "resolved": "http://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.1.0", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^5.5.2", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + } + } + }, + "standard-engine": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-9.0.0.tgz", + "integrity": "sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w==", + "dev": true, + "requires": { + "deglob": "^2.1.0", + "get-stdin": "^6.0.0", + "minimist": "^1.1.0", + "pkg-conf": "^2.0.0" + }, + "dependencies": { + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + } + } + }, + "standard-markdown": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/standard-markdown/-/standard-markdown-5.0.0.tgz", + "integrity": "sha512-jgGyyMmZqOIYYAHs/ksEkGUa+bngJce2P4FygFIrb1WMkKmQL/RPgsI2njl02r6kiDzHPProOG9y4ABe20joCA==", + "dev": true, + "requires": { + "async": "^2.6.1", + "commander": "^2.18.0", + "globby": "^8.0.1", + "lodash.flatten": "^4.4.0", + "lodash.range": "^3.2.0", + "ora": "^3.0.0", + "standard": "^12.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true + }, + "commander": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz", + "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==", + "dev": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globby": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", + "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "ora": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.0.0.tgz", + "integrity": "sha512-LBS97LFe2RV6GJmXBi6OKcETKyklHNMV0xw7BtsVn2MlsgsydyZetSCbCANr+PFLmDyv4KV88nn0eCKza665Mg==", + "dev": true, + "requires": { + "chalk": "^2.3.1", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.1.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^4.0.0", + "wcwidth": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "state-toggle": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.1.tgz", + "integrity": "sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "requires": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-http": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz", + "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz", + "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "string": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/string/-/string-3.3.3.tgz", + "integrity": "sha1-XqIRzZLSKOGEKUmQpsyXs2anfLA=", + "dev": true + }, + "string-argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", + "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "stringify-entities": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", + "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", + "dev": true, + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "dev": true, + "requires": { + "minimist": "^1.1.0" + } + }, + "sumchecker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz", + "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=", + "dev": true, + "requires": { + "debug": "^2.2.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true, + "optional": true + }, + "syntax-error": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", + "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", + "dev": true, + "requires": { + "acorn-node": "^1.2.0" + } + }, + "table": { + "version": "4.0.3", + "resolved": "http://registry.npmjs.org/table/-/table-4.0.3.tgz", + "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "dev": true, + "requires": { + "ajv": "^6.0.1", + "ajv-keywords": "^3.0.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "tar": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.2.tgz", + "integrity": "sha512-BfkE9CciGGgDsATqkikUHrQrraBCO+ke/1f6SFAEMnxyyfN9lxC+nW1NFWMpqH865DhHIy9vQi682gk1X7friw==", + "dev": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "tar-fs": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", + "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==", + "dev": true, + "requires": { + "chownr": "^1.0.1", + "mkdirp": "^0.5.1", + "pump": "^1.0.0", + "tar-stream": "^1.1.2" + }, + "dependencies": { + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "tar-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.1.tgz", + "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==", + "dev": true, + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.1.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "temp": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", + "dev": true, + "requires": { + "os-tmpdir": "^1.0.0", + "rimraf": "~2.2.6" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + } + } + }, + "tempfile": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", + "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", + "dev": true, + "requires": { + "os-tmpdir": "^1.0.0", + "uuid": "^2.0.1" + }, + "dependencies": { + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "^0.7.0" + } + }, + "text-extensions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.8.0.tgz", + "integrity": "sha512-mVzjRxuWnDKs/qH1rbOJEVHLlSX9kty9lpi7lMvLgU9S74mQ8/Ozg9UPcKxShh0qG2NZ+NyPOPpcZU4C1Eld9A==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throttleit": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", + "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "dev": true, + "requires": { + "process": "~0.11.0" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + } + } + }, + "to-vfile": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-2.2.0.tgz", + "integrity": "sha512-saGC8/lWdGrEoBMLUtgzhRHWAkQMP8gdldA3MOAUhBwTGEb1RSMVcflHGSx4ZJsdEZ9o1qDBCPp47LCPrbZWow==", + "dev": true, + "requires": { + "is-buffer": "^1.1.4", + "vfile": "^2.0.0", + "x-is-function": "^1.0.4" + } + }, + "touch": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", + "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=", + "dev": true, + "requires": { + "nopt": "~1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1" + } + } + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "optional": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true, + "optional": true + }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", + "dev": true + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + }, + "trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true + }, + "trim-trailing-lines": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz", + "integrity": "sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg==", + "dev": true + }, + "trough": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.2.tgz", + "integrity": "sha512-FHkoUZvG6Egrv9XZAyYGKEyb1JMsFphgPjoczkZC2y6W93U1jswcVURB8MUvtsahEPEVACyxD47JAL63vF4JsQ==", + "dev": true + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "tslint": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-4.5.1.tgz", + "integrity": "sha1-BTVocb7yOkNJBnNABvwYgza6gks=", + "dev": true, + "requires": { + "babel-code-frame": "^6.20.0", + "colors": "^1.1.2", + "diff": "^3.0.1", + "findup-sync": "~0.3.0", + "glob": "^7.1.1", + "optimist": "~0.6.0", + "resolve": "^1.1.7", + "tsutils": "^1.1.0", + "update-notifier": "^2.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + } + } + }, + "tsutils": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-1.9.1.tgz", + "integrity": "sha1-ufmrROVa+WgYMdXyjQrur1x1DLA=", + "dev": true + }, + "tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", + "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", + "dev": true + }, + "uc.micro": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.5.tgz", + "integrity": "sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "umd": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", + "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", + "dev": true + }, + "unherit": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.1.tgz", + "integrity": "sha512-+XZuV691Cn4zHsK0vkKYwBEwB74T3IZIcxrgn2E4rKwTfFyI1zCh7X7grwh9Re08fdPlarIdyWgI8aVB3F5A5g==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "xtend": "^4.0.1" + } + }, + "unified": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz", + "integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==", + "dev": true, + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^1.1.0", + "trough": "^1.0.0", + "vfile": "^2.0.0", + "x-is-string": "^0.1.0" + } + }, + "unified-args": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unified-args/-/unified-args-4.0.0.tgz", + "integrity": "sha1-jZubitNHvrN/QwVipixNNhtCIg8=", + "dev": true, + "requires": { + "camelcase": "^4.0.0", + "chalk": "^2.0.0", + "chokidar": "^1.5.1", + "minimist": "^1.2.0", + "text-table": "^0.2.0", + "unified-engine": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "unified-engine": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-4.0.1.tgz", + "integrity": "sha1-lpKql/1cTsNoiXeeElFL746GP8M=", + "dev": true, + "requires": { + "concat-stream": "^1.5.1", + "debug": "^2.2.0", + "fault": "^1.0.0", + "fn-name": "^2.0.1", + "glob": "^7.0.3", + "ignore": "^3.2.0", + "is-empty": "^1.0.0", + "is-hidden": "^1.0.1", + "is-object": "^1.0.1", + "js-yaml": "^3.6.1", + "load-plugin": "^2.0.0", + "parse-json": "^2.2.0", + "to-vfile": "^2.0.0", + "trough": "^1.0.0", + "vfile-reporter": "^4.0.0", + "vfile-statistics": "^1.1.0", + "x-is-function": "^1.0.4", + "x-is-string": "^0.1.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "unified-lint-rule": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.2.tgz", + "integrity": "sha512-WkqwMC1aijHE17W3Z1co7aTI+Dzo1jHdwhI66fTClU1yOTbzAsTqlOD6eeR/MI9235Y3nu2jMDcm8GCeq4gaLg==", + "dev": true, + "requires": { + "wrapped": "^1.0.1" + } + }, + "unified-message-control": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-1.0.4.tgz", + "integrity": "sha512-e1dEtN4Z/TvLn/qHm+xeZpzqhJTtfZusFErk336kkZVpqrJYiV9ptxq+SbRPFMlN0OkjDYHmVJ929KYjsMTo3g==", + "dev": true, + "requires": { + "trim": "0.0.1", + "unist-util-visit": "^1.0.0", + "vfile-location": "^2.0.0" + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "unist-util-generated": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.2.tgz", + "integrity": "sha512-1HcwiEO62dr0XWGT+abVK4f0aAm8Ik8N08c5nAYVmuSxfvpA9rCcNyX/le8xXj1pJK5nBrGlZefeWB6bN8Pstw==", + "dev": true + }, + "unist-util-is": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz", + "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==", + "dev": true + }, + "unist-util-modify-children": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-1.1.2.tgz", + "integrity": "sha512-GRi04yhng1WqBf5RBzPkOtWAadcZS2gvuOgNn/cyJBYNxtTuyYqTKN0eg4rC1YJwGnzrqfRB3dSKm8cNCjNirg==", + "dev": true, + "requires": { + "array-iterate": "^1.0.0" + } + }, + "unist-util-position": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.0.1.tgz", + "integrity": "sha512-05QfJDPI7PE1BIUtAxeSV+cDx21xP7+tUZgSval5CA7tr0pHBwybF7OnEa1dOFqg6BfYH/qiMUnWwWj+Frhlww==", + "dev": true + }, + "unist-util-remove-position": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz", + "integrity": "sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q==", + "dev": true, + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "unist-util-stringify-position": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", + "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==", + "dev": true + }, + "unist-util-visit": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.3.1.tgz", + "integrity": "sha512-0fdB9EQJU0tho5tK0VzOJzAQpPv2LyLZ030b10GxuzAWEfvd54mpY7BMjQ1L69k2YNvL+SvxRzH0yUIehOO8aA==", + "dev": true, + "requires": { + "unist-util-is": "^2.1.1" + } + }, + "universal-user-agent": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-2.0.2.tgz", + "integrity": "sha512-nOwvHWLH3dBazyuzbECPA5uVFNd7AlgviXRHgR4yf48QqitIvpdncRrxMbZNMpPPEfgz30I9ubd1XmiJiqsTrg==", + "dev": true, + "requires": { + "os-name": "^3.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "untildify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz", + "integrity": "sha1-F+soB5h/dpUunASF/DEdBqgmouA=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0" + } + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + }, + "update-check": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.1.tgz", + "integrity": "sha512-M3rjq5KwSrWZrm2GVPIQIF+NXpIn5I9mIV67gGoydptQvzRjLp9ZbM6ctFJeNuaWSm5+mNP7aInELjSiLcIw6A==", + "dev": true, + "requires": { + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0" + } + }, + "update-notifier": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "dev": true, + "requires": { + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vfile": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz", + "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==", + "dev": true, + "requires": { + "is-buffer": "^1.1.4", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" + } + }, + "vfile-location": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.3.tgz", + "integrity": "sha512-zM5/l4lfw1CBoPx3Jimxoc5RNDAHHpk6AM6LM0pTIkm5SUSsx8ZekZ0PVdf0WEZ7kjlhSt7ZlqbRL6Cd6dBs6A==", + "dev": true + }, + "vfile-message": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.0.1.tgz", + "integrity": "sha512-vSGCkhNvJzO6VcWC6AlJW4NtYOVtS+RgCaqFIYUjoGIlHnFL+i0LbtYvonDWOMcB97uTPT4PRsyYY7REWC9vug==", + "dev": true, + "requires": { + "unist-util-stringify-position": "^1.1.1" + } + }, + "vfile-reporter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-4.0.0.tgz", + "integrity": "sha1-6m8K4TQvSEFXOYXgX5QXNvJ96do=", + "dev": true, + "requires": { + "repeat-string": "^1.5.0", + "string-width": "^1.0.0", + "supports-color": "^4.1.0", + "unist-util-stringify-position": "^1.0.0", + "vfile-statistics": "^1.1.0" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "^2.0.0" + } + } + } + }, + "vfile-statistics": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-1.1.1.tgz", + "integrity": "sha512-dxUM6IYvGChHuwMT3dseyU5BHprNRXzAV0OHx1A769lVGsTiT50kU7BbpRFV+IE6oWmU+PwHdsTKfXhnDIRIgQ==", + "dev": true + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "walk-sync": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-0.3.2.tgz", + "integrity": "sha1-SCcoCvxC0OA1NnxKTjHurA0Tb3U=", + "dev": true, + "requires": { + "ensure-posix-path": "^1.0.0", + "matcher-collection": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz", + "integrity": "sha1-O/glj30xjHRDw28uFpQCoaZwNQY=", + "dev": true, + "optional": true + }, + "whatwg-url-compat": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz", + "integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=", + "dev": true, + "optional": true, + "requires": { + "tr46": "~0.0.1" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "widest-line": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "dev": true, + "requires": { + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "windows-release": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.1.0.tgz", + "integrity": "sha512-hBb7m7acFgQPQc222uEQTmdcGLeBmQLNLFIh0rDk3CwFOBrfjefLzEfEfmpMq8Af/n/GnFf3eYf203FY1PmudA==", + "dev": true, + "requires": { + "execa": "^0.10.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + } + } + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "wrapped": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wrapped/-/wrapped-1.0.1.tgz", + "integrity": "sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI=", + "dev": true, + "requires": { + "co": "3.1.0", + "sliced": "^1.0.1" + }, + "dependencies": { + "co": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", + "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", + "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "x-is-function": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/x-is-function/-/x-is-function-1.0.4.tgz", + "integrity": "sha1-XSlNw9Joy90GJYDgxd93o5HR+h4=", + "dev": true + }, + "x-is-string": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", + "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=", + "dev": true + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "dev": true, + "optional": true + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "xmldom": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "yallist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", + "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", + "dev": true + } + } +} diff --git a/devel/electron5/files/package.json b/devel/electron5/files/package.json new file mode 100644 index 000000000000..d09524116650 --- /dev/null +++ b/devel/electron5/files/package.json @@ -0,0 +1,88 @@ +{ + "name": "electron", + "version": "5.0.13", + "repository": "https://github.com/electron/electron", + "description": "Build cross platform desktop apps with JavaScript, HTML, and CSS", + "devDependencies": { + "@octokit/rest": "^16.3.2", + "aliasify": "^2.1.0", + "asar": "^0.11.0", + "browserify": "^13.1.0", + "check-for-leaks": "^1.0.2", + "clang-format": "^1.2.3", + "colors": "^1.1.2", + "dotenv-safe": "^4.0.4", + "dugite": "^1.45.0", + "electron-docs-linter": "^2.4.0", + "electron-typescript-definitions": "^7.0.0", + "eslint": "^5.6.0", + "eslint-config-standard": "^12.0.0", + "eslint-plugin-mocha": "^5.2.0", + "folder-hash": "^2.1.1", + "got": "^9.6.0", + "husky": "^0.14.3", + "lint": "^1.1.2", + "lint-staged": "^8.1.0", + "minimist": "^1.2.0", + "nugget": "^2.0.1", + "octicons": "^7.3.0", + "plist": "^3.0.1", + "remark-cli": "^4.0.0", + "remark-preset-lint-markdown-style-guide": "^2.1.1", + "request": "^2.88.0", + "semver": "^5.6.0", + "serve": "^6.5.8", + "standard-markdown": "^5.0.0", + "sumchecker": "^2.0.2", + "temp": "^0.8.3" + }, + "private": true, + "scripts": { + "asar": "asar", + "browserify": "browserify", + "bump-version": "./script/bump-version.js", + "check-tls": "python ./script/tls.py", + "clang-format": "find atom/ chromium_src/ -iname *.h -o -iname *.cc -o -iname *.mm | xargs clang-format -i", + "lint": "node ./script/lint.js && npm run lint:clang-format && npm run lint:docs", + "lint:js": "node ./script/lint.js --js", + "lint:clang-format": "python script/run-clang-format.py -r -c atom/ chromium_src/ || (echo \"\\nCode not formatted correctly.\" && exit 1)", + "lint:cpp": "node ./script/lint.js --cc", + "lint:py": "node ./script/lint.js --py", + "lint:gn": "node ./script/lint.js --gn", + "lint:docs": "remark docs -qf && npm run lint:js-in-markdown && npm run create-typescript-definitions && npm run lint:docs-relative-links", + "lint:docs-relative-links": "python ./script/check-relative-doc-links.py", + "lint:js-in-markdown": "standard-markdown docs", + "create-api-json": "electron-docs-linter docs --outfile=electron-api.json", + "create-typescript-definitions": "npm run create-api-json && electron-typescript-definitions --in=electron-api.json --out=electron.d.ts && node spec/ts-smoke/runner.js", + "preinstall": "node -e 'process.exit(0)'", + "precommit": "lint-staged", + "prepack": "check-for-leaks", + "prepush": "check-for-leaks", + "repl": "node ./script/start.js --interactive", + "start": "node ./script/start.js", + "test": "node ./script/spec-runner.js electron/spec" + }, + "license": "MIT", + "author": "Electron Community", + "keywords": [ + "electron" + ], + "aliasify": { + "replacements": { + "@electron/internal/(.+)": "./lib/$1" + } + }, + "lint-staged": { + "*.{js,ts}": [ + "node script/lint.js --js --fix --only --", + "git add" + ], + "*.{cc,mm,c,h}": [ + "python script/run-clang-format.py -r -c --fix", + "git add" + ], + "*.md": [ + "remark -qf" + ] + } +} diff --git a/devel/electron5/files/patch-BUILD.gn b/devel/electron5/files/patch-BUILD.gn new file mode 100644 index 000000000000..d8d023875781 --- /dev/null +++ b/devel/electron5/files/patch-BUILD.gn @@ -0,0 +1,87 @@ +--- BUILD.gn.orig 2019-04-08 08:32:35 UTC ++++ BUILD.gn +@@ -381,7 +381,7 @@ group("gn_all") { + ] + } + +- if (is_linux || is_android) { ++ if ((is_linux && !is_bsd) || is_android) { + deps += [ + "//third_party/breakpad:breakpad_unittests", + "//third_party/breakpad:core-2-minidump", +@@ -422,8 +422,6 @@ group("gn_all") { + "//net:disk_cache_memory_test", + "//net:quic_client", + "//net:quic_server", +- "//sandbox/linux:chrome_sandbox", +- "//sandbox/linux:sandbox_linux_unittests", + "//testing:empty_main", + ] + +@@ -480,10 +478,6 @@ group("gn_all") { + "//chrome/test/chromedriver:chromedriver", + "//chrome/test/chromedriver:chromedriver_tests", + "//components/sync:run_sync_testserver", +- "//courgette:courgette", +- "//courgette:courgette_fuzz", +- "//courgette:courgette_minimal_tool", +- "//courgette:courgette_unittests", + "//media/cast:generate_barcode_video", + "//media/cast:generate_timecode_audio", + "//net:crash_cache", +@@ -538,10 +532,6 @@ group("gn_all") { + "//mojo:mojo_perftests", + "//services/service_manager/public/cpp", + "//testing/gmock:gmock_main", +- "//third_party/breakpad:dump_syms($host_toolchain)", +- "//third_party/breakpad:microdump_stackwalk($host_toolchain)", +- "//third_party/breakpad:minidump_dump($host_toolchain)", +- "//third_party/breakpad:minidump_stackwalk($host_toolchain)", + ] + + if (!is_android) { +@@ -615,7 +605,7 @@ group("gn_all") { + host_os == "win") { + deps += [ "//chrome/test/mini_installer:mini_installer_tests" ] + } +- } else if (!is_android && !is_ios && !is_fuchsia) { ++ } else if (!is_android && !is_ios && !is_fuchsia && !is_bsd) { + deps += [ "//third_party/breakpad:symupload($host_toolchain)" ] + } + +@@ -873,7 +863,6 @@ if (is_chromeos) { + "//ppapi/examples/video_decode", + "//sandbox/linux:chrome_sandbox", + "//sandbox/linux:sandbox_linux_unittests", +- "//third_party/breakpad:minidump_stackwalk($host_toolchain)", + + # Blocked on https://github.com/catapult-project/catapult/issues/2297 + #"//third_party/catapult/telemetry:bitmaptools", +@@ -1001,7 +990,7 @@ if (!is_ios) { + ] + } + +- if (!is_win && !is_android) { ++ if (!is_win && !is_android && !is_bsd) { + data_deps += + [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ] + } +@@ -1010,7 +999,7 @@ if (!is_ios) { + data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ] + } + +- if (is_linux) { ++ if (is_linux && !is_bsd) { + data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ] + } + +@@ -1150,9 +1139,6 @@ group("chromium_builder_perf") { + + if (is_win) { + data_deps += [ "//chrome/installer/mini_installer:mini_installer" ] +- } else { +- data_deps += +- [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ] + } + if (is_win || is_android) { + data_deps += [ diff --git a/devel/electron5/files/patch-apps_ui_views_app__window__frame__view.cc b/devel/electron5/files/patch-apps_ui_views_app__window__frame__view.cc new file mode 100644 index 000000000000..2a9e23ea3f97 --- /dev/null +++ b/devel/electron5/files/patch-apps_ui_views_app__window__frame__view.cc @@ -0,0 +1,11 @@ +--- apps/ui/views/app_window_frame_view.cc.orig 2019-04-08 08:32:35 UTC ++++ apps/ui/views/app_window_frame_view.cc +@@ -132,7 +132,7 @@ gfx::Rect AppWindowFrameView::GetBoundsForClientView() + gfx::Rect AppWindowFrameView::GetWindowBoundsForClientBounds( + const gfx::Rect& client_bounds) const { + gfx::Rect window_bounds = client_bounds; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + // Get the difference between the widget's client area bounds and window + // bounds, and grow |window_bounds| by that amount. + gfx::Insets native_frame_insets = diff --git a/devel/electron5/files/patch-ash_display_mirror__window__controller.cc b/devel/electron5/files/patch-ash_display_mirror__window__controller.cc new file mode 100644 index 000000000000..a152baf0e33c --- /dev/null +++ b/devel/electron5/files/patch-ash_display_mirror__window__controller.cc @@ -0,0 +1,14 @@ +--- ash/display/mirror_window_controller.cc.orig 2019-04-08 08:32:36 UTC ++++ ash/display/mirror_window_controller.cc +@@ -274,7 +274,11 @@ void MirrorWindowController::UpdateWindow( + return info.id() == iter->first; + }) == display_info_list.end()) { + CloseAndDeleteHost(iter->second, true); ++#if defined(__llvm__) ++ mirroring_host_info_map_.erase(iter++); ++#else + iter = mirroring_host_info_map_.erase(iter); ++#endif + } else { + ++iter; + } diff --git a/devel/electron5/files/patch-base_BUILD.gn b/devel/electron5/files/patch-base_BUILD.gn new file mode 100644 index 000000000000..29d276b82b4b --- /dev/null +++ b/devel/electron5/files/patch-base_BUILD.gn @@ -0,0 +1,67 @@ +--- base/BUILD.gn.orig 2019-04-08 08:32:37 UTC ++++ base/BUILD.gn +@@ -1185,7 +1185,7 @@ jumbo_component("base") { + # Needed for <atomic> if using newer C++ library than sysroot, except if + # building inside the cros_sdk environment - use host_toolchain as a + # more robust check for this. +- if (!use_sysroot && (is_android || (is_linux && !is_chromecast)) && ++ if (!use_sysroot && (is_android || (is_linux && !is_chromecast) && !is_clang) && + host_toolchain != "//build/toolchain/cros:host") { + libs += [ "atomic" ] + } +@@ -1211,7 +1211,7 @@ jumbo_component("base") { + "allocator/allocator_shim_override_glibc_weak_symbols.h", + ] + deps += [ "//base/allocator:tcmalloc" ] +- } else if (is_linux && use_allocator == "none") { ++ } else if ((is_linux && !is_bsd) && use_allocator == "none") { + sources += [ "allocator/allocator_shim_default_dispatch_to_glibc.cc" ] + } else if (is_android && use_allocator == "none") { + sources += [ +@@ -1751,6 +1751,33 @@ jumbo_component("base") { + } + } + ++ if (is_bsd) { ++ sources -= [ ++ "files/file_path_watcher_linux.cc", ++ "files/file_util_linux.cc", ++ "process/memory_linux.cc", ++ "process/process_handle_linux.cc", ++ "process/process_iterator_linux.cc", ++ "process/process_metrics_linux.cc", ++ "system/sys_info_linux.cc" ++ ] ++ sources += [ ++ "files/file_path_watcher_kqueue.cc", ++ "files/file_path_watcher_kqueue.h", ++ "files/file_path_watcher_stub.cc", ++ "process/memory_stubs.cc", ++ "process/process_handle_freebsd.cc", ++ "process/process_iterator_freebsd.cc", ++ "process/process_metrics_freebsd.cc", ++ "system/sys_info_freebsd.cc", ++ ] ++ libs = [ ++ "execinfo", # logging.cc ++ "kvm", # process_metrics_freebsd ++ "util" # process_metrics_freebsd ++ ] ++ } ++ + # iOS + if (is_ios) { + set_sources_assignment_filter([]) +@@ -2808,6 +2835,12 @@ test("base_unittests") { + ] + set_sources_assignment_filter(sources_assignment_filter) + } ++ ++ if (is_bsd) { ++ sources -= [ ++ "debug/proc_maps_linux_unittest.cc", ++ ] ++ } + + if (is_win) { + deps += [ "//base:scoped_handle_test_dll" ] diff --git a/devel/electron5/files/patch-base_allocator_allocator__shim.cc b/devel/electron5/files/patch-base_allocator_allocator__shim.cc new file mode 100644 index 000000000000..710c2b180fe1 --- /dev/null +++ b/devel/electron5/files/patch-base_allocator_allocator__shim.cc @@ -0,0 +1,11 @@ +--- base/allocator/allocator_shim.cc.orig 2019-04-08 08:32:37 UTC ++++ base/allocator/allocator_shim.cc +@@ -70,7 +70,7 @@ inline const allocator::AllocatorDispatch* GetChainHea + // Unfortunately due to that bug NoBarrier_Load() is mistakenly fully + // barriered on Linux+Clang, and that causes visible perf regressons. + return reinterpret_cast<const allocator::AllocatorDispatch*>( +-#if defined(OS_LINUX) && defined(__clang__) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(__clang__) + *static_cast<const volatile subtle::AtomicWord*>(&g_chain_head) + #else + subtle::NoBarrier_Load(&g_chain_head) diff --git a/devel/electron5/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc b/devel/electron5/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc new file mode 100644 index 000000000000..53f7a7f3a37c --- /dev/null +++ b/devel/electron5/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc @@ -0,0 +1,77 @@ +--- base/allocator/allocator_shim_default_dispatch_to_glibc.cc.orig 2019-04-08 08:18:04 UTC ++++ base/allocator/allocator_shim_default_dispatch_to_glibc.cc +@@ -3,19 +3,28 @@ + // found in the LICENSE file. + + #include "base/allocator/allocator_shim.h" ++#include <stdio.h> ++#include <stdlib.h> ++#include <malloc_np.h> + +-#include <malloc.h> +- + // This translation unit defines a default dispatch for the allocator shim which + // routes allocations to libc functions. +-// The code here is strongly inspired from tcmalloc's libc_override_glibc.h. ++// The code here is strongly inspired from tcmalloc's override_glibc.h. + + extern "C" { +-void* __libc_malloc(size_t size); +-void* __libc_calloc(size_t n, size_t size); +-void* __libc_realloc(void* address, size_t size); +-void* __libc_memalign(size_t alignment, size_t size); +-void __libc_free(void* ptr); ++void* __malloc(size_t size); ++void* __calloc(size_t n, size_t size); ++void* __realloc(void* address, size_t size); ++void* __memalign(size_t alignment, size_t size) { ++ void *ret; ++ if (__posix_memalign(&ret, alignment, size) != 0) { ++ return nullptr; ++ } else { ++ return ret; ++ } ++} ++int __posix_memalign(void **ptr, size_t alignment, size_t size); ++void __free(void* ptr); + } // extern "C" + + namespace { +@@ -23,32 +32,32 @@ namespace { + using base::allocator::AllocatorDispatch; + + void* GlibcMalloc(const AllocatorDispatch*, size_t size, void* context) { +- return __libc_malloc(size); ++ return __malloc(size); + } + + void* GlibcCalloc(const AllocatorDispatch*, + size_t n, + size_t size, + void* context) { +- return __libc_calloc(n, size); ++ return __calloc(n, size); + } + + void* GlibcRealloc(const AllocatorDispatch*, + void* address, + size_t size, + void* context) { +- return __libc_realloc(address, size); ++ return __realloc(address, size); + } + + void* GlibcMemalign(const AllocatorDispatch*, + size_t alignment, + size_t size, + void* context) { +- return __libc_memalign(alignment, size); ++ return __memalign(alignment, size); + } + + void GlibcFree(const AllocatorDispatch*, void* address, void* context) { +- __libc_free(address); ++ __free(address); + } + + size_t GlibcGetSizeEstimate(const AllocatorDispatch*, diff --git a/devel/electron5/files/patch-base_allocator_allocator__shim__override__libc__symbols.h b/devel/electron5/files/patch-base_allocator_allocator__shim__override__libc__symbols.h new file mode 100644 index 000000000000..d1053bd90377 --- /dev/null +++ b/devel/electron5/files/patch-base_allocator_allocator__shim__override__libc__symbols.h @@ -0,0 +1,11 @@ +--- base/allocator/allocator_shim_override_libc_symbols.h.orig 2019-04-08 08:18:04 UTC ++++ base/allocator/allocator_shim_override_libc_symbols.h +@@ -10,7 +10,7 @@ + #endif + #define BASE_ALLOCATOR_ALLOCATOR_SHIM_OVERRIDE_LIBC_SYMBOLS_H_ + +-#include <malloc.h> ++#include <stdlib.h> + + #include "base/allocator/allocator_shim_internals.h" + diff --git a/devel/electron5/files/patch-base_allocator_allocator__shim__unittest.cc b/devel/electron5/files/patch-base_allocator_allocator__shim__unittest.cc new file mode 100644 index 000000000000..1d497a5b7fb7 --- /dev/null +++ b/devel/electron5/files/patch-base_allocator_allocator__shim__unittest.cc @@ -0,0 +1,36 @@ +--- base/allocator/allocator_shim_unittest.cc.orig 2019-04-08 08:18:04 UTC ++++ base/allocator/allocator_shim_unittest.cc +@@ -348,7 +348,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) { + ASSERT_GE(aligned_allocs_intercepted_by_size[61], 1u); + #endif // !OS_WIN + +-#if !defined(OS_WIN) && !defined(OS_MACOSX) ++#if !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD) + void* memalign_ptr = memalign(128, 53); + ASSERT_NE(nullptr, memalign_ptr); + ASSERT_EQ(0u, reinterpret_cast<uintptr_t>(memalign_ptr) % 128); +@@ -361,7 +361,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) { + ASSERT_GE(aligned_allocs_intercepted_by_alignment[kPageSize], 1u); + // pvalloc rounds the size up to the next page. + ASSERT_GE(aligned_allocs_intercepted_by_size[kPageSize], 1u); +-#endif // !OS_WIN && !OS_MACOSX ++#endif // !OS_WIN && !OS_MACOSX && !OS_BSD + + char* realloc_ptr = static_cast<char*>(malloc(10)); + strcpy(realloc_ptr, "foobar"); +@@ -377,13 +377,13 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) { + free(zero_alloc_ptr); + ASSERT_GE(frees_intercepted_by_addr[Hash(zero_alloc_ptr)], 1u); + +-#if !defined(OS_WIN) && !defined(OS_MACOSX) ++#if !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD) + free(memalign_ptr); + ASSERT_GE(frees_intercepted_by_addr[Hash(memalign_ptr)], 1u); + + free(pvalloc_ptr); + ASSERT_GE(frees_intercepted_by_addr[Hash(pvalloc_ptr)], 1u); +-#endif // !OS_WIN && !OS_MACOSX ++#endif // !OS_WIN && !OS_MACOSX && !OS_BSD + + #if !defined(OS_WIN) + free(posix_memalign_ptr); diff --git a/devel/electron5/files/patch-base_allocator_partition__allocator_page__allocator.cc b/devel/electron5/files/patch-base_allocator_partition__allocator_page__allocator.cc new file mode 100644 index 000000000000..8cb71cb4f758 --- /dev/null +++ b/devel/electron5/files/patch-base_allocator_partition__allocator_page__allocator.cc @@ -0,0 +1,11 @@ +--- base/allocator/partition_allocator/page_allocator.cc.orig 2019-04-08 08:32:37 UTC ++++ base/allocator/partition_allocator/page_allocator.cc +@@ -115,7 +115,7 @@ void* AllocPages(void* address, + uintptr_t align_base_mask = ~align_offset_mask; + DCHECK(!(reinterpret_cast<uintptr_t>(address) & align_offset_mask)); + +-#if defined(OS_LINUX) && defined(ARCH_CPU_64_BITS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(ARCH_CPU_64_BITS) + // On 64 bit Linux, we may need to adjust the address space limit for + // guarded allocations. + if (length >= kMinimumGuardedMemorySize) { diff --git a/devel/electron5/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h b/devel/electron5/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h new file mode 100644 index 000000000000..e6d032068fcf --- /dev/null +++ b/devel/electron5/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h @@ -0,0 +1,38 @@ +--- base/allocator/partition_allocator/page_allocator_internals_posix.h.orig 2019-04-08 08:32:37 UTC ++++ base/allocator/partition_allocator/page_allocator_internals_posix.h +@@ -14,7 +14,7 @@ + #if defined(OS_MACOSX) + #include <mach/mach.h> + #endif +-#if defined(OS_LINUX) ++#if defined(OS_BSD) || defined(OS_LINUX) + #include <sys/resource.h> + + #include <algorithm> +@@ -48,7 +48,7 @@ int GetAccessFlags(PageAccessibilityConfiguration acce + } + } + +-#if defined(OS_LINUX) && defined(ARCH_CPU_64_BITS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(ARCH_CPU_64_BITS) + + // Multiple guarded memory regions may exceed the process address space limit. + // This function will raise or lower the limit by |amount|. +@@ -68,7 +68,7 @@ bool AdjustAddressSpaceLimit(int64_t amount) { + // schemes that reduce that to 4 GiB. + constexpr size_t kMinimumGuardedMemorySize = 1ULL << 32; // 4 GiB + +-#endif // defined(OS_LINUX) && defined(ARCH_CPU_64_BITS) ++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && defined(ARCH_CPU_64_BITS) + + void* SystemAllocPagesInternal(void* hint, + size_t length, +@@ -134,7 +134,7 @@ void SetSystemPagesAccessInternal( + void FreePagesInternal(void* address, size_t length) { + CHECK(!munmap(address, length)); + +-#if defined(OS_LINUX) && defined(ARCH_CPU_64_BITS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(ARCH_CPU_64_BITS) + // Restore the address space limit. + if (length >= kMinimumGuardedMemorySize) { + CHECK(AdjustAddressSpaceLimit(-base::checked_cast<int64_t>(length))); diff --git a/devel/electron5/files/patch-base_debug_debugger__posix.cc b/devel/electron5/files/patch-base_debug_debugger__posix.cc new file mode 100644 index 000000000000..ac0917a1340f --- /dev/null +++ b/devel/electron5/files/patch-base_debug_debugger__posix.cc @@ -0,0 +1,56 @@ +--- base/debug/debugger_posix.cc.orig 2019-04-08 08:32:37 UTC ++++ base/debug/debugger_posix.cc +@@ -86,7 +86,7 @@ bool BeingDebugged() { + KERN_PROC, + KERN_PROC_PID, + getpid() +-#if defined(OS_OPENBSD) ++#if defined(OS_BSD) + , sizeof(struct kinfo_proc), + 0 + #endif +@@ -94,33 +94,35 @@ bool BeingDebugged() { + + // Caution: struct kinfo_proc is marked __APPLE_API_UNSTABLE. The source and + // binary interfaces may change. +- struct kinfo_proc info; +- size_t info_size = sizeof(info); ++ struct kinfo_proc *info; ++ size_t info_size; + +-#if defined(OS_OPENBSD) + if (sysctl(mib, base::size(mib), NULL, &info_size, NULL, 0) < 0) + return -1; + ++ info = (struct kinfo_proc *)malloc(info_size); + mib[5] = (info_size / sizeof(struct kinfo_proc)); +-#endif + +- int sysctl_result = sysctl(mib, base::size(mib), &info, &info_size, NULL, 0); ++ int sysctl_result = sysctl(mib, base::size(mib), info, &info_size, NULL, 0); + DCHECK_EQ(sysctl_result, 0); + if (sysctl_result != 0) { + is_set = true; + being_debugged = false; +- return being_debugged; ++ goto out; + } + + // This process is being debugged if the P_TRACED flag is set. + is_set = true; + #if defined(OS_FREEBSD) +- being_debugged = (info.ki_flag & P_TRACED) != 0; ++ being_debugged = (info->ki_flag & P_TRACED) != 0; + #elif defined(OS_BSD) +- being_debugged = (info.p_flag & P_TRACED) != 0; ++ being_debugged = (info->p_flag & P_TRACED) != 0; + #else +- being_debugged = (info.kp_proc.p_flag & P_TRACED) != 0; ++ being_debugged = (info->kp_proc.p_flag & P_TRACED) != 0; + #endif ++ ++out: ++ free(info); + return being_debugged; + } + diff --git a/devel/electron5/files/patch-base_debug_elf__reader__linux.cc b/devel/electron5/files/patch-base_debug_elf__reader__linux.cc new file mode 100644 index 000000000000..db49f472e43c --- /dev/null +++ b/devel/electron5/files/patch-base_debug_elf__reader__linux.cc @@ -0,0 +1,13 @@ +--- base/debug/elf_reader_linux.cc.orig 2019-04-08 08:32:37 UTC ++++ base/debug/elf_reader_linux.cc +@@ -41,8 +41,10 @@ Optional<std::string> ElfSegmentBuildIDNoteAsString(co + const void* section_end = segment.data() + segment.size_bytes(); + const Nhdr* note_header = reinterpret_cast<const Nhdr*>(segment.data()); + while (note_header < section_end) { ++#if !defined(OS_BSD) + if (note_header->n_type == NT_GNU_BUILD_ID) + break; ++#endif + note_header = reinterpret_cast<const Nhdr*>( + reinterpret_cast<const char*>(note_header) + sizeof(Nhdr) + + bits::Align(note_header->n_namesz, 4) + diff --git a/devel/electron5/files/patch-base_debug_proc__maps__linux.cc b/devel/electron5/files/patch-base_debug_proc__maps__linux.cc new file mode 100644 index 000000000000..33d60e4dbaa0 --- /dev/null +++ b/devel/electron5/files/patch-base_debug_proc__maps__linux.cc @@ -0,0 +1,11 @@ +--- base/debug/proc_maps_linux.cc.orig 2019-04-08 08:18:04 UTC ++++ base/debug/proc_maps_linux.cc +@@ -12,7 +12,7 @@ + #include "base/strings/string_split.h" + #include "build/build_config.h" + +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_ANDROID) + #include <inttypes.h> + #endif + diff --git a/devel/electron5/files/patch-base_debug_stack__trace.cc b/devel/electron5/files/patch-base_debug_stack__trace.cc new file mode 100644 index 000000000000..cee67e9b038d --- /dev/null +++ b/devel/electron5/files/patch-base_debug_stack__trace.cc @@ -0,0 +1,11 @@ +--- base/debug/stack_trace.cc.orig 2019-04-08 08:32:37 UTC ++++ base/debug/stack_trace.cc +@@ -14,7 +14,7 @@ + + #if BUILDFLAG(CAN_UNWIND_WITH_FRAME_POINTERS) + +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + #include <pthread.h> + #include "base/process/process_handle.h" + #include "base/threading/platform_thread.h" diff --git a/devel/electron5/files/patch-base_debug_stack__trace.h b/devel/electron5/files/patch-base_debug_stack__trace.h new file mode 100644 index 000000000000..8d02d84ef1a6 --- /dev/null +++ b/devel/electron5/files/patch-base_debug_stack__trace.h @@ -0,0 +1,10 @@ +--- base/debug/stack_trace.h.orig 2019-04-08 08:32:37 UTC ++++ base/debug/stack_trace.h +@@ -16,6 +16,7 @@ + #include "build/build_config.h" + + #if defined(OS_POSIX) ++#include <sys/stdint.h> + #include <unistd.h> + #endif + diff --git a/devel/electron5/files/patch-base_debug_stack__trace__posix.cc b/devel/electron5/files/patch-base_debug_stack__trace__posix.cc new file mode 100644 index 000000000000..dc903fb4e662 --- /dev/null +++ b/devel/electron5/files/patch-base_debug_stack__trace__posix.cc @@ -0,0 +1,31 @@ +--- base/debug/stack_trace_posix.cc.orig 2019-04-08 08:32:37 UTC ++++ base/debug/stack_trace_posix.cc +@@ -35,7 +35,7 @@ + #include <AvailabilityMacros.h> + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "base/debug/proc_maps_linux.h" + #endif + +@@ -653,6 +653,11 @@ class SandboxSymbolizeHelper { + // for the modules that are loaded in the current process. + // Returns true on success. + bool CacheMemoryRegions() { ++#if defined(OS_BSD) ++ // TODO (rene) avoid link error, implement something? ++ NOTIMPLEMENTED(); ++ return false; ++#else + // Reads /proc/self/maps. + std::string contents; + if (!ReadProcMaps(&contents)) { +@@ -670,6 +675,7 @@ class SandboxSymbolizeHelper { + + is_initialized_ = true; + return true; ++#endif + } + + // Opens all object files and caches their file descriptors. diff --git a/devel/electron5/files/patch-base_files_file__path__unittest.cc b/devel/electron5/files/patch-base_files_file__path__unittest.cc new file mode 100644 index 000000000000..127fe7b8c491 --- /dev/null +++ b/devel/electron5/files/patch-base_files_file__path__unittest.cc @@ -0,0 +1,11 @@ +--- base/files/file_path_unittest.cc.orig 2019-04-08 08:32:37 UTC ++++ base/files/file_path_unittest.cc +@@ -1138,7 +1138,7 @@ TEST_F(FilePathTest, FromUTF8Unsafe_And_AsUTF8Unsafe) + "\xEF\xBC\xA1\xEF\xBC\xA2\xEF\xBC\xA3.txt" }, + }; + +-#if !defined(SYSTEM_NATIVE_UTF8) && defined(OS_LINUX) ++#if !defined(SYSTEM_NATIVE_UTF8) && (defined(OS_LINUX) || defined(OS_BSD)) + ScopedLocale locale("en_US.UTF-8"); + #endif + diff --git a/devel/electron5/files/patch-base_files_file__path__watcher__kqueue.h b/devel/electron5/files/patch-base_files_file__path__watcher__kqueue.h new file mode 100644 index 000000000000..9be1f3928117 --- /dev/null +++ b/devel/electron5/files/patch-base_files_file__path__watcher__kqueue.h @@ -0,0 +1,13 @@ +--- base/files/file_path_watcher_kqueue.h.orig 2019-04-08 08:18:04 UTC ++++ base/files/file_path_watcher_kqueue.h +@@ -5,6 +5,10 @@ + #ifndef BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_ + #define BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_ + ++#ifdef __FreeBSD__ ++#include <sys/stdint.h> ++#include <sys/types.h> ++#endif + #include <sys/event.h> + + #include <memory> diff --git a/devel/electron5/files/patch-base_files_file__path__watcher__stub.cc b/devel/electron5/files/patch-base_files_file__path__watcher__stub.cc new file mode 100644 index 000000000000..239dc46bd460 --- /dev/null +++ b/devel/electron5/files/patch-base_files_file__path__watcher__stub.cc @@ -0,0 +1,51 @@ +--- base/files/file_path_watcher_stub.cc.orig 2019-04-08 08:18:04 UTC ++++ base/files/file_path_watcher_stub.cc +@@ -1,14 +1,15 @@ +-// Copyright (c) 2012 The Chromium Authors. All rights reserved. ++// Copyright 2014 The Chromium Authors. All rights reserved. + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + +-// This file exists for Unix systems which don't have the inotify headers, and +-// thus cannot build file_watcher_inotify.cc + +-#include "base/files/file_path_watcher.h" ++#include <memory> + ++#include "base/files/file_path_watcher.h" ++#include "base/files/file_path_watcher_kqueue.h" + #include "base/macros.h" + #include "base/memory/ptr_util.h" ++#include "build/build_config.h" + + namespace base { + +@@ -22,12 +23,26 @@ class FilePathWatcherImpl : public FilePathWatcher::Pl + bool Watch(const FilePath& path, + bool recursive, + const FilePathWatcher::Callback& callback) override { +- return false; ++ DCHECK(!impl_.get()); ++ if (recursive) { ++ if (!FilePathWatcher::RecursiveWatchAvailable()) ++ return false; ++ } else { ++ impl_ = std::make_unique<FilePathWatcherKQueue>(); ++ } ++ DCHECK(impl_.get()); ++ return impl_->Watch(path, recursive, callback); + } + +- void Cancel() override {} ++ void Cancel() override { ++ if (impl_.get()) ++ impl_->Cancel(); ++ set_cancelled(); ++ } + + private: ++ std::unique_ptr<PlatformDelegate> impl_; ++ + DISALLOW_COPY_AND_ASSIGN(FilePathWatcherImpl); + }; + diff --git a/devel/electron5/files/patch-base_files_file__path__watcher__unittest.cc b/devel/electron5/files/patch-base_files_file__path__watcher__unittest.cc new file mode 100644 index 000000000000..42bc5b3cc63c --- /dev/null +++ b/devel/electron5/files/patch-base_files_file__path__watcher__unittest.cc @@ -0,0 +1,11 @@ +--- base/files/file_path_watcher_unittest.cc.orig 2019-04-08 08:18:04 UTC ++++ base/files/file_path_watcher_unittest.cc +@@ -436,7 +436,7 @@ TEST_F(FilePathWatcherTest, WatchDirectory) { + VLOG(1) << "Waiting for file1 creation"; + ASSERT_TRUE(WaitForEvents()); + +-#if !defined(OS_MACOSX) ++#if !defined(OS_MACOSX) && !defined(OS_BSD) + // Mac implementation does not detect files modified in a directory. + ASSERT_TRUE(WriteFile(file1, "content v2")); + VLOG(1) << "Waiting for file1 modification"; diff --git a/devel/electron5/files/patch-base_files_file__util.h b/devel/electron5/files/patch-base_files_file__util.h new file mode 100644 index 000000000000..c74fb49a2fcc --- /dev/null +++ b/devel/electron5/files/patch-base_files_file__util.h @@ -0,0 +1,11 @@ +--- base/files/file_util.h.orig 2019-04-08 08:32:37 UTC ++++ base/files/file_util.h +@@ -445,7 +445,7 @@ BASE_EXPORT bool VerifyPathControlledByAdmin(const bas + // the directory |path|, in the number of FilePath::CharType, or -1 on failure. + BASE_EXPORT int GetMaximumPathComponentLength(const base::FilePath& path); + +-#if defined(OS_LINUX) || defined(OS_AIX) ++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) + // Broad categories of file systems as returned by statfs() on Linux. + enum FileSystemType { + FILE_SYSTEM_UNKNOWN, // statfs failed. diff --git a/devel/electron5/files/patch-base_files_file__util__posix.cc b/devel/electron5/files/patch-base_files_file__util__posix.cc new file mode 100644 index 000000000000..88e632aa3dc8 --- /dev/null +++ b/devel/electron5/files/patch-base_files_file__util__posix.cc @@ -0,0 +1,11 @@ +--- base/files/file_util_posix.cc.orig 2019-04-08 08:32:37 UTC ++++ base/files/file_util_posix.cc +@@ -407,7 +407,7 @@ bool CopyDirectoryExcl(const FilePath& from_path, + #endif // !defined(OS_NACL_NONSFI) + + bool CreateLocalNonBlockingPipe(int fds[2]) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + return pipe2(fds, O_CLOEXEC | O_NONBLOCK) == 0; + #else + int raw_fds[2]; diff --git a/devel/electron5/files/patch-base_files_memory__mapped__file__posix.cc b/devel/electron5/files/patch-base_files_memory__mapped__file__posix.cc new file mode 100644 index 000000000000..0f8e33ab197c --- /dev/null +++ b/devel/electron5/files/patch-base_files_memory__mapped__file__posix.cc @@ -0,0 +1,11 @@ +--- base/files/memory_mapped_file_posix.cc.orig 2019-04-08 08:32:37 UTC ++++ base/files/memory_mapped_file_posix.cc +@@ -110,6 +110,8 @@ bool MemoryMappedFile::MapFileRegionToMemory( + // Only Android API>=21 supports the fallocate call. Older versions need + // to manually extend the file by writing zeros at block intervals. + do_manual_extension = true; ++#elif defined(OS_BSD) ++ do_manual_extension = true; + #elif defined(OS_MACOSX) + // MacOS doesn't support fallocate even though their new APFS filesystem + // does support sparse files. It does, however, have the functionality diff --git a/devel/electron5/files/patch-base_i18n_icu__util.cc b/devel/electron5/files/patch-base_i18n_icu__util.cc new file mode 100644 index 000000000000..0cd66ee1ccfa --- /dev/null +++ b/devel/electron5/files/patch-base_i18n_icu__util.cc @@ -0,0 +1,20 @@ +--- base/i18n/icu_util.cc.orig 2019-04-08 08:32:37 UTC ++++ base/i18n/icu_util.cc +@@ -20,7 +20,7 @@ + #include "build/build_config.h" + #include "third_party/icu/source/common/unicode/putil.h" + #include "third_party/icu/source/common/unicode/udata.h" +-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_ANDROID) ++#if (defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS)) || defined(OS_ANDROID) + #include "third_party/icu/source/i18n/unicode/timezone.h" + #endif + +@@ -315,7 +315,7 @@ bool InitializeICU() { + // TODO(jungshik): Some callers do not care about tz at all. If necessary, + // add a boolean argument to this function to init'd the default tz only + // when requested. +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + if (result) + std::unique_ptr<icu::TimeZone> zone(icu::TimeZone::createDefault()); + #endif diff --git a/devel/electron5/files/patch-base_linux__util.cc b/devel/electron5/files/patch-base_linux__util.cc new file mode 100644 index 000000000000..4cf4d2a2b179 --- /dev/null +++ b/devel/electron5/files/patch-base_linux__util.cc @@ -0,0 +1,18 @@ +--- base/linux_util.cc.orig 2019-04-08 08:18:04 UTC ++++ base/linux_util.cc +@@ -90,12 +90,14 @@ char g_linux_distro[kDistroSize] = + "CrOS"; + #elif defined(OS_ANDROID) + "Android"; ++#elif defined(OS_BSD) ++ "BSD"; + #else // if defined(OS_LINUX) + "Unknown"; + #endif + + std::string GetLinuxDistro() { +-#if defined(OS_CHROMEOS) || defined(OS_ANDROID) ++#if defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD) + return g_linux_distro; + #elif defined(OS_LINUX) + LinuxDistroHelper* distro_state_singleton = LinuxDistroHelper::GetInstance(); diff --git a/devel/electron5/files/patch-base_logging__unittest.cc b/devel/electron5/files/patch-base_logging__unittest.cc new file mode 100644 index 000000000000..ee3a6e93eb8c --- /dev/null +++ b/devel/electron5/files/patch-base_logging__unittest.cc @@ -0,0 +1,11 @@ +--- base/logging_unittest.cc.orig 2019-04-08 08:32:37 UTC ++++ base/logging_unittest.cc +@@ -420,7 +420,7 @@ void CheckCrashTestSighandler(int, siginfo_t* info, vo + // need the arch-specific boilerplate below, which is inspired by breakpad. + // At the same time, on OSX, ucontext.h is deprecated but si_addr works fine. + uintptr_t crash_addr = 0; +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) + crash_addr = reinterpret_cast<uintptr_t>(info->si_addr); + #else // OS_POSIX && !OS_MACOSX + ucontext_t* context = reinterpret_cast<ucontext_t*>(context_ptr); diff --git a/devel/electron5/files/patch-base_native__library__posix.cc b/devel/electron5/files/patch-base_native__library__posix.cc new file mode 100644 index 000000000000..212b19516b56 --- /dev/null +++ b/devel/electron5/files/patch-base_native__library__posix.cc @@ -0,0 +1,11 @@ +--- base/native_library_posix.cc.orig 2019-04-08 08:32:37 UTC ++++ base/native_library_posix.cc +@@ -29,7 +29,7 @@ NativeLibrary LoadNativeLibraryWithOptions(const FileP + // http://crbug.com/17943, http://crbug.com/17557, http://crbug.com/36892, + // and http://crbug.com/40794. + int flags = RTLD_LAZY; +-#if defined(OS_ANDROID) || !defined(RTLD_DEEPBIND) ++#if defined(OS_ANDROID) || !defined(RTLD_DEEPBIND) || defined(OS_BSD) + // Certain platforms don't define RTLD_DEEPBIND. Android dlopen() requires + // further investigation, as it might vary across versions. Crash here to + // warn developers that they're trying to rely on uncertain behavior. diff --git a/devel/electron5/files/patch-base_native__library__unittest.cc b/devel/electron5/files/patch-base_native__library__unittest.cc new file mode 100644 index 000000000000..7db5291a1f3f --- /dev/null +++ b/devel/electron5/files/patch-base_native__library__unittest.cc @@ -0,0 +1,11 @@ +--- base/native_library_unittest.cc.orig 2019-04-08 08:18:04 UTC ++++ base/native_library_unittest.cc +@@ -120,7 +120,7 @@ TEST(NativeLibraryTest, LoadLibrary) { + // Android dlopen() requires further investigation, as it might vary across + // versions with respect to symbol resolution scope. + // TSan and MSan error out on RTLD_DEEPBIND, https://crbug.com/705255 +-#if !defined(OS_ANDROID) && !defined(THREAD_SANITIZER) && \ ++#if !defined(OS_ANDROID) && !defined(OS_BSD) && !defined(THREAD_SANITIZER) && \ + !defined(MEMORY_SANITIZER) + + // Verifies that the |prefer_own_symbols| option satisfies its guarantee that diff --git a/devel/electron5/files/patch-base_numerics_safe__math__shared__impl.h b/devel/electron5/files/patch-base_numerics_safe__math__shared__impl.h new file mode 100644 index 000000000000..ee762dc89b74 --- /dev/null +++ b/devel/electron5/files/patch-base_numerics_safe__math__shared__impl.h @@ -0,0 +1,13 @@ +--- base/numerics/safe_math_shared_impl.h.orig 2019-04-08 08:18:04 UTC ++++ base/numerics/safe_math_shared_impl.h +@@ -19,9 +19,7 @@ + + // Where available use builtin math overflow support on Clang and GCC. + #if !defined(__native_client__) && \ +- ((defined(__clang__) && \ +- ((__clang_major__ > 3) || \ +- (__clang_major__ == 3 && __clang_minor__ >= 4))) || \ ++ ((defined(__clang__) && (__clang_major__ > 6)) || \ + (defined(__GNUC__) && __GNUC__ >= 5)) + #include "base/numerics/safe_math_clang_gcc_impl.h" + #define BASE_HAS_OPTIMIZED_SAFE_MATH (1) diff --git a/devel/electron5/files/patch-base_posix_can__lower__nice__to.cc b/devel/electron5/files/patch-base_posix_can__lower__nice__to.cc new file mode 100644 index 000000000000..18311971adda --- /dev/null +++ b/devel/electron5/files/patch-base_posix_can__lower__nice__to.cc @@ -0,0 +1,20 @@ +--- base/posix/can_lower_nice_to.cc.orig 2019-04-08 08:18:04 UTC ++++ base/posix/can_lower_nice_to.cc +@@ -31,6 +31,9 @@ bool CanLowerNiceTo(int nice_value) { + if (geteuid() == 0) + return true; + ++#if defined(OS_BSD) ++ return false; ++#else + // 2. Skip checking the CAP_SYS_NICE permission because it would require + // libcap.so. + +@@ -54,6 +57,7 @@ bool CanLowerNiceTo(int nice_value) { + // And lowering niceness to |nice_value| is allowed if it is greater than or + // equal to the limit: + return nice_value >= lowest_nice_allowed; ++#endif + } + + } // namespace internal diff --git a/devel/electron5/files/patch-base_posix_unix__domain__socket.cc b/devel/electron5/files/patch-base_posix_unix__domain__socket.cc new file mode 100644 index 000000000000..62eea4ed56e5 --- /dev/null +++ b/devel/electron5/files/patch-base_posix_unix__domain__socket.cc @@ -0,0 +1,49 @@ +--- base/posix/unix_domain_socket.cc.orig 2019-04-08 08:18:04 UTC ++++ base/posix/unix_domain_socket.cc +@@ -5,7 +5,10 @@ + #include "base/posix/unix_domain_socket.h" + + #include <errno.h> ++#include <sys/param.h> + #include <sys/socket.h> ++#include <sys/types.h> ++#include <sys/ucred.h> + #if !defined(OS_NACL_NONSFI) + #include <sys/un.h> + #endif +@@ -28,6 +31,14 @@ namespace base { + + const size_t UnixDomainSocket::kMaxFileDescriptors = 16; + ++#ifndef SCM_CREDENTIALS ++# define SCM_CREDENTIALS 0x9001 ++#endif ++ ++#ifndef SO_PASSCRED ++# define SO_PASSCRED 0x9002 ++#endif ++ + #if !defined(OS_NACL_NONSFI) + bool CreateSocketPair(ScopedFD* one, ScopedFD* two) { + int raw_socks[2]; +@@ -150,7 +161,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd, + #if !defined(OS_NACL_NONSFI) && !defined(OS_MACOSX) + // The PNaCl toolchain for Non-SFI binary build and macOS do not support + // ucred. macOS supports xucred, but this structure is insufficient. +- + CMSG_SPACE(sizeof(struct ucred)) ++ + CMSG_SPACE(sizeof(struct cmsgcred)) + #endif // OS_NACL_NONSFI or OS_MACOSX + ; + char control_buffer[kControlBufferSize]; +@@ -180,9 +191,9 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd, + // SCM_CREDENTIALS. + if (cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SCM_CREDENTIALS) { +- DCHECK_EQ(payload_len, sizeof(struct ucred)); ++ DCHECK_EQ(payload_len, sizeof(struct cmsgcred)); + DCHECK_EQ(pid, -1); +- pid = reinterpret_cast<struct ucred*>(CMSG_DATA(cmsg))->pid; ++ pid = getpid(); + } + #endif // !defined(OS_NACL_NONSFI) && !defined(OS_MACOSX) + } diff --git a/devel/electron5/files/patch-base_posix_unix__domain__socket__unittest.cc b/devel/electron5/files/patch-base_posix_unix__domain__socket__unittest.cc new file mode 100644 index 000000000000..a1e580979139 --- /dev/null +++ b/devel/electron5/files/patch-base_posix_unix__domain__socket__unittest.cc @@ -0,0 +1,12 @@ +--- base/posix/unix_domain_socket_unittest.cc.orig 2019-04-08 08:18:04 UTC ++++ base/posix/unix_domain_socket_unittest.cc +@@ -8,6 +8,9 @@ + #include <stdint.h> + #include <sys/socket.h> + #include <sys/types.h> ++#if defined(OS_BSD) ++#include <signal.h> ++#endif + #include <unistd.h> + + #include "base/bind.h" diff --git a/devel/electron5/files/patch-base_process_internal__linux.cc b/devel/electron5/files/patch-base_process_internal__linux.cc new file mode 100644 index 000000000000..1f3b09942315 --- /dev/null +++ b/devel/electron5/files/patch-base_process_internal__linux.cc @@ -0,0 +1,16 @@ +--- base/process/internal_linux.cc.orig 2019-04-08 08:32:37 UTC ++++ base/process/internal_linux.cc +@@ -60,10 +60,13 @@ bool ReadProcFile(const FilePath& file, std::string* b + // Synchronously reading files in /proc is safe. + ThreadRestrictions::ScopedAllowIO allow_io; + ++#if !defined(OS_BSD) + if (!ReadFileToString(file, buffer)) { + DLOG(WARNING) << "Failed to read " << file.MaybeAsASCII(); + return false; + } ++#endif ++ + return !buffer->empty(); + } + diff --git a/devel/electron5/files/patch-base_process_internal__linux.h b/devel/electron5/files/patch-base_process_internal__linux.h new file mode 100644 index 000000000000..7fa2057432d1 --- /dev/null +++ b/devel/electron5/files/patch-base_process_internal__linux.h @@ -0,0 +1,11 @@ +--- base/process/internal_linux.h.orig 2019-04-08 08:18:04 UTC ++++ base/process/internal_linux.h +@@ -14,6 +14,8 @@ + + #include "base/files/file_path.h" + ++#include <unistd.h> /* pid_t */ ++ + namespace base { + + class Time; diff --git a/devel/electron5/files/patch-base_process_kill.h b/devel/electron5/files/patch-base_process_kill.h new file mode 100644 index 000000000000..a28456099a7f --- /dev/null +++ b/devel/electron5/files/patch-base_process_kill.h @@ -0,0 +1,11 @@ +--- base/process/kill.h.orig 2019-04-08 08:18:04 UTC ++++ base/process/kill.h +@@ -111,7 +111,7 @@ BASE_EXPORT TerminationStatus GetTerminationStatus(Pro + BASE_EXPORT TerminationStatus GetKnownDeadTerminationStatus( + ProcessHandle handle, int* exit_code); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Spawns a thread to wait asynchronously for the child |process| to exit + // and then reaps it. + BASE_EXPORT void EnsureProcessGetsReaped(Process process); diff --git a/devel/electron5/files/patch-base_process_kill__posix.cc b/devel/electron5/files/patch-base_process_kill__posix.cc new file mode 100644 index 000000000000..5e93abfef215 --- /dev/null +++ b/devel/electron5/files/patch-base_process_kill__posix.cc @@ -0,0 +1,11 @@ +--- base/process/kill_posix.cc.orig 2019-04-08 08:18:04 UTC ++++ base/process/kill_posix.cc +@@ -168,7 +168,7 @@ void EnsureProcessTerminated(Process process) { + 0, new BackgroundReaper(std::move(process), TimeDelta::FromSeconds(2))); + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + void EnsureProcessGetsReaped(Process process) { + DCHECK(!process.is_current()); + diff --git a/devel/electron5/files/patch-base_process_launch.cc b/devel/electron5/files/patch-base_process_launch.cc new file mode 100644 index 000000000000..6e365ec7c362 --- /dev/null +++ b/devel/electron5/files/patch-base_process_launch.cc @@ -0,0 +1,11 @@ +--- base/process/launch.cc.orig 2019-04-08 08:18:04 UTC ++++ base/process/launch.cc +@@ -15,7 +15,7 @@ LaunchOptions::~LaunchOptions() = default; + + LaunchOptions LaunchOptionsForTest() { + LaunchOptions options; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // To prevent accidental privilege sharing to an untrusted child, processes + // are started with PR_SET_NO_NEW_PRIVS. Do not set that here, since this + // new child will be used for testing only. diff --git a/devel/electron5/files/patch-base_process_launch.h b/devel/electron5/files/patch-base_process_launch.h new file mode 100644 index 000000000000..acc8bd6739e9 --- /dev/null +++ b/devel/electron5/files/patch-base_process_launch.h @@ -0,0 +1,20 @@ +--- base/process/launch.h.orig 2019-04-08 08:32:37 UTC ++++ base/process/launch.h +@@ -175,7 +175,7 @@ struct BASE_EXPORT LaunchOptions { + FileHandleMappingVector fds_to_remap; + #endif // defined(OS_WIN) + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // If non-zero, start the process using clone(), using flags as provided. + // Unlike in clone, clone_flags may not contain a custom termination signal + // that is sent to the parent when the child dies. The termination signal will +@@ -188,7 +188,7 @@ struct BASE_EXPORT LaunchOptions { + + // Sets parent process death signal to SIGKILL. + bool kill_on_parent_death = false; +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + #if defined(OS_FUCHSIA) + // If valid, launches the application in that job object. diff --git a/devel/electron5/files/patch-base_process_launch__posix.cc b/devel/electron5/files/patch-base_process_launch__posix.cc new file mode 100644 index 000000000000..4820ed1c9a8b --- /dev/null +++ b/devel/electron5/files/patch-base_process_launch__posix.cc @@ -0,0 +1,10 @@ +--- base/process/launch_posix.cc.orig 2019-04-08 08:32:37 UTC ++++ base/process/launch_posix.cc +@@ -64,6 +64,7 @@ + #error "macOS should use launch_mac.cc" + #endif + ++#pragma weak environ + extern char** environ; + + namespace base { diff --git a/devel/electron5/files/patch-base_process_memory.cc b/devel/electron5/files/patch-base_process_memory.cc new file mode 100644 index 000000000000..a38c435dfdf6 --- /dev/null +++ b/devel/electron5/files/patch-base_process_memory.cc @@ -0,0 +1,20 @@ +--- base/process/memory.cc.orig 2019-04-08 08:18:04 UTC ++++ base/process/memory.cc +@@ -10,7 +10,7 @@ + namespace base { + + // Defined in memory_win.cc for Windows. +-#if !defined(OS_WIN) ++#if !defined(OS_WIN) && !defined(OS_BSD) + + namespace { + +@@ -31,7 +31,7 @@ void TerminateBecauseOutOfMemory(size_t size) { + #endif + + // Defined in memory_mac.mm for Mac. +-#if !defined(OS_MACOSX) ++#if !defined(OS_MACOSX) && !defined(OS_BSD) + + bool UncheckedCalloc(size_t num_items, size_t size, void** result) { + const size_t alloc_size = num_items * size; diff --git a/devel/electron5/files/patch-base_process_memory.h b/devel/electron5/files/patch-base_process_memory.h new file mode 100644 index 000000000000..92f404bedfdd --- /dev/null +++ b/devel/electron5/files/patch-base_process_memory.h @@ -0,0 +1,11 @@ +--- base/process/memory.h.orig 2019-04-08 08:18:04 UTC ++++ base/process/memory.h +@@ -32,7 +32,7 @@ BASE_EXPORT void EnableTerminationOnOutOfMemory(); + // Crash reporting classifies such crashes as OOM. + BASE_EXPORT void TerminateBecauseOutOfMemory(size_t size); + +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD) + BASE_EXPORT extern size_t g_oom_size; + + // The maximum allowed value for the OOM score. diff --git a/devel/electron5/files/patch-base_process_memory__unittest.cc b/devel/electron5/files/patch-base_process_memory__unittest.cc new file mode 100644 index 000000000000..9833e91ea0f3 --- /dev/null +++ b/devel/electron5/files/patch-base_process_memory__unittest.cc @@ -0,0 +1,18 @@ +--- base/process/memory_unittest.cc.orig 2019-04-08 08:18:04 UTC ++++ base/process/memory_unittest.cc +@@ -104,7 +104,7 @@ TEST(MemoryTest, AllocatorShimWorking) { + // OpenBSD does not support these tests. Don't test these on ASan/TSan/MSan + // configurations: only test the real allocator. + // Windows only supports these tests with the allocator shim in place. +-#if !defined(OS_OPENBSD) && BUILDFLAG(USE_ALLOCATOR_SHIM) && \ ++#if !defined(OS_BSD) && BUILDFLAG(USE_ALLOCATOR_SHIM) && \ + !defined(MEMORY_TOOL_REPLACES_ALLOCATOR) + + namespace { +@@ -529,5 +529,5 @@ TEST_F(OutOfMemoryHandledTest, UncheckedCalloc) { + EXPECT_FALSE(base::UncheckedCalloc(1, test_size_, &value_)); + EXPECT_TRUE(value_ == nullptr); + } +-#endif // !defined(OS_OPENBSD) && BUILDFLAG(ENABLE_WIN_ALLOCATOR_SHIM_TESTS) && ++#endif // !defined(OS_BSD) && BUILDFLAG(ENABLE_WIN_ALLOCATOR_SHIM_TESTS) && + // !defined(MEMORY_TOOL_REPLACES_ALLOCATOR) diff --git a/devel/electron5/files/patch-base_process_process__handle.cc b/devel/electron5/files/patch-base_process_process__handle.cc new file mode 100644 index 000000000000..f450e6993dbd --- /dev/null +++ b/devel/electron5/files/patch-base_process_process__handle.cc @@ -0,0 +1,11 @@ +--- base/process/process_handle.cc.orig 2019-04-08 08:18:04 UTC ++++ base/process/process_handle.cc +@@ -39,7 +39,7 @@ uint32_t GetUniqueIdForProcess() { + return g_unique_id; + } + +-#if defined(OS_LINUX) || defined(OS_AIX) ++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) + + void InitUniqueIdForProcessInPidNamespace(ProcessId pid_outside_of_namespace) { + g_unique_id = MangleProcessId(pid_outside_of_namespace); diff --git a/devel/electron5/files/patch-base_process_process__handle.h b/devel/electron5/files/patch-base_process_process__handle.h new file mode 100644 index 000000000000..fe93ce086be5 --- /dev/null +++ b/devel/electron5/files/patch-base_process_process__handle.h @@ -0,0 +1,11 @@ +--- base/process/process_handle.h.orig 2019-04-08 08:18:04 UTC ++++ base/process/process_handle.h +@@ -64,7 +64,7 @@ BASE_EXPORT ProcessId GetCurrentProcId(); + // a process's PID. + BASE_EXPORT uint32_t GetUniqueIdForProcess(); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // When a process is started in a different PID namespace from the browser + // process, this function must be called with the process's PID in the browser's + // PID namespace in order to initialize its unique ID. Not thread safe. diff --git a/devel/electron5/files/patch-base_process_process__handle__freebsd.cc b/devel/electron5/files/patch-base_process_process__handle__freebsd.cc new file mode 100644 index 000000000000..cbeaad7c83de --- /dev/null +++ b/devel/electron5/files/patch-base_process_process__handle__freebsd.cc @@ -0,0 +1,17 @@ +--- base/process/process_handle_freebsd.cc.orig 2019-04-08 08:18:04 UTC ++++ base/process/process_handle_freebsd.cc +@@ -16,10 +16,13 @@ namespace base { + + ProcessId GetParentProcessId(ProcessHandle process) { + struct kinfo_proc info; +- size_t length; ++ size_t length = sizeof(struct kinfo_proc); + int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process }; + + if (sysctl(mib, base::size(mib), &info, &length, NULL, 0) < 0) ++ return -1; ++ ++ if (length < sizeof(struct kinfo_proc)) + return -1; + + return info.ki_ppid; diff --git a/devel/electron5/files/patch-base_process_process__iterator__freebsd.cc b/devel/electron5/files/patch-base_process_process__iterator__freebsd.cc new file mode 100644 index 000000000000..cc0356e511c7 --- /dev/null +++ b/devel/electron5/files/patch-base_process_process__iterator__freebsd.cc @@ -0,0 +1,44 @@ +--- base/process/process_iterator_freebsd.cc.orig 2019-04-08 08:18:04 UTC ++++ base/process/process_iterator_freebsd.cc +@@ -10,6 +10,10 @@ + #include <sys/sysctl.h> + #include <unistd.h> + ++/* getuid() */ ++#include <unistd.h> ++#include <sys/types.h> ++ + #include "base/logging.h" + #include "base/stl_util.h" + #include "base/strings/string_split.h" +@@ -40,7 +44,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter* + num_of_kinfo_proc += 16; + kinfo_procs_.resize(num_of_kinfo_proc); + len = num_of_kinfo_proc * sizeof(struct kinfo_proc); +- if (sysctl(mib, base::size(mib), &kinfo_procs_[0], &len, NULL, 0) < 0) { ++ if (sysctl(mib, base::size(mib), kinfo_procs_.data(), &len, NULL, 0) < 0) { + // If we get a mem error, it just means we need a bigger buffer, so + // loop around again. Anything else is a real error and give up. + if (errno != ENOMEM) { +@@ -72,18 +76,13 @@ bool ProcessIterator::CheckForNextProcess() { + for (; index_of_kinfo_proc_ < kinfo_procs_.size(); ++index_of_kinfo_proc_) { + size_t length; + struct kinfo_proc kinfo = kinfo_procs_[index_of_kinfo_proc_]; +- int mib[] = { CTL_KERN, KERN_PROC_ARGS, kinfo.ki_pid }; ++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_ARGS, kinfo.ki_pid }; + + if ((kinfo.ki_pid > 0) && (kinfo.ki_stat == SZOMB)) + continue; + +- length = 0; +- if (sysctl(mib, base::size(mib), NULL, &length, NULL, 0) < 0) { +- LOG(ERROR) << "failed to figure out the buffer size for a command line"; +- continue; +- } +- +- data.resize(length); ++ data.resize(ARG_MAX); ++ length = ARG_MAX; + + if (sysctl(mib, base::size(mib), &data[0], &length, NULL, 0) < 0) { + LOG(ERROR) << "failed to fetch a commandline"; diff --git a/devel/electron5/files/patch-base_process_process__linux.cc b/devel/electron5/files/patch-base_process_process__linux.cc new file mode 100644 index 000000000000..f27dd887f45c --- /dev/null +++ b/devel/electron5/files/patch-base_process_process__linux.cc @@ -0,0 +1,18 @@ +--- base/process/process_linux.cc.orig 2019-04-08 08:32:37 UTC ++++ base/process/process_linux.cc +@@ -88,6 +88,7 @@ Time Process::CreationTime() const { + return Time(boot_time + start_offset); + } + ++#if !defined(OS_BSD) + // static + bool Process::CanBackgroundProcesses() { + #if defined(OS_CHROMEOS) +@@ -139,6 +140,7 @@ bool Process::SetProcessBackgrounded(bool background) + DPCHECK(result == 0); + return result == 0; + } ++#endif // !defined(OS_BSD) + + #if defined(OS_CHROMEOS) + bool IsProcessBackgroundedCGroup(const StringPiece& cgroup_contents) { diff --git a/devel/electron5/files/patch-base_process_process__metrics.cc b/devel/electron5/files/patch-base_process_process__metrics.cc new file mode 100644 index 000000000000..b070a2cc0387 --- /dev/null +++ b/devel/electron5/files/patch-base_process_process__metrics.cc @@ -0,0 +1,20 @@ +--- base/process/process_metrics.cc.orig 2019-04-08 08:32:37 UTC ++++ base/process/process_metrics.cc +@@ -126,7 +126,7 @@ double ProcessMetrics::GetPlatformIndependentCPUUsage( + } + #endif + +-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) + int ProcessMetrics::CalculateIdleWakeupsPerSecond( + uint64_t absolute_idle_wakeups) { + return CalculateEventsPerSecond(absolute_idle_wakeups, +@@ -138,7 +138,7 @@ int ProcessMetrics::GetIdleWakeupsPerSecond() { + NOTIMPLEMENTED(); // http://crbug.com/120488 + return 0; + } +-#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) ++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) + + #if defined(OS_MACOSX) + int ProcessMetrics::CalculatePackageIdleWakeupsPerSecond( diff --git a/devel/electron5/files/patch-base_process_process__metrics.h b/devel/electron5/files/patch-base_process_process__metrics.h new file mode 100644 index 000000000000..7952e1ce24a2 --- /dev/null +++ b/devel/electron5/files/patch-base_process_process__metrics.h @@ -0,0 +1,112 @@ +--- base/process/process_metrics.h.orig 2019-04-08 08:32:37 UTC ++++ base/process/process_metrics.h +@@ -41,7 +41,7 @@ namespace base { + // Full declaration is in process_metrics_iocounters.h. + struct IoCounters; + +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + // Minor and major page fault counts since the process creation. + // Both counts are process-wide, and exclude child processes. + // +@@ -51,7 +51,7 @@ struct PageFaultCounts { + int64_t minor; + int64_t major; + }; +-#endif // defined(OS_LINUX) || defined(OS_ANDROID) ++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + + // Convert a POSIX timeval to microseconds. + BASE_EXPORT int64_t TimeValToMicroseconds(const struct timeval& tv); +@@ -92,7 +92,7 @@ class BASE_EXPORT ProcessMetrics { + // convenience wrapper for CreateProcessMetrics(). + static std::unique_ptr<ProcessMetrics> CreateCurrentProcessMetrics(); + +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + // Resident Set Size is a Linux/Android specific memory concept. Do not + // attempt to extend this to other platforms. + BASE_EXPORT size_t GetResidentSetSize() const; +@@ -199,14 +199,14 @@ class BASE_EXPORT ProcessMetrics { + int GetOpenFdSoftLimit() const; + #endif // defined(OS_POSIX) + +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + // Bytes of swap as reported by /proc/[pid]/status. + uint64_t GetVmSwapBytes() const; + + // Minor and major page fault count as reported by /proc/[pid]/stat. + // Returns true for success. + bool GetPageFaultCounts(PageFaultCounts* counts) const; +-#endif // defined(OS_LINUX) || defined(OS_ANDROID) ++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + + // Returns total memory usage of malloc. + size_t GetMallocUsage(); +@@ -218,7 +218,7 @@ class BASE_EXPORT ProcessMetrics { + ProcessMetrics(ProcessHandle process, PortProvider* port_provider); + #endif // !defined(OS_MACOSX) || defined(OS_IOS) + +-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) + int CalculateIdleWakeupsPerSecond(uint64_t absolute_idle_wakeups); + #endif + #if defined(OS_MACOSX) +@@ -247,7 +247,7 @@ class BASE_EXPORT ProcessMetrics { + // Number of bytes transferred to/from disk in bytes. + uint64_t last_cumulative_disk_usage_ = 0; + +-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) + // Same thing for idle wakeups. + TimeTicks last_idle_wakeups_time_; + uint64_t last_absolute_idle_wakeups_; +@@ -293,7 +293,7 @@ BASE_EXPORT void IncreaseFdLimitTo(unsigned int max_de + #endif // defined(OS_POSIX) + + #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ +- defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA) ++ defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA) || defined(OS_BSD) + // Data about system-wide memory consumption. Values are in KB. Available on + // Windows, Mac, Linux, Android and Chrome OS. + // +@@ -326,7 +326,7 @@ struct BASE_EXPORT SystemMemoryInfoKB { + int avail_phys = 0; + #endif + +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD) + // This provides an estimate of available memory as described here: + // https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773 + // NOTE: this is ONLY valid in kernels 3.14 and up. Its value will always +@@ -341,7 +341,7 @@ struct BASE_EXPORT SystemMemoryInfoKB { + #endif + + #if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) || \ +- defined(OS_FUCHSIA) ++ defined(OS_FUCHSIA) || defined(OS_BSD) + int buffers = 0; + int cached = 0; + int active_anon = 0; +@@ -351,7 +351,7 @@ struct BASE_EXPORT SystemMemoryInfoKB { + int dirty = 0; + int reclaimable = 0; + #endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) || +- // defined(OS_FUCHSIA) ++ // defined(OS_FUCHSIA) || defined(OS_BSD) + + #if defined(OS_CHROMEOS) + int shmem = 0; +@@ -377,9 +377,9 @@ struct BASE_EXPORT SystemMemoryInfoKB { + BASE_EXPORT bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo); + + #endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || +- // defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA) ++ // defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA) || defined(OS_BSD) + +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD) + // Parse the data found in /proc/<pid>/stat and return the sum of the + // CPU-related ticks. Returns -1 on parse error. + // Exposed for testing. diff --git a/devel/electron5/files/patch-base_process_process__metrics__freebsd.cc b/devel/electron5/files/patch-base_process_process__metrics__freebsd.cc new file mode 100644 index 000000000000..32ca973b48b3 --- /dev/null +++ b/devel/electron5/files/patch-base_process_process__metrics__freebsd.cc @@ -0,0 +1,122 @@ +--- base/process/process_metrics_freebsd.cc.orig 2019-04-08 08:18:04 UTC ++++ base/process/process_metrics_freebsd.cc +@@ -5,6 +5,7 @@ + #include "base/process/process_metrics.h" + + #include <stddef.h> ++#include <sys/types.h> + #include <sys/sysctl.h> + #include <sys/user.h> + #include <unistd.h> +@@ -14,11 +15,15 @@ + #include "base/process/process_metrics_iocounters.h" + #include "base/stl_util.h" + ++#include <unistd.h> /* getpagesize() */ ++#include <fcntl.h> /* O_RDONLY */ ++#include <kvm.h> ++#include <libutil.h> ++ + namespace base { + + ProcessMetrics::ProcessMetrics(ProcessHandle process) +- : process_(process), +- last_cpu_(0) {} ++ : process_(process) {} + + // static + std::unique_ptr<ProcessMetrics> ProcessMetrics::CreateProcessMetrics( +@@ -69,4 +74,93 @@ size_t GetSystemCommitCharge() { + return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize); + } + ++int GetNumberOfThreads(ProcessHandle process) { ++ // Taken from FreeBSD top (usr.bin/top/machine.c) ++ ++ kvm_t* kd = kvm_open(NULL, "/dev/null", NULL, O_RDONLY, "kvm_open"); ++ if (kd == NULL) ++ return 0; ++ ++ struct kinfo_proc* pbase; ++ int nproc; ++ pbase = kvm_getprocs(kd, KERN_PROC_PID, process, &nproc); ++ if (pbase == NULL) ++ return 0; ++ ++ if (kvm_close(kd) == -1) ++ return 0; ++ ++ return nproc; ++} ++ ++bool GetSystemMemoryInfo(SystemMemoryInfoKB *meminfo) { ++ unsigned int mem_total, mem_free, swap_total, swap_used; ++ size_t length; ++ int pagesizeKB; ++ ++ pagesizeKB = getpagesize() / 1024; ++ ++ length = sizeof(mem_total); ++ if (sysctlbyname("vm.stats.vm.v_page_count", &mem_total, ++ &length, NULL, 0) != 0 || length != sizeof(mem_total)) ++ return false; ++ ++ length = sizeof(mem_free); ++ if (sysctlbyname("vm.stats.vm.v_free_count", &mem_free, &length, NULL, 0) ++ != 0 || length != sizeof(mem_free)) ++ return false; ++ ++ length = sizeof(swap_total); ++ if (sysctlbyname("vm.swap_size", &swap_total, &length, NULL, 0) ++ != 0 || length != sizeof(swap_total)) ++ return false; ++ ++ length = sizeof(swap_used); ++ if (sysctlbyname("vm.swap_anon_use", &swap_used, &length, NULL, 0) ++ != 0 || length != sizeof(swap_used)) ++ return false; ++ ++ meminfo->total = mem_total * pagesizeKB; ++ meminfo->free = mem_free * pagesizeKB; ++ meminfo->swap_total = swap_total * pagesizeKB; ++ meminfo->swap_free = (swap_total - swap_used) * pagesizeKB; ++ ++ return true; ++} ++ ++int ProcessMetrics::GetOpenFdCount() const { ++ struct kinfo_file * kif; ++ int cnt; ++ ++ if ((kif = kinfo_getfile(process_, &cnt)) == NULL) ++ return -1; ++ ++ free(kif); ++ ++ return cnt; ++} ++ ++int ProcessMetrics::GetOpenFdSoftLimit() const { ++ size_t length; ++ int total_count = 0; ++ int mib[] = { CTL_KERN, KERN_MAXFILESPERPROC }; ++ ++ length = sizeof(total_count); ++ ++ if (sysctl(mib, base::size(mib), &total_count, &length, NULL, 0) < 0) { ++ total_count = -1; ++ } ++ ++ return total_count; ++} ++ ++uint64_t ProcessMetrics::GetVmSwapBytes() const { ++ NOTIMPLEMENTED(); ++ return 0; ++} ++ ++int ProcessMetrics::GetIdleWakeupsPerSecond() { ++ NOTIMPLEMENTED(); ++ return 0; ++} + } // namespace base diff --git a/devel/electron5/files/patch-base_process_process__metrics__posix.cc b/devel/electron5/files/patch-base_process_process__metrics__posix.cc new file mode 100644 index 000000000000..b9c9af87bc40 --- /dev/null +++ b/devel/electron5/files/patch-base_process_process__metrics__posix.cc @@ -0,0 +1,20 @@ +--- base/process/process_metrics_posix.cc.orig 2019-04-08 08:18:04 UTC ++++ base/process/process_metrics_posix.cc +@@ -19,6 +19,8 @@ + + #if defined(OS_MACOSX) + #include <malloc/malloc.h> ++#elif defined(OS_FREEBSD) ++#include <stdlib.h> + #else + #include <malloc.h> + #endif +@@ -107,7 +109,7 @@ size_t ProcessMetrics::GetMallocUsage() { + #else + return minfo.hblkhd + minfo.arena; + #endif +-#elif defined(OS_FUCHSIA) ++#elif defined(OS_FUCHSIA) || defined(OS_BSD) + // TODO(fuchsia): Not currently exposed. https://crbug.com/735087. + return 0; + #endif diff --git a/devel/electron5/files/patch-base_process_process__unittest.cc b/devel/electron5/files/patch-base_process_process__unittest.cc new file mode 100644 index 000000000000..bc086121d761 --- /dev/null +++ b/devel/electron5/files/patch-base_process_process__unittest.cc @@ -0,0 +1,11 @@ +--- base/process/process_unittest.cc.orig 2019-04-08 08:32:37 UTC ++++ base/process/process_unittest.cc +@@ -148,7 +148,7 @@ TEST_F(ProcessTest, CreationTimeOtherProcess) { + // was spawned and a time recorded after it was spawned. However, since the + // base::Time and process creation clocks don't match, tolerate some error. + constexpr base::TimeDelta kTolerance = +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // On Linux, process creation time is relative to boot time which has a + // 1-second resolution. Tolerate 1 second for the imprecise boot time and + // 100 ms for the imprecise clock. diff --git a/devel/electron5/files/patch-base_profiler_stack__sampling__profiler__unittest.cc b/devel/electron5/files/patch-base_profiler_stack__sampling__profiler__unittest.cc new file mode 100644 index 000000000000..ac1871b5049f --- /dev/null +++ b/devel/electron5/files/patch-base_profiler_stack__sampling__profiler__unittest.cc @@ -0,0 +1,11 @@ +--- base/profiler/stack_sampling_profiler_unittest.cc.orig 2019-04-08 08:32:37 UTC ++++ base/profiler/stack_sampling_profiler_unittest.cc +@@ -39,7 +39,7 @@ + #include <intrin.h> + #include <malloc.h> + #include <windows.h> +-#else ++#elif !defined(OS_BSD) + #include <alloca.h> + #endif + diff --git a/devel/electron5/files/patch-base_security__unittest.cc b/devel/electron5/files/patch-base_security__unittest.cc new file mode 100644 index 000000000000..ef38e563e13c --- /dev/null +++ b/devel/electron5/files/patch-base_security__unittest.cc @@ -0,0 +1,11 @@ +--- base/security_unittest.cc.orig 2019-04-08 08:32:37 UTC ++++ base/security_unittest.cc +@@ -59,7 +59,7 @@ NOINLINE Type HideValueFromCompiler(volatile Type valu + // FAILS_ is too clunky. + void OverflowTestsSoftExpectTrue(bool overflow_detected) { + if (!overflow_detected) { +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_MACOSX) ++#if defined(OS_POSIX) && !defined(OS_NACL) + // Sadly, on Linux, Android, and OSX we don't have a good story yet. Don't + // fail the test, but report. + printf("Platform has overflow: %s\n", diff --git a/devel/electron5/files/patch-base_strings_safe__sprintf__unittest.cc b/devel/electron5/files/patch-base_strings_safe__sprintf__unittest.cc new file mode 100644 index 000000000000..93b2e94497f8 --- /dev/null +++ b/devel/electron5/files/patch-base_strings_safe__sprintf__unittest.cc @@ -0,0 +1,18 @@ +--- base/strings/safe_sprintf_unittest.cc.orig 2019-04-08 08:18:04 UTC ++++ base/strings/safe_sprintf_unittest.cc +@@ -730,6 +730,7 @@ TEST(SafeSPrintfTest, EmbeddedNul) { + } + + TEST(SafeSPrintfTest, EmitNULL) { ++/* Avoid compiler error: http://pastebin.com/1edWUE84 + char buf[40]; + #if defined(__GNUC__) + #pragma GCC diagnostic push +@@ -741,6 +742,7 @@ TEST(SafeSPrintfTest, EmitNULL) { + EXPECT_EQ("0x0", std::string(buf)); + EXPECT_EQ(6, SafeSPrintf(buf, "%s", NULL)); + EXPECT_EQ("<NULL>", std::string(buf)); ++*/ + #if defined(__GCC__) + #pragma GCC diagnostic pop + #endif diff --git a/devel/electron5/files/patch-base_system_sys__info__freebsd.cc b/devel/electron5/files/patch-base_system_sys__info__freebsd.cc new file mode 100644 index 000000000000..5bd6a7ab8a8f --- /dev/null +++ b/devel/electron5/files/patch-base_system_sys__info__freebsd.cc @@ -0,0 +1,71 @@ +--- base/system/sys_info_freebsd.cc.orig 2019-04-08 08:18:04 UTC ++++ base/system/sys_info_freebsd.cc +@@ -13,26 +13,58 @@ + namespace base { + + int64_t SysInfo::AmountOfPhysicalMemoryImpl() { +- int pages, page_size; ++ int pages, page_size, r = 0; + size_t size = sizeof(pages); +- sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0); +- sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0); +- if (pages == -1 || page_size == -1) { ++ if(r == 0) ++ r = sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0); ++ if(r == 0) ++ r =sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0); ++ if(r == -1) { + NOTREACHED(); + return 0; + } + return static_cast<int64_t>(pages) * page_size; + } + +-// static +-uint64_t SysInfo::MaxSharedMemorySize() { +- size_t limit; +- size_t size = sizeof(limit); +- if (sysctlbyname("kern.ipc.shmmax", &limit, &size, NULL, 0) < 0) { ++int64_t SysInfo::AmountOfAvailablePhysicalMemoryImpl() { ++ int page_size, r = 0; ++ unsigned pgfree, pginact, pgcache; ++ size_t size = sizeof(page_size); ++ size_t szpg = sizeof(pgfree); ++ if(r == 0) ++ r = sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0); ++ if(r == 0) ++ r = sysctlbyname("vm.stats.vm.v_free_count", &pgfree, &szpg, NULL, 0); ++ if(r == 0) ++ r = sysctlbyname("vm.stats.vm.v_inactive_count", &pginact, &szpg, NULL, 0); ++ if(r == 0) ++ r = sysctlbyname("vm.stats.vm.v_cache_count", &pgcache, &szpg, NULL, 0); ++ if(r == -1) { + NOTREACHED(); + return 0; + } +- return static_cast<uint64_t>(limit); ++ return static_cast<int64_t>((pgfree + pginact + pgcache) * page_size); ++} ++ ++// static ++std::string SysInfo::CPUModelName() { ++ int mib[] = { CTL_HW, HW_MODEL }; ++ char name[256]; ++ size_t size = base::size(name); ++ if (sysctl(mib, base::size(mib), &name, &size, NULL, 0) == 0) ++ return name; ++ return std::string(); ++} ++ ++int SysInfo::NumberOfProcessors() { ++ int mib[] = { CTL_HW, HW_NCPU }; ++ int ncpu; ++ size_t size = sizeof(ncpu); ++ if (sysctl(mib, base::size(mib), &ncpu, &size, NULL, 0) == -1) { ++ NOTREACHED(); ++ return 1; ++ } ++ return ncpu; + } + + } // namespace base diff --git a/devel/electron5/files/patch-base_system_sys__info__posix.cc b/devel/electron5/files/patch-base_system_sys__info__posix.cc new file mode 100644 index 000000000000..20cae1f3dac7 --- /dev/null +++ b/devel/electron5/files/patch-base_system_sys__info__posix.cc @@ -0,0 +1,38 @@ +--- base/system/sys_info_posix.cc.orig 2019-04-08 08:32:37 UTC ++++ base/system/sys_info_posix.cc +@@ -38,7 +38,7 @@ + + namespace { + +-#if !defined(OS_OPENBSD) && !defined(OS_FUCHSIA) ++#if !defined(OS_BSD) && !defined(OS_FUCHSIA) + int NumberOfProcessors() { + // sysconf returns the number of "logical" (not "physical") processors on both + // Mac and Linux. So we get the number of max available "logical" processors. +@@ -64,7 +64,7 @@ int NumberOfProcessors() { + + base::LazyInstance<base::internal::LazySysInfoValue<int, NumberOfProcessors>>:: + Leaky g_lazy_number_of_processors = LAZY_INSTANCE_INITIALIZER; +-#endif // !defined(OS_OPENBSD) && !defined(OS_FUCHSIA) ++#endif // !defined(OS_BSD) && !defined(OS_FUCHSIA) + + #if !defined(OS_FUCHSIA) + int64_t AmountOfVirtualMemory() { +@@ -132,7 +132,7 @@ bool GetDiskSpaceInfo(const base::FilePath& path, + + namespace base { + +-#if !defined(OS_OPENBSD) && !defined(OS_FUCHSIA) ++#if !defined(OS_BSD) && !defined(OS_FUCHSIA) + int SysInfo::NumberOfProcessors() { + return g_lazy_number_of_processors.Get().value(); + } +@@ -225,6 +225,8 @@ std::string SysInfo::OperatingSystemArchitecture() { + arch = "x86"; + } else if (arch == "amd64") { + arch = "x86_64"; ++ } else if (arch == "arm64") { ++ arch = "aarch64"; + } else if (std::string(info.sysname) == "AIX") { + arch = "ppc64"; + } diff --git a/devel/electron5/files/patch-base_task_task__scheduler_scheduler__single__thread__task__runner__manager__unittest.cc b/devel/electron5/files/patch-base_task_task__scheduler_scheduler__single__thread__task__runner__manager__unittest.cc new file mode 100644 index 000000000000..4ab50e1aa725 --- /dev/null +++ b/devel/electron5/files/patch-base_task_task__scheduler_scheduler__single__thread__task__runner__manager__unittest.cc @@ -0,0 +1,12 @@ +--- base/task/task_scheduler/scheduler_single_thread_task_runner_manager_unittest.cc.orig 2019-04-08 08:32:37 UTC ++++ base/task/task_scheduler/scheduler_single_thread_task_runner_manager_unittest.cc +@@ -295,6 +295,9 @@ TEST_P(TaskSchedulerSingleThreadTaskRunnerManagerCommo + EXPECT_EQ(ThreadPriority::NORMAL, thread_priority_normal); + } + ++#if defined(OS_BSD) ++#define ThreadNamesSet DISABLED_ThreadNamesSet ++#endif + TEST_P(TaskSchedulerSingleThreadTaskRunnerManagerCommonTest, ThreadNamesSet) { + constexpr TaskTraits foo_traits = {TaskPriority::BEST_EFFORT, + TaskShutdownBehavior::BLOCK_SHUTDOWN}; diff --git a/devel/electron5/files/patch-base_test_generate__fontconfig__caches.cc b/devel/electron5/files/patch-base_test_generate__fontconfig__caches.cc new file mode 100644 index 000000000000..393129fa70b0 --- /dev/null +++ b/devel/electron5/files/patch-base_test_generate__fontconfig__caches.cc @@ -0,0 +1,17 @@ +--- base/test/generate_fontconfig_caches.cc.orig 2019-04-08 08:32:37 UTC ++++ base/test/generate_fontconfig_caches.cc +@@ -57,7 +57,14 @@ int main() { + base::TearDownFontconfig(); + + // Check existence of intended fontconfig cache file. ++#if defined(OS_BSD) ++ // Our version of fontconfig is too old to respect .uuid files in font directories, ++ // so we check for the CACHEDIR.TAG file instead + CHECK(base::PathExists( ++ fontconfig_caches.Append("CACHEDIR.TAG"))); ++#else ++ CHECK(base::PathExists( + fontconfig_caches.Append(base::StrCat({uuid, "-le64.cache-7"})))); ++#endif + return 0; + } diff --git a/devel/electron5/files/patch-base_test_launcher_test__launcher.cc b/devel/electron5/files/patch-base_test_launcher_test__launcher.cc new file mode 100644 index 000000000000..6eaed5f3f4cb --- /dev/null +++ b/devel/electron5/files/patch-base_test_launcher_test__launcher.cc @@ -0,0 +1,10 @@ +--- base/test/launcher/test_launcher.cc.orig 2019-04-08 08:32:37 UTC ++++ base/test/launcher/test_launcher.cc +@@ -53,6 +53,7 @@ + #include "testing/gtest/include/gtest/gtest.h" + + #if defined(OS_POSIX) ++#include <signal.h> + #include <fcntl.h> + + #include "base/files/file_descriptor_watcher_posix.h" diff --git a/devel/electron5/files/patch-base_test_test__file__util__linux.cc b/devel/electron5/files/patch-base_test_test__file__util__linux.cc new file mode 100644 index 000000000000..e6f34fe8ae09 --- /dev/null +++ b/devel/electron5/files/patch-base_test_test__file__util__linux.cc @@ -0,0 +1,13 @@ +--- base/test/test_file_util_linux.cc.orig 2019-04-08 08:18:04 UTC ++++ base/test/test_file_util_linux.cc +@@ -51,8 +51,10 @@ bool EvictFileFromSystemCache(const FilePath& file) { + return false; + if (fdatasync(fd.get()) != 0) + return false; ++#if !defined(OS_BSD) + if (posix_fadvise(fd.get(), 0, 0, POSIX_FADV_DONTNEED) != 0) + return false; ++#endif + return true; + } + diff --git a/devel/electron5/files/patch-base_test_test__file__util__posix.cc b/devel/electron5/files/patch-base_test_test__file__util__posix.cc new file mode 100644 index 000000000000..ed6da8975a70 --- /dev/null +++ b/devel/electron5/files/patch-base_test_test__file__util__posix.cc @@ -0,0 +1,11 @@ +--- base/test/test_file_util_posix.cc.orig 2019-04-08 08:18:04 UTC ++++ base/test/test_file_util_posix.cc +@@ -85,7 +85,7 @@ void SyncPageCacheToDisk() { + sync(); + } + +-#if !defined(OS_LINUX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) ++#if !defined(OS_LINUX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD) + bool EvictFileFromSystemCache(const FilePath& file) { + // There doesn't seem to be a POSIX way to cool the disk cache. + NOTIMPLEMENTED(); diff --git a/devel/electron5/files/patch-base_third__party_libevent_BUILD.gn b/devel/electron5/files/patch-base_third__party_libevent_BUILD.gn new file mode 100644 index 000000000000..f47077ef1123 --- /dev/null +++ b/devel/electron5/files/patch-base_third__party_libevent_BUILD.gn @@ -0,0 +1,24 @@ +--- base/third_party/libevent/BUILD.gn.orig 2019-04-08 08:18:04 UTC ++++ base/third_party/libevent/BUILD.gn +@@ -43,13 +43,20 @@ static_library("libevent") { + "mac/event-config.h", + ] + include_dirs = [ "mac" ] +- } else if (is_linux) { ++ } else if (is_linux && !is_bsd) { + sources += [ + "epoll.c", + "linux/config.h", + "linux/event-config.h", + ] + include_dirs = [ "linux" ] ++ } else if (is_bsd) { ++ sources += [ ++ "kqueue.c", ++ "freebsd/config.h", ++ "freebsd/event-config.h", ++ ] ++ include_dirs = [ "freebsd" ] + } else if (is_android) { + sources += [ + "android/config.h", diff --git a/devel/electron5/files/patch-base_threading_platform__thread.h b/devel/electron5/files/patch-base_threading_platform__thread.h new file mode 100644 index 000000000000..9d84e5d980a6 --- /dev/null +++ b/devel/electron5/files/patch-base_threading_platform__thread.h @@ -0,0 +1,11 @@ +--- base/threading/platform_thread.h.orig 2019-04-08 08:18:04 UTC ++++ base/threading/platform_thread.h +@@ -220,7 +220,7 @@ class BASE_EXPORT PlatformThread { + + static ThreadPriority GetCurrentThreadPriority(); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Toggles a specific thread's priority at runtime. This can be used to + // change the priority of a thread in a different process and will fail + // if the calling process does not have proper permissions. The diff --git a/devel/electron5/files/patch-base_threading_platform__thread__linux.cc b/devel/electron5/files/patch-base_threading_platform__thread__linux.cc new file mode 100644 index 000000000000..0dd787928c93 --- /dev/null +++ b/devel/electron5/files/patch-base_threading_platform__thread__linux.cc @@ -0,0 +1,30 @@ +--- base/threading/platform_thread_linux.cc.orig 2019-04-08 08:32:37 UTC ++++ base/threading/platform_thread_linux.cc +@@ -18,7 +18,9 @@ + + #if !defined(OS_NACL) && !defined(OS_AIX) + #include <pthread.h> ++#if !defined(OS_BSD) + #include <sys/prctl.h> ++#endif + #include <sys/resource.h> + #include <sys/time.h> + #include <sys/types.h> +@@ -99,7 +101,7 @@ const ThreadPriorityToNiceValuePair kThreadPriorityToN + + Optional<bool> CanIncreaseCurrentThreadPriorityForPlatform( + ThreadPriority priority) { +-#if !defined(OS_NACL) ++#if !defined(OS_NACL) && !defined(OS_BSD) + // A non-zero soft-limit on RLIMIT_RTPRIO is required to be allowed to invoke + // pthread_setschedparam in SetCurrentThreadPriorityForPlatform(). + struct rlimit rlim; +@@ -141,7 +143,7 @@ Optional<ThreadPriority> GetCurrentThreadPriorityForPl + void PlatformThread::SetName(const std::string& name) { + ThreadIdNameManager::GetInstance()->SetName(name); + +-#if !defined(OS_NACL) && !defined(OS_AIX) ++#if !defined(OS_NACL) && !defined(OS_AIX) && !defined(OS_BSD) + // On linux we can get the thread names to show up in the debugger by setting + // the process name for the LWP. We don't want to do this for the main + // thread because that would rename the process, causing tools like killall diff --git a/devel/electron5/files/patch-base_threading_platform__thread__posix.cc b/devel/electron5/files/patch-base_threading_platform__thread__posix.cc new file mode 100644 index 000000000000..1a05103cf05a --- /dev/null +++ b/devel/electron5/files/patch-base_threading_platform__thread__posix.cc @@ -0,0 +1,11 @@ +--- base/threading/platform_thread_posix.cc.orig 2019-04-08 08:18:04 UTC ++++ base/threading/platform_thread_posix.cc +@@ -66,7 +66,7 @@ void* ThreadFunc(void* params) { + if (!thread_params->joinable) + base::ThreadRestrictions::SetSingletonAllowed(false); + +-#if !defined(OS_NACL) ++#if !defined(OS_NACL) && !defined(OS_BSD) + // Threads on linux/android may inherit their priority from the thread + // where they were created. This explicitly sets the priority of all new + // threads. diff --git a/devel/electron5/files/patch-base_threading_thread__local__storage__unittest.cc b/devel/electron5/files/patch-base_threading_thread__local__storage__unittest.cc new file mode 100644 index 000000000000..cbd473a0a6e7 --- /dev/null +++ b/devel/electron5/files/patch-base_threading_thread__local__storage__unittest.cc @@ -0,0 +1,11 @@ +--- base/threading/thread_local_storage_unittest.cc.orig 2019-04-08 08:18:04 UTC ++++ base/threading/thread_local_storage_unittest.cc +@@ -86,7 +86,7 @@ class ThreadLocalStorageRunner : public DelegateSimple + void ThreadLocalStorageCleanup(void *value) { + int *ptr = reinterpret_cast<int*>(value); + // Destructors should never be called with a NULL. +- ASSERT_NE(reinterpret_cast<int*>(NULL), ptr); ++ ASSERT_NE(static_cast<int*>(NULL), ptr); + if (*ptr == kFinalTlsValue) + return; // We've been called enough times. + ASSERT_LT(kFinalTlsValue, *ptr); diff --git a/devel/electron5/files/patch-base_threading_thread__task__runner__handle.cc b/devel/electron5/files/patch-base_threading_thread__task__runner__handle.cc new file mode 100644 index 000000000000..24b97496da5b --- /dev/null +++ b/devel/electron5/files/patch-base_threading_thread__task__runner__handle.cc @@ -0,0 +1,26 @@ +--- base/threading/thread_task_runner_handle.cc.orig 2019-04-08 08:32:37 UTC ++++ base/threading/thread_task_runner_handle.cc +@@ -7,6 +7,7 @@ + #include <utility> + + #include "base/bind.h" ++#include "base/callback_helpers.h" + #include "base/lazy_instance.h" + #include "base/logging.h" + #include "base/memory/ptr_util.h" +@@ -37,6 +38,7 @@ bool ThreadTaskRunnerHandle::IsSet() { + return !!thread_task_runner_tls.Pointer()->Get(); + } + ++#if defined(OS_BSD) + // static + ScopedClosureRunner ThreadTaskRunnerHandle::OverrideForTesting( + scoped_refptr<SingleThreadTaskRunner> overriding_task_runner) { +@@ -86,6 +88,7 @@ ScopedClosureRunner ThreadTaskRunnerHandle::OverrideFo + base::Unretained(ttrh->task_runner_.get()), + std::move(no_running_during_override))); + } ++#endif + + ThreadTaskRunnerHandle::ThreadTaskRunnerHandle( + scoped_refptr<SingleThreadTaskRunner> task_runner) diff --git a/devel/electron5/files/patch-base_trace__event_malloc__dump__provider.cc b/devel/electron5/files/patch-base_trace__event_malloc__dump__provider.cc new file mode 100644 index 000000000000..d63474cc9ef4 --- /dev/null +++ b/devel/electron5/files/patch-base_trace__event_malloc__dump__provider.cc @@ -0,0 +1,21 @@ +--- base/trace_event/malloc_dump_provider.cc.orig 2019-04-08 08:18:04 UTC ++++ base/trace_event/malloc_dump_provider.cc +@@ -17,6 +17,8 @@ + + #if defined(OS_MACOSX) + #include <malloc/malloc.h> ++#elif defined(OS_BSD) ++#include "stdlib.h" + #else + #include <malloc.h> + #endif +@@ -132,6 +134,9 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDump + } + #elif defined(OS_FUCHSIA) + // TODO(fuchsia): Port, see https://crbug.com/706592. ++#elif defined(OS_BSD) ++ total_virtual_size = 0; ++ allocated_objects_size = 0; + #else + struct mallinfo info = mallinfo(); + DCHECK_GE(info.arena + info.hblkhd, info.uordblks); diff --git a/devel/electron5/files/patch-base_trace__event_process__memory__dump.cc b/devel/electron5/files/patch-base_trace__event_process__memory__dump.cc new file mode 100644 index 000000000000..577ae0fbd22f --- /dev/null +++ b/devel/electron5/files/patch-base_trace__event_process__memory__dump.cc @@ -0,0 +1,11 @@ +--- base/trace_event/process_memory_dump.cc.orig 2019-04-08 08:18:04 UTC ++++ base/trace_event/process_memory_dump.cc +@@ -94,7 +94,7 @@ size_t ProcessMemoryDump::CountResidentBytes(void* sta + #if defined(OS_WIN) + std::unique_ptr<PSAPI_WORKING_SET_EX_INFORMATION[]> vec( + new PSAPI_WORKING_SET_EX_INFORMATION[max_vec_size]); +-#elif defined(OS_MACOSX) ++#elif defined(OS_MACOSX) || defined(OS_BSD) + std::unique_ptr<char[]> vec(new char[max_vec_size]); + #elif defined(OS_POSIX) || defined(OS_FUCHSIA) + std::unique_ptr<unsigned char[]> vec(new unsigned char[max_vec_size]); diff --git a/devel/electron5/files/patch-base_trace__event_process__memory__dump.h b/devel/electron5/files/patch-base_trace__event_process__memory__dump.h new file mode 100644 index 000000000000..112a2738cf3a --- /dev/null +++ b/devel/electron5/files/patch-base_trace__event_process__memory__dump.h @@ -0,0 +1,11 @@ +--- base/trace_event/process_memory_dump.h.orig 2019-04-08 08:32:37 UTC ++++ base/trace_event/process_memory_dump.h +@@ -22,7 +22,7 @@ + + // Define COUNT_RESIDENT_BYTES_SUPPORTED if platform supports counting of the + // resident memory. +-#if !defined(OS_NACL) ++#if !defined(OS_NACL) && !defined(OS_BSD) + #define COUNT_RESIDENT_BYTES_SUPPORTED + #endif + diff --git a/devel/electron5/files/patch-build_config_BUILD.gn b/devel/electron5/files/patch-build_config_BUILD.gn new file mode 100644 index 000000000000..973325f3fcd3 --- /dev/null +++ b/devel/electron5/files/patch-build_config_BUILD.gn @@ -0,0 +1,30 @@ +--- build/config/BUILD.gn.orig 2019-04-08 08:32:37 UTC ++++ build/config/BUILD.gn +@@ -162,7 +162,7 @@ config("debug") { + # builds, and we have to tell it to turn it off. + defines += [ "_HAS_ITERATOR_DEBUGGING=0" ] + } +- } else if (is_linux && current_cpu == "x64" && enable_iterator_debugging) { ++ } else if ((is_linux || is_bsd) && current_cpu == "x64" && enable_iterator_debugging) { + # Enable libstdc++ debugging facilities to help catch problems early, see + # http://crbug.com/65151 . + # TODO(phajdan.jr): Should we enable this for all of POSIX? +@@ -263,9 +263,7 @@ config("default_libs") { + ] + } else if (is_linux) { + libs = [ +- "dl", + "pthread", +- "rt", + ] + } + } +@@ -342,7 +340,7 @@ config("executable_config") { + "//build/config/ios:ios_dynamic_flags", + "//build/config/ios:ios_executable_flags", + ] +- } else if (is_linux || is_android || current_os == "aix") { ++ } else if (is_linux || is_bsd || is_android || current_os == "aix") { + configs += [ "//build/config/gcc:executable_config" ] + if (is_chromecast) { + configs += [ "//build/config/chromecast:executable_config" ] diff --git a/devel/electron5/files/patch-build_config_BUILDCONFIG.gn b/devel/electron5/files/patch-build_config_BUILDCONFIG.gn new file mode 100644 index 000000000000..4e7c32e4f711 --- /dev/null +++ b/devel/electron5/files/patch-build_config_BUILDCONFIG.gn @@ -0,0 +1,48 @@ +--- build/config/BUILDCONFIG.gn.orig 2019-04-09 12:48:19 UTC ++++ build/config/BUILDCONFIG.gn +@@ -134,10 +134,10 @@ declare_args() { + is_official_build = false + + # Whether we're a traditional desktop unix. +- is_desktop_linux = current_os == "linux" ++ is_desktop_linux = current_os == "linux" || current_os == "freebsd" + + # Set to true when compiling with the Clang compiler. +- is_clang = current_os != "linux" || ++ is_clang = current_os != "linux" || current_os == "freebsd" || + (current_cpu != "s390x" && current_cpu != "s390" && + current_cpu != "ppc64" && current_cpu != "ppc" && + current_cpu != "mips" && current_cpu != "mips64") +@@ -189,8 +189,8 @@ if (host_toolchain == "") { + # TODO(dpranke): Add some sort of assert here that verifies that + # no toolchain omitted host_toolchain from its toolchain_args(). + +- if (host_os == "linux") { +- if (target_os != "linux") { ++ if (host_os == "linux" || host_os == "freebsd") { ++ if (target_os != "linux" && target_os != "freebsd") { + host_toolchain = "//build/toolchain/linux:clang_$host_cpu" + } else if (is_clang) { + host_toolchain = "//build/toolchain/linux:clang_$host_cpu" +@@ -227,7 +227,7 @@ if (target_os == "android") { + assert(host_os == "linux" || host_os == "mac", + "Android builds are only supported on Linux and Mac hosts.") + _default_toolchain = "//build/toolchain/android:android_clang_$target_cpu" +-} else if (target_os == "chromeos" || target_os == "linux") { ++} else if (target_os == "chromeos" || target_os == "linux" || target_os == "freebsd") { + # See comments in build/toolchain/cros/BUILD.gn about board compiles. + if (is_clang) { + _default_toolchain = "//build/toolchain/linux:clang_$target_cpu" +@@ -294,10 +294,11 @@ is_android = current_os == "android" + is_chromeos = current_os == "chromeos" + is_fuchsia = current_os == "fuchsia" + is_ios = current_os == "ios" +-is_linux = current_os == "chromeos" || current_os == "linux" ++is_linux = current_os == "chromeos" || current_os == "linux" || current_os == "freebsd" + is_mac = current_os == "mac" + is_nacl = current_os == "nacl" + is_win = current_os == "win" || current_os == "winuwp" ++is_bsd = current_os == "freebsd" + + is_posix = !is_win && !is_fuchsia + diff --git a/devel/electron5/files/patch-build_config_allocator.gni b/devel/electron5/files/patch-build_config_allocator.gni new file mode 100644 index 000000000000..6a46f90fb175 --- /dev/null +++ b/devel/electron5/files/patch-build_config_allocator.gni @@ -0,0 +1,20 @@ +--- build/config/allocator.gni.orig 2019-04-08 08:32:37 UTC ++++ build/config/allocator.gni +@@ -6,7 +6,7 @@ import("//build/config/sanitizers/sanitizers.gni") + + # Temporarily disable tcmalloc on arm64 linux to get rid of compilation errors. + if (is_android || is_mac || is_ios || is_asan || is_lsan || is_tsan || +- is_msan || is_win || is_fuchsia || (is_linux && target_cpu == "arm64")) { ++ is_msan || is_win || is_fuchsia || (is_linux && target_cpu == "arm64") || is_bsd) { + _default_allocator = "none" + } else { + _default_allocator = "tcmalloc" +@@ -17,7 +17,7 @@ if (is_android || is_mac || is_ios || is_asan || is_ls + # against the debug CRT with "is_nacl=false". + if ((is_linux || is_android || is_mac || + (is_win && !is_component_build && !is_debug)) && !is_asan && !is_lsan && +- !is_tsan && !is_msan) { ++ !is_tsan && !is_msan && !is_bsd) { + _default_use_allocator_shim = true + } else { + _default_use_allocator_shim = false diff --git a/devel/electron5/files/patch-build_config_compiler_BUILD.gn b/devel/electron5/files/patch-build_config_compiler_BUILD.gn new file mode 100644 index 000000000000..1636f0fabb6b --- /dev/null +++ b/devel/electron5/files/patch-build_config_compiler_BUILD.gn @@ -0,0 +1,83 @@ +--- build/config/compiler/BUILD.gn.orig 2019-04-08 08:32:37 UTC ++++ build/config/compiler/BUILD.gn +@@ -53,7 +53,7 @@ declare_args() { + # only two architectures that are currently checked in). Turn this off when + # you are using a custom toolchain and need to control -B in cflags. + linux_use_bundled_binutils = +- linux_use_bundled_binutils_override && is_linux && ++ linux_use_bundled_binutils_override && (is_linux && !is_bsd) && + (current_cpu == "x64" || current_cpu == "x86") + binutils_path = rebase_path("//third_party/binutils/Linux_x64/Release/bin", + root_build_dir) +@@ -275,7 +275,7 @@ config("compiler") { + # Linker warnings. + if (fatal_linker_warnings && !(is_chromeos && current_cpu == "arm") && + !(is_android && use_order_profiling) && !is_mac && !is_ios && +- current_os != "aix") { ++ current_os != "aix" && !is_bsd) { + # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580 + # TODO(lizeb,pasko): Fix link errors when linking with order_profiling=1 + # crbug.com/485542 +@@ -394,7 +394,7 @@ config("compiler") { + + # Compiler instrumentation can introduce dependencies in DSOs to symbols in + # the executable they are loaded into, so they are unresolved at link-time. +- if (!using_sanitizer) { ++ if (!using_sanitizer && !is_bsd) { + ldflags += [ + "-Wl,-z,defs", + "-Wl,--as-needed", +@@ -502,7 +502,7 @@ config("compiler") { + } + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { ++ if (is_clang && !is_nacl && !use_xcode_clang && !is_bsd) { + cflags += [ + # TODO(hans): Remove this once Clang generates better optimized debug info + # by default. https://crbug.com/765793 +@@ -809,7 +809,7 @@ config("compiler_cpu_abi") { + cflags += [ "-mtune=$arm_tune" ] + } + } else if (current_cpu == "arm64") { +- if (is_clang && !is_android && !is_nacl && !is_fuchsia) { ++ if (is_clang && !is_android && !is_nacl && !is_fuchsia && !is_bsd) { + cflags += [ "--target=aarch64-linux-gnu" ] + ldflags += [ "--target=aarch64-linux-gnu" ] + } +@@ -1494,7 +1494,7 @@ config("default_warnings") { + cflags += [ "-Wno-nonportable-include-path" ] + } + +- if (current_toolchain == host_toolchain || !use_xcode_clang) { ++ if ((current_toolchain == host_toolchain || !use_xcode_clang) && !is_bsd) { + # Flags NaCl (Clang 3.7) and Xcode 9.2 (Clang clang-900.0.39.2) do not + # recognize. + cflags += [ +@@ -1694,7 +1694,7 @@ config("thin_archive") { + # Mac and iOS use the mac-specific "libtool" command, not ar, which doesn't + # have a "thin archive" mode (it does accept -T, but it means truncating + # archive names to 16 characters, which is not what we want). +- if ((is_posix && !is_nacl && !is_mac && !is_ios) || is_fuchsia) { ++ if ((is_posix && !is_nacl && !is_mac && !is_ios && !is_bsd) || is_fuchsia) { + arflags = [ "-T" ] + } else if (is_win && use_lld) { + arflags = [ "/llvmlibthin" ] +@@ -2278,7 +2278,7 @@ config("symbols") { + # flag, so we can use use -g1 for pnacl and nacl-clang compiles. + # gcc nacl is is_nacl && !is_clang, pnacl and nacl-clang are && is_clang. + if (!is_nacl || is_clang) { +- cflags += [ "-g2" ] ++ cflags += [ "-g0" ] + } + } + if (use_debug_fission && !is_nacl && !is_android) { +@@ -2299,7 +2299,7 @@ config("symbols") { + # DWARF info may be corrupt; offsets in a range list entry are in different + # sections" there. Maybe just a bug in nacl_switch_32.S. + if (!is_mac && !is_ios && !is_nacl && current_cpu != "x86" && +- (use_gold || use_lld)) { ++ (use_gold || use_lld) && !is_bsd) { + if (is_clang) { + # This flag enables the GNU-format pubnames and pubtypes sections, + # which lld needs in order to generate a correct GDB index. diff --git a/devel/electron5/files/patch-build_config_compiler_compiler.gni b/devel/electron5/files/patch-build_config_compiler_compiler.gni new file mode 100644 index 000000000000..a8822c55c2a4 --- /dev/null +++ b/devel/electron5/files/patch-build_config_compiler_compiler.gni @@ -0,0 +1,11 @@ +--- build/config/compiler/compiler.gni.orig 2019-04-08 08:32:37 UTC ++++ build/config/compiler/compiler.gni +@@ -179,7 +179,7 @@ declare_args() { + declare_args() { + # Whether to use the gold linker from binutils instead of lld or bfd. + use_gold = +- !use_lld && !(is_chromecast && is_linux && ++ !is_bsd && !use_lld && !(is_chromecast && is_linux && + (current_cpu == "arm" || current_cpu == "mipsel")) && + ((is_linux && (current_cpu == "x64" || current_cpu == "x86" || + current_cpu == "arm" || current_cpu == "arm64" || diff --git a/devel/electron5/files/patch-build_config_features.gni b/devel/electron5/files/patch-build_config_features.gni new file mode 100644 index 000000000000..b66a32546b9b --- /dev/null +++ b/devel/electron5/files/patch-build_config_features.gni @@ -0,0 +1,11 @@ +--- build/config/features.gni.orig 2019-04-08 08:32:37 UTC ++++ build/config/features.gni +@@ -41,7 +41,7 @@ declare_args() { + } + + # libudev usage. This currently only affects the content layer. +- use_udev = is_linux && !is_chromecast ++ use_udev = is_linux && !is_chromecast && !is_bsd + + use_dbus = is_linux && !is_chromecast + diff --git a/devel/electron5/files/patch-build_config_freetype_freetype.gni b/devel/electron5/files/patch-build_config_freetype_freetype.gni new file mode 100644 index 000000000000..392a943744ce --- /dev/null +++ b/devel/electron5/files/patch-build_config_freetype_freetype.gni @@ -0,0 +1,9 @@ +--- build/config/freetype/freetype.gni.orig 2019-04-08 08:18:04 UTC ++++ build/config/freetype/freetype.gni +@@ -10,5 +10,5 @@ declare_args() { + # than version 2.7.1 and have color bitmap support compiled in. WARNING: + # System FreeType configurations other than as described WILL INTRODUCE TEXT + # RENDERING AND SECURITY REGRESSIONS. +- use_system_freetype = false ++ use_system_freetype = true + } diff --git a/devel/electron5/files/patch-build_config_linux_BUILD.gn b/devel/electron5/files/patch-build_config_linux_BUILD.gn new file mode 100644 index 000000000000..6fd924842d10 --- /dev/null +++ b/devel/electron5/files/patch-build_config_linux_BUILD.gn @@ -0,0 +1,11 @@ +--- build/config/linux/BUILD.gn.orig 2019-04-08 08:18:04 UTC ++++ build/config/linux/BUILD.gn +@@ -28,7 +28,7 @@ config("runtime_library") { + } + + if ((!is_chromeos || default_toolchain != "//build/toolchain/cros:target") && +- (!use_custom_libcxx || current_cpu == "mipsel")) { ++ (!use_custom_libcxx || current_cpu == "mipsel") && !is_bsd) { + libs = [ "atomic" ] + } + } diff --git a/devel/electron5/files/patch-build_config_linux_pkg-config.py b/devel/electron5/files/patch-build_config_linux_pkg-config.py new file mode 100644 index 000000000000..b9bafa482696 --- /dev/null +++ b/devel/electron5/files/patch-build_config_linux_pkg-config.py @@ -0,0 +1,26 @@ +--- build/config/linux/pkg-config.py.orig 2019-04-08 08:18:04 UTC ++++ build/config/linux/pkg-config.py +@@ -57,8 +57,12 @@ def SetConfigPath(options): + print "You must specify an architecture via -a if using a sysroot." + sys.exit(1) + +- libdir = sysroot + '/usr/' + options.system_libdir + '/pkgconfig' +- libdir += ':' + sysroot + '/usr/share/pkgconfig' ++ if "linux" in sys.platform: ++ libdir = sysroot + '/libdata/' + options.system_libdir + '/pkgconfig' ++ libdir += ':' + sysroot + '/usr/share/pkgconfig' ++ elif "bsd" in sys.platform: ++ libdir = sysroot + '/libdata/pkgconfig' ++ libdir += ':' + '/usr/libdata/pkgconfig' + os.environ['PKG_CONFIG_LIBDIR'] = libdir + return libdir + +@@ -107,7 +111,7 @@ def main(): + # If this is run on non-Linux platforms, just return nothing and indicate + # success. This allows us to "kind of emulate" a Linux build from other + # platforms. +- if "linux" not in sys.platform: ++ if "bsd" not in sys.platform: + print "[[],[],[],[],[]]" + return 0 + diff --git a/devel/electron5/files/patch-build_config_sysroot.gni b/devel/electron5/files/patch-build_config_sysroot.gni new file mode 100644 index 000000000000..b832536e2aa1 --- /dev/null +++ b/devel/electron5/files/patch-build_config_sysroot.gni @@ -0,0 +1,15 @@ +--- build/config/sysroot.gni.orig 2019-04-08 08:18:04 UTC ++++ build/config/sysroot.gni +@@ -15,9 +15,10 @@ declare_args() { + # The absolute path to directory containing linux sysroot images + target_sysroot_dir = "//build/linux" + +- use_sysroot = current_cpu == "x86" || current_cpu == "x64" || ++ use_sysroot = !is_bsd && ( ++ current_cpu == "x86" || current_cpu == "x64" || + current_cpu == "arm" || current_cpu == "arm64" || +- current_cpu == "mipsel" || current_cpu == "mips64el" ++ current_cpu == "mipsel" || current_cpu == "mips64el") + } + + if (current_os == target_os && current_cpu == target_cpu && diff --git a/devel/electron5/files/patch-build_detect__host__arch.py b/devel/electron5/files/patch-build_detect__host__arch.py new file mode 100644 index 000000000000..c4d84291e9eb --- /dev/null +++ b/devel/electron5/files/patch-build_detect__host__arch.py @@ -0,0 +1,11 @@ +--- build/detect_host_arch.py.orig 2019-04-20 10:45:29 UTC ++++ build/detect_host_arch.py +@@ -19,6 +19,8 @@ def HostArch(): + host_arch = 'ia32' + elif host_arch in ['x86_64', 'amd64']: + host_arch = 'x64' ++ elif host_arch.startswith('arm64'): ++ host_arch = 'arm64' + elif host_arch.startswith('arm'): + host_arch = 'arm' + elif host_arch.startswith('aarch64'): diff --git a/devel/electron5/files/patch-build_gn__run__binary.py b/devel/electron5/files/patch-build_gn__run__binary.py new file mode 100644 index 000000000000..33adc4264c39 --- /dev/null +++ b/devel/electron5/files/patch-build_gn__run__binary.py @@ -0,0 +1,11 @@ +--- build/gn_run_binary.py.orig 2019-04-08 08:18:04 UTC ++++ build/gn_run_binary.py +@@ -22,7 +22,7 @@ if not os.path.isabs(path): + # The rest of the arguments are passed directly to the executable. + args = [path] + sys.argv[2:] + +-ret = subprocess.call(args) ++ret = subprocess.call(args, env={"CHROME_EXE_PATH":"${WRKSRC}/out/Release/chrome"}) + if ret != 0: + if ret <= -100: + # Windows error codes such as 0xC0000005 and 0xC0000409 are much easier to diff --git a/devel/electron5/files/patch-build_linux_chrome.map b/devel/electron5/files/patch-build_linux_chrome.map new file mode 100644 index 000000000000..90380ac5ce61 --- /dev/null +++ b/devel/electron5/files/patch-build_linux_chrome.map @@ -0,0 +1,29 @@ +--- build/linux/chrome.map.orig 2019-04-08 08:18:04 UTC ++++ build/linux/chrome.map +@@ -1,4 +1,7 @@ + { ++local: ++ *; ++ + global: + __bss_start; + __data_start; +@@ -20,6 +23,10 @@ global: + # Program entry point. + _start; + ++ # FreeBSD specific variables. ++ __progname; ++ environ; ++ + # Memory allocation symbols. We want chrome and any libraries to + # share the same heap, so it is correct to export these symbols. + calloc; +@@ -81,7 +88,4 @@ global: + localtime64; + localtime64_r; + localtime_r; +- +-local: +- *; + }; diff --git a/devel/electron5/files/patch-build_linux_libpci_BUILD.gn b/devel/electron5/files/patch-build_linux_libpci_BUILD.gn new file mode 100644 index 000000000000..3569104ae96c --- /dev/null +++ b/devel/electron5/files/patch-build_linux_libpci_BUILD.gn @@ -0,0 +1,53 @@ +--- build/linux/libpci/BUILD.gn.orig 2019-04-08 08:18:04 UTC ++++ build/linux/libpci/BUILD.gn +@@ -3,20 +3,36 @@ + # found in the LICENSE file. + + import("//tools/generate_library_loader/generate_library_loader.gni") ++import("//build/config/linux/pkg_config.gni") + +-# This generates a target named "libpci". +-generate_library_loader("libpci") { +- name = "LibPciLoader" +- output_h = "libpci.h" +- output_cc = "libpci_loader.cc" +- header = "<pci/pci.h>" ++declare_args() { ++ use_system_libpci = is_bsd ++} + +- functions = [ +- "pci_alloc", +- "pci_init", +- "pci_cleanup", +- "pci_scan_bus", +- "pci_fill_info", +- "pci_lookup_name", +- ] ++if (use_system_libpci) { ++ pkg_config("system_libpci") { ++ packages = [ "libpci" ] ++ } ++ ++ source_set("libpci") { ++ public_configs = [ ":system_libpci" ] ++ } ++ ++} else { ++ # This generates a target named "libpci". ++ generate_library_loader("libpci") { ++ name = "LibPciLoader" ++ output_h = "libpci.h" ++ output_cc = "libpci_loader.cc" ++ header = "<pci/pci.h>" ++ ++ functions = [ ++ "pci_alloc", ++ "pci_init", ++ "pci_cleanup", ++ "pci_scan_bus", ++ "pci_fill_info", ++ "pci_lookup_name", ++ ] ++ } + } diff --git a/devel/electron5/files/patch-build_linux_unbundle_libusb.gn b/devel/electron5/files/patch-build_linux_unbundle_libusb.gn new file mode 100644 index 000000000000..0a591fbd6d63 --- /dev/null +++ b/devel/electron5/files/patch-build_linux_unbundle_libusb.gn @@ -0,0 +1,27 @@ +--- build/linux/unbundle/libusb.gn.orig 2019-04-09 12:48:44 UTC ++++ build/linux/unbundle/libusb.gn +@@ -0,0 +1,24 @@ ++# Copyright 2016 The Chromium Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++import("//build/config/linux/pkg_config.gni") ++import("//build/shim_headers.gni") ++ ++pkg_config("system_libusb") { ++ packages = [ "libusb-1.0" ] ++} ++ ++shim_headers("libusb_shim") { ++ root_path = "src/libusb" ++ headers = [ ++ "libusb.h", ++ ] ++} ++ ++source_set("libusb") { ++ deps = [ ++ ":libusb_shim", ++ ] ++ public_configs = [ ":system_libusb" ] ++} diff --git a/devel/electron5/files/patch-build_linux_unbundle_replace__gn__files.py b/devel/electron5/files/patch-build_linux_unbundle_replace__gn__files.py new file mode 100644 index 000000000000..3c324e793147 --- /dev/null +++ b/devel/electron5/files/patch-build_linux_unbundle_replace__gn__files.py @@ -0,0 +1,10 @@ +--- build/linux/unbundle/replace_gn_files.py.orig 2019-04-08 08:18:04 UTC ++++ build/linux/unbundle/replace_gn_files.py +@@ -27,6 +27,7 @@ REPLACEMENTS = { + 'libevent': 'base/third_party/libevent/BUILD.gn', + 'libjpeg': 'third_party/libjpeg.gni', + 'libpng': 'third_party/libpng/BUILD.gn', ++ 'libusb': 'third_party/libusb/BUILD.gn', + 'libvpx': 'third_party/libvpx/BUILD.gn', + 'libwebp': 'third_party/libwebp/BUILD.gn', + 'libxml': 'third_party/libxml/BUILD.gn', diff --git a/devel/electron5/files/patch-build_toolchain_gcc__toolchain.gni b/devel/electron5/files/patch-build_toolchain_gcc__toolchain.gni new file mode 100644 index 000000000000..36464dcaefe3 --- /dev/null +++ b/devel/electron5/files/patch-build_toolchain_gcc__toolchain.gni @@ -0,0 +1,45 @@ +--- build/toolchain/gcc_toolchain.gni.orig 2019-04-08 08:32:38 UTC ++++ build/toolchain/gcc_toolchain.gni +@@ -47,6 +47,11 @@ analyzer_wrapper = + rebase_path("//build/toolchain/clang_static_analyzer_wrapper.py", + root_build_dir) + " --mode=clang" + ++declare_args() { ++ extra_cxxflags = "" ++ extra_ldflags = "" ++} ++ + # This template defines a toolchain for something that works like gcc + # (including clang). + # +@@ -610,13 +615,23 @@ template("clang_toolchain") { + } + + gcc_toolchain(target_name) { +- prefix = rebase_path("$clang_base_path/bin", root_build_dir) +- cc = "$prefix/clang" +- cxx = "$prefix/clang++" +- ld = cxx +- readelf = "${toolprefix}readelf" +- ar = "${prefix}/llvm-ar" +- nm = "${toolprefix}nm" ++ if (is_bsd) { ++ prefix = "/usr/local/bin" ++ cc = "cc" ++ cxx = "c++" ++ ld = cxx ++ readelf = "readelf" ++ ar = "${prefix}/ar" ++ nm = "${toolprefix}nm" ++ } else { ++ prefix = rebase_path("$clang_base_path/bin", root_build_dir) ++ cc = "$prefix/clang" ++ cxx = "$prefix/clang++" ++ ld = cxx ++ readelf = "${toolprefix}readelf" ++ ar = "${prefix}/llvm-ar" ++ nm = "${toolprefix}nm" ++ } + + forward_variables_from(invoker, + [ diff --git a/devel/electron5/files/patch-build_toolchain_get__concurrent__links.py b/devel/electron5/files/patch-build_toolchain_get__concurrent__links.py new file mode 100644 index 000000000000..80deb4907cc2 --- /dev/null +++ b/devel/electron5/files/patch-build_toolchain_get__concurrent__links.py @@ -0,0 +1,17 @@ +--- build/toolchain/get_concurrent_links.py.orig 2019-04-08 08:32:38 UTC ++++ build/toolchain/get_concurrent_links.py +@@ -46,6 +46,14 @@ def _GetTotalMemoryInBytes(): + return int(subprocess.check_output(['sysctl', '-n', 'hw.memsize'])) + except Exception: + return 0 ++ elif sys.platform.startswith('freebsd'): ++ try: ++ avail_bytes = int(subprocess.check_output(['sysctl', '-n', 'hw.physmem'])) ++ # With -fuse-lld it doesn't take a lot of ram, feel free to change that ++ # 1 * ... to needed amount ++ return max(1, avail_bytes / (1 * (2 ** 30))) # total / 4GB ++ except Exception: ++ return 1 + # TODO(scottmg): Implement this for other platforms. + return 0 + diff --git a/devel/electron5/files/patch-build_toolchain_linux_BUILD.gn b/devel/electron5/files/patch-build_toolchain_linux_BUILD.gn new file mode 100644 index 000000000000..87f9f232d50f --- /dev/null +++ b/devel/electron5/files/patch-build_toolchain_linux_BUILD.gn @@ -0,0 +1,10 @@ +--- build/toolchain/linux/BUILD.gn.orig 2019-04-08 08:32:38 UTC ++++ build/toolchain/linux/BUILD.gn +@@ -14,7 +14,6 @@ clang_toolchain("clang_arm") { + } + + clang_toolchain("clang_arm64") { +- toolprefix = "aarch64-linux-gnu-" + toolchain_args = { + current_cpu = "arm64" + current_os = "linux" diff --git a/devel/electron5/files/patch-cc_BUILD.gn b/devel/electron5/files/patch-cc_BUILD.gn new file mode 100644 index 000000000000..e1f804908425 --- /dev/null +++ b/devel/electron5/files/patch-cc_BUILD.gn @@ -0,0 +1,21 @@ +--- cc/BUILD.gn.orig 2019-04-08 08:32:38 UTC ++++ cc/BUILD.gn +@@ -548,7 +548,7 @@ cc_test_static_library("test_support") { + "//ui/gl:test_support", + "//ui/latency", + ] +- if (!is_android) { ++ if (!is_android && !is_bsd) { + data_deps = [ + "//third_party/mesa_headers", + ] +@@ -746,9 +746,6 @@ cc_test("cc_unittests") { + "//ui/gfx/geometry", + "//ui/gl", + "//ui/gl:test_support", +- ] +- data_deps = [ +- "//third_party/mesa_headers", + ] + } + diff --git a/devel/electron5/files/patch-cc_layers_scrollbar__layer__impl__base.cc b/devel/electron5/files/patch-cc_layers_scrollbar__layer__impl__base.cc new file mode 100644 index 000000000000..3afd448f825c --- /dev/null +++ b/devel/electron5/files/patch-cc_layers_scrollbar__layer__impl__base.cc @@ -0,0 +1,13 @@ +--- cc/layers/scrollbar_layer_impl_base.cc.orig 2019-04-08 08:18:04 UTC ++++ cc/layers/scrollbar_layer_impl_base.cc +@@ -218,8 +218,8 @@ gfx::Rect ScrollbarLayerImplBase::ComputeThumbQuadRect + int thumb_offset = TrackStart(); + if (maximum > 0) { + float ratio = clamped_current_pos / maximum; +- float max_offset = track_length - thumb_length; +- thumb_offset += static_cast<int>(ratio * max_offset); ++ float _max_offset = track_length - thumb_length; ++ thumb_offset += static_cast<int>(ratio * _max_offset); + } + + float thumb_thickness_adjustment = diff --git a/devel/electron5/files/patch-cc_trees_property__tree.cc b/devel/electron5/files/patch-cc_trees_property__tree.cc new file mode 100644 index 000000000000..ae720cf5bf96 --- /dev/null +++ b/devel/electron5/files/patch-cc_trees_property__tree.cc @@ -0,0 +1,20 @@ +--- cc/trees/property_tree.cc.orig 2019-04-08 08:32:38 UTC ++++ cc/trees/property_tree.cc +@@ -1325,13 +1325,13 @@ gfx::ScrollOffset ScrollTree::MaxScrollOffset(int scro + + gfx::Size clip_layer_bounds = container_bounds(scroll_node->id); + +- gfx::ScrollOffset max_offset( ++ gfx::ScrollOffset _max_offset( + scaled_scroll_bounds.width() - clip_layer_bounds.width(), + scaled_scroll_bounds.height() - clip_layer_bounds.height()); + +- max_offset.Scale(1 / scale_factor); +- max_offset.SetToMax(gfx::ScrollOffset()); +- return max_offset; ++ _max_offset.Scale(1 / scale_factor); ++ _max_offset.SetToMax(gfx::ScrollOffset()); ++ return _max_offset; + } + + gfx::SizeF ScrollTree::scroll_bounds(int scroll_node_id) const { diff --git a/devel/electron5/files/patch-chrome_app_chrome__command__ids.h b/devel/electron5/files/patch-chrome_app_chrome__command__ids.h new file mode 100644 index 000000000000..a19810b9c14c --- /dev/null +++ b/devel/electron5/files/patch-chrome_app_chrome__command__ids.h @@ -0,0 +1,11 @@ +--- chrome/app/chrome_command_ids.h.orig 2019-04-08 08:32:41 UTC ++++ chrome/app/chrome_command_ids.h +@@ -63,7 +63,7 @@ + #define IDC_VISIT_DESKTOP_OF_LRU_USER_2 34049 + #define IDC_VISIT_DESKTOP_OF_LRU_USER_3 34050 + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + #define IDC_USE_SYSTEM_TITLE_BAR 34051 + #define IDC_RESTORE_WINDOW 34052 + #endif diff --git a/devel/electron5/files/patch-chrome_app_chrome__main.cc b/devel/electron5/files/patch-chrome_app_chrome__main.cc new file mode 100644 index 000000000000..d2d72495cb2e --- /dev/null +++ b/devel/electron5/files/patch-chrome_app_chrome__main.cc @@ -0,0 +1,16 @@ +--- chrome/app/chrome_main.cc.orig 2019-04-08 08:32:41 UTC ++++ chrome/app/chrome_main.cc +@@ -93,11 +93,11 @@ int ChromeMain(int argc, const char** argv) { + #endif + + // Chrome-specific process modes. +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + if (command_line->HasSwitch(switches::kHeadless)) { + return headless::HeadlessShellMain(params); + } +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + + int rv = content::ContentMain(params); + diff --git a/devel/electron5/files/patch-chrome_app_chrome__main__delegate.cc b/devel/electron5/files/patch-chrome_app_chrome__main__delegate.cc new file mode 100644 index 000000000000..02eaf329244d --- /dev/null +++ b/devel/electron5/files/patch-chrome_app_chrome__main__delegate.cc @@ -0,0 +1,128 @@ +--- chrome/app/chrome_main_delegate.cc.orig 2019-04-08 08:32:41 UTC ++++ chrome/app/chrome_main_delegate.cc +@@ -101,7 +101,7 @@ + #include "chrome/app/shutdown_signal_handlers_posix.h" + #endif + +-#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX) ++#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX) && !defined(OS_BSD) + #include "components/nacl/common/nacl_paths.h" + #include "components/nacl/zygote/nacl_fork_delegate_linux.h" + #endif +@@ -135,7 +135,7 @@ + #include "v8/include/v8.h" + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "base/environment.h" + #endif + +@@ -232,7 +232,7 @@ bool UseHooks() { + + #endif // defined(OS_WIN) + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) && !defined(OS_BSD) + void AdjustLinuxOOMScore(const std::string& process_type) { + // Browsers and zygotes should still be killable, but killed last. + const int kZygoteScore = 0; +@@ -291,7 +291,7 @@ void AdjustLinuxOOMScore(const std::string& process_ty + if (score > -1) + base::AdjustOOMScore(base::GetCurrentProcId(), score); + } +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) && !defined(OS_BSD) + + // Returns true if this subprocess type needs the ResourceBundle initialized + // and resources loaded. +@@ -336,7 +336,7 @@ bool HandleVersionSwitches(const base::CommandLine& co + return false; + } + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + // Show the man page if --help or -h is on the command line. + void HandleHelpSwitches(const base::CommandLine& command_line) { + if (command_line.HasSwitch(switches::kHelp) || +@@ -346,7 +346,7 @@ void HandleHelpSwitches(const base::CommandLine& comma + PLOG(FATAL) << "execlp failed"; + } + } +-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + + #if !defined(OS_MACOSX) && !defined(OS_ANDROID) + void SIGTERMProfilingShutdown(int signal) { +@@ -400,7 +400,7 @@ void InitializeUserDataDir(base::CommandLine* command_ + std::string process_type = + command_line->GetSwitchValueASCII(switches::kProcessType); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // On Linux, Chrome does not support running multiple copies under different + // DISPLAYs, so the profile directory can be specified in the environment to + // support the virtual desktop use-case. +@@ -412,7 +412,7 @@ void InitializeUserDataDir(base::CommandLine* command_ + user_data_dir = base::FilePath::FromUTF8Unsafe(user_data_dir_string); + } + } +-#endif // OS_LINUX ++#endif // OS_LINUX || OS_BSD + #if defined(OS_MACOSX) + policy::path_parser::CheckUserDataDirPolicy(&user_data_dir); + #endif // OS_MAC +@@ -469,7 +469,7 @@ void InitLogging(const std::string& process_type) { + void RecordMainStartupMetrics(base::TimeTicks exe_entry_point_ticks) { + if (!exe_entry_point_ticks.is_null()) + startup_metric_utils::RecordExeMainEntryPointTicks(exe_entry_point_ticks); +-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + // Record the startup process creation time on supported platforms. + startup_metric_utils::RecordStartupProcessCreationTime( + base::Process::Current().CreationTime()); +@@ -596,7 +596,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi + *exit_code = 0; + return true; // Got a --version switch; exit with a success error code. + } +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + // This will directly exit if the user asked for help. + HandleHelpSwitches(command_line); + #endif +@@ -620,7 +620,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi + #if defined(OS_CHROMEOS) + chromeos::RegisterPathProvider(); + #endif +-#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX) ++#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX) && !defined(OS_BSD) + nacl::RegisterPathProvider(); + #endif + +@@ -936,7 +936,7 @@ void ChromeMainDelegate::PreSandboxStartup() { + InitializePDF(); + #endif + +-#if defined(OS_POSIX) && !defined(OS_MACOSX) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) + // Zygote needs to call InitCrashReporter() in RunZygote(). + if (process_type != service_manager::switches::kZygoteProcess) { + #if defined(OS_ANDROID) +@@ -951,7 +951,7 @@ void ChromeMainDelegate::PreSandboxStartup() { + breakpad::InitCrashReporter(process_type); + #endif // defined(OS_ANDROID) + } +-#endif // defined(OS_POSIX) && !defined(OS_MACOSX) ++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) + + // After all the platform Breakpads have been initialized, store the command + // line for crash reporting. +@@ -961,7 +961,7 @@ void ChromeMainDelegate::PreSandboxStartup() { + void ChromeMainDelegate::SandboxInitialized(const std::string& process_type) { + // Note: If you are adding a new process type below, be sure to adjust the + // AdjustLinuxOOMScore function too. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) && !defined(OS_BSD) + AdjustLinuxOOMScore(process_type); + #endif + #if defined(OS_WIN) diff --git a/devel/electron5/files/patch-chrome_app_chromium__strings.grd b/devel/electron5/files/patch-chrome_app_chromium__strings.grd new file mode 100644 index 000000000000..35ac8716f2a3 --- /dev/null +++ b/devel/electron5/files/patch-chrome_app_chromium__strings.grd @@ -0,0 +1,20 @@ +--- chrome/app/chromium_strings.grd.orig 2019-04-08 08:32:41 UTC ++++ chrome/app/chromium_strings.grd +@@ -809,7 +809,7 @@ Signing in anyway will merge Chromium information like + </message> + + <!-- ProcessSingleton --> +- <if expr="is_linux or is_macosx"> ++ <if expr="is_linux or is_macosx or is_posix"> + <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host."> + The profile appears to be in use by another Chromium process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>). Chromium has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chromium. + </message> +@@ -1057,7 +1057,7 @@ Please check your email at <ph name="ACCOUNT_EMAIL">$2 + </message> + + <!-- Plugin Placeholders --> +- <if expr="is_linux"> ++ <if expr="is_posix"> + <message name="IDS_PLUGIN_RESTART_REQUIRED" desc="The placeholder text for a plugin that can't be loaded until the browser is restarted."> + Restart Chromium to enable <ph name="PLUGIN_NAME">$1<ex>Flash</ex></ph> + </message> diff --git a/devel/electron5/files/patch-chrome_app_generated__resources.grd b/devel/electron5/files/patch-chrome_app_generated__resources.grd new file mode 100644 index 000000000000..cf7c5d330c7e --- /dev/null +++ b/devel/electron5/files/patch-chrome_app_generated__resources.grd @@ -0,0 +1,29 @@ +--- chrome/app/generated_resources.grd.orig 2019-04-08 08:32:41 UTC ++++ chrome/app/generated_resources.grd +@@ -5339,7 +5339,7 @@ the Bookmarks menu."> + </message> + </if> + +- <if expr="is_win or (is_linux and not chromeos)"> ++ <if expr="is_win or (is_posix and not chromeos)"> + <message name="IDS_QUIT_ACCELERATOR_TUTORIAL" desc="Instructions for how the user should quit using keyboard shortcuts."> + Press |<ph name="ACCELERATOR1">$1<ex>Ctrl</ex></ph>|+|<ph name="ACCELERATOR2">$2<ex>Shift</ex></ph>| followed by |<ph name="ACCELERATOR3">$3<ex>Q</ex></ph>| to exit + </message> +@@ -6160,7 +6160,7 @@ the Bookmarks menu."> + Google Pay + </message> + +- <if expr="is_linux and not chromeos"> ++ <if expr="is_posix and not chromeos"> + <message name="IDS_SHOW_WINDOW_DECORATIONS" desc="The label of a radio button in the options dialog for using the system title bar and borders."> + Use system title bar and borders + </message> +@@ -6946,7 +6946,7 @@ Please help our engineers fix this problem. Tell us wh + Set as default + </message> + +- <if expr="is_linux and not chromeos"> ++ <if expr="is_posix and not chromeos"> + <message name="IDS_MINIMIZE_WINDOW_MENU" desc="The Linux browser window menu item text for minimizing the window."> + Minimize + </message> diff --git a/devel/electron5/files/patch-chrome_app_google__chrome__strings.grd b/devel/electron5/files/patch-chrome_app_google__chrome__strings.grd new file mode 100644 index 000000000000..bf2b9192b98b --- /dev/null +++ b/devel/electron5/files/patch-chrome_app_google__chrome__strings.grd @@ -0,0 +1,20 @@ +--- chrome/app/google_chrome_strings.grd.orig 2019-04-08 08:32:41 UTC ++++ chrome/app/google_chrome_strings.grd +@@ -820,7 +820,7 @@ Signing in anyway will merge Chrome information like b + </message> + + <!-- ProcessSingleton --> +- <if expr="is_linux or is_macosx"> ++ <if expr="is_linux or is_macosx or is_posix"> + <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host."> + The profile appears to be in use by another Google Chrome process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>). Chrome has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chrome. + </message> +@@ -1075,7 +1075,7 @@ Please check your email at <ph name="ACCOUNT_EMAIL">$2 + </message> + + <!-- Plugin Placeholders --> +- <if expr="is_linux"> ++ <if expr="is_posix"> + <message name="IDS_PLUGIN_RESTART_REQUIRED" desc="The placeholder text for a plugin that can't be loaded until the browser is restarted."> + Restart Chrome to enable <ph name="PLUGIN_NAME">$1<ex>Flash</ex></ph> + </message> diff --git a/devel/electron5/files/patch-chrome_app_settings__strings.grdp b/devel/electron5/files/patch-chrome_app_settings__strings.grdp new file mode 100644 index 000000000000..71ac17299cf9 --- /dev/null +++ b/devel/electron5/files/patch-chrome_app_settings__strings.grdp @@ -0,0 +1,20 @@ +--- chrome/app/settings_strings.grdp.orig 2019-04-08 08:32:43 UTC ++++ chrome/app/settings_strings.grdp +@@ -580,7 +580,7 @@ + Themes + </message> + </if> +- <if expr="is_linux and not chromeos"> ++ <if expr="is_posix and not chromeos"> + <message name="IDS_SETTINGS_SYSTEM_THEME" desc="Text of the label describing the system (GTK+) browser theme on Linux"> + GTK+ + </message> +@@ -594,7 +594,7 @@ + Use Classic + </message> + </if> +- <if expr="not is_linux or chromeos"> ++ <if expr="not is_posix or chromeos"> + <message name="IDS_SETTINGS_RESET_TO_DEFAULT_THEME" desc="Name of the control which resets the browser theme back to the default theme."> + Reset to default + </message> diff --git a/devel/electron5/files/patch-chrome_app_shutdown__signal__handlers__posix.cc b/devel/electron5/files/patch-chrome_app_shutdown__signal__handlers__posix.cc new file mode 100644 index 000000000000..0bd4bbf1e68d --- /dev/null +++ b/devel/electron5/files/patch-chrome_app_shutdown__signal__handlers__posix.cc @@ -0,0 +1,21 @@ +--- chrome/app/shutdown_signal_handlers_posix.cc.orig 2019-04-08 08:32:43 UTC ++++ chrome/app/shutdown_signal_handlers_posix.cc +@@ -183,12 +183,18 @@ void InstallShutdownSignalHandlers( + g_pipe_pid = getpid(); + g_shutdown_pipe_read_fd = pipefd[0]; + g_shutdown_pipe_write_fd = pipefd[1]; ++#if defined(OS_BSD) ++ // PTHREAD_STACK_MIN causes chromium to crash under FreeBSD, ++ // we request the default pthread stack size by specifying 0 here. ++ const size_t kShutdownDetectorThreadStackSize = 0; ++#else + #if !defined(ADDRESS_SANITIZER) + const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2; + #else + // ASan instrumentation bloats the stack frames, so we need to increase the + // stack size to avoid hitting the guard page. + const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4; ++#endif + #endif + ShutdownDetector* detector = new ShutdownDetector( + g_shutdown_pipe_read_fd, shutdown_callback, task_runner); diff --git a/devel/electron5/files/patch-chrome_app_theme_chrome__unscaled__resources.grd b/devel/electron5/files/patch-chrome_app_theme_chrome__unscaled__resources.grd new file mode 100644 index 000000000000..ae8423b12b87 --- /dev/null +++ b/devel/electron5/files/patch-chrome_app_theme_chrome__unscaled__resources.grd @@ -0,0 +1,11 @@ +--- chrome/app/theme/chrome_unscaled_resources.grd.orig 2019-04-08 08:32:43 UTC ++++ chrome/app/theme/chrome_unscaled_resources.grd +@@ -100,7 +100,7 @@ + <include name="IDR_PROFILE_AVATAR_2X_25" file="default_200_percent/common/profile_avatar_sun_cloud.png" type="BINDATA" /> + <include name="IDR_PROFILE_AVATAR_2X_26" file="default_200_percent/common/profile_avatar_placeholder.png" type="BINDATA" /> + </if> +- <if expr="is_linux and enable_app_list"> ++ <if expr="is_posix and enable_app_list"> + <!-- App Launcher icons for desktop icon. --> + <if expr="_google_chrome"> + <then> diff --git a/devel/electron5/files/patch-chrome_browser_about__flags.cc b/devel/electron5/files/patch-chrome_browser_about__flags.cc new file mode 100644 index 000000000000..a09c0da499f6 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_about__flags.cc @@ -0,0 +1,120 @@ +--- chrome/browser/about_flags.cc.orig 2019-04-08 08:32:43 UTC ++++ chrome/browser/about_flags.cc +@@ -749,7 +749,7 @@ const FeatureEntry::FeatureVariation kAutofillPreviewS + {"(Black on GoogleYellow050)", kAutofillPreviewStyleBlackOnYellow050, + base::size(kAutofillPreviewStyleBlackOnYellow050), nullptr}}; + +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + const FeatureEntry::FeatureParam kPedalSuggestionInSuggestion[] = { + {OmniboxFieldTrial::kPedalSuggestionModeParam, "in_suggestion"}}; + const FeatureEntry::FeatureParam kPedalSuggestionDedicated[] = { +@@ -760,7 +760,7 @@ const FeatureEntry::FeatureVariation kPedalSuggestionV + {"Dedicated Suggestion Line", kPedalSuggestionDedicated, + base::size(kPedalSuggestionDedicated), nullptr}, + }; +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + + const FeatureEntry::Choice kAutoplayPolicyChoices[] = { + {flags_ui::kGenericExperimentChoiceDefault, "", ""}, +@@ -2362,12 +2362,12 @@ const FeatureEntry kFeatureEntries[] = { + {"force-text-direction", flag_descriptions::kForceTextDirectionName, + flag_descriptions::kForceTextDirectionDescription, kOsAll, + MULTI_VALUE_TYPE(kForceTextDirectionChoices)}, +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + {"enable-input-ime-api", flag_descriptions::kEnableInputImeApiName, + flag_descriptions::kEnableInputImeApiDescription, kOsWin | kOsLinux, + ENABLE_DISABLE_VALUE_TYPE(switches::kEnableInputImeAPI, + switches::kDisableInputImeAPI)}, +-#endif // OS_WIN || OS_LINUX ++#endif // OS_WIN || OS_LINUX || OS_BSD + {"enable-origin-trials", flag_descriptions::kOriginTrialsName, + flag_descriptions::kOriginTrialsDescription, kOsAll, + FEATURE_VALUE_TYPE(features::kOriginTrials)}, +@@ -2562,12 +2562,12 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(chrome::android::kAndroidNightMode)}, + #endif // BUILDFLAG(ENABLE_ANDROID_NIGHT_MODE) + #endif // OS_ANDROID +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + {"passwords-migrate-linux-to-login-db", + flag_descriptions::kPasswordsMigrateLinuxToLoginDBName, + flag_descriptions::kPasswordsMigrateLinuxToLoginDBDescription, kOsLinux, + FEATURE_VALUE_TYPE(password_manager::features::kMigrateLinuxToLoginDB)}, +-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + {"enable-experimental-accessibility-features", + flag_descriptions::kExperimentalAccessibilityFeaturesName, + flag_descriptions::kExperimentalAccessibilityFeaturesDescription, kOsCrOS, +@@ -3001,7 +3001,7 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(omnibox::kOmniboxNewAnswerLayout)}, + #endif // defined(OS_ANDROID) + +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + {"omnibox-reverse-answers", flag_descriptions::kOmniboxReverseAnswersName, + flag_descriptions::kOmniboxReverseAnswersDescription, kOsDesktop, + FEATURE_VALUE_TYPE(omnibox::kOmniboxReverseAnswers)}, +@@ -3026,7 +3026,7 @@ const FeatureEntry kFeatureEntries[] = { + flag_descriptions::kOmniboxDriveSuggestionsName, + flag_descriptions::kOmniboxDriveSuggestionsDescriptions, kOsDesktop, + FEATURE_VALUE_TYPE(omnibox::kDocumentProvider)}, +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + + {"enable-speculative-service-worker-start-on-query-input", + flag_descriptions::kSpeculativeServiceWorkerStartOnQueryInputName, +@@ -3342,7 +3342,7 @@ const FeatureEntry kFeatureEntries[] = { + flag_descriptions::kClickToOpenPDFDescription, kOsAll, + FEATURE_VALUE_TYPE(features::kClickToOpenPDFPlaceholder)}, + +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + {"direct-manipulation-stylus", + flag_descriptions::kDirectManipulationStylusName, + flag_descriptions::kDirectManipulationStylusDescription, +@@ -3353,7 +3353,7 @@ const FeatureEntry kFeatureEntries[] = { + flag_descriptions::kShowManagedUiDescription, + kOsWin | kOsMac | kOsLinux | kOsCrOS, + FEATURE_VALUE_TYPE(features::kShowManagedUi)}, +-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + + #if defined(OS_ANDROID) + {"third-party-doodles", flag_descriptions::kThirdPartyDoodlesName, +@@ -4280,7 +4280,7 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(features::kForceEnableSystemAec)}, + #endif // defined(OS_MACOSX) || defined(OS_CHROMEOS) + +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + {"autofill-always-show-server-cards-in-sync-transport", + flag_descriptions::kAutofillAlwaysShowServerCardsInSyncTransportName, + flag_descriptions:: +@@ -4288,7 +4288,7 @@ const FeatureEntry kFeatureEntries[] = { + kOsMac | kOsWin | kOsLinux, + FEATURE_VALUE_TYPE( + autofill::features::kAutofillAlwaysShowServerCardsInSyncTransport)}, +-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + + #if BUILDFLAG(ENABLE_PRINT_PREVIEW) && defined(OS_MACOSX) + {"enable-custom-mac-paper-sizes", +@@ -4333,13 +4333,13 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(features::kCrostiniAppSearch)}, + #endif // OS_CHROMEOS + +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + {"autofill-settings-split-by-card-type", + flag_descriptions::kAutofillSettingsSplitByCardTypeName, + flag_descriptions::kAutofillSettingsSplitByCardTypeDescription, + kOsMac | kOsWin | kOsLinux, + FEATURE_VALUE_TYPE(autofill::features::kAutofillSettingsCardTypeSplit)}, +-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + + #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) + {"hardware-media-key-handling", diff --git a/devel/electron5/files/patch-chrome_browser_after__startup__task__utils.cc b/devel/electron5/files/patch-chrome_browser_after__startup__task__utils.cc new file mode 100644 index 000000000000..c5ae4f11fec0 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_after__startup__task__utils.cc @@ -0,0 +1,38 @@ +--- chrome/browser/after_startup_task_utils.cc.orig 2019-04-08 08:18:06 UTC ++++ chrome/browser/after_startup_task_utils.cc +@@ -29,7 +29,7 @@ + #include "content/public/browser/web_contents.h" + #include "content/public/browser/web_contents_observer.h" + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + #include "ui/views/linux_ui/linux_ui.h" + #endif + +@@ -115,7 +115,7 @@ void QueueTask(std::unique_ptr<AfterStartupTask> queue + + void SetBrowserStartupIsComplete() { + DCHECK_CURRENTLY_ON(BrowserThread::UI); +-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + // Process::Current().CreationTime() is not available on all platforms. + const base::Time process_creation_time = + base::Process::Current().CreationTime(); +@@ -123,7 +123,7 @@ void SetBrowserStartupIsComplete() { + UMA_HISTOGRAM_LONG_TIMES("Startup.AfterStartupTaskDelayedUntilTime", + base::Time::Now() - process_creation_time); + } +-#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) ++#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + UMA_HISTOGRAM_COUNTS_10000("Startup.AfterStartupTaskCount", + g_after_startup_tasks.Get().size()); + g_startup_complete_flag.Get().Set(); +@@ -132,7 +132,7 @@ void SetBrowserStartupIsComplete() { + g_after_startup_tasks.Get().clear(); + g_after_startup_tasks.Get().shrink_to_fit(); + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + // Make sure we complete the startup notification sequence, or launchers will + // get confused by not receiving the expected message from the main process. + views::LinuxUI* linux_ui = views::LinuxUI::instance(); diff --git a/devel/electron5/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc b/devel/electron5/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc new file mode 100644 index 000000000000..144fb82300a6 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc @@ -0,0 +1,70 @@ +--- chrome/browser/apps/platform_apps/api/music_manager_private/device_id_linux.cc.orig 2019-04-08 08:32:43 UTC ++++ chrome/browser/apps/platform_apps/api/music_manager_private/device_id_linux.cc +@@ -4,6 +4,11 @@ + + #include "chrome/browser/apps/platform_apps/api/music_manager_private/device_id.h" + ++#if defined(OS_FREEBSD) ++#include <sys/types.h> ++#include <net/if_dl.h> ++#endif ++ + #include <ifaddrs.h> + #include <net/if.h> + #include <stddef.h> +@@ -105,9 +110,36 @@ class MacAddressProcessor { + const char* const prefixes[], + size_t prefixes_count) { + const int MAC_LENGTH = 6; ++#if defined(OS_FREEBSD) ++ struct ifaddrs *ifap, *ifinfo; ++#else + struct ifreq ifinfo; ++#endif + + memset(&ifinfo, 0, sizeof(ifinfo)); ++ ++#if defined(OS_FREEBSD) ++ int result = getifaddrs(&ifap); ++ ++ if (result != 0) ++ return true; ++ ++ result = 1; // no MAC found yet ++ ++ for (ifinfo = ifap; ifinfo != NULL; ifinfo = ifinfo->ifa_next) { ++ struct sockaddr* sa = ifinfo->ifa_addr; ++ if (sa->sa_family == AF_LINK && ++ !strncmp(ifinfo->ifa_name, ifaddr->ifa_name, ++ sizeof(ifinfo->ifa_name) - 1)) { ++ result = 0; ++ break; ++ } ++ } ++ ++ char mac_address[6]; ++ ++ strncpy(mac_address, (const char*)LLADDR((struct sockaddr_dl*)ifinfo->ifa_addr), sizeof(mac_address)); ++#else + strncpy(ifinfo.ifr_name, ifaddr->ifa_name, sizeof(ifinfo.ifr_name) - 1); + + int sd = socket(AF_INET, SOCK_DGRAM, 0); +@@ -119,11 +151,18 @@ class MacAddressProcessor { + + const char* mac_address = + static_cast<const char*>(ifinfo.ifr_hwaddr.sa_data); ++#endif ++ + if (!is_valid_mac_address_.Run(mac_address, MAC_LENGTH)) + return true; + ++#if defined(OS_FREEBSD) ++ if (!IsValidPrefix(ifinfo->ifa_name, prefixes, prefixes_count)) ++ return true; ++#else + if (!IsValidPrefix(ifinfo.ifr_name, prefixes, prefixes_count)) + return true; ++#endif + + // Got one! + found_mac_address_ = diff --git a/devel/electron5/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc b/devel/electron5/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc new file mode 100644 index 000000000000..4862cce35e7e --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc @@ -0,0 +1,11 @@ +--- chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc.orig 2019-04-08 08:18:06 UTC ++++ chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc +@@ -59,7 +59,7 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForSch + return metrics::OmniboxInputType::QUERY; + + case ExternalProtocolHandler::UNKNOWN: { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Linux impl of GetApplicationNameForProtocol doesn't distinguish + // between URL schemes with handers and those without. This will + // make the default behaviour be search on Linux. diff --git a/devel/electron5/files/patch-chrome_browser_background_background__mode__optimizer.cc b/devel/electron5/files/patch-chrome_browser_background_background__mode__optimizer.cc new file mode 100644 index 000000000000..ee768ff1295a --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_background_background__mode__optimizer.cc @@ -0,0 +1,15 @@ +--- chrome/browser/background/background_mode_optimizer.cc.orig 2019-04-08 08:18:06 UTC ++++ chrome/browser/background/background_mode_optimizer.cc +@@ -30,10 +30,10 @@ std::unique_ptr<BackgroundModeOptimizer> BackgroundMod + switches::kKeepAliveForTest)) + return nullptr; + +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + if (base::FeatureList::IsEnabled(features::kBackgroundModeAllowRestart)) + return base::WrapUnique(new BackgroundModeOptimizer()); +-#endif // defined(OS_WIN) || defined(OS_LINUX) ++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + + return nullptr; + } diff --git a/devel/electron5/files/patch-chrome_browser_browser__resources.grd b/devel/electron5/files/patch-chrome_browser_browser__resources.grd new file mode 100644 index 000000000000..2820adc89477 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_browser__resources.grd @@ -0,0 +1,11 @@ +--- chrome/browser/browser_resources.grd.orig 2019-04-08 08:32:43 UTC ++++ chrome/browser/browser_resources.grd +@@ -679,7 +679,7 @@ + <include name="IDR_WELCOME_WIN10_PIN_WEBP" file="resources\welcome\pin.webp" type="BINDATA" /> + </if> + <include name="IDR_SSL_ERROR_ASSISTANT_PB" file="${root_gen_dir}/chrome/browser/resources/ssl/ssl_error_assistant/ssl_error_assistant.pb" use_base_dir="false" type="BINDATA" /> +- <if expr="is_android or is_linux"> ++ <if expr="is_android or is_posix"> + <include name="IDR_SANDBOX_INTERNALS_HTML" file="resources\sandbox_internals\sandbox_internals.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" compress="gzip" /> + <include name="IDR_SANDBOX_INTERNALS_JS" file="resources\sandbox_internals\sandbox_internals.js" type="BINDATA" compress="gzip" /> + </if> diff --git a/devel/electron5/files/patch-chrome_browser_chrome__browser__main.cc b/devel/electron5/files/patch-chrome_browser_chrome__browser__main.cc new file mode 100644 index 000000000000..a03fc751952e --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_chrome__browser__main.cc @@ -0,0 +1,72 @@ +--- chrome/browser/chrome_browser_main.cc.orig 2019-04-08 08:32:43 UTC ++++ chrome/browser/chrome_browser_main.cc +@@ -217,7 +217,7 @@ + #include "chromeos/settings/cros_settings_names.h" + #endif // defined(OS_CHROMEOS) + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + #include "chrome/browser/first_run/upgrade_util_linux.h" + #endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) + +@@ -257,7 +257,7 @@ + #endif // defined(OS_WIN) + + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +- (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++ (defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD)) + #include "chrome/browser/metrics/desktop_session_duration/desktop_session_duration_tracker.h" + #endif + +@@ -1043,7 +1043,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { + AddFirstRunNewTabs(browser_creator_.get(), master_prefs_->new_tabs); + } + +-#if defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + // Create directory for user-level Native Messaging manifest files. This + // makes it less likely that the directory will be created by third-party + // software with incorrect owner or permission. See crbug.com/725513 . +@@ -1052,14 +1052,14 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { + &user_native_messaging_dir)); + if (!base::PathExists(user_native_messaging_dir)) + base::CreateDirectory(user_native_messaging_dir); +-#endif // defined(OS_MACOSX) || defined(OS_LINUX) ++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + } + #endif // !defined(OS_ANDROID) && !defined(OS_CHROMEOS) + +-#if defined(OS_LINUX) || defined(OS_OPENBSD) ++#if defined(OS_LINUX) + // Set the product channel for crash reports. + breakpad::SetChannelCrashKey(chrome::GetChannelName()); +-#endif // defined(OS_LINUX) || defined(OS_OPENBSD) ++#endif // defined(OS_LINUX) + + #if defined(OS_MACOSX) + // Get the Keychain API to register for distributed notifications on the main +@@ -1087,7 +1087,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { + } + + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +- (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++ (defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD)) + metrics::DesktopSessionDurationTracker::Initialize(); + #endif + metrics::RendererUptimeTracker::Initialize(); +@@ -1267,6 +1267,7 @@ void ChromeBrowserMainParts::PostBrowserStart() { + base::TimeDelta::FromMinutes(1)); + + #if !defined(OS_ANDROID) ++#if !defined(OS_BSD) + if (base::FeatureList::IsEnabled(features::kWebUsb)) { + web_usb_detector_.reset(new WebUsbDetector()); + BrowserThread::PostAfterStartupTask( +@@ -1275,6 +1276,7 @@ void ChromeBrowserMainParts::PostBrowserStart() { + base::BindOnce(&WebUsbDetector::Initialize, + base::Unretained(web_usb_detector_.get()))); + } ++#endif + if (base::FeatureList::IsEnabled(features::kTabMetricsLogging)) { + // Initialize the TabActivityWatcher to begin logging tab activity events. + resource_coordinator::TabActivityWatcher::GetInstance(); diff --git a/devel/electron5/files/patch-chrome_browser_chrome__browser__main__linux.cc b/devel/electron5/files/patch-chrome_browser_chrome__browser__main__linux.cc new file mode 100644 index 000000000000..bd8e04d5c8c6 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_chrome__browser__main__linux.cc @@ -0,0 +1,27 @@ +--- chrome/browser/chrome_browser_main_linux.cc.orig 2019-04-08 08:32:43 UTC ++++ chrome/browser/chrome_browser_main_linux.cc +@@ -90,12 +90,14 @@ void ChromeBrowserMainPartsLinux::PreProfileInit() { + void ChromeBrowserMainPartsLinux::PostProfileInit() { + ChromeBrowserMainPartsPosix::PostProfileInit(); + ++#if !defined(OS_BSD) + g_browser_process->metrics_service()->RecordBreakpadRegistration( + breakpad::IsCrashReporterEnabled()); ++#endif + } + + void ChromeBrowserMainPartsLinux::PostMainMessageLoopStart() { +-#if !defined(OS_CHROMEOS) ++#if !defined(OS_CHROMEOS) && !defined(OS_BSD) + bluez::BluezDBusThreadManager::Initialize(); + bluez::BluezDBusManager::Initialize(); + #endif +@@ -104,7 +106,7 @@ void ChromeBrowserMainPartsLinux::PostMainMessageLoopS + } + + void ChromeBrowserMainPartsLinux::PostDestroyThreads() { +-#if !defined(OS_CHROMEOS) ++#if !defined(OS_CHROMEOS) && !defined(OS_BSD) + bluez::BluezDBusManager::Shutdown(); + bluez::BluezDBusThreadManager::Shutdown(); + #endif diff --git a/devel/electron5/files/patch-chrome_browser_chrome__browser__main__posix.cc b/devel/electron5/files/patch-chrome_browser_chrome__browser__main__posix.cc new file mode 100644 index 000000000000..dff8c5aa1b6c --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_chrome__browser__main__posix.cc @@ -0,0 +1,11 @@ +--- chrome/browser/chrome_browser_main_posix.cc.orig 2019-04-08 08:32:43 UTC ++++ chrome/browser/chrome_browser_main_posix.cc +@@ -142,7 +142,7 @@ void ChromeBrowserMainPartsPosix::PostMainMessageLoopS + void ChromeBrowserMainPartsPosix::ShowMissingLocaleMessageBox() { + #if defined(OS_CHROMEOS) + NOTREACHED(); // Should not ever happen on ChromeOS. +-#elif defined(OS_MACOSX) ++#elif defined(OS_MACOSX) || defined(OS_BSD) + // Not called on Mac because we load the locale files differently. + NOTREACHED(); + #elif defined(USE_AURA) diff --git a/devel/electron5/files/patch-chrome_browser_chrome__content__browser__client.cc b/devel/electron5/files/patch-chrome_browser_chrome__content__browser__client.cc new file mode 100644 index 000000000000..469fee0162dc --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_chrome__content__browser__client.cc @@ -0,0 +1,97 @@ +--- chrome/browser/chrome_content_browser_client.cc.orig 2019-04-08 08:32:43 UTC ++++ chrome/browser/chrome_content_browser_client.cc +@@ -395,7 +395,7 @@ + #include "components/user_manager/user_manager.h" + #include "services/service_manager/public/mojom/interface_provider_spec.mojom.h" + #include "services/ws/common/switches.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "chrome/browser/chrome_browser_main_linux.h" + #elif defined(OS_ANDROID) + #include "base/android/application_status_listener.h" +@@ -441,11 +441,11 @@ + #include "components/services/patch/public/interfaces/constants.mojom.h" + #endif + +-#if defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + #include "chrome/browser/webshare/share_service_impl.h" + #endif + +-#if defined(OS_WIN) || defined(OS_MACOSX) || \ ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \ + (defined(OS_LINUX) && !defined(OS_CHROMEOS)) + #include "chrome/browser/browser_switcher/browser_switcher_navigation_throttle.h" + #endif +@@ -462,7 +462,7 @@ + #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h" + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.h" + #endif + +@@ -1144,7 +1144,7 @@ content::BrowserMainParts* ChromeContentBrowserClient: + #elif defined(OS_CHROMEOS) + main_parts = new chromeos::ChromeBrowserMainPartsChromeos( + parameters, chrome_feature_list_creator_); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + main_parts = + new ChromeBrowserMainPartsLinux(parameters, chrome_feature_list_creator_); + #elif defined(OS_ANDROID) +@@ -1164,7 +1164,7 @@ content::BrowserMainParts* ChromeContentBrowserClient: + // Construct additional browser parts. Stages are called in the order in + // which they are added. + #if defined(TOOLKIT_VIEWS) +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(USE_OZONE) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) && !defined(USE_OZONE) + main_parts->AddParts(new ChromeBrowserMainExtraPartsViewsLinux()); + #else + main_parts->AddParts(new ChromeBrowserMainExtraPartsViews()); +@@ -1956,7 +1956,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLin + command_line->AppendSwitchASCII(switches::kMetricsClientID, + client_info->client_id); + } +-#elif defined(OS_POSIX) ++#elif defined(OS_POSIX) && !defined(OS_BSD) + #if defined(OS_ANDROID) + bool enable_crash_reporter = true; + #else +@@ -3550,7 +3550,7 @@ void ChromeContentBrowserClient::GetAdditionalFileSyst + } + } + +-#if defined(OS_POSIX) && !defined(OS_MACOSX) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) + void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess( + const base::CommandLine& command_line, + int child_process_id, +@@ -4288,7 +4288,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigati + handle)); + } + +-#if defined(OS_WIN) || defined(OS_MACOSX) || \ ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \ + (defined(OS_LINUX) && !defined(OS_CHROMEOS)) + std::unique_ptr<content::NavigationThrottle> browser_switcher_throttle = + browser_switcher::BrowserSwitcherNavigationThrottle :: +@@ -4409,7 +4409,7 @@ void ChromeContentBrowserClient::InitWebContextInterfa + #if defined(OS_ANDROID) + frame_interfaces_parameterized_->AddInterface(base::Bind( + &ForwardToJavaWebContentsRegistry<blink::mojom::ShareService>)); +-#elif defined(OS_LINUX) || defined(OS_WIN) ++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + frame_interfaces_->AddInterface(base::Bind(&ShareServiceImpl::Create)); + #endif + +@@ -5047,7 +5047,7 @@ std::unique_ptr<content::OverlayWindow> + ChromeContentBrowserClient::CreateWindowForPictureInPicture( + content::PictureInPictureWindowController* controller) { + #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ +- defined(OS_CHROMEOS) ++ defined(OS_CHROMEOS) || defined(OS_BSD) + // Note: content::OverlayWindow::Create() is defined by platform-specific + // implementation in chrome/browser/ui/views. This layering hack, which goes + // through //content and ContentBrowserClient, allows us to work around the diff --git a/devel/electron5/files/patch-chrome_browser_chrome__content__browser__client.h b/devel/electron5/files/patch-chrome_browser_chrome__content__browser__client.h new file mode 100644 index 000000000000..ad99f1b26cf4 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_chrome__content__browser__client.h @@ -0,0 +1,17 @@ +--- chrome/browser/chrome_content_browser_client.h.orig 2019-04-08 08:32:43 UTC ++++ chrome/browser/chrome_content_browser_client.h +@@ -363,12 +363,12 @@ class ChromeContentBrowserClient : public content::Con + void OverridePageVisibilityState( + content::RenderFrameHost* render_frame_host, + content::PageVisibilityState* visibility_state) override; +-#if defined(OS_POSIX) && !defined(OS_MACOSX) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) + void GetAdditionalMappedFilesForChildProcess( + const base::CommandLine& command_line, + int child_process_id, + content::PosixFileDescriptorInfo* mappings) override; +-#endif // defined(OS_POSIX) && !defined(OS_MACOSX) ++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) + #if defined(OS_WIN) + bool PreSpawnRenderer(sandbox::TargetPolicy* policy) override; + base::string16 GetAppContainerSidForSandboxType( diff --git a/devel/electron5/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc b/devel/electron5/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc new file mode 100644 index 000000000000..5088b94dd0aa --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc @@ -0,0 +1,11 @@ +--- chrome/browser/custom_handlers/protocol_handler_registry.cc.orig 2019-04-08 08:18:07 UTC ++++ chrome/browser/custom_handlers/protocol_handler_registry.cc +@@ -48,7 +48,7 @@ const ProtocolHandler& LookupHandler( + // If true default protocol handlers will be removed if the OS level + // registration for a protocol is no longer Chrome. + bool ShouldRemoveHandlersNotInOS() { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // We don't do this on Linux as the OS registration there is not reliable, + // and Chrome OS doesn't have any notion of OS registration. + // TODO(benwells): When Linux support is more reliable remove this diff --git a/devel/electron5/files/patch-chrome_browser_defaults.cc b/devel/electron5/files/patch-chrome_browser_defaults.cc new file mode 100644 index 000000000000..3f9a7086243a --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_defaults.cc @@ -0,0 +1,11 @@ +--- chrome/browser/defaults.cc.orig 2019-04-08 08:18:07 UTC ++++ chrome/browser/defaults.cc +@@ -43,7 +43,7 @@ const bool kSyncAutoStarts = true; + const bool kSyncAutoStarts = false; + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + const bool kScrollEventChangesTab = true; + #else + const bool kScrollEventChangesTab = false; diff --git a/devel/electron5/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc b/devel/electron5/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc new file mode 100644 index 000000000000..000c55f88feb --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc @@ -0,0 +1,11 @@ +--- chrome/browser/devtools/devtools_eye_dropper.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/devtools/devtools_eye_dropper.cc +@@ -163,7 +163,7 @@ void DevToolsEyeDropper::UpdateCursor() { + // magnified projection only with centered hotspot. + // Mac Retina requires cursor to be > 120px in order to render smoothly. + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + const float kCursorSize = 63; + const float kDiameter = 63; + const float kHotspotOffset = 32; diff --git a/devel/electron5/files/patch-chrome_browser_diagnostics_diagnostics__writer.h b/devel/electron5/files/patch-chrome_browser_diagnostics_diagnostics__writer.h new file mode 100644 index 000000000000..fcc3af39de32 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_diagnostics_diagnostics__writer.h @@ -0,0 +1,11 @@ +--- chrome/browser/diagnostics/diagnostics_writer.h.orig 2019-04-08 08:18:07 UTC ++++ chrome/browser/diagnostics/diagnostics_writer.h +@@ -15,6 +15,8 @@ namespace diagnostics { + // Console base class used internally. + class SimpleConsole; + ++#undef MACHINE ++ + class DiagnosticsWriter : public DiagnosticsModel::Observer { + public: + // The type of formatting done by this writer. diff --git a/devel/electron5/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc b/devel/electron5/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc new file mode 100644 index 000000000000..6e79780314b5 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc @@ -0,0 +1,20 @@ +--- chrome/browser/download/chrome_download_manager_delegate.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/download/chrome_download_manager_delegate.cc +@@ -1231,7 +1231,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe + target_info->is_filetype_handled_safely) + DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + if (item->GetOriginalMimeType() == "application/x-x509-user-cert") + DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true); + #endif +@@ -1251,7 +1251,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe + + bool ChromeDownloadManagerDelegate::IsOpenInBrowserPreferreredForFile( + const base::FilePath& path) { +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + if (path.MatchesExtension(FILE_PATH_LITERAL(".pdf"))) { + return !download_prefs_->ShouldOpenPdfInSystemReader(); + } diff --git a/devel/electron5/files/patch-chrome_browser_download_download__commands.cc b/devel/electron5/files/patch-chrome_browser_download_download__commands.cc new file mode 100644 index 000000000000..ebb357696c15 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_download_download__commands.cc @@ -0,0 +1,20 @@ +--- chrome/browser/download/download_commands.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/download/download_commands.cc +@@ -158,7 +158,7 @@ Browser* DownloadCommands::GetBrowser() const { + return browser_displayer.browser(); + } + +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + bool DownloadCommands::IsDownloadPdf() const { + base::FilePath path = model_->GetTargetFilePath(); + return path.MatchesExtension(FILE_PATH_LITERAL(".pdf")); +@@ -175,7 +175,7 @@ bool DownloadCommands::CanOpenPdfInSystemViewer() cons + return IsDownloadPdf() && + (IsAdobeReaderDefaultPDFViewer() ? is_adobe_pdf_reader_up_to_date + : true); +-#elif defined(OS_MACOSX) || defined(OS_LINUX) ++#elif defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + return IsDownloadPdf(); + #endif + } diff --git a/devel/electron5/files/patch-chrome_browser_download_download__commands.h b/devel/electron5/files/patch-chrome_browser_download_download__commands.h new file mode 100644 index 000000000000..b885c9b9e1db --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_download_download__commands.h @@ -0,0 +1,11 @@ +--- chrome/browser/download/download_commands.h.orig 2019-04-08 08:18:07 UTC ++++ chrome/browser/download/download_commands.h +@@ -42,7 +42,7 @@ class DownloadCommands { + bool IsCommandVisible(Command command) const; + void ExecuteCommand(Command command); + +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + bool IsDownloadPdf() const; + bool CanOpenPdfInSystemViewer() const; + #endif diff --git a/devel/electron5/files/patch-chrome_browser_download_download__item__model.cc b/devel/electron5/files/patch-chrome_browser_download_download__item__model.cc new file mode 100644 index 000000000000..47f816e3c414 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_download_download__item__model.cc @@ -0,0 +1,20 @@ +--- chrome/browser/download/download_item_model.cc.orig 2019-04-08 08:18:07 UTC ++++ chrome/browser/download/download_item_model.cc +@@ -555,7 +555,7 @@ bool DownloadItemModel::IsCommandChecked( + return download_->GetOpenWhenComplete() || + download_crx_util::IsExtensionDownload(*download_); + case DownloadCommands::ALWAYS_OPEN_TYPE: +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + if (download_commands->CanOpenPdfInSystemViewer()) { + DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile()); + return prefs->ShouldOpenPdfInSystemReader(); +@@ -592,7 +592,7 @@ void DownloadItemModel::ExecuteCommand(DownloadCommand + bool is_checked = IsCommandChecked(download_commands, + DownloadCommands::ALWAYS_OPEN_TYPE); + DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile()); +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + if (download_commands->CanOpenPdfInSystemViewer()) { + prefs->SetShouldOpenPdfInSystemReader(!is_checked); + SetShouldPreferOpeningInBrowser(is_checked); diff --git a/devel/electron5/files/patch-chrome_browser_download_download__prefs.cc b/devel/electron5/files/patch-chrome_browser_download_download__prefs.cc new file mode 100644 index 000000000000..af8d026fa11d --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_download_download__prefs.cc @@ -0,0 +1,65 @@ +--- chrome/browser/download/download_prefs.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/download/download_prefs.cc +@@ -62,7 +62,7 @@ namespace { + // Consider downloads 'dangerous' if they go to the home directory on Linux and + // to the desktop on any platform. + bool DownloadPathIsDangerous(const base::FilePath& download_path) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + base::FilePath home_dir = base::GetHomeDir(); + if (download_path == home_dir) { + return true; +@@ -155,7 +155,7 @@ DownloadPrefs::DownloadPrefs(Profile* profile) : profi + GetDefaultDownloadDirectoryForProfile())); + #endif // defined(OS_CHROMEOS) + +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + should_open_pdf_in_system_reader_ = + prefs->GetBoolean(prefs::kOpenPdfDownloadInSystemReader); + #endif +@@ -252,7 +252,7 @@ void DownloadPrefs::RegisterProfilePrefs( + default_download_path); + registry->RegisterFilePathPref(prefs::kSaveFileDefaultDirectory, + default_download_path); +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + registry->RegisterBooleanPref(prefs::kOpenPdfDownloadInSystemReader, false); + #endif + #if defined(OS_ANDROID) +@@ -354,7 +354,7 @@ bool DownloadPrefs::IsDownloadPathManaged() const { + } + + bool DownloadPrefs::IsAutoOpenUsed() const { +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + if (ShouldOpenPdfInSystemReader()) + return true; + #endif +@@ -368,7 +368,7 @@ bool DownloadPrefs::IsAutoOpenEnabledBasedOnExtension( + return false; + DCHECK(extension[0] == base::FilePath::kExtensionSeparator); + extension.erase(0, 1); +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + if (base::FilePath::CompareEqualIgnoreCase(extension, + FILE_PATH_LITERAL("pdf")) && + ShouldOpenPdfInSystemReader()) +@@ -405,7 +405,7 @@ void DownloadPrefs::DisableAutoOpenBasedOnExtension( + SaveAutoOpenState(); + } + +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + void DownloadPrefs::SetShouldOpenPdfInSystemReader(bool should_open) { + if (should_open_pdf_in_system_reader_ == should_open) + return; +@@ -426,7 +426,7 @@ bool DownloadPrefs::ShouldOpenPdfInSystemReader() cons + #endif + + void DownloadPrefs::ResetAutoOpen() { +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + SetShouldOpenPdfInSystemReader(false); + #endif + auto_open_.clear(); diff --git a/devel/electron5/files/patch-chrome_browser_download_download__prefs.h b/devel/electron5/files/patch-chrome_browser_download_download__prefs.h new file mode 100644 index 000000000000..f7979bd0e8c7 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_download_download__prefs.h @@ -0,0 +1,20 @@ +--- chrome/browser/download/download_prefs.h.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/download/download_prefs.h +@@ -101,7 +101,7 @@ class DownloadPrefs { + // Disables auto-open based on file extension. + void DisableAutoOpenBasedOnExtension(const base::FilePath& file_name); + +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + // Store the user preference to disk. If |should_open| is true, also disable + // the built-in PDF plugin. If |should_open| is false, enable the PDF plugin. + void SetShouldOpenPdfInSystemReader(bool should_open); +@@ -145,7 +145,7 @@ class DownloadPrefs { + AutoOpenCompareFunctor> AutoOpenSet; + AutoOpenSet auto_open_; + +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + bool should_open_pdf_in_system_reader_; + #endif + diff --git a/devel/electron5/files/patch-chrome_browser_download_download__query.cc b/devel/electron5/files/patch-chrome_browser_download_download__query.cc new file mode 100644 index 000000000000..0964b44c2dd3 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_download_download__query.cc @@ -0,0 +1,14 @@ +--- chrome/browser/download/download_query.cc.orig 2019-04-08 08:18:07 UTC ++++ chrome/browser/download/download_query.cc +@@ -27,7 +27,11 @@ + #include "components/download/public/common/download_item.h" + #include "components/url_formatter/url_formatter.h" + #include "content/public/browser/content_browser_client.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + #include "url/gurl.h" + + using download::DownloadDangerType; diff --git a/devel/electron5/files/patch-chrome_browser_download_download__shelf__context__menu.cc b/devel/electron5/files/patch-chrome_browser_download_download__shelf__context__menu.cc new file mode 100644 index 000000000000..0dcac31f2cfb --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_download_download__shelf__context__menu.cc @@ -0,0 +1,11 @@ +--- chrome/browser/download/download_shelf_context_menu.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/download/download_shelf_context_menu.cc +@@ -127,7 +127,7 @@ base::string16 DownloadShelfContextMenu::GetLabelForCo + : IDS_DOWNLOAD_MENU_PLATFORM_OPEN_ALWAYS; + break; + } +-#elif defined(OS_MACOSX) || defined(OS_LINUX) ++#elif defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + if (can_open_pdf_in_system_viewer) { + id = IDS_DOWNLOAD_MENU_PLATFORM_OPEN_ALWAYS; + break; diff --git a/devel/electron5/files/patch-chrome_browser_download_download__status__updater.cc b/devel/electron5/files/patch-chrome_browser_download_download__status__updater.cc new file mode 100644 index 000000000000..e55328d5b5bd --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_download_download__status__updater.cc @@ -0,0 +1,20 @@ +--- chrome/browser/download/download_status_updater.cc.orig 2019-04-08 08:18:07 UTC ++++ chrome/browser/download/download_status_updater.cc +@@ -13,7 +13,7 @@ + #include "base/memory/ptr_util.h" + #include "build/build_config.h" + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + #include "ui/views/linux_ui/linux_ui.h" + #endif + +@@ -136,7 +136,7 @@ void DownloadStatusUpdater::OnDownloadUpdated(content: + #if defined(OS_ANDROID) || (defined(USE_AURA) && !defined(OS_WIN)) + void DownloadStatusUpdater::UpdateAppIconDownloadProgress( + download::DownloadItem* download) { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + const views::LinuxUI* linux_ui = views::LinuxUI::instance(); + if (linux_ui) { + float progress = 0; diff --git a/devel/electron5/files/patch-chrome_browser_extensions_BUILD.gn b/devel/electron5/files/patch-chrome_browser_extensions_BUILD.gn new file mode 100644 index 000000000000..6d05b5c466ce --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_extensions_BUILD.gn @@ -0,0 +1,15 @@ +--- chrome/browser/extensions/BUILD.gn.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/extensions/BUILD.gn +@@ -1104,6 +1104,12 @@ jumbo_static_library("extensions") { + deps += [ "//chrome/common:service_process_mojom" ] + } + ++ if (is_bsd) { ++ sources -= [ ++ "api/image_writer_private/removable_storage_provider_linux.cc", ++ ] ++ } ++ + if (enable_service_discovery) { + sources += [ + "api/mdns/mdns_api.cc", diff --git a/devel/electron5/files/patch-chrome_browser_extensions_activity__log_activity__log.cc b/devel/electron5/files/patch-chrome_browser_extensions_activity__log_activity__log.cc new file mode 100644 index 000000000000..44503459de96 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_extensions_activity__log_activity__log.cc @@ -0,0 +1,14 @@ +--- chrome/browser/extensions/activity_log/activity_log.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/extensions/activity_log/activity_log.cc +@@ -52,7 +52,11 @@ + #include "extensions/common/extension.h" + #include "extensions/common/extension_messages.h" + #include "extensions/common/one_shot_event.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + #include "url/gurl.h" + + namespace constants = activity_log_constants; diff --git a/devel/electron5/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc b/devel/electron5/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc new file mode 100644 index 000000000000..0ce240fd867e --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc @@ -0,0 +1,20 @@ +--- chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc +@@ -20,6 +20,7 @@ static base::LazyInstance<scoped_refptr<StorageDeviceL + + void RemovableStorageProvider::GetAllDevices(DeviceListReadyCallback callback) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); ++#if !defined(OS_BSD) + if (g_test_device_list.Get().get() != nullptr) { + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, +@@ -33,6 +34,9 @@ void RemovableStorageProvider::GetAllDevices(DeviceLis + base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}, + base::BindOnce(&RemovableStorageProvider::PopulateDeviceList), + std::move(callback)); ++#else ++ NOTIMPLEMENTED(); ++#endif + } + + // static diff --git a/devel/electron5/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h b/devel/electron5/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h new file mode 100644 index 000000000000..a16878db074e --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h @@ -0,0 +1,11 @@ +--- chrome/browser/extensions/api/input_ime/input_ime_api.h.orig 2019-04-08 08:18:07 UTC ++++ chrome/browser/extensions/api/input_ime/input_ime_api.h +@@ -31,7 +31,7 @@ + + #if defined(OS_CHROMEOS) + #include "chrome/browser/extensions/api/input_ime/input_ime_api_chromeos.h" +-#elif defined(OS_LINUX) || defined(OS_WIN) ++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + #include "chrome/browser/extensions/api/input_ime/input_ime_api_nonchromeos.h" + #endif // defined(OS_CHROMEOS) + diff --git a/devel/electron5/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc b/devel/electron5/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc new file mode 100644 index 000000000000..66129bad8d14 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc @@ -0,0 +1,11 @@ +--- chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc +@@ -296,6 +296,8 @@ bool ChromeRuntimeAPIDelegate::GetPlatformInfo(Platfor + info->os = extensions::api::runtime::PLATFORM_OS_CROS; + } else if (strcmp(os, "linux") == 0) { + info->os = extensions::api::runtime::PLATFORM_OS_LINUX; ++ } else if (strcmp(os, "freebsd") == 0) { ++ info->os = extensions::api::runtime::PLATFORM_OS_FREEBSD; + } else if (strcmp(os, "openbsd") == 0) { + info->os = extensions::api::runtime::PLATFORM_OS_OPENBSD; + } else { diff --git a/devel/electron5/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc b/devel/electron5/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc new file mode 100644 index 000000000000..53c9f36b8db7 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc @@ -0,0 +1,20 @@ +--- chrome/browser/extensions/api/settings_private/prefs_util.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/extensions/api/settings_private/prefs_util.cc +@@ -127,7 +127,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetWhitelist + settings_api::PrefType::PREF_TYPE_BOOLEAN; + (*s_whitelist)[bookmarks::prefs::kShowBookmarkBar] = + settings_api::PrefType::PREF_TYPE_BOOLEAN; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + (*s_whitelist)[::prefs::kUseCustomChromeFrame] = + settings_api::PrefType::PREF_TYPE_BOOLEAN; + #endif +@@ -137,7 +137,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetWhitelist + // Appearance settings. + (*s_whitelist)[::prefs::kCurrentThemeID] = + settings_api::PrefType::PREF_TYPE_STRING; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + (*s_whitelist)[::prefs::kUsesSystemTheme] = + settings_api::PrefType::PREF_TYPE_BOOLEAN; + #endif diff --git a/devel/electron5/files/patch-chrome_browser_extensions_bookmark__app__helper.cc b/devel/electron5/files/patch-chrome_browser_extensions_bookmark__app__helper.cc new file mode 100644 index 000000000000..9e6df2f4a479 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_extensions_bookmark__app__helper.cc @@ -0,0 +1,11 @@ +--- chrome/browser/extensions/bookmark_app_helper.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/extensions/bookmark_app_helper.cc +@@ -503,7 +503,7 @@ void BookmarkAppHelper::FinishInstallation(const Exten + if (create_shortcuts_) { + #if !defined(OS_CHROMEOS) + web_app::ShortcutLocations creation_locations; +-#if defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + creation_locations.on_desktop = true; + #else + creation_locations.on_desktop = false; diff --git a/devel/electron5/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc b/devel/electron5/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc new file mode 100644 index 000000000000..99c84c1c391b --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc @@ -0,0 +1,20 @@ +--- chrome/browser/extensions/browser_context_keyed_service_factories.cc.orig 2019-04-08 08:18:07 UTC ++++ chrome/browser/extensions/browser_context_keyed_service_factories.cc +@@ -54,7 +54,7 @@ + #include "chrome/browser/chromeos/extensions/input_method_api.h" + #include "chrome/browser/chromeos/extensions/media_player_api.h" + #include "chrome/browser/extensions/api/input_ime/input_ime_api.h" +-#elif defined(OS_LINUX) || defined(OS_WIN) ++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + #include "chrome/browser/extensions/api/input_ime/input_ime_api.h" + #endif + +@@ -93,7 +93,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt() + #if defined(OS_CHROMEOS) + extensions::InputImeAPI::GetFactoryInstance(); + extensions::InputMethodAPI::GetFactoryInstance(); +-#elif defined(OS_LINUX) || defined(OS_WIN) ++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + extensions::InputImeAPI::GetFactoryInstance(); + #endif + extensions::LanguageSettingsPrivateDelegateFactory::GetInstance(); diff --git a/devel/electron5/files/patch-chrome_browser_extensions_external__provider__impl.cc b/devel/electron5/files/patch-chrome_browser_extensions_external__provider__impl.cc new file mode 100644 index 000000000000..82ea43e37cf9 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_extensions_external__provider__impl.cc @@ -0,0 +1,20 @@ +--- chrome/browser/extensions/external_provider_impl.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/extensions/external_provider_impl.cc +@@ -747,7 +747,7 @@ void ExternalProviderImpl::CreateExternalProviders( + chromeos::DemoSession::Get()->SetExtensionsExternalLoader(loader); + provider_list->push_back(std::move(demo_apps_provider)); + } +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + provider_list->push_back(std::make_unique<ExternalProviderImpl>( + service, + new ExternalPrefLoader(chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS, +@@ -774,7 +774,7 @@ void ExternalProviderImpl::CreateExternalProviders( + bundled_extension_creation_flags)); + + // Define a per-user source of external extensions. +-#if defined(OS_MACOSX) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD)) ++#if defined(OS_MACOSX) || ((defined(OS_LINUX) || defined(OS_BSD)) && defined(CHROMIUM_BUILD)) + provider_list->push_back(std::make_unique<ExternalProviderImpl>( + service, + new ExternalPrefLoader(chrome::DIR_USER_EXTERNAL_EXTENSIONS, diff --git a/devel/electron5/files/patch-chrome_browser_extensions_install__signer.cc b/devel/electron5/files/patch-chrome_browser_extensions_install__signer.cc new file mode 100644 index 000000000000..ce9eb7249337 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_extensions_install__signer.cc @@ -0,0 +1,18 @@ +--- chrome/browser/extensions/install_signer.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/extensions/install_signer.cc +@@ -293,13 +293,13 @@ void LogRequestStartHistograms() { + DCHECK(g_single_thread_checker.Get().CalledOnValidThread()); + + // Process::Current().CreationTime is only defined on some platforms. +-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + const base::Time process_creation_time = + base::Process::Current().CreationTime(); + UMA_HISTOGRAM_COUNTS_1M( + "ExtensionInstallSigner.UptimeAtTimeOfRequest", + (base::Time::Now() - process_creation_time).InSeconds()); +-#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) ++#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + + base::TimeDelta delta; + base::TimeTicks now = base::TimeTicks::Now(); diff --git a/devel/electron5/files/patch-chrome_browser_first__run_first__run__internal__posix.cc b/devel/electron5/files/patch-chrome_browser_first__run_first__run__internal__posix.cc new file mode 100644 index 000000000000..021696eada4d --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_first__run_first__run__internal__posix.cc @@ -0,0 +1,20 @@ +--- chrome/browser/first_run/first_run_internal_posix.cc.orig 2019-04-08 08:18:07 UTC ++++ chrome/browser/first_run/first_run_internal_posix.cc +@@ -44,7 +44,7 @@ enum class ForcedShowDialogState { + ForcedShowDialogState g_forced_show_dialog_state = + ForcedShowDialogState::kNotForced; + +-#if !defined(OS_CHROMEOS) ++#if !defined(OS_CHROMEOS) && !defined(OS_BSD) + // Returns whether the first run dialog should be shown. This is only true for + // certain builds, and only if the user has not already set preferences. In a + // real, official-build first run, initializes the default metrics reporting if +@@ -95,7 +95,7 @@ void ForceFirstRunDialogShownForTesting(bool shown) { + } + + void DoPostImportPlatformSpecificTasks(Profile* profile) { +-#if !defined(OS_CHROMEOS) ++#if !defined(OS_CHROMEOS) && !defined(OS_BSD) + if (!ShouldShowFirstRunDialog()) + return; + diff --git a/devel/electron5/files/patch-chrome_browser_flag__descriptions.cc b/devel/electron5/files/patch-chrome_browser_flag__descriptions.cc new file mode 100644 index 000000000000..6d3b81b12771 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_flag__descriptions.cc @@ -0,0 +1,34 @@ +--- chrome/browser/flag_descriptions.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/flag_descriptions.cc +@@ -3656,13 +3656,13 @@ const char kWakeOnPacketsDescription[] = + + // Random platform combinations ----------------------------------------------- + +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + + const char kEnableInputImeApiName[] = "Enable Input IME API"; + const char kEnableInputImeApiDescription[] = + "Enable the use of chrome.input.ime API."; + +-#endif // defined(OS_WIN) || defined(OS_LINUX) ++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + + #if defined(OS_WIN) || defined(OS_MACOSX) + +@@ -3675,13 +3675,13 @@ const char kAutomaticTabDiscardingDescription[] = + + #endif // defined(OS_WIN) || defined(OS_MACOSX) + +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + + const char kDirectManipulationStylusName[] = "Direct Manipulation Stylus"; + const char kDirectManipulationStylusDescription[] = + "If enabled, Chrome will scroll web pages on stylus drag."; + +-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + + #if defined(OS_MACOSX) || defined(OS_CHROMEOS) + diff --git a/devel/electron5/files/patch-chrome_browser_flag__descriptions.h b/devel/electron5/files/patch-chrome_browser_flag__descriptions.h new file mode 100644 index 000000000000..44b31ebd7670 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_flag__descriptions.h @@ -0,0 +1,32 @@ +--- chrome/browser/flag_descriptions.h.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/flag_descriptions.h +@@ -2192,12 +2192,12 @@ extern const char kWakeOnPacketsDescription[]; + + // Random platform combinations ----------------------------------------------- + +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + + extern const char kEnableInputImeApiName[]; + extern const char kEnableInputImeApiDescription[]; + +-#endif // defined(OS_WIN) || defined(OS_LINUX) ++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + + extern const char kExperimentalUiName[]; + extern const char kExperimentalUiDescription[]; +@@ -2209,12 +2209,12 @@ extern const char kAutomaticTabDiscardingDescription[] + + #endif // defined(OS_WIN) || defined(OS_MACOSX) + +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + + extern const char kDirectManipulationStylusName[]; + extern const char kDirectManipulationStylusDescription[]; + +-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + + #if defined(OS_MACOSX) || defined(OS_CHROMEOS) + diff --git a/devel/electron5/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc b/devel/electron5/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc new file mode 100644 index 000000000000..929d6e92a8b4 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc @@ -0,0 +1,15 @@ +--- chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc +@@ -38,10 +38,12 @@ void MTPDeviceMapService::RegisterMTPFileSystem( + // Note that this initializes the delegate asynchronously, but since + // the delegate will only be used from the IO thread, it is guaranteed + // to be created before use of it expects it to be there. ++#if !defined(OS_FREEBSD) + CreateMTPDeviceAsyncDelegate( + device_location, read_only, + base::Bind(&MTPDeviceMapService::AddAsyncDelegate, + base::Unretained(this), device_location, read_only)); ++#endif + mtp_device_usage_map_[key] = 0; + } + diff --git a/devel/electron5/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc b/devel/electron5/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc new file mode 100644 index 000000000000..e97e394c131f --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc @@ -0,0 +1,14 @@ +--- chrome/browser/media_galleries/media_file_system_registry.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/media_galleries/media_file_system_registry.cc +@@ -734,7 +734,10 @@ class MediaFileSystemRegistry::MediaFileSystemContextI + // Constructor in 'private' section because depends on private class definition. + MediaFileSystemRegistry::MediaFileSystemRegistry() + : file_system_context_(new MediaFileSystemContextImpl) { +- StorageMonitor::GetInstance()->AddObserver(this); ++ // This conditional is needed for shutdown. Destructors ++ // try to get the media file system registry. ++ if (StorageMonitor::GetInstance()) ++ StorageMonitor::GetInstance()->AddObserver(this); + } + + MediaFileSystemRegistry::~MediaFileSystemRegistry() { diff --git a/devel/electron5/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc b/devel/electron5/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc new file mode 100644 index 000000000000..b8b31b85ab42 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc @@ -0,0 +1,28 @@ +--- chrome/browser/media/router/discovery/discovery_network_list_posix.cc.orig 2019-04-08 08:18:08 UTC ++++ chrome/browser/media/router/discovery/discovery_network_list_posix.cc +@@ -10,6 +10,7 @@ + #include <netinet/in.h> + #include <sys/socket.h> + #include <sys/types.h> ++#include <sys/time.h> + + #include <algorithm> + +@@ -19,7 +20,7 @@ + #include "chrome/browser/media/router/discovery/discovery_network_list_wifi.h" + #include "net/base/net_errors.h" + +-#if !defined(OS_MACOSX) ++#if !defined(OS_MACOSX) && !defined(OS_BSD) + #include <netpacket/packet.h> + #else + #include <net/if_dl.h> +@@ -28,7 +29,7 @@ + namespace media_router { + namespace { + +-#if !defined(OS_MACOSX) ++#if !defined(OS_MACOSX) && !defined(OS_BSD) + using sll = struct sockaddr_ll; + #define SOCKET_ARP_TYPE(s) ((s)->sll_hatype) + #define SOCKET_ADDRESS_LEN(s) ((s)->sll_halen) diff --git a/devel/electron5/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc b/devel/electron5/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc new file mode 100644 index 000000000000..ebfedf41999c --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc @@ -0,0 +1,27 @@ +--- chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc.orig 2019-04-08 08:18:08 UTC ++++ chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc +@@ -9,8 +9,6 @@ + #include <sys/socket.h> + #include <sys/types.h> + +-#include <linux/wireless.h> +- + #include "base/files/scoped_file.h" + #include "base/logging.h" + #include "net/base/network_interfaces_linux.h" +@@ -20,6 +18,7 @@ namespace media_router { + bool MaybeGetWifiSSID(const std::string& if_name, std::string* ssid_out) { + DCHECK(ssid_out); + ++#if !defined(OS_BSD) + base::ScopedFD ioctl_socket(socket(AF_INET, SOCK_DGRAM, 0)); + if (!ioctl_socket.is_valid()) { + // AF_INET is for IPv4, so it may fail for IPv6-only hosts even when there +@@ -41,6 +40,7 @@ bool MaybeGetWifiSSID(const std::string& if_name, std: + ssid_out->assign(ssid); + return true; + } ++#endif + return false; + } + diff --git a/devel/electron5/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc b/devel/electron5/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc new file mode 100644 index 000000000000..5c65a638424a --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc @@ -0,0 +1,23 @@ +--- chrome/browser/media/router/providers/wired_display/wired_display_media_route_provider.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/media/router/providers/wired_display/wired_display_media_route_provider.cc +@@ -111,6 +111,12 @@ void WiredDisplayMediaRouteProvider::CreateRoute( + bool incognito, + CreateRouteCallback callback) { + DCHECK(!base::ContainsKey(presentations_, presentation_id)); ++#if defined(OS_BSD) // XXX ++ std::move(callback).Run(base::nullopt, nullptr, ++ std::string("Not implemented"), ++ RouteRequestResult::UNKNOWN_ERROR); ++ return; ++#else + base::Optional<Display> display = GetDisplayBySinkId(sink_id); + if (!display) { + std::move(callback).Run(base::nullopt, nullptr, +@@ -137,6 +143,7 @@ void WiredDisplayMediaRouteProvider::CreateRoute( + std::move(callback).Run(route, nullptr, base::nullopt, + RouteRequestResult::OK); + NotifyRouteObservers(); ++#endif + } + + void WiredDisplayMediaRouteProvider::JoinRoute( diff --git a/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc b/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc new file mode 100644 index 000000000000..599ca4002e6f --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc @@ -0,0 +1,11 @@ +--- chrome/browser/media/webrtc/webrtc_event_log_uploader.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/media/webrtc/webrtc_event_log_uploader.cc +@@ -36,7 +36,7 @@ constexpr size_t kExpectedMimeOverheadBytes = 1000; / + const char kProduct[] = "Chrome"; + #elif defined(OS_MACOSX) + const char kProduct[] = "Chrome_Mac"; +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + const char kProduct[] = "Chrome_Linux"; + #elif defined(OS_ANDROID) + const char kProduct[] = "Chrome_Android"; diff --git a/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc b/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc new file mode 100644 index 000000000000..dde5f44cdcfb --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc @@ -0,0 +1,11 @@ +--- chrome/browser/media/webrtc/webrtc_log_uploader.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/media/webrtc/webrtc_log_uploader.cc +@@ -391,6 +391,8 @@ void WebRtcLogUploader::SetupMultipart( + const char product[] = "Chrome_Android"; + #elif defined(OS_CHROMEOS) + const char product[] = "Chrome_ChromeOS"; ++#elif defined(OS_FREEBSD) ++ const char product[] = "Chrome_FreeBSD"; + #else + #error Platform not supported. + #endif diff --git a/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.cc b/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.cc new file mode 100644 index 000000000000..8241bbeb2491 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.cc @@ -0,0 +1,33 @@ +--- chrome/browser/media/webrtc/webrtc_logging_handler_host.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/media/webrtc/webrtc_logging_handler_host.cc +@@ -26,10 +26,10 @@ + #include "content/public/browser/content_browser_client.h" + #include "content/public/browser/render_process_host.h" + +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + #include "content/public/browser/child_process_security_policy.h" + #include "storage/browser/fileapi/isolated_context.h" +-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) ++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + + using content::BrowserThread; + using webrtc_event_logging::WebRtcEventLogManager; +@@ -281,7 +281,7 @@ void WebRtcLoggingHandlerHost::StartEventLogging( + output_period_ms, web_app_id, callback); + } + +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + void WebRtcLoggingHandlerHost::GetLogsDirectory( + const LogsDirectoryCallback& callback, + const LogsDirectoryErrorCallback& error_callback) { +@@ -327,7 +327,7 @@ void WebRtcLoggingHandlerHost::GrantLogsDirectoryAcces + FROM_HERE, {BrowserThread::UI}, + base::BindOnce(callback, filesystem_id, registered_name)); + } +-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) ++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD + + void WebRtcLoggingHandlerHost::OnRtpPacket( + std::unique_ptr<uint8_t[]> packet_header, diff --git a/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.h b/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.h new file mode 100644 index 000000000000..39eb56fe1c5b --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.h @@ -0,0 +1,36 @@ +--- chrome/browser/media/webrtc/webrtc_logging_handler_host.h.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/media/webrtc/webrtc_logging_handler_host.h +@@ -154,13 +154,13 @@ class WebRtcLoggingHandlerHost : public content::Brows + size_t web_app_id, + const StartEventLoggingCallback& callback); + +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + // Ensures that the WebRTC Logs directory exists and then grants render + // process access to the 'WebRTC Logs' directory, and invokes |callback| with + // the ids necessary to create a DirectoryEntry object. + void GetLogsDirectory(const LogsDirectoryCallback& callback, + const LogsDirectoryErrorCallback& error_callback); +-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) ++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + + private: + friend class content::BrowserThread; +@@ -227,7 +227,7 @@ class WebRtcLoggingHandlerHost : public content::Brows + bool success, + const std::string& error_message); + +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + // Grants the render process access to the 'WebRTC Logs' directory, and + // invokes |callback| with the ids necessary to create a DirectoryEntry + // object. If the |logs_path| couldn't be created or found, |error_callback| +@@ -236,7 +236,7 @@ class WebRtcLoggingHandlerHost : public content::Brows + const LogsDirectoryCallback& callback, + const LogsDirectoryErrorCallback& error_callback, + const base::FilePath& logs_path); +-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) ++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + + // The render process ID this object belongs to. + const int render_process_id_; diff --git a/devel/electron5/files/patch-chrome_browser_memory__details.cc b/devel/electron5/files/patch-chrome_browser_memory__details.cc new file mode 100644 index 000000000000..e6b71a025827 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_memory__details.cc @@ -0,0 +1,20 @@ +--- chrome/browser/memory_details.cc.orig 2019-04-08 08:18:08 UTC ++++ chrome/browser/memory_details.cc +@@ -38,7 +38,7 @@ + #include "services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.h" + #include "ui/base/l10n/l10n_util.h" + +-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD) + #include "services/service_manager/zygote/zygote_host_linux.h" + #endif + +@@ -336,7 +336,7 @@ void MemoryDetails::CollectChildInfoOnUIThread() { + process.titles.push_back(title); + } + +-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD) + if (service_manager::ZygoteHost::GetInstance()->IsZygotePid(process.pid)) { + process.process_type = content::PROCESS_TYPE_ZYGOTE; + } diff --git a/devel/electron5/files/patch-chrome_browser_memory__details__linux.cc b/devel/electron5/files/patch-chrome_browser_memory__details__linux.cc new file mode 100644 index 000000000000..4ec645a9a93d --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_memory__details__linux.cc @@ -0,0 +1,13 @@ +--- chrome/browser/memory_details_linux.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/memory_details_linux.cc +@@ -72,8 +72,10 @@ ProcessData GetProcessDataMemoryInformation( + + std::unique_ptr<base::ProcessMetrics> metrics( + base::ProcessMetrics::CreateProcessMetrics(pid)); ++#if !defined(OS_BSD) + pmi.num_open_fds = metrics->GetOpenFdCount(); + pmi.open_fds_soft_limit = metrics->GetOpenFdSoftLimit(); ++#endif + + process_data.processes.push_back(pmi); + } diff --git a/devel/electron5/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc b/devel/electron5/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc new file mode 100644 index 000000000000..cce46f33fdec --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc @@ -0,0 +1,13 @@ +--- chrome/browser/metrics/bluetooth_available_utility.cc.orig 2019-04-08 08:18:08 UTC ++++ chrome/browser/metrics/bluetooth_available_utility.cc +@@ -72,8 +72,10 @@ void ReportBluetoothAvailability() { + if (!device::BluetoothAdapterFactory::Get().IsBluetoothSupported()) + ReportAvailability(BLUETOOTH_NOT_SUPPORTED); + ++#if !defined(OS_BSD) + device::BluetoothAdapterFactory::Get().GetAdapter( + base::BindOnce(&OnGetAdapter)); ++#endif + } + + } // namespace bluetooth_utility diff --git a/devel/electron5/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc b/devel/electron5/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc new file mode 100644 index 000000000000..a6440626de32 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc @@ -0,0 +1,21 @@ +--- chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc.orig 2019-04-08 08:32:44 UTC ++++ chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc +@@ -44,7 +44,9 @@ + + #if defined(OS_LINUX) && !defined(OS_CHROMEOS) + #include <gnu/libc-version.h> ++#endif + ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + #include "base/linux_util.h" + #include "base/strings/string_split.h" + #include "base/strings/string_util.h" +@@ -52,7 +54,7 @@ + #if defined(USE_X11) + #include "ui/base/x/x11_util.h" + #endif +-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + + #if defined(USE_OZONE) || defined(USE_X11) + #include "ui/events/devices/input_device_event_observer.h" diff --git a/devel/electron5/files/patch-chrome_browser_net_system__network__context__manager.cc b/devel/electron5/files/patch-chrome_browser_net_system__network__context__manager.cc new file mode 100644 index 000000000000..e4a227d73095 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_net_system__network__context__manager.cc @@ -0,0 +1,26 @@ +--- chrome/browser/net/system_network_context_manager.cc.orig 2019-04-08 08:32:45 UTC ++++ chrome/browser/net/system_network_context_manager.cc +@@ -69,12 +69,12 @@ + #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" + #endif // defined(OS_CHROMEOS) + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + #include "chrome/common/chrome_paths_internal.h" + #include "chrome/common/chrome_switches.h" + #include "chrome/grit/chromium_strings.h" + #include "ui/base/l10n/l10n_util.h" +-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + + namespace { + +@@ -519,7 +519,7 @@ void SystemNetworkContextManager::OnNetworkServiceCrea + content::GetNetworkService()->ConfigureStubHostResolver( + stub_resolver_enabled, std::move(dns_over_https_servers)); + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + const base::CommandLine& command_line = + *base::CommandLine::ForCurrentProcess(); + diff --git a/devel/electron5/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc b/devel/electron5/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc new file mode 100644 index 000000000000..4650cfb09454 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc @@ -0,0 +1,14 @@ +--- chrome/browser/password_manager/chrome_password_manager_client.cc.orig 2019-04-08 08:32:45 UTC ++++ chrome/browser/password_manager/chrome_password_manager_client.cc +@@ -80,7 +80,11 @@ + #include "net/cert/cert_status_flags.h" + #include "services/identity/public/cpp/identity_manager.h" + #include "services/metrics/public/cpp/ukm_recorder.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + #include "url/url_constants.h" + + #if defined(SAFE_BROWSING_DB_LOCAL) diff --git a/devel/electron5/files/patch-chrome_browser_password__manager_password__store__factory.cc b/devel/electron5/files/patch-chrome_browser_password__manager_password__store__factory.cc new file mode 100644 index 000000000000..9ee61dd93691 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_password__manager_password__store__factory.cc @@ -0,0 +1,11 @@ +--- chrome/browser/password_manager/password_store_factory.cc.orig 2019-04-08 08:32:45 UTC ++++ chrome/browser/password_manager/password_store_factory.cc +@@ -300,7 +300,7 @@ PasswordStoreFactory::BuildServiceInstanceFor( + password_manager_util::RemoveUselessCredentials(ps, profile->GetPrefs(), 60, + network_context_getter); + +-#if defined(OS_WIN) || defined(OS_MACOSX) || \ ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \ + (defined(OS_LINUX) && !defined(OS_CHROMEOS)) + std::unique_ptr<password_manager::PasswordStoreSigninNotifier> notifier = + std::make_unique<password_manager::PasswordStoreSigninNotifierImpl>( diff --git a/devel/electron5/files/patch-chrome_browser_platform__util.h b/devel/electron5/files/patch-chrome_browser_platform__util.h new file mode 100644 index 000000000000..02be44eabab2 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_platform__util.h @@ -0,0 +1,11 @@ +--- chrome/browser/platform_util.h.orig 2019-04-08 08:32:45 UTC ++++ chrome/browser/platform_util.h +@@ -40,7 +40,7 @@ enum OpenOperationResult { + enum OpenItemType { + OPEN_FILE, + OPEN_FOLDER, +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + SHOW_ITEM_IN_FOLDER + #endif + }; diff --git a/devel/electron5/files/patch-chrome_browser_plugins_plugins__resource__service.cc b/devel/electron5/files/patch-chrome_browser_plugins_plugins__resource__service.cc new file mode 100644 index 000000000000..3af745ac2568 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_plugins_plugins__resource__service.cc @@ -0,0 +1,11 @@ +--- chrome/browser/plugins/plugins_resource_service.cc.orig 2019-04-08 08:32:45 UTC ++++ chrome/browser/plugins/plugins_resource_service.cc +@@ -63,7 +63,7 @@ GURL GetPluginsServerURL() { + filename = "plugins_win.json"; + #elif defined(OS_CHROMEOS) + filename = "plugins_chromeos.json"; +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + filename = "plugins_linux.json"; + #elif defined(OS_MACOSX) + filename = "plugins_mac.json"; diff --git a/devel/electron5/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc b/devel/electron5/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc new file mode 100644 index 000000000000..a538bdcb27d1 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc @@ -0,0 +1,20 @@ +--- chrome/browser/policy/configuration_policy_handler_list_factory.cc.orig 2019-04-08 08:32:45 UTC ++++ chrome/browser/policy/configuration_policy_handler_list_factory.cc +@@ -107,7 +107,7 @@ + #include "chrome/browser/policy/browser_signin_policy_handler.h" + #endif + +-#if defined(OS_WIN) || defined(OS_MACOSX) || \ ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \ + (defined(OS_LINUX) && !defined(OS_CHROMEOS)) + #include "chrome/browser/browser_switcher/browser_switcher_prefs.h" + #endif +@@ -939,7 +939,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = + prefs::kEnterpriseHardwarePlatformAPIEnabled, + base::Value::Type::BOOLEAN }, + +-#if defined(OS_WIN) || defined(OS_MACOSX) || \ ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \ + (defined(OS_LINUX) && !defined(OS_CHROMEOS)) + { key::kAlternativeBrowserPath, + browser_switcher::prefs::kAlternativeBrowserPath, diff --git a/devel/electron5/files/patch-chrome_browser_policy_machine__level__user__cloud__policy__controller.cc b/devel/electron5/files/patch-chrome_browser_policy_machine__level__user__cloud__policy__controller.cc new file mode 100644 index 000000000000..7eaf99330b24 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_policy_machine__level__user__cloud__policy__controller.cc @@ -0,0 +1,20 @@ +--- chrome/browser/policy/machine_level_user_cloud_policy_controller.cc.orig 2019-04-08 08:32:45 UTC ++++ chrome/browser/policy/machine_level_user_cloud_policy_controller.cc +@@ -65,7 +65,7 @@ bool IsMachineLevelUserCloudPolicyEnabled() { + #endif + } + +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + void CleanupUnusedPolicyDirectory() { + std::string enrollment_token = + BrowserDMTokenStorage::Get()->RetrieveEnrollmentToken(); +@@ -124,7 +124,7 @@ MachineLevelUserCloudPolicyController::CreatePolicyMan + void MachineLevelUserCloudPolicyController::Init( + PrefService* local_state, + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory) { +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + // This is a function that removes the directory we accidentally create due to + // crbug.com/880870. The directory is only removed when it's empty and + // enrollment token doesn't exist. This function is expected to be removed diff --git a/devel/electron5/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc b/devel/electron5/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc new file mode 100644 index 000000000000..e2698d948407 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc @@ -0,0 +1,11 @@ +--- chrome/browser/policy/policy_prefs_browsertest.cc.orig 2019-04-08 08:32:45 UTC ++++ chrome/browser/policy/policy_prefs_browsertest.cc +@@ -185,6 +185,8 @@ class PolicyTestCase { + const std::string os("chromeos"); + #elif defined(OS_LINUX) + const std::string os("linux"); ++#elif defined(OS_FREEBSD) ++ const std::string os("freebsd"); + #else + #error "Unknown platform" + #endif diff --git a/devel/electron5/files/patch-chrome_browser_prefs_browser__prefs.cc b/devel/electron5/files/patch-chrome_browser_prefs_browser__prefs.cc new file mode 100644 index 000000000000..35cc47f7d168 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_prefs_browser__prefs.cc @@ -0,0 +1,20 @@ +--- chrome/browser/prefs/browser_prefs.cc.orig 2019-04-08 08:32:45 UTC ++++ chrome/browser/prefs/browser_prefs.cc +@@ -319,7 +319,7 @@ + #include "chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_prefs_manager.h" + #endif + +-#if defined(OS_WIN) || defined(OS_MACOSX) || \ ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \ + (defined(OS_LINUX) && !defined(OS_CHROMEOS)) + #include "chrome/browser/browser_switcher/browser_switcher_prefs.h" + #endif +@@ -771,7 +771,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySync + safe_browsing::PostCleanupSettingsResetter::RegisterProfilePrefs(registry); + #endif + +-#if defined(OS_WIN) || defined(OS_MACOSX) || \ ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \ + (defined(OS_LINUX) && !defined(OS_CHROMEOS)) + browser_switcher::BrowserSwitcherPrefs::RegisterProfilePrefs(registry); + #endif diff --git a/devel/electron5/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc b/devel/electron5/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc new file mode 100644 index 000000000000..7b6ff9766c53 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc @@ -0,0 +1,11 @@ +--- chrome/browser/prefs/pref_service_incognito_whitelist.cc.orig 2019-04-08 08:18:08 UTC ++++ chrome/browser/prefs/pref_service_incognito_whitelist.cc +@@ -164,7 +164,7 @@ const char* const kPersistentPrefNames[] = { + prefs::kShowFullscreenToolbar, + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + // Toggleing custom frames affects all open windows in the profile, hence + // should be written to the regular profile when changed in incognito mode. + prefs::kUseCustomChromeFrame, diff --git a/devel/electron5/files/patch-chrome_browser_process__singleton__posix.cc b/devel/electron5/files/patch-chrome_browser_process__singleton__posix.cc new file mode 100644 index 000000000000..1d4bea2a90dd --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_process__singleton__posix.cc @@ -0,0 +1,34 @@ +--- chrome/browser/process_singleton_posix.cc.orig 2019-04-08 08:32:45 UTC ++++ chrome/browser/process_singleton_posix.cc +@@ -93,11 +93,11 @@ + #include "net/base/network_interfaces.h" + #include "ui/base/l10n/l10n_util.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "chrome/browser/ui/process_singleton_dialog_linux.h" + #endif + +-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + #include "ui/views/linux_ui/linux_ui.h" + #endif + +@@ -325,7 +325,7 @@ bool DisplayProfileInUseError(const base::FilePath& lo + if (g_disable_prompt) + return g_user_opted_unlock_in_use_profile; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + base::string16 relaunch_button_text = l10n_util::GetStringUTF16( + IDS_PROFILE_IN_USE_LINUX_RELAUNCH); + return ShowProcessSingletonDialog(error, relaunch_button_text); +@@ -904,7 +904,7 @@ ProcessSingleton::NotifyResult ProcessSingleton::Notif + SendRemoteProcessInteractionResultHistogram(REMOTE_PROCESS_SHUTTING_DOWN); + return PROCESS_NONE; + } else if (strncmp(buf, kACKToken, base::size(kACKToken) - 1) == 0) { +-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + // Likely NULL in unit tests. + views::LinuxUI* linux_ui = views::LinuxUI::instance(); + if (linux_ui) diff --git a/devel/electron5/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc b/devel/electron5/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc new file mode 100644 index 000000000000..048f371ed656 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc @@ -0,0 +1,11 @@ +--- chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc.orig 2019-04-08 08:32:45 UTC ++++ chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +@@ -326,7 +326,7 @@ void ChromeBrowserMainExtraPartsProfiles:: + #if !defined(OS_ANDROID) + MediaGalleriesPreferencesFactory::GetInstance(); + #endif +-#if defined(OS_WIN) || defined(OS_MACOSX) || \ ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \ + (defined(OS_LINUX) && !defined(OS_CHROMEOS)) + metrics::DesktopProfileSessionDurationsServiceFactory::GetInstance(); + #endif diff --git a/devel/electron5/files/patch-chrome_browser_profiles_profile__attributes__entry.cc b/devel/electron5/files/patch-chrome_browser_profiles_profile__attributes__entry.cc new file mode 100644 index 000000000000..f4498be77946 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_profiles_profile__attributes__entry.cc @@ -0,0 +1,11 @@ +--- chrome/browser/profiles/profile_attributes_entry.cc.orig 2019-04-08 08:18:08 UTC ++++ chrome/browser/profiles/profile_attributes_entry.cc +@@ -57,7 +57,7 @@ void ProfileAttributesEntry::Initialize(ProfileInfoCac + if (is_force_signin_enabled_) { + if (!IsAuthenticated()) + is_force_signin_profile_locked_ = true; +-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + } else if (IsSigninRequired()) { + // Profiles that require signin in the absence of an enterprise policy are + // left-overs from legacy supervised users. Just unlock them, so users can diff --git a/devel/electron5/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc b/devel/electron5/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc new file mode 100644 index 000000000000..b30faeb855bf --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc @@ -0,0 +1,29 @@ +--- chrome/browser/renderer_context_menu/render_view_context_menu.cc.orig 2019-04-08 08:32:45 UTC ++++ chrome/browser/renderer_context_menu/render_view_context_menu.cc +@@ -1507,7 +1507,7 @@ void RenderViewContextMenu::AppendEditableItems() { + // 'Undo' and 'Redo' for text input with no suggestions and no text selected. + // We make an exception for OS X as context clicking will select the closest + // word. In this case both items are always shown. +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) + menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_UNDO, + IDS_CONTENT_CONTEXT_UNDO); + menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_REDO, +@@ -1549,7 +1549,7 @@ void RenderViewContextMenu::AppendLanguageSettings() { + if (!use_spelling) + return; + +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) + menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS, + IDS_CONTENT_CONTEXT_LANGUAGE_SETTINGS); + #else +@@ -1823,7 +1823,7 @@ bool RenderViewContextMenu::IsCommandIdEnabled(int id) + case IDC_CHECK_SPELLING_WHILE_TYPING: + return prefs->GetBoolean(spellcheck::prefs::kSpellCheckEnable); + +-#if !defined(OS_MACOSX) && defined(OS_POSIX) ++#if !defined(OS_MACOSX) && !defined(OS_BSD) && defined(OS_POSIX) + // TODO(suzhe): this should not be enabled for password fields. + case IDC_INPUT_METHODS_MENU: + return true; diff --git a/devel/electron5/files/patch-chrome_browser_renderer__preferences__util.cc b/devel/electron5/files/patch-chrome_browser_renderer__preferences__util.cc new file mode 100644 index 000000000000..1eccc956ea62 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_renderer__preferences__util.cc @@ -0,0 +1,29 @@ +--- chrome/browser/renderer_preferences_util.cc.orig 2019-04-08 08:32:45 UTC ++++ chrome/browser/renderer_preferences_util.cc +@@ -28,7 +28,7 @@ + #include "ui/base/cocoa/defaults_utils.h" + #endif + +-#if defined(USE_AURA) && defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + #include "chrome/browser/themes/theme_service.h" + #include "chrome/browser/themes/theme_service_factory.h" + #include "ui/views/linux_ui/linux_ui.h" +@@ -127,7 +127,7 @@ void UpdateFromSystemSettings(content::RendererPrefere + prefs->caret_blink_interval = interval; + #endif + +-#if defined(USE_AURA) && defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + views::LinuxUI* linux_ui = views::LinuxUI::instance(); + if (linux_ui) { + if (ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme()) { +@@ -146,7 +146,7 @@ void UpdateFromSystemSettings(content::RendererPrefere + } + #endif + +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_BSD) + content::UpdateFontRendererPreferencesFromSystemSettings(prefs); + #endif + diff --git a/devel/electron5/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py b/devel/electron5/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py new file mode 100644 index 000000000000..3cc257a63eb0 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py @@ -0,0 +1,19 @@ +--- chrome/browser/resources/safe_browsing/gen_file_type_proto.py.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/resources/safe_browsing/gen_file_type_proto.py +@@ -31,6 +31,7 @@ def PlatformTypes(): + "android": download_file_types_pb2.DownloadFileType.PLATFORM_ANDROID, + "chromeos": download_file_types_pb2.DownloadFileType.PLATFORM_CHROME_OS, + "linux": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX, ++ "bsd": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX, + "mac": download_file_types_pb2.DownloadFileType.PLATFORM_MAC, + "win": download_file_types_pb2.DownloadFileType.PLATFORM_WINDOWS, + } +@@ -169,7 +170,7 @@ class DownloadFileTypeProtoGenerator(BinaryProtoGenera + 'Outfile must have a %d for version and %s for platform.') + parser.add_option('-t', '--type', + help='The platform type. One of android, chromeos, ' + +- 'linux, mac, win') ++ 'linux, bsd, mac, win') + + def AddExtraCommandLineArgsForVirtualEnvRun(self, opts, command): + if opts.type is not None: diff --git a/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js b/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js new file mode 100644 index 000000000000..97bddc3e44b4 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js @@ -0,0 +1,20 @@ +--- chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.js.orig 2019-04-08 08:18:09 UTC ++++ chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.js +@@ -35,7 +35,7 @@ cr.define('settings', function() { + + useDefaultTheme() {} + +- // <if expr="is_linux and not chromeos"> ++ // <if expr="is_bsd and not chromeos"> + useSystemTheme() {} + + // </if> +@@ -93,7 +93,7 @@ cr.define('settings', function() { + chrome.send('useDefaultTheme'); + } + +- // <if expr="is_linux and not chromeos"> ++ // <if expr="is_bsd and not chromeos"> + /** @override */ + useSystemTheme() { + chrome.send('useSystemTheme'); diff --git a/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html b/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html new file mode 100644 index 000000000000..aae864ba24d0 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html @@ -0,0 +1,29 @@ +--- chrome/browser/resources/settings/appearance_page/appearance_page.html.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/resources/settings/appearance_page/appearance_page.html +@@ -65,7 +65,7 @@ + hidden="[[!pageVisibility.setTheme]]" + label="$i18n{themes}" sub-label="[[themeSublabel_]]" + on-click="openThemeUrl_"></cr-link-row> +-<if expr="not is_linux or chromeos"> ++<if expr="not is_posix or chromeos"> + <template is="dom-if" if="[[prefs.extensions.theme.id.value]]"> + <div class="separator"></div> + <paper-button id="useDefault" on-click="onUseDefaultTap_" +@@ -74,7 +74,7 @@ + </paper-button> + </template> + </if> +-<if expr="is_linux and not chromeos"> ++<if expr="is_posix and not chromeos"> + <div class="settings-row continuation" + hidden="[[!showThemesSecondary_( + prefs.extensions.theme.id.value, useSystemTheme_)]]" +@@ -139,7 +139,7 @@ + pref="{{prefs.bookmark_bar.show_on_all_tabs}}" + label="$i18n{showBookmarksBar}"> + </settings-toggle-button> +-<if expr="is_linux and not chromeos"> ++<if expr="is_posix and not chromeos"> + <settings-toggle-button + class$="[[getFirst_(pageVisibility.bookmarksBar)]]" + pref="{{prefs.browser.custom_chrome_frame}}" diff --git a/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js b/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js new file mode 100644 index 000000000000..9d2505de80cb --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js @@ -0,0 +1,33 @@ +--- chrome/browser/resources/settings/appearance_page/appearance_page.js.orig 2019-04-08 08:18:09 UTC ++++ chrome/browser/resources/settings/appearance_page/appearance_page.js +@@ -120,7 +120,7 @@ Polymer({ + 'defaultFontSizeChanged_(prefs.webkit.webprefs.default_font_size.value)', + 'themeChanged_(prefs.extensions.theme.id.value, useSystemTheme_)', + +- // <if expr="is_linux and not chromeos"> ++ // <if expr="is_bsd and not chromeos"> + // NOTE: this pref only exists on Linux. + 'useSystemThemePrefChanged_(prefs.extensions.theme.use_system.value)', + // </if> +@@ -223,7 +223,7 @@ Polymer({ + this.browserProxy_.useDefaultTheme(); + }, + +- // <if expr="is_linux and not chromeos"> ++ // <if expr="is_bsd and not chromeos"> + /** + * @param {boolean} useSystemTheme + * @private +@@ -292,10 +292,10 @@ Polymer({ + } + + let i18nId; +- // <if expr="is_linux and not chromeos"> ++ // <if expr="is_bsd and not chromeos"> + i18nId = useSystemTheme ? 'systemTheme' : 'classicTheme'; + // </if> +- // <if expr="not is_linux or chromeos"> ++ // <if expr="not is_bsd or chromeos"> + i18nId = 'chooseFromWebStore'; + // </if> + this.themeSublabel_ = this.i18n(i18nId); diff --git a/devel/electron5/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc b/devel/electron5/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc new file mode 100644 index 000000000000..ccdff3b36c08 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc @@ -0,0 +1,15 @@ +--- chrome/browser/safe_browsing/incident_reporting/incident_handler_util.cc.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/safe_browsing/incident_reporting/incident_handler_util.cc +@@ -8,7 +8,12 @@ + + #include "base/hash.h" + #include "base/logging.h" ++//XXX(rene) needs shim headers? ++#if defined(USE_SYSTEM_PROTOBUF) ++#include <google/protobuf/message_lite.h> ++#else + #include "third_party/protobuf/src/google/protobuf/message_lite.h" ++#endif + + namespace safe_browsing { + diff --git a/devel/electron5/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc b/devel/electron5/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc new file mode 100644 index 000000000000..18796fa5fd79 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc @@ -0,0 +1,11 @@ +--- chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc +@@ -715,7 +715,7 @@ void IncidentReportingService::OnEnvironmentDataCollec + environment_collection_pending_ = false; + + // Process::Current().CreationTime() is missing on some platforms. +-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + base::TimeDelta uptime = + first_incident_time_ - base::Process::Current().CreationTime(); + environment_data->mutable_process()->set_uptime_msec(uptime.InMilliseconds()); diff --git a/devel/electron5/files/patch-chrome_browser_search_local__files__ntp__source.cc b/devel/electron5/files/patch-chrome_browser_search_local__files__ntp__source.cc new file mode 100644 index 000000000000..c4525b9b9eb1 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_search_local__files__ntp__source.cc @@ -0,0 +1,16 @@ +--- chrome/browser/search/local_files_ntp_source.cc.orig 2019-04-08 08:18:09 UTC ++++ chrome/browser/search/local_files_ntp_source.cc +@@ -20,8 +20,13 @@ + #include "build/build_config.h" + #include "chrome/common/url_constants.h" + #include "content/public/browser/url_data_source.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#include <re2/stringpiece.h> ++#else + #include "third_party/re2/src/re2/re2.h" + #include "third_party/re2/src/re2/stringpiece.h" ++#endif + + namespace { + diff --git a/devel/electron5/files/patch-chrome_browser_signin_signin__util.cc b/devel/electron5/files/patch-chrome_browser_signin_signin__util.cc new file mode 100644 index 000000000000..f399c25be493 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_signin_signin__util.cc @@ -0,0 +1,11 @@ +--- chrome/browser/signin/signin_util.cc.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/signin/signin_util.cc +@@ -42,7 +42,7 @@ namespace { + + constexpr char kSignoutSettingKey[] = "signout_setting"; + +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + #define CAN_DELETE_PROFILE + #endif + diff --git a/devel/electron5/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc b/devel/electron5/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc new file mode 100644 index 000000000000..1abec17ff058 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc @@ -0,0 +1,20 @@ +--- chrome/browser/ssl/ssl_error_controller_client.cc.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/ssl/ssl_error_controller_client.cc +@@ -78,7 +78,7 @@ void LaunchDateAndTimeSettingsImpl() { + #if defined(OS_ANDROID) + chrome::android::OpenDateAndTimeSettings(); + +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + struct ClockCommand { + const char* const pathname; + const char* const argument; +@@ -219,7 +219,7 @@ void SSLErrorControllerClient::Proceed() { + + bool SSLErrorControllerClient::CanLaunchDateAndTimeSettings() { + #if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || \ +- defined(OS_WIN) ++ defined(OS_WIN) || defined(OS_BSD) + return true; + #else + return false; diff --git a/devel/electron5/files/patch-chrome_browser_sync_chrome__sync__client.cc b/devel/electron5/files/patch-chrome_browser_sync_chrome__sync__client.cc new file mode 100644 index 000000000000..5d6849fdfdb6 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_sync_chrome__sync__client.cc @@ -0,0 +1,20 @@ +--- chrome/browser/sync/chrome_sync_client.cc.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/sync/chrome_sync_client.cc +@@ -428,7 +428,7 @@ ChromeSyncClient::CreateDataTypeControllers(syncer::Sy + } + #endif // BUILDFLAG(ENABLE_APP_LIST) + +-#if defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + // Dictionary sync is enabled by default. + if (!disabled_types.Has(syncer::DICTIONARY)) { + if (base::FeatureList::IsEnabled(switches::kSyncPseudoUSSDictionary)) { +@@ -444,7 +444,7 @@ ChromeSyncClient::CreateDataTypeControllers(syncer::Sy + base::CreateSingleThreadTaskRunnerWithTraits({BrowserThread::UI}))); + } + } +-#endif // defined(OS_LINUX) || defined(OS_WIN) ++#endif // defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + + #if defined(OS_CHROMEOS) + if (arc::IsArcAllowedForProfile(profile_) && diff --git a/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group.cc b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group.cc new file mode 100644 index 000000000000..b1e7887b1d61 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group.cc @@ -0,0 +1,56 @@ +--- chrome/browser/task_manager/sampling/task_group.cc.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/task_manager/sampling/task_group.cc +@@ -33,9 +33,9 @@ const int kBackgroundRefreshTypesMask = + #if defined(OS_WIN) + REFRESH_TYPE_START_TIME | REFRESH_TYPE_CPU_TIME | + #endif // defined(OS_WIN) +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + REFRESH_TYPE_FD_COUNT | +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + #if BUILDFLAG(ENABLE_NACL) + REFRESH_TYPE_NACL | + #endif // BUILDFLAG(ENABLE_NACL) +@@ -112,9 +112,9 @@ TaskGroup::TaskGroup( + #if BUILDFLAG(ENABLE_NACL) + nacl_debug_stub_port_(nacl::kGdbDebugStubPortUnknown), + #endif // BUILDFLAG(ENABLE_NACL) +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + open_fd_count_(-1), +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + idle_wakeups_per_second_(-1), + gpu_memory_has_duplicates_(false), + is_backgrounded_(false), +@@ -128,10 +128,10 @@ TaskGroup::TaskGroup( + weak_ptr_factory_.GetWeakPtr()), + base::Bind(&TaskGroup::OnIdleWakeupsRefreshDone, + weak_ptr_factory_.GetWeakPtr()), +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + base::Bind(&TaskGroup::OnOpenFdCountRefreshDone, + weak_ptr_factory_.GetWeakPtr()), +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + base::Bind(&TaskGroup::OnProcessPriorityDone, + weak_ptr_factory_.GetWeakPtr())); + +@@ -296,14 +296,14 @@ void TaskGroup::OnRefreshNaClDebugStubPortDone(int nac + } + #endif // BUILDFLAG(ENABLE_NACL) + +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + void TaskGroup::OnOpenFdCountRefreshDone(int open_fd_count) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + + open_fd_count_ = open_fd_count; + OnBackgroundRefreshTypeFinished(REFRESH_TYPE_FD_COUNT); + } +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + + void TaskGroup::OnCpuRefreshDone(double cpu_usage) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); diff --git a/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group.h b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group.h new file mode 100644 index 000000000000..e890888d7801 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group.h @@ -0,0 +1,39 @@ +--- chrome/browser/task_manager/sampling/task_group.h.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/task_manager/sampling/task_group.h +@@ -106,9 +106,9 @@ class TaskGroup { + int nacl_debug_stub_port() const { return nacl_debug_stub_port_; } + #endif // BUILDFLAG(ENABLE_NACL) + +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + int open_fd_count() const { return open_fd_count_; } +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + + int idle_wakeups_per_second() const { return idle_wakeups_per_second_; } + private: +@@ -121,9 +121,9 @@ class TaskGroup { + void RefreshNaClDebugStubPort(int child_process_unique_id); + void OnRefreshNaClDebugStubPortDone(int port); + #endif +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + void OnOpenFdCountRefreshDone(int open_fd_count); +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + + void OnCpuRefreshDone(double cpu_usage); + void OnSwappedMemRefreshDone(int64_t swapped_mem_bytes); +@@ -191,10 +191,10 @@ class TaskGroup { + #if BUILDFLAG(ENABLE_NACL) + int nacl_debug_stub_port_; + #endif // BUILDFLAG(ENABLE_NACL) +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + // The number of file descriptors currently open by the process. + int open_fd_count_; +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + int idle_wakeups_per_second_; + bool gpu_memory_has_duplicates_; + bool is_backgrounded_; diff --git a/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc new file mode 100644 index 000000000000..f7b5b1503c2b --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc @@ -0,0 +1,72 @@ +--- chrome/browser/task_manager/sampling/task_group_sampler.cc.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/task_manager/sampling/task_group_sampler.cc +@@ -42,9 +42,9 @@ TaskGroupSampler::TaskGroupSampler( + const OnCpuRefreshCallback& on_cpu_refresh, + const OnSwappedMemRefreshCallback& on_swapped_mem_refresh, + const OnIdleWakeupsCallback& on_idle_wakeups, +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + const OnOpenFdCountCallback& on_open_fd_count, +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + const OnProcessPriorityCallback& on_process_priority) + : process_(std::move(process)), + process_metrics_(CreateProcessMetrics(process_.Handle())), +@@ -52,9 +52,9 @@ TaskGroupSampler::TaskGroupSampler( + on_cpu_refresh_callback_(on_cpu_refresh), + on_swapped_mem_refresh_callback_(on_swapped_mem_refresh), + on_idle_wakeups_callback_(on_idle_wakeups), +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + on_open_fd_count_callback_(on_open_fd_count), +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + on_process_priority_callback_(on_process_priority) { + DCHECK(blocking_pool_runner.get()); + +@@ -85,7 +85,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags) + on_swapped_mem_refresh_callback_); + } + +-#if defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_IDLE_WAKEUPS, + refresh_flags)) { + base::PostTaskAndReplyWithResult( +@@ -94,9 +94,9 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags) + base::Bind(&TaskGroupSampler::RefreshIdleWakeupsPerSecond, this), + on_idle_wakeups_callback_); + } +-#endif // defined(OS_MACOSX) || defined(OS_LINUX) ++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_FD_COUNT, + refresh_flags)) { + base::PostTaskAndReplyWithResult( +@@ -105,7 +105,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags) + base::Bind(&TaskGroupSampler::RefreshOpenFdCount, this), + on_open_fd_count_callback_); + } +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + + if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_PRIORITY, + refresh_flags)) { +@@ -144,13 +144,13 @@ int TaskGroupSampler::RefreshIdleWakeupsPerSecond() { + return process_metrics_->GetIdleWakeupsPerSecond(); + } + +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + int TaskGroupSampler::RefreshOpenFdCount() { + DCHECK(worker_pool_sequenced_checker_.CalledOnValidSequence()); + + return process_metrics_->GetOpenFdCount(); + } +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + + bool TaskGroupSampler::RefreshProcessPriority() { + DCHECK(worker_pool_sequenced_checker_.CalledOnValidSequence()); diff --git a/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h new file mode 100644 index 000000000000..3e4d599e8c5e --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h @@ -0,0 +1,50 @@ +--- chrome/browser/task_manager/sampling/task_group_sampler.h.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/task_manager/sampling/task_group_sampler.h +@@ -32,9 +32,9 @@ class TaskGroupSampler : public base::RefCountedThread + using OnCpuRefreshCallback = base::Callback<void(double)>; + using OnSwappedMemRefreshCallback = base::Callback<void(int64_t)>; + using OnIdleWakeupsCallback = base::Callback<void(int)>; +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + using OnOpenFdCountCallback = base::Callback<void(int)>; +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + using OnProcessPriorityCallback = base::Callback<void(bool)>; + + TaskGroupSampler( +@@ -43,9 +43,9 @@ class TaskGroupSampler : public base::RefCountedThread + const OnCpuRefreshCallback& on_cpu_refresh, + const OnSwappedMemRefreshCallback& on_memory_refresh, + const OnIdleWakeupsCallback& on_idle_wakeups, +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + const OnOpenFdCountCallback& on_open_fd_count, +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + const OnProcessPriorityCallback& on_process_priority); + + // Refreshes the expensive process' stats (CPU usage, memory usage, and idle +@@ -60,9 +60,9 @@ class TaskGroupSampler : public base::RefCountedThread + double RefreshCpuUsage(); + int64_t RefreshSwappedMem(); + int RefreshIdleWakeupsPerSecond(); +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + int RefreshOpenFdCount(); +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + bool RefreshProcessPriority(); + + // The process that holds the handle that we own so that we can use it for +@@ -80,9 +80,9 @@ class TaskGroupSampler : public base::RefCountedThread + const OnCpuRefreshCallback on_cpu_refresh_callback_; + const OnSwappedMemRefreshCallback on_swapped_mem_refresh_callback_; + const OnIdleWakeupsCallback on_idle_wakeups_callback_; +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + const OnOpenFdCountCallback on_open_fd_count_callback_; +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + const OnProcessPriorityCallback on_process_priority_callback_; + + // To assert we're running on the correct thread. diff --git a/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc new file mode 100644 index 000000000000..8084e80d9619 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc @@ -0,0 +1,16 @@ +--- chrome/browser/task_manager/sampling/task_manager_impl.cc.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/task_manager/sampling/task_manager_impl.cc +@@ -207,11 +207,11 @@ void TaskManagerImpl::GetUSERHandles(TaskId task_id, + } + + int TaskManagerImpl::GetOpenFdCount(TaskId task_id) const { +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + return GetTaskGroupByTaskId(task_id)->open_fd_count(); + #else + return -1; +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + } + + bool TaskManagerImpl::IsTaskOnBackgroundedProcess(TaskId task_id) const { diff --git a/devel/electron5/files/patch-chrome_browser_task__manager_task__manager__observer.h b/devel/electron5/files/patch-chrome_browser_task__manager_task__manager__observer.h new file mode 100644 index 000000000000..2d318f6b4b7a --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_task__manager_task__manager__observer.h @@ -0,0 +1,16 @@ +--- chrome/browser/task_manager/task_manager_observer.h.orig 2019-04-08 08:18:09 UTC ++++ chrome/browser/task_manager/task_manager_observer.h +@@ -43,11 +43,11 @@ enum RefreshType { + // or backgrounded. + REFRESH_TYPE_PRIORITY = 1 << 13, + +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + // For observers interested in getting the number of open file descriptors of + // processes. + REFRESH_TYPE_FD_COUNT = 1 << 14, +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + + REFRESH_TYPE_KEEPALIVE_COUNT = 1 << 15, + REFRESH_TYPE_MEMORY_FOOTPRINT = 1 << 16, diff --git a/devel/electron5/files/patch-chrome_browser_tracing_crash__service__uploader.cc b/devel/electron5/files/patch-chrome_browser_tracing_crash__service__uploader.cc new file mode 100644 index 000000000000..afeb4c13fd17 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_tracing_crash__service__uploader.cc @@ -0,0 +1,11 @@ +--- chrome/browser/tracing/crash_service_uploader.cc.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/tracing/crash_service_uploader.cc +@@ -162,6 +162,8 @@ void TraceCrashServiceUploader::DoCompressOnBackground + const char product[] = "Chrome_Linux"; + #elif defined(OS_ANDROID) + const char product[] = "Chrome_Android"; ++#elif defined(OS_FREEBSD) ++ const char product[] = "Chrome_FreeBSD"; + #else + #error Platform not supported. + #endif diff --git a/devel/electron5/files/patch-chrome_browser_ui_browser__command__controller.cc b/devel/electron5/files/patch-chrome_browser_ui_browser__command__controller.cc new file mode 100644 index 000000000000..4a8b6f7616e8 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_browser__command__controller.cc @@ -0,0 +1,38 @@ +--- chrome/browser/ui/browser_command_controller.cc.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/ui/browser_command_controller.cc +@@ -79,7 +79,7 @@ + #include "chrome/browser/ui/browser_commands_chromeos.h" + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h" + #endif + +@@ -216,7 +216,7 @@ bool BrowserCommandController::IsReservedCommandOrKey( + #endif + } + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + // If this key was registered by the user as a content editing hotkey, then + // it is not reserved. + ui::TextEditKeyBindingsDelegateAuraLinux* delegate = +@@ -421,7 +421,7 @@ bool BrowserCommandController::ExecuteCommandWithDispo + break; + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + case IDC_MINIMIZE_WINDOW: + browser_->window()->Minimize(); + break; +@@ -860,7 +860,7 @@ void BrowserCommandController::InitCommandState() { + command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_2, true); + command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_3, true); + #endif +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + command_updater_.UpdateCommandEnabled(IDC_MINIMIZE_WINDOW, true); + command_updater_.UpdateCommandEnabled(IDC_MAXIMIZE_WINDOW, true); + command_updater_.UpdateCommandEnabled(IDC_RESTORE_WINDOW, true); diff --git a/devel/electron5/files/patch-chrome_browser_ui_browser__view__prefs.cc b/devel/electron5/files/patch-chrome_browser_ui_browser__view__prefs.cc new file mode 100644 index 000000000000..8140dbd391bd --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_browser__view__prefs.cc @@ -0,0 +1,20 @@ +--- chrome/browser/ui/browser_view_prefs.cc.orig 2019-04-08 08:18:09 UTC ++++ chrome/browser/ui/browser_view_prefs.cc +@@ -34,7 +34,7 @@ void RegisterBrowserViewLocalPrefs(PrefRegistrySimple* + + void RegisterBrowserViewProfilePrefs( + user_prefs::PrefRegistrySyncable* registry) { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + bool custom_frame_pref_default = false; + #if defined(USE_X11) + custom_frame_pref_default = ui::GetCustomFramePrefDefault(); +@@ -45,7 +45,7 @@ void RegisterBrowserViewProfilePrefs( + #endif + registry->RegisterBooleanPref(prefs::kUseCustomChromeFrame, + custom_frame_pref_default); +-#endif // OS_LINUX && !OS_CHROMEOS ++#endif // (OS_LINUX && !OS_CHROMEOS) || defined(OS_BSD) + } + + void MigrateBrowserTabStripPrefs(PrefService* prefs) { diff --git a/devel/electron5/files/patch-chrome_browser_ui_browser__window.h b/devel/electron5/files/patch-chrome_browser_ui_browser__window.h new file mode 100644 index 000000000000..383e71501f93 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_browser__window.h @@ -0,0 +1,11 @@ +--- chrome/browser/ui/browser_window.h.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/ui/browser_window.h +@@ -425,7 +425,7 @@ class BrowserWindow : public ui::BaseWindow { + bool is_source_keyboard) = 0; + + #if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) || \ +- defined(OS_LINUX) ++ defined(OS_LINUX) || defined(OS_BSD) + virtual void ShowHatsBubbleFromAppMenuButton() = 0; + #endif + diff --git a/devel/electron5/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc b/devel/electron5/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc new file mode 100644 index 000000000000..108cf18c0628 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc.orig 2019-04-08 08:18:09 UTC ++++ chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc +@@ -16,7 +16,7 @@ + + // NOTE(koz): Linux doesn't use the thick shadowed border, so we add padding + // here. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + const int ExclusiveAccessBubble::kPaddingPx = 8; + #else + const int ExclusiveAccessBubble::kPaddingPx = 15; diff --git a/devel/electron5/files/patch-chrome_browser_ui_input__method_input__method__engine.h b/devel/electron5/files/patch-chrome_browser_ui_input__method_input__method__engine.h new file mode 100644 index 000000000000..436fb2f73ae7 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_input__method_input__method__engine.h @@ -0,0 +1,11 @@ +--- chrome/browser/ui/input_method/input_method_engine.h.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/ui/input_method/input_method_engine.h +@@ -27,7 +27,7 @@ class InputMethodEngine : public InputMethodEngineBase + + // ui::IMEEngineHandlerInterface: + bool IsActive() const override; +- std::string GetExtensionId() const override; ++ std::string GetExtensionId() const; + + // Creates and shows the IME window. + // Returns 0 for errors and |error| will contains the error message. diff --git a/devel/electron5/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc b/devel/electron5/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc new file mode 100644 index 000000000000..a3a29506ad1a --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ui/input_method/input_method_engine_base.cc.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/ui/input_method/input_method_engine_base.cc +@@ -29,7 +29,7 @@ + #include "ui/base/ime/chromeos/ime_keymap.h" + #elif defined(OS_WIN) + #include "ui/events/keycodes/keyboard_codes_win.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "ui/events/keycodes/keyboard_codes_posix.h" + #endif + diff --git a/devel/electron5/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc b/devel/electron5/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc new file mode 100644 index 000000000000..7b586a4fb35f --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc @@ -0,0 +1,10 @@ +--- chrome/browser/ui/libgtkui/print_dialog_gtk.cc.orig 2019-04-08 08:18:09 UTC ++++ chrome/browser/ui/libgtkui/print_dialog_gtk.cc +@@ -333,6 +333,7 @@ void PrintDialogGtk::ShowDialog( + // Since we only generate PDF, only show printers that support PDF. + // TODO(thestig) Add more capabilities to support? + GtkPrintCapabilities cap = static_cast<GtkPrintCapabilities>( ++ GTK_PRINT_CAPABILITY_GENERATE_PS | + GTK_PRINT_CAPABILITY_GENERATE_PDF | + GTK_PRINT_CAPABILITY_PAGE_SET | + GTK_PRINT_CAPABILITY_COPIES | diff --git a/devel/electron5/files/patch-chrome_browser_ui_sad__tab.cc b/devel/electron5/files/patch-chrome_browser_ui_sad__tab.cc new file mode 100644 index 000000000000..ddba5deb702a --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_sad__tab.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ui/sad_tab.cc.orig 2019-04-08 08:18:09 UTC ++++ chrome/browser/ui/sad_tab.cc +@@ -180,7 +180,7 @@ std::vector<int> SadTab::GetSubMessages() { + // Only show incognito suggestion if not already in Incognito mode. + if (!web_contents_->GetBrowserContext()->IsOffTheRecord()) + message_ids.insert(message_ids.begin(), IDS_SAD_TAB_RELOAD_INCOGNITO); +-#if defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + // Note: on macOS, Linux and ChromeOS, the first bullet is either one of + // IDS_SAD_TAB_RELOAD_CLOSE_TABS or IDS_SAD_TAB_RELOAD_CLOSE_NOTABS + // followed by one of the above suggestions. diff --git a/devel/electron5/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc b/devel/electron5/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc new file mode 100644 index 000000000000..e59714234093 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ui/startup/bad_flags_prompt.cc.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/ui/startup/bad_flags_prompt.cc +@@ -84,7 +84,7 @@ static const char* kBadFlags[] = { + extensions::switches::kExtensionsOnChromeURLs, + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + // Speech dispatcher is buggy, it can crash and it can make Chrome freeze. + // http://crbug.com/327295 + switches::kEnableSpeechDispatcher, diff --git a/devel/electron5/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc b/devel/electron5/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc new file mode 100644 index 000000000000..6aae10f0b2c5 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc @@ -0,0 +1,22 @@ +--- chrome/browser/ui/startup/startup_browser_creator.cc.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/ui/startup/startup_browser_creator.cc +@@ -79,7 +79,7 @@ + #include "chrome/browser/ui/user_manager.h" + #endif + +-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) ++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) + #include "ui/events/devices/x11/touch_factory_x11.h" // nogncheck + #endif + +@@ -633,8 +633,10 @@ bool StartupBrowserCreator::ProcessCmdLineImpl( + } + #endif // OS_CHROMEOS + ++#if 0 /* XXX */ + #if defined(TOOLKIT_VIEWS) && defined(USE_X11) + ui::TouchFactory::SetTouchDeviceListFromCommandLine(); ++#endif + #endif + + #if defined(OS_MACOSX) diff --git a/devel/electron5/files/patch-chrome_browser_ui_tab__helpers.cc b/devel/electron5/files/patch-chrome_browser_ui_tab__helpers.cc new file mode 100644 index 000000000000..0f4c1e67f8cd --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_tab__helpers.cc @@ -0,0 +1,25 @@ +--- chrome/browser/ui/tab_helpers.cc.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/ui/tab_helpers.cc +@@ -116,7 +116,7 @@ + #include "components/zoom/zoom_controller.h" + #endif // defined(OS_ANDROID) + +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + #include "chrome/browser/ui/blocked_content/framebust_block_tab_helper.h" + #include "chrome/browser/ui/hats/hats_helper.h" + #endif +@@ -309,11 +309,11 @@ void TabHelpers::AttachTabHelpers(WebContents* web_con + #endif + + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +- (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + metrics::DesktopSessionDurationObserver::CreateForWebContents(web_contents); + #endif + +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + if (base::FeatureList::IsEnabled( + features::kHappinessTrackingSurveysForDesktop)) { + HatsHelper::CreateForWebContents(web_contents); diff --git a/devel/electron5/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc b/devel/electron5/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc new file mode 100644 index 000000000000..3c828b5f1667 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc @@ -0,0 +1,15 @@ +--- chrome/browser/ui/task_manager/task_manager_columns.cc.orig 2019-04-08 08:18:09 UTC ++++ chrome/browser/ui/task_manager/task_manager_columns.cc +@@ -93,10 +93,10 @@ const TableColumnData kColumns[] = { + base::size("100000") * kCharWidth, -1, true, false, false}, + #endif + +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + {IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN, ui::TableColumn::RIGHT, -1, 0, + base::size("999") * kCharWidth, -1, true, false, false}, +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + {IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN, ui::TableColumn::LEFT, -1, 0, + base::size("background") * kCharWidth, -1, true, true, false}, + {IDS_TASK_MANAGER_KEEPALIVE_COUNT_COLUMN, ui::TableColumn::RIGHT, -1, 0, diff --git a/devel/electron5/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc b/devel/electron5/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc new file mode 100644 index 000000000000..8d6814ce51c3 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc @@ -0,0 +1,50 @@ +--- chrome/browser/ui/task_manager/task_manager_table_model.cc.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/ui/task_manager/task_manager_table_model.cc +@@ -430,13 +430,13 @@ base::string16 TaskManagerTableModel::GetText(int row, + ? stringifier_->backgrounded_string() + : stringifier_->foregrounded_string(); + +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: { + const int fd_count = observed_task_manager()->GetOpenFdCount(tasks_[row]); + return fd_count >= 0 ? base::FormatNumber(fd_count) + : stringifier_->n_a_string(); + } +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + + case IDS_TASK_MANAGER_KEEPALIVE_COUNT_COLUMN: { + return stringifier_->GetKeepaliveCountText( +@@ -590,7 +590,7 @@ int TaskManagerTableModel::CompareValues(int row1, + return BooleanCompare(is_proc1_bg, is_proc2_bg); + } + +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: { + const int proc1_fd_count = + observed_task_manager()->GetOpenFdCount(tasks_[row1]); +@@ -598,7 +598,7 @@ int TaskManagerTableModel::CompareValues(int row1, + observed_task_manager()->GetOpenFdCount(tasks_[row2]); + return ValueCompare(proc1_fd_count, proc2_fd_count); + } +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + + default: + NOTREACHED(); +@@ -760,11 +760,11 @@ void TaskManagerTableModel::UpdateRefreshTypes(int col + type = REFRESH_TYPE_KEEPALIVE_COUNT; + break; + +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: + type = REFRESH_TYPE_FD_COUNT; + break; +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + + default: + NOTREACHED(); diff --git a/devel/electron5/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc b/devel/electron5/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc new file mode 100644 index 000000000000..92d7cefacc6d --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ui/toolbar/app_menu_model.cc.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/ui/toolbar/app_menu_model.cc +@@ -671,7 +671,7 @@ bool AppMenuModel::IsCommandIdVisible(int command_id) + return app_menu_icon_controller_->GetTypeAndSeverity().type == + AppMenuIconController::IconType::UPGRADE_NOTIFICATION; + } +-#if !defined(OS_LINUX) || defined(USE_AURA) ++#if (!defined(OS_LINUX) && !defined(OS_BSD)) || defined(USE_AURA) + case IDC_BOOKMARK_PAGE: + return !chrome::ShouldRemoveBookmarkThisPageUI(browser_->profile()); + case IDC_BOOKMARK_ALL_TABS: diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_accelerator__table.cc b/devel/electron5/files/patch-chrome_browser_ui_views_accelerator__table.cc new file mode 100644 index 000000000000..0783a36224c1 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_views_accelerator__table.cc @@ -0,0 +1,46 @@ +--- chrome/browser/ui/views/accelerator_table.cc.orig 2019-04-08 08:18:10 UTC ++++ chrome/browser/ui/views/accelerator_table.cc +@@ -50,7 +50,7 @@ const AcceleratorMapping kAcceleratorMap[] = { + {ui::VKEY_S, ui::EF_PLATFORM_ACCELERATOR, IDC_SAVE_PAGE}, + {ui::VKEY_9, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_LAST_TAB}, + {ui::VKEY_NUMPAD9, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_LAST_TAB}, +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + {ui::VKEY_9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB}, + {ui::VKEY_NUMPAD9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB}, + {ui::VKEY_NEXT, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, IDC_MOVE_TAB_NEXT}, +@@ -80,7 +80,7 @@ const AcceleratorMapping kAcceleratorMap[] = { + {ui::VKEY_NUMPAD7, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_6}, + {ui::VKEY_8, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_7}, + {ui::VKEY_NUMPAD8, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_7}, +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + {ui::VKEY_1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0}, + {ui::VKEY_NUMPAD1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0}, + {ui::VKEY_2, ui::EF_ALT_DOWN, IDC_SELECT_TAB_1}, +@@ -98,7 +98,7 @@ const AcceleratorMapping kAcceleratorMap[] = { + {ui::VKEY_8, ui::EF_ALT_DOWN, IDC_SELECT_TAB_7}, + {ui::VKEY_NUMPAD8, ui::EF_ALT_DOWN, IDC_SELECT_TAB_7}, + {ui::VKEY_BROWSER_FAVORITES, ui::EF_NONE, IDC_SHOW_BOOKMARK_BAR}, +-#endif // OS_LINUX && !OS_CHROMEOS ++#endif // (OS_LINUX || OS_BSD) && !OS_CHROMEOS + {ui::VKEY_B, ui::EF_SHIFT_DOWN | ui::EF_PLATFORM_ACCELERATOR, + IDC_SHOW_BOOKMARK_BAR}, + {ui::VKEY_OEM_MINUS, ui::EF_PLATFORM_ACCELERATOR, IDC_ZOOM_MINUS}, +@@ -122,14 +122,14 @@ const AcceleratorMapping kAcceleratorMap[] = { + {ui::VKEY_F11, ui::EF_NONE, IDC_FULLSCREEN}, + + // Platform-specific key maps. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + {ui::VKEY_BROWSER_BACK, ui::EF_NONE, IDC_BACK}, + {ui::VKEY_BROWSER_FORWARD, ui::EF_NONE, IDC_FORWARD}, + {ui::VKEY_BROWSER_HOME, ui::EF_NONE, IDC_HOME}, + {ui::VKEY_BROWSER_REFRESH, ui::EF_NONE, IDC_RELOAD}, + {ui::VKEY_BROWSER_REFRESH, ui::EF_CONTROL_DOWN, IDC_RELOAD_BYPASSING_CACHE}, + {ui::VKEY_BROWSER_REFRESH, ui::EF_SHIFT_DOWN, IDC_RELOAD_BYPASSING_CACHE}, +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + #if defined(OS_CHROMEOS) + // On Chrome OS, VKEY_BROWSER_SEARCH is handled in Ash. diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc b/devel/electron5/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc new file mode 100644 index 000000000000..c856a398b1ec --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc @@ -0,0 +1,38 @@ +--- chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc +@@ -35,7 +35,7 @@ + #include "ui/wm/core/wm_state.h" + #endif // defined(USE_AURA) + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + #include <sys/stat.h> + #include <sys/types.h> + #include <unistd.h> +@@ -45,7 +45,7 @@ + #include "chrome/grit/generated_resources.h" + #include "content/public/common/content_switches.h" + #include "ui/base/l10n/l10n_util.h" +-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + + ChromeBrowserMainExtraPartsViews::ChromeBrowserMainExtraPartsViews() {} + +@@ -93,7 +93,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit( + } + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + // On the Linux desktop, we want to prevent the user from logging in as root, + // so that we don't destroy the profile. Now that we have some minimal ui + // initialized, check to see if we're running as root and bail if we are. +@@ -124,7 +124,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit( + base::RunLoop().RunUntilIdle(); + + exit(EXIT_FAILURE); +-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + } + + void ChromeBrowserMainExtraPartsViews::PostBrowserStart() { diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_chrome__views__delegate.h b/devel/electron5/files/patch-chrome_browser_ui_views_chrome__views__delegate.h new file mode 100644 index 000000000000..a8e4e59da590 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_views_chrome__views__delegate.h @@ -0,0 +1,11 @@ +--- chrome/browser/ui/views/chrome_views_delegate.h.orig 2019-04-08 08:32:46 UTC ++++ chrome/browser/ui/views/chrome_views_delegate.h +@@ -44,7 +44,7 @@ class ChromeViewsDelegate : public views::ViewsDelegat + HICON GetSmallWindowIcon() const override; + int GetAppbarAutohideEdges(HMONITOR monitor, + const base::Closure& callback) override; +-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#elif (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + gfx::ImageSkia* GetDefaultWindowIcon() const override; + bool WindowManagerProvidesTitleBar(bool maximized) override; + #endif diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_first__run__dialog.cc b/devel/electron5/files/patch-chrome_browser_ui_views_first__run__dialog.cc new file mode 100644 index 000000000000..92a78964d01f --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_views_first__run__dialog.cc @@ -0,0 +1,24 @@ +--- chrome/browser/ui/views/first_run_dialog.cc.orig 2019-04-08 08:18:10 UTC ++++ chrome/browser/ui/views/first_run_dialog.cc +@@ -37,8 +37,10 @@ + namespace { + + void InitCrashReporterIfEnabled(bool enabled) { ++#if !defined(OS_BSD) + if (enabled) + breakpad::InitCrashReporter(std::string()); ++#endif + } + + } // namespace +@@ -111,8 +113,10 @@ views::View* FirstRunDialog::CreateExtraView() { + bool FirstRunDialog::Accept() { + GetWidget()->Hide(); + ++#if !defined(OS_BSD) + ChangeMetricsReportingStateWithReply(report_crashes_->checked(), + base::Bind(&InitCrashReporterIfEnabled)); ++#endif + + if (make_default_->checked()) + shell_integration::SetAsDefaultBrowser(); diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__frame.cc b/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__frame.cc new file mode 100644 index 000000000000..72c1fa8895cd --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__frame.cc @@ -0,0 +1,29 @@ +--- chrome/browser/ui/views/frame/browser_frame.cc.orig 2019-04-08 08:32:47 UTC ++++ chrome/browser/ui/views/frame/browser_frame.cc +@@ -37,7 +37,7 @@ + #include "components/user_manager/user_manager.h" + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "chrome/browser/ui/views/frame/browser_command_handler_linux.h" + #endif + +@@ -48,7 +48,7 @@ + namespace { + + bool IsUsingGtkTheme(Profile* profile) { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + return ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme(); + #else + return false; +@@ -104,7 +104,7 @@ void BrowserFrame::InitBrowserFrame() { + non_client_view()->set_context_menu_controller(this); + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + browser_command_handler_.reset(new BrowserCommandHandlerLinux(browser_view_)); + #endif + } diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc b/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc new file mode 100644 index 000000000000..f4874c577610 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc @@ -0,0 +1,20 @@ +--- chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc.orig 2019-04-08 08:18:10 UTC ++++ chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc +@@ -13,7 +13,7 @@ + #include "chrome/browser/ui/views/frame/glass_browser_frame_view.h" + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + #include "ui/views/linux_ui/linux_ui.h" + #endif + +@@ -32,7 +32,7 @@ OpaqueBrowserFrameView* CreateOpaqueBrowserFrameView( + BrowserView* browser_view) { + #if BUILDFLAG(ENABLE_NATIVE_WINDOW_NAV_BUTTONS) + std::unique_ptr<views::NavButtonProvider> nav_button_provider; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + if (ThemeServiceFactory::GetForProfile(browser_view->browser()->profile()) + ->UsingSystemTheme() && + views::LinuxUI::instance()) { diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__view.cc b/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__view.cc new file mode 100644 index 000000000000..7b35b6bb824a --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__view.cc @@ -0,0 +1,29 @@ +--- chrome/browser/ui/views/frame/browser_view.cc.orig 2019-04-08 08:32:47 UTC ++++ chrome/browser/ui/views/frame/browser_view.cc +@@ -1269,7 +1269,7 @@ void BrowserView::RotatePaneFocus(bool forwards) { + } + + void BrowserView::DestroyBrowser() { +-#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + if (quit_instruction_bubble_controller_) { + GetWidget()->GetNativeView()->RemovePreTargetHandler( + quit_instruction_bubble_controller_.get()); +@@ -2155,7 +2155,7 @@ views::View* BrowserView::CreateOverlayView() { + } + + void BrowserView::OnWidgetDestroying(views::Widget* widget) { +-#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + if (quit_instruction_bubble_controller_) { + GetWidget()->GetNativeView()->RemovePreTargetHandler( + quit_instruction_bubble_controller_.get()); +@@ -2499,7 +2499,7 @@ void BrowserView::InitViews() { + GetWidget()->SetNativeWindowProperty(Profile::kProfileKey, + browser_->profile()); + +-#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + if (browser_->SupportsWindowFeature(Browser::FEATURE_TOOLBAR)) { + quit_instruction_bubble_controller_ = + QuitInstructionBubbleController::GetInstance(); diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__view.h b/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__view.h new file mode 100644 index 000000000000..464a5f05e813 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__view.h @@ -0,0 +1,20 @@ +--- chrome/browser/ui/views/frame/browser_view.h.orig 2019-04-08 08:32:47 UTC ++++ chrome/browser/ui/views/frame/browser_view.h +@@ -50,7 +50,7 @@ + #include "chrome/browser/ui/views/intent_picker_bubble_view.h" + #endif // defined(OS_CHROMEOS) + +-#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + #include "chrome/browser/ui/views/quit_instruction_bubble_controller.h" + #endif + +@@ -853,7 +853,7 @@ class BrowserView : public BrowserWindow, + }; + base::Optional<ResizeSession> interactive_resize_; + +-#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + scoped_refptr<QuitInstructionBubbleController> + quit_instruction_bubble_controller_; + #endif diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc b/devel/electron5/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc new file mode 100644 index 000000000000..8660d7341bb1 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc @@ -0,0 +1,29 @@ +--- chrome/browser/ui/views/frame/opaque_browser_frame_view.cc.orig 2019-04-08 08:32:47 UTC ++++ chrome/browser/ui/views/frame/opaque_browser_frame_view.cc +@@ -49,7 +49,7 @@ + #include "ui/views/window/vector_icons/vector_icons.h" + #include "ui/views/window/window_shape.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "ui/views/controls/menu/menu_runner.h" + #endif + +@@ -356,7 +356,7 @@ void OpaqueBrowserFrameView::ButtonPressed(views::Butt + void OpaqueBrowserFrameView::OnMenuButtonClicked(views::MenuButton* source, + const gfx::Point& point, + const ui::Event* event) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + views::MenuRunner menu_runner(frame()->GetSystemMenuModel(), + views::MenuRunner::HAS_MNEMONICS); + menu_runner.RunMenuAt(browser_view()->GetWidget(), window_icon_, +@@ -480,7 +480,7 @@ bool OpaqueBrowserFrameView::EverHasVisibleBackgroundT + + OpaqueBrowserFrameView::FrameButtonStyle + OpaqueBrowserFrameView::GetFrameButtonStyle() const { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + return FrameButtonStyle::kMdButton; + #else + return FrameButtonStyle::kImageButton; diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc b/devel/electron5/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc new file mode 100644 index 000000000000..b571f7f2611e --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ui/views/frame/opaque_browser_frame_view_platform_specific.cc.orig 2019-04-08 08:32:47 UTC ++++ chrome/browser/ui/views/frame/opaque_browser_frame_view_platform_specific.cc +@@ -10,7 +10,7 @@ bool OpaqueBrowserFrameViewPlatformSpecific::IsUsingSy + return false; + } + +-#if !defined(OS_LINUX) ++#if !defined(OS_LINUX) && !defined(OS_FREEBSD) + + // static + OpaqueBrowserFrameViewPlatformSpecific* diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc b/devel/electron5/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc new file mode 100644 index 000000000000..9d4af9aa9034 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc @@ -0,0 +1,29 @@ +--- chrome/browser/ui/views/frame/system_menu_model_builder.cc.orig 2019-04-08 08:18:10 UTC ++++ chrome/browser/ui/views/frame/system_menu_model_builder.cc +@@ -78,7 +78,7 @@ void SystemMenuModelBuilder::BuildMenu(ui::SimpleMenuM + + void SystemMenuModelBuilder::BuildSystemMenuForBrowserWindow( + ui::SimpleMenuModel* model) { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + model->AddItemWithStringId(IDC_MINIMIZE_WINDOW, IDS_MINIMIZE_WINDOW_MENU); + model->AddItemWithStringId(IDC_MAXIMIZE_WINDOW, IDS_MAXIMIZE_WINDOW_MENU); + model->AddItemWithStringId(IDC_RESTORE_WINDOW, IDS_RESTORE_WINDOW_MENU); +@@ -90,7 +90,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForBrowser + model->AddSeparator(ui::NORMAL_SEPARATOR); + model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER); + } +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + model->AddSeparator(ui::NORMAL_SEPARATOR); + model->AddCheckItemWithStringId(IDC_USE_SYSTEM_TITLE_BAR, + IDS_SHOW_WINDOW_DECORATIONS_MENU); +@@ -126,7 +126,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForAppOrPo + model->AddSeparator(ui::NORMAL_SEPARATOR); + model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER); + } +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + model->AddSeparator(ui::NORMAL_SEPARATOR); + model->AddItemWithStringId(IDC_CLOSE_WINDOW, IDS_CLOSE); + #endif diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc b/devel/electron5/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc new file mode 100644 index 000000000000..4d2303d97053 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc @@ -0,0 +1,20 @@ +--- chrome/browser/ui/views/frame/system_menu_model_delegate.cc.orig 2019-04-08 08:32:47 UTC ++++ chrome/browser/ui/views/frame/system_menu_model_delegate.cc +@@ -15,7 +15,7 @@ + #include "components/sessions/core/tab_restore_service.h" + #include "ui/base/l10n/l10n_util.h" + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + #include "chrome/common/pref_names.h" + #include "components/prefs/pref_service.h" + #endif +@@ -30,7 +30,7 @@ SystemMenuModelDelegate::SystemMenuModelDelegate( + SystemMenuModelDelegate::~SystemMenuModelDelegate() {} + + bool SystemMenuModelDelegate::IsCommandIdChecked(int command_id) const { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + if (command_id == IDC_USE_SYSTEM_TITLE_BAR) { + PrefService* prefs = browser_->profile()->GetPrefs(); + return !prefs->GetBoolean(prefs::kUseCustomChromeFrame); diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_hung__renderer__view.cc b/devel/electron5/files/patch-chrome_browser_ui_views_hung__renderer__view.cc new file mode 100644 index 000000000000..76bd528c6645 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_views_hung__renderer__view.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ui/views/hung_renderer_view.cc.orig 2019-04-08 08:32:47 UTC ++++ chrome/browser/ui/views/hung_renderer_view.cc +@@ -389,7 +389,7 @@ bool HungRendererDialogView::Cancel() { + content::RenderProcessHost* rph = + hung_pages_table_model_->GetRenderWidgetHost()->GetProcess(); + if (rph) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // A generic |CrashDumpHungChildProcess()| is not implemented for Linux. + // Instead we send an explicit IPC to crash on the renderer's IO thread. + rph->ForceCrash(); diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc b/devel/electron5/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc new file mode 100644 index 000000000000..ee80e646a739 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ui/views/tabs/new_tab_button.cc.orig 2019-04-08 08:32:47 UTC ++++ chrome/browser/ui/views/tabs/new_tab_button.cc +@@ -63,7 +63,7 @@ const gfx::Size NewTabButton::kButtonSize{28, 28}; + NewTabButton::NewTabButton(TabStrip* tab_strip, views::ButtonListener* listener) + : views::ImageButton(listener), tab_strip_(tab_strip) { + set_animate_on_state_change(true); +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + set_triggerable_event_flags(triggerable_event_flags() | + ui::EF_MIDDLE_MOUSE_BUTTON); + #endif diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc b/devel/electron5/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc new file mode 100644 index 000000000000..812381b1d73f --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc @@ -0,0 +1,29 @@ +--- chrome/browser/ui/views/tabs/tab_drag_controller.cc.orig 2019-04-08 08:32:47 UTC ++++ chrome/browser/ui/views/tabs/tab_drag_controller.cc +@@ -390,7 +390,7 @@ void TabDragController::Init(TabStrip* source_tabstrip + // synchronous on desktop Linux, so use that. + // - Chrome OS + // Releasing capture on Ash cancels gestures so avoid it. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + can_release_capture_ = false; + #endif + start_point_in_screen_ = gfx::Point(source_tab_offset, mouse_offset.y()); +@@ -814,7 +814,7 @@ TabDragController::DragBrowserToNewTabStrip(TabStrip* + else + target_tabstrip->GetWidget()->SetCapture(attached_tabstrip_); + +-#if !defined(OS_LINUX) ++#if !defined(OS_LINUX) || defined(OS_BSD) + // EndMoveLoop is going to snap the window back to its original location. + // Hide it so users don't see this. Hiding a window in Linux aura causes + // it to lose capture so skip it. +@@ -1953,7 +1953,7 @@ TabDragController::Liveness TabDragController::GetLoca + if (dragged_window) + exclude.insert(dragged_window); + } +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + // Exclude windows which are pending deletion via Browser::TabStripEmpty(). + // These windows can be returned in the Linux Aura port because the browser + // window which was used for dragging is not hidden once all of its tabs are diff --git a/devel/electron5/files/patch-chrome_browser_ui_webui_about__ui.cc b/devel/electron5/files/patch-chrome_browser_ui_webui_about__ui.cc new file mode 100644 index 000000000000..3f6b6245eb2d --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_webui_about__ui.cc @@ -0,0 +1,20 @@ +--- chrome/browser/ui/webui/about_ui.cc.orig 2019-04-08 08:32:47 UTC ++++ chrome/browser/ui/webui/about_ui.cc +@@ -552,7 +552,7 @@ std::string ChromeURLs() { + return html; + } + +-#if defined(OS_LINUX) || defined(OS_OPENBSD) ++#if defined(OS_LINUX) || defined(OS_BSD) + std::string AboutLinuxProxyConfig() { + std::string data; + AppendHeader(&data, 0, +@@ -607,7 +607,7 @@ void AboutUIHTMLSource::StartDataRequest( + .GetRawDataResource(idr) + .as_string(); + } +-#if defined(OS_LINUX) || defined(OS_OPENBSD) ++#if defined(OS_LINUX) || defined(OS_BSD) + } else if (source_name_ == chrome::kChromeUILinuxProxyConfigHost) { + response = AboutLinuxProxyConfig(); + #endif diff --git a/devel/electron5/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc b/devel/electron5/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc new file mode 100644 index 000000000000..595db7ce3c83 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc @@ -0,0 +1,49 @@ +--- chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc.orig 2019-04-08 08:32:47 UTC ++++ chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc +@@ -192,11 +192,11 @@ + #include "chrome/browser/ui/webui/welcome/welcome_win10_ui.h" + #endif + +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + #include "chrome/browser/ui/webui/discards/discards_ui.h" + #endif + +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + #include "chrome/browser/ui/webui/sandbox_internals_ui.h" + #endif + +@@ -314,7 +314,7 @@ bool IsAboutUI(const GURL& url) { + #if !defined(OS_ANDROID) + || url.host_piece() == chrome::kChromeUITermsHost + #endif +-#if defined(OS_LINUX) || defined(OS_OPENBSD) ++#if defined(OS_LINUX) || defined(OS_BSD) + || url.host_piece() == chrome::kChromeUILinuxProxyConfigHost + #endif + #if defined(OS_CHROMEOS) +@@ -588,7 +588,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we + if (url.host_piece() == chrome::kChromeUINaClHost) + return &NewWebUI<NaClUI>; + #endif +-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA) ++#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA) || defined(OS_BSD) + if (url.host_piece() == chrome::kChromeUITabModalConfirmDialogHost) + return &NewWebUI<ConstrainedWebDialogUI>; + #endif +@@ -641,12 +641,12 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we + return &NewWebUI<CastUI>; + } + #endif +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + if (url.host_piece() == chrome::kChromeUISandboxHost) { + return &NewWebUI<SandboxInternalsUI>; + } + #endif +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + if (url.host_piece() == chrome::kChromeUIDiscardsHost) + return &NewWebUI<DiscardsUI>; + #endif diff --git a/devel/electron5/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc b/devel/electron5/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc new file mode 100644 index 000000000000..85e92283de93 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc @@ -0,0 +1,20 @@ +--- chrome/browser/ui/webui/settings/appearance_handler.cc.orig 2019-04-08 08:18:11 UTC ++++ chrome/browser/ui/webui/settings/appearance_handler.cc +@@ -31,7 +31,7 @@ void AppearanceHandler::RegisterMessages() { + "useDefaultTheme", + base::BindRepeating(&AppearanceHandler::HandleUseDefaultTheme, + base::Unretained(this))); +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS) + web_ui()->RegisterMessageCallback( + "useSystemTheme", + base::BindRepeating(&AppearanceHandler::HandleUseSystemTheme, +@@ -59,7 +59,7 @@ void AppearanceHandler::HandleUseDefaultTheme(const ba + ThemeServiceFactory::GetForProfile(profile_)->UseDefaultTheme(); + } + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS) + void AppearanceHandler::HandleUseSystemTheme(const base::ListValue* args) { + if (profile_->IsSupervised()) + NOTREACHED(); diff --git a/devel/electron5/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h b/devel/electron5/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h new file mode 100644 index 000000000000..47488eb445ea --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h @@ -0,0 +1,11 @@ +--- chrome/browser/ui/webui/settings/appearance_handler.h.orig 2019-04-08 08:18:11 UTC ++++ chrome/browser/ui/webui/settings/appearance_handler.h +@@ -36,7 +36,7 @@ class AppearanceHandler : public SettingsPageUIHandler + // Changes the UI theme of the browser to the default theme. + void HandleUseDefaultTheme(const base::ListValue* args); + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + // Changes the UI theme of the browser to the system (GTK+) theme. + void HandleUseSystemTheme(const base::ListValue* args); + #endif diff --git a/devel/electron5/files/patch-chrome_browser_ui_webui_settings_md__settings__localized__strings__provider.cc b/devel/electron5/files/patch-chrome_browser_ui_webui_settings_md__settings__localized__strings__provider.cc new file mode 100644 index 000000000000..a96fbe239384 --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_ui_webui_settings_md__settings__localized__strings__provider.cc @@ -0,0 +1,20 @@ +--- chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc.orig 2019-04-08 08:32:47 UTC ++++ chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc +@@ -513,7 +513,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht + {"enterCustomWebAddress", IDS_SETTINGS_ENTER_CUSTOM_WEB_ADDRESS}, + {"homeButtonDisabled", IDS_SETTINGS_HOME_BUTTON_DISABLED}, + {"themes", IDS_SETTINGS_THEMES}, +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + {"systemTheme", IDS_SETTINGS_SYSTEM_THEME}, + {"useSystemTheme", IDS_SETTINGS_USE_SYSTEM_THEME}, + {"classicTheme", IDS_SETTINGS_CLASSIC_THEME}, +@@ -531,7 +531,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht + {"openWallpaperApp", IDS_SETTINGS_OPEN_WALLPAPER_APP}, + {"setWallpaper", IDS_SETTINGS_SET_WALLPAPER}, + #endif +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + {"showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS}, + #endif + #if defined(OS_MACOSX) diff --git a/devel/electron5/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc b/devel/electron5/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc new file mode 100644 index 000000000000..8f8fb7df6fcd --- /dev/null +++ b/devel/electron5/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc @@ -0,0 +1,11 @@ +--- chrome/browser/web_applications/extensions/web_app_extension_shortcut.cc.orig 2019-04-08 08:32:47 UTC ++++ chrome/browser/web_applications/extensions/web_app_extension_shortcut.cc +@@ -46,7 +46,7 @@ namespace { + #if defined(OS_MACOSX) + const int kDesiredSizes[] = {16, 32, 128, 256, 512}; + const size_t kNumDesiredSizes = base::size(kDesiredSizes); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + // Linux supports icons of any size. FreeDesktop Icon Theme Specification states + // that "Minimally you should install a 48x48 icon in the hicolor theme." + const int kDesiredSizes[] = {16, 32, 48, 128, 256, 512}; diff --git a/devel/electron5/files/patch-chrome_common_BUILD.gn b/devel/electron5/files/patch-chrome_common_BUILD.gn new file mode 100644 index 000000000000..b0d67eb1290b --- /dev/null +++ b/devel/electron5/files/patch-chrome_common_BUILD.gn @@ -0,0 +1,13 @@ +--- chrome/common/BUILD.gn.orig 2019-04-08 08:32:47 UTC ++++ chrome/common/BUILD.gn +@@ -300,6 +300,10 @@ static_library("common") { + public_deps += [ "//ppapi/shared_impl" ] + } + ++ if (is_bsd) { ++ sources -= [ "component_flash_hint_file_linux.cc" ] ++ } ++ + if (enable_extensions) { + sources += [ + "cast_messages.cc", diff --git a/devel/electron5/files/patch-chrome_common_chrome__features.cc b/devel/electron5/files/patch-chrome_common_chrome__features.cc new file mode 100644 index 000000000000..078ec2ae2765 --- /dev/null +++ b/devel/electron5/files/patch-chrome_common_chrome__features.cc @@ -0,0 +1,36 @@ +--- chrome/common/chrome_features.cc.orig 2019-04-08 08:32:47 UTC ++++ chrome/common/chrome_features.cc +@@ -82,13 +82,13 @@ const base::Feature kAutomaticTabDiscarding{"Automatic + base::FEATURE_ENABLED_BY_DEFAULT}; + #endif // defined(OS_WIN) || defined(OS_MACOSX) + +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + // Enables the Restart background mode optimization. When all Chrome UI is + // closed and it goes in the background, allows to restart the browser to + // discard memory. + const base::Feature kBackgroundModeAllowRestart{ + "BackgroundModeAllowRestart", base::FEATURE_DISABLED_BY_DEFAULT}; +-#endif // defined(OS_WIN) || defined(OS_LINUX) ++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + + // Enables or disables whether permission prompts are automatically blocked + // after the user has explicitly dismissed them too many times. +@@ -131,7 +131,7 @@ const base::Feature kThirdPartyModulesBlocking{ + "ThirdPartyModulesBlocking", base::FEATURE_DISABLED_BY_DEFAULT}; + #endif + +-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD) + // Enables the dual certificate verification trial feature. + // https://crbug.com/649026 + const base::Feature kCertDualVerificationTrialFeature{ +@@ -195,7 +195,7 @@ const base::Feature kUsageTimeLimitPolicy{"UsageTimeLi + const base::Feature kDesktopPWAWindowing { + "DesktopPWAWindowing", + #if defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_LINUX) || \ +- defined(OS_MACOSX) ++ defined(OS_MACOSX) || defined(OS_BSD) + base::FEATURE_ENABLED_BY_DEFAULT + #else + base::FEATURE_DISABLED_BY_DEFAULT diff --git a/devel/electron5/files/patch-chrome_common_chrome__features.h b/devel/electron5/files/patch-chrome_common_chrome__features.h new file mode 100644 index 000000000000..46ace3e44432 --- /dev/null +++ b/devel/electron5/files/patch-chrome_common_chrome__features.h @@ -0,0 +1,24 @@ +--- chrome/common/chrome_features.h.orig 2019-04-08 08:32:47 UTC ++++ chrome/common/chrome_features.h +@@ -61,10 +61,10 @@ COMPONENT_EXPORT(CHROME_FEATURES) + extern const base::Feature kAutomaticTabDiscarding; + #endif // defined(OS_WIN) || defined(OS_MACOSX) + +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + COMPONENT_EXPORT(CHROME_FEATURES) + extern const base::Feature kBackgroundModeAllowRestart; +-#endif // defined(OS_WIN) || defined(OS_LINUX) ++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + + COMPONENT_EXPORT(CHROME_FEATURES) + extern const base::Feature kBlockPromptsIfDismissedOften; +@@ -81,7 +81,7 @@ extern const base::Feature kBrowserHangFixesExperiment + COMPONENT_EXPORT(CHROME_FEATURES) + extern const base::Feature kBundledConnectionHelpFeature; + +-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD) + COMPONENT_EXPORT(CHROME_FEATURES) + extern const base::Feature kCertDualVerificationTrialFeature; + #endif diff --git a/devel/electron5/files/patch-chrome_common_chrome__paths.cc b/devel/electron5/files/patch-chrome_common_chrome__paths.cc new file mode 100644 index 000000000000..e8c8b55bbe3f --- /dev/null +++ b/devel/electron5/files/patch-chrome_common_chrome__paths.cc @@ -0,0 +1,114 @@ +--- chrome/common/chrome_paths.cc.orig 2019-04-08 08:18:11 UTC ++++ chrome/common/chrome_paths.cc +@@ -52,21 +52,21 @@ const base::FilePath::CharType kPepperFlashSystemBaseD + FILE_PATH_LITERAL("Internet Plug-Ins/PepperFlashPlayer"); + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // The path to the external extension <id>.json files. + // /usr/share seems like a good choice, see: http://www.pathname.com/fhs/ + const base::FilePath::CharType kFilepathSinglePrefExtensions[] = + #if defined(GOOGLE_CHROME_BUILD) + FILE_PATH_LITERAL("/usr/share/google-chrome/extensions"); + #else +- FILE_PATH_LITERAL("/usr/share/chromium/extensions"); ++ FILE_PATH_LITERAL("/usr/local/share/chromium/extensions"); + #endif // defined(GOOGLE_CHROME_BUILD) + + // The path to the hint file that tells the pepper plugin loader + // where it can find the latest component updated flash. + const base::FilePath::CharType kComponentUpdatedFlashHint[] = + FILE_PATH_LITERAL("latest-component-updated-flash"); +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + #if defined(OS_CHROMEOS) + const base::FilePath::CharType kChromeOSComponentFlash[] = FILE_PATH_LITERAL( +@@ -197,7 +197,7 @@ bool PathProvider(int key, base::FilePath* result) { + return false; + break; + case chrome::DIR_DEFAULT_DOWNLOADS_SAFE: +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + if (!GetUserDownloadsDirectorySafe(&cur)) + return false; + break; +@@ -459,10 +459,12 @@ bool PathProvider(int key, base::FilePath* result) { + if (!base::PathExists(cur)) // We don't want to create this + return false; + break; +-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) + case chrome::DIR_POLICY_FILES: { + #if defined(GOOGLE_CHROME_BUILD) + cur = base::FilePath(FILE_PATH_LITERAL("/etc/opt/chrome/policies")); ++#elif defined(OS_BSD) ++ cur = base::FilePath(FILE_PATH_LITERAL("/usr/local/etc/chrome/policies")); + #else + cur = base::FilePath(FILE_PATH_LITERAL("/etc/chromium/policies")); + #endif +@@ -470,7 +472,7 @@ bool PathProvider(int key, base::FilePath* result) { + } + #endif + #if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD)) || \ +- defined(OS_MACOSX) ++ defined(OS_MACOSX) || defined(OS_BSD) + case chrome::DIR_USER_EXTERNAL_EXTENSIONS: { + if (!base::PathService::Get(chrome::DIR_USER_DATA, &cur)) + return false; +@@ -478,7 +480,7 @@ bool PathProvider(int key, base::FilePath* result) { + break; + } + #endif +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + case chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS: { + cur = base::FilePath(kFilepathSinglePrefExtensions); + break; +@@ -513,7 +515,7 @@ bool PathProvider(int key, base::FilePath* result) { + #endif + break; + +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + case chrome::DIR_NATIVE_MESSAGING: + #if defined(OS_MACOSX) + #if defined(GOOGLE_CHROME_BUILD) +@@ -527,6 +529,9 @@ bool PathProvider(int key, base::FilePath* result) { + #if defined(GOOGLE_CHROME_BUILD) + cur = base::FilePath(FILE_PATH_LITERAL( + "/etc/opt/chrome/native-messaging-hosts")); ++#elif defined(OS_BSD) ++ cur = base::FilePath(FILE_PATH_LITERAL( ++ "/usr/local/etc/chrome/native-messaging-hosts")); + #else + cur = base::FilePath(FILE_PATH_LITERAL( + "/etc/chromium/native-messaging-hosts")); +@@ -539,7 +544,7 @@ bool PathProvider(int key, base::FilePath* result) { + return false; + cur = cur.Append(FILE_PATH_LITERAL("NativeMessagingHosts")); + break; +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + #if !defined(OS_ANDROID) + case chrome::DIR_GLOBAL_GCM_STORE: + if (!base::PathService::Get(chrome::DIR_USER_DATA, &cur)) +@@ -547,7 +552,7 @@ bool PathProvider(int key, base::FilePath* result) { + cur = cur.Append(kGCMStoreDirname); + break; + #endif // !defined(OS_ANDROID) +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + case chrome::FILE_COMPONENT_FLASH_HINT: + if (!base::PathService::Get( + chrome::DIR_COMPONENT_UPDATED_PEPPER_FLASH_PLUGIN, &cur)) { +@@ -555,7 +560,7 @@ bool PathProvider(int key, base::FilePath* result) { + } + cur = cur.Append(kComponentUpdatedFlashHint); + break; +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + #if defined(OS_CHROMEOS) + case chrome::FILE_CHROME_OS_COMPONENT_FLASH: + cur = base::FilePath(kChromeOSComponentFlash); diff --git a/devel/electron5/files/patch-chrome_common_chrome__paths.h b/devel/electron5/files/patch-chrome_common_chrome__paths.h new file mode 100644 index 000000000000..a5fb20ab3d0a --- /dev/null +++ b/devel/electron5/files/patch-chrome_common_chrome__paths.h @@ -0,0 +1,42 @@ +--- chrome/common/chrome_paths.h.orig 2019-04-08 08:18:11 UTC ++++ chrome/common/chrome_paths.h +@@ -51,7 +51,7 @@ enum { + // to set policies for chrome. This directory + // contains subdirectories. + #endif +-#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD)) || \ ++#if defined(OS_CHROMEOS) || ((defined(OS_LINUX) || defined(OS_BSD)) && defined(CHROMIUM_BUILD)) || \ + defined(OS_MACOSX) + DIR_USER_EXTERNAL_EXTENSIONS, // Directory for per-user external extensions + // on Chrome Mac and Chromium Linux. +@@ -60,7 +60,7 @@ enum { + // create it. + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + DIR_STANDALONE_EXTERNAL_EXTENSIONS, // Directory for 'per-extension' + // definition manifest files that + // describe extensions which are to be +@@ -107,7 +107,7 @@ enum { + DIR_SUPERVISED_USER_INSTALLED_WHITELISTS, // Directory where sanitized + // supervised user whitelists are + // installed. +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_MACOSX) + DIR_NATIVE_MESSAGING, // System directory where native messaging host + // manifest files are stored. + DIR_USER_NATIVE_MESSAGING, // Directory with Native Messaging Hosts +@@ -122,10 +122,10 @@ enum { + DIR_GEN_TEST_DATA, // Directory where generated test data resides. + DIR_TEST_DATA, // Directory where unit test data resides. + DIR_TEST_TOOLS, // Directory where unit test tools reside. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + FILE_COMPONENT_FLASH_HINT, // A file in a known location that points to + // the component updated flash plugin. +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + #if defined(OS_CHROMEOS) + FILE_CHROME_OS_COMPONENT_FLASH, // The location of component updated Flash on + // Chrome OS. diff --git a/devel/electron5/files/patch-chrome_common_chrome__paths__internal.h b/devel/electron5/files/patch-chrome_common_chrome__paths__internal.h new file mode 100644 index 000000000000..821109ea8b17 --- /dev/null +++ b/devel/electron5/files/patch-chrome_common_chrome__paths__internal.h @@ -0,0 +1,11 @@ +--- chrome/common/chrome_paths_internal.h.orig 2019-04-08 08:18:11 UTC ++++ chrome/common/chrome_paths_internal.h +@@ -45,7 +45,7 @@ void GetUserCacheDirectory(const base::FilePath& profi + // Get the path to the user's documents directory. + bool GetUserDocumentsDirectory(base::FilePath* result); + +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + // Gets the path to a safe default download directory for a user. + bool GetUserDownloadsDirectorySafe(base::FilePath* result); + #endif diff --git a/devel/electron5/files/patch-chrome_common_chrome__switches.cc b/devel/electron5/files/patch-chrome_common_chrome__switches.cc new file mode 100644 index 000000000000..74ed11ead8cf --- /dev/null +++ b/devel/electron5/files/patch-chrome_common_chrome__switches.cc @@ -0,0 +1,17 @@ +--- chrome/common/chrome_switches.cc.orig 2019-04-08 08:32:47 UTC ++++ chrome/common/chrome_switches.cc +@@ -914,12 +914,12 @@ const char kAllowNaClFileHandleAPI[] = "allow-n + const char kAllowNaClSocketAPI[] = "allow-nacl-socket-api"; + #endif + +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + const char kDisableInputImeAPI[] = "disable-input-ime-api"; + const char kEnableInputImeAPI[] = "enable-input-ime-api"; + #endif + +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + const char kEnableNewAppMenuIcon[] = "enable-new-app-menu-icon"; + #endif + diff --git a/devel/electron5/files/patch-chrome_common_chrome__switches.h b/devel/electron5/files/patch-chrome_common_chrome__switches.h new file mode 100644 index 000000000000..e78e9aab497a --- /dev/null +++ b/devel/electron5/files/patch-chrome_common_chrome__switches.h @@ -0,0 +1,17 @@ +--- chrome/common/chrome_switches.h.orig 2019-04-08 08:32:47 UTC ++++ chrome/common/chrome_switches.h +@@ -282,12 +282,12 @@ extern const char kAllowNaClFileHandleAPI[]; + extern const char kAllowNaClSocketAPI[]; + #endif + +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + extern const char kDisableInputImeAPI[]; + extern const char kEnableInputImeAPI[]; + #endif + +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + extern const char kEnableNewAppMenuIcon[]; + #endif + diff --git a/devel/electron5/files/patch-chrome_common_extensions_api_api__sources.gni b/devel/electron5/files/patch-chrome_common_extensions_api_api__sources.gni new file mode 100644 index 000000000000..c68ca7474cba --- /dev/null +++ b/devel/electron5/files/patch-chrome_common_extensions_api_api__sources.gni @@ -0,0 +1,11 @@ +--- chrome/common/extensions/api/api_sources.gni.orig 2019-04-08 08:32:47 UTC ++++ chrome/common/extensions/api/api_sources.gni +@@ -109,7 +109,7 @@ if (is_chromeos) { + "wallpaper.json", + "wallpaper_private.json", + ] +-} else if (is_linux || is_win) { ++} else if (is_linux || is_bsd || is_win) { + schema_sources_ += [ "input_ime.json" ] + } + diff --git a/devel/electron5/files/patch-chrome_common_extensions_command.cc b/devel/electron5/files/patch-chrome_common_extensions_command.cc new file mode 100644 index 000000000000..32602e7e3bc8 --- /dev/null +++ b/devel/electron5/files/patch-chrome_common_extensions_command.cc @@ -0,0 +1,11 @@ +--- chrome/common/extensions/command.cc.orig 2019-04-08 08:32:47 UTC ++++ chrome/common/extensions/command.cc +@@ -309,7 +309,7 @@ std::string Command::CommandPlatform() { + return values::kKeybindingPlatformMac; + #elif defined(OS_CHROMEOS) + return values::kKeybindingPlatformChromeOs; +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + return values::kKeybindingPlatformLinux; + #else + return ""; diff --git a/devel/electron5/files/patch-chrome_common_features.gni b/devel/electron5/files/patch-chrome_common_features.gni new file mode 100644 index 000000000000..16adb25dd456 --- /dev/null +++ b/devel/electron5/files/patch-chrome_common_features.gni @@ -0,0 +1,14 @@ +--- chrome/common/features.gni.orig 2019-04-08 08:18:13 UTC ++++ chrome/common/features.gni +@@ -41,9 +41,9 @@ declare_args() { + (is_desktop_linux && use_dbus) || is_chromeos + + enable_one_click_signin = +- is_win || is_mac || (is_linux && !is_chromeos && !is_chromecast) ++ is_win || is_mac || is_bsd || (is_linux && !is_chromeos && !is_chromecast) + +- enable_service_discovery = (enable_mdns && !is_android && !is_ios) || is_mac ++ enable_service_discovery = (enable_mdns && !is_android && !is_ios) || is_mac || is_bsd + + # Enables use of the session service, which is enabled by default. + # Android stores them separately on the Java side. diff --git a/devel/electron5/files/patch-chrome_common_pref__names.cc b/devel/electron5/files/patch-chrome_common_pref__names.cc new file mode 100644 index 000000000000..b01aad523d68 --- /dev/null +++ b/devel/electron5/files/patch-chrome_common_pref__names.cc @@ -0,0 +1,29 @@ +--- chrome/common/pref_names.cc.orig 2019-04-08 08:32:47 UTC ++++ chrome/common/pref_names.cc +@@ -946,7 +946,7 @@ const char kForceYouTubeRestrict[] = "settings.force_y + // only using an account that belongs to one of the domains from this pref. + const char kAllowedDomainsForApps[] = "settings.allowed_domains_for_apps"; + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + // Linux specific preference on whether we should match the system theme. + const char kUsesSystemTheme[] = "extensions.theme.use_system"; + #endif +@@ -1038,7 +1038,7 @@ const char kShowUpdatePromotionInfoBar[] = + "browser.show_update_promotion_info_bar"; + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + // Boolean that is false if we should show window manager decorations. If + // true, we draw a custom chrome frame (thicker title bar and blue border). + const char kUseCustomChromeFrame[] = "browser.custom_chrome_frame"; +@@ -1419,7 +1419,7 @@ const char kDownloadDefaultDirectory[] = "download.def + // upgrade a unsafe location to a safe location. + const char kDownloadDirUpgraded[] = "download.directory_upgrade"; + +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + const char kOpenPdfDownloadInSystemReader[] = + "download.open_pdf_in_system_reader"; + #endif diff --git a/devel/electron5/files/patch-chrome_common_pref__names.h b/devel/electron5/files/patch-chrome_common_pref__names.h new file mode 100644 index 000000000000..50b86128a154 --- /dev/null +++ b/devel/electron5/files/patch-chrome_common_pref__names.h @@ -0,0 +1,29 @@ +--- chrome/common/pref_names.h.orig 2019-04-08 08:32:47 UTC ++++ chrome/common/pref_names.h +@@ -300,7 +300,7 @@ extern const char kMdHistoryMenuPromoShown[]; + extern const char kForceGoogleSafeSearch[]; + extern const char kForceYouTubeRestrict[]; + extern const char kAllowedDomainsForApps[]; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + extern const char kUsesSystemTheme[]; + #endif + extern const char kCurrentThemePackFilename[]; +@@ -333,7 +333,7 @@ extern const char kDefaultBrowserSettingEnabled[]; + #if defined(OS_MACOSX) + extern const char kShowUpdatePromotionInfoBar[]; + #endif +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + extern const char kUseCustomChromeFrame[]; + #endif + #if BUILDFLAG(ENABLE_PLUGINS) +@@ -487,7 +487,7 @@ extern const char kAppWindowPlacement[]; + extern const char kDownloadDefaultDirectory[]; + extern const char kDownloadExtensionsToOpen[]; + extern const char kDownloadDirUpgraded[]; +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + extern const char kOpenPdfDownloadInSystemReader[]; + #endif + #if defined(OS_ANDROID) diff --git a/devel/electron5/files/patch-chrome_common_webui__url__constants.cc b/devel/electron5/files/patch-chrome_common_webui__url__constants.cc new file mode 100644 index 000000000000..ccf581cf7c6d --- /dev/null +++ b/devel/electron5/files/patch-chrome_common_webui__url__constants.cc @@ -0,0 +1,41 @@ +--- chrome/common/webui_url_constants.cc.orig 2019-04-08 08:32:47 UTC ++++ chrome/common/webui_url_constants.cc +@@ -246,7 +246,7 @@ const char kChromeUIMetroFlowURL[] = "chrome://make-me + const char kChromeUICastHost[] = "cast"; + #endif + +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + const char kChromeUIDiscardsHost[] = "discards"; + const char kChromeUIDiscardsURL[] = "chrome://discards/"; + const char kChromeUIHatsHost[] = "hats"; +@@ -257,11 +257,11 @@ const char kChromeUIHatsURL[] = "chrome://hats/"; + const char kChromeUILinuxProxyConfigHost[] = "linux-proxy-config"; + #endif + +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + const char kChromeUISandboxHost[] = "sandbox"; + #endif + +-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA) ++#if ((defined(OS_BSD) || defined(OS_LINUX)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA) + const char kChromeUITabModalConfirmDialogHost[] = "tab-modal-confirm-dialog"; + #endif + +@@ -415,13 +415,13 @@ const char* const kChromeHostURLs[] = { + kChromeUIInternetDetailDialogHost, + kChromeUIAssistantOptInHost, + #endif +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + kChromeUIDiscardsHost, + #endif + #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) + kChromeUILinuxProxyConfigHost, + #endif +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + kChromeUISandboxHost, + #endif + #if defined(OS_WIN) diff --git a/devel/electron5/files/patch-chrome_common_webui__url__constants.h b/devel/electron5/files/patch-chrome_common_webui__url__constants.h new file mode 100644 index 000000000000..36026e303feb --- /dev/null +++ b/devel/electron5/files/patch-chrome_common_webui__url__constants.h @@ -0,0 +1,25 @@ +--- chrome/common/webui_url_constants.h.orig 2019-04-08 08:32:47 UTC ++++ chrome/common/webui_url_constants.h +@@ -241,7 +241,7 @@ extern const char kChromeUIMetroFlowURL[]; + extern const char kChromeUICastHost[]; + #endif + +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + extern const char kChromeUIDiscardsHost[]; + extern const char kChromeUIDiscardsURL[]; + extern const char kChromeUIHatsHost[]; +@@ -253,11 +253,11 @@ extern const char kChromeUIHatsURL[]; + extern const char kChromeUILinuxProxyConfigHost[]; + #endif + +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + extern const char kChromeUISandboxHost[]; + #endif + +-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA) ++#if ((defined(OS_BSD) || defined(OS_LINUX)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA) + extern const char kChromeUITabModalConfirmDialogHost[]; + #endif + diff --git a/devel/electron5/files/patch-chrome_renderer_chrome__content__renderer__client.cc b/devel/electron5/files/patch-chrome_renderer_chrome__content__renderer__client.cc new file mode 100644 index 000000000000..c8493486f192 --- /dev/null +++ b/devel/electron5/files/patch-chrome_renderer_chrome__content__renderer__client.cc @@ -0,0 +1,11 @@ +--- chrome/renderer/chrome_content_renderer_client.cc.orig 2019-04-08 08:32:48 UTC ++++ chrome/renderer/chrome_content_renderer_client.cc +@@ -1012,7 +1012,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( + } + + case chrome::mojom::PluginStatus::kRestartRequired: { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + placeholder = create_blocked_plugin( + IDR_BLOCKED_PLUGIN_HTML, + l10n_util::GetStringFUTF16(IDS_PLUGIN_RESTART_REQUIRED, diff --git a/devel/electron5/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc b/devel/electron5/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc new file mode 100644 index 000000000000..c47e0fc0b89d --- /dev/null +++ b/devel/electron5/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc @@ -0,0 +1,29 @@ +--- chrome/renderer/pepper/pepper_flash_font_file_host.cc.orig 2019-04-08 08:18:13 UTC ++++ chrome/renderer/pepper/pepper_flash_font_file_host.cc +@@ -15,7 +15,7 @@ + #include "ppapi/proxy/ppapi_messages.h" + #include "ppapi/proxy/serialized_structs.h" + +-#if defined(OS_LINUX) || defined(OS_OPENBSD) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "components/services/font/public/cpp/font_loader.h" + #include "content/public/common/common_sandbox_support_linux.h" + #elif defined(OS_WIN) +@@ -29,7 +29,7 @@ PepperFlashFontFileHost::PepperFlashFontFileHost( + const ppapi::proxy::SerializedFontDescription& description, + PP_PrivateFontCharset charset) + : ResourceHost(host->GetPpapiHost(), instance, resource) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // The global SkFontConfigInterface is configured and initialized with a + // SkFontconfigInterface compatible font_service::FontLoader in + // RendererBlinkPlatformImpl (called from RenderThreadImpl::Init) at startup +@@ -74,7 +74,7 @@ bool PepperFlashFontFileHost::GetFontData(uint32_t tab + void* buffer, + size_t* length) { + bool result = false; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + if (font_file_.IsValid()) { + result = content::GetFontTable(font_file_.GetPlatformFile(), table, + 0 /* offset */, diff --git a/devel/electron5/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h b/devel/electron5/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h new file mode 100644 index 000000000000..0328e2daacf2 --- /dev/null +++ b/devel/electron5/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h @@ -0,0 +1,20 @@ +--- chrome/renderer/pepper/pepper_flash_font_file_host.h.orig 2019-04-08 08:18:13 UTC ++++ chrome/renderer/pepper/pepper_flash_font_file_host.h +@@ -14,7 +14,7 @@ + #include "ppapi/c/private/pp_private_font_charset.h" + #include "ppapi/host/resource_host.h" + +-#if defined(OS_LINUX) || defined(OS_OPENBSD) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "base/files/file.h" + #elif defined(OS_WIN) + #include "third_party/skia/include/core/SkRefCnt.h" +@@ -50,7 +50,7 @@ class PepperFlashFontFileHost : public ppapi::host::Re + uint32_t table); + bool GetFontData(uint32_t table, void* buffer, size_t* length); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + base::File font_file_; + #elif defined(OS_WIN) + sk_sp<SkTypeface> typeface_; diff --git a/devel/electron5/files/patch-chrome_service_cloud__print_print__system.cc b/devel/electron5/files/patch-chrome_service_cloud__print_print__system.cc new file mode 100644 index 000000000000..8a093d2a3e9f --- /dev/null +++ b/devel/electron5/files/patch-chrome_service_cloud__print_print__system.cc @@ -0,0 +1,11 @@ +--- chrome/service/cloud_print/print_system.cc.orig 2019-04-08 08:18:13 UTC ++++ chrome/service/cloud_print/print_system.cc +@@ -36,7 +36,7 @@ std::string PrintSystem::GenerateProxyId() { + return base::GenerateGUID(); + } + +-#if defined(OS_LINUX) && !defined(USE_CUPS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(USE_CUPS) + scoped_refptr<PrintSystem> PrintSystem::CreateInstance( + const base::DictionaryValue*) { + return nullptr; diff --git a/devel/electron5/files/patch-chrome_test_BUILD.gn b/devel/electron5/files/patch-chrome_test_BUILD.gn new file mode 100644 index 000000000000..e274c4991e92 --- /dev/null +++ b/devel/electron5/files/patch-chrome_test_BUILD.gn @@ -0,0 +1,11 @@ +--- chrome/test/BUILD.gn.orig 2019-04-08 08:32:48 UTC ++++ chrome/test/BUILD.gn +@@ -5232,7 +5232,7 @@ test("chrome_app_unittests") { + "//components/crash/core/common", + "//components/flags_ui:switches", + ] +- if (!is_fuchsia) { ++ if (!is_fuchsia && !is_bsd) { + # TODO(crbug.com/753619): Enable crash reporting on Fuchsia. + deps += [ "//third_party/breakpad:client" ] + } diff --git a/devel/electron5/files/patch-chrome_test_base_in__process__browser__test.cc b/devel/electron5/files/patch-chrome_test_base_in__process__browser__test.cc new file mode 100644 index 000000000000..1da982350dce --- /dev/null +++ b/devel/electron5/files/patch-chrome_test_base_in__process__browser__test.cc @@ -0,0 +1,22 @@ +--- chrome/test/base/in_process_browser_test.cc.orig 2019-04-08 08:32:48 UTC ++++ chrome/test/base/in_process_browser_test.cc +@@ -74,6 +74,10 @@ + #include "chrome/test/base/scoped_bundle_swizzler_mac.h" + #endif + ++#if defined(OS_FREEBSD) ++#include <signal.h> ++#endif ++ + #if defined(OS_WIN) + #include "base/win/scoped_com_initializer.h" + #include "base/win/windows_version.h" +@@ -102,7 +106,7 @@ + #include "ui/events/test/event_generator.h" + #endif // defined(OS_CHROMEOS) + +-#if !defined(OS_CHROMEOS) && defined(OS_LINUX) ++#if !defined(OS_CHROMEOS) && (defined(OS_LINUX) || defined(OS_BSD)) + #include "ui/views/test/test_desktop_screen_x11.h" + #endif + diff --git a/devel/electron5/files/patch-chrome_test_base_testing__browser__process.h b/devel/electron5/files/patch-chrome_test_base_testing__browser__process.h new file mode 100644 index 000000000000..cf26fd2d13d0 --- /dev/null +++ b/devel/electron5/files/patch-chrome_test_base_testing__browser__process.h @@ -0,0 +1,13 @@ +--- chrome/test/base/testing_browser_process.h.orig 2019-04-08 08:18:13 UTC ++++ chrome/test/base/testing_browser_process.h +@@ -119,8 +119,8 @@ class TestingBrowserProcess : public BrowserProcess { + DownloadStatusUpdater* download_status_updater() override; + DownloadRequestLimiter* download_request_limiter() override; + +-#if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) +- void StartAutoupdateTimer() override {} ++#if (defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FREEBSD)) && !defined(OS_CHROMEOS) ++ void StartAutoupdateTimer() /*override*/ {} + #endif + + net_log::ChromeNetLog* net_log() override; diff --git a/devel/electron5/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc b/devel/electron5/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc new file mode 100644 index 000000000000..4a98c9aca81b --- /dev/null +++ b/devel/electron5/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc @@ -0,0 +1,20 @@ +--- chrome/test/chromedriver/chrome/chrome_finder.cc.orig 2019-04-08 08:18:13 UTC ++++ chrome/test/chromedriver/chrome/chrome_finder.cc +@@ -48,7 +48,7 @@ void GetApplicationDirs(std::vector<base::FilePath>* l + installation_locations[i].Append(L"Chromium\\Application")); + } + } +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + void GetApplicationDirs(std::vector<base::FilePath>* locations) { + // TODO: Respect users' PATH variables. + // Until then, we use an approximation of the most common defaults. +@@ -135,7 +135,7 @@ bool FindChrome(base::FilePath* browser_exe) { + #elif defined(OS_MACOSX) + base::FilePath("Google Chrome.app/Contents/MacOS/Google Chrome"), + base::FilePath("Chromium.app/Contents/MacOS/Chromium") +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + base::FilePath("google-chrome"), + base::FilePath("chrome"), + base::FilePath("chromium"), diff --git a/devel/electron5/files/patch-chromecast_browser_cast__browser__main__parts.cc b/devel/electron5/files/patch-chromecast_browser_cast__browser__main__parts.cc new file mode 100644 index 000000000000..bcc1898f31c9 --- /dev/null +++ b/devel/electron5/files/patch-chromecast_browser_cast__browser__main__parts.cc @@ -0,0 +1,29 @@ +--- chromecast/browser/cast_browser_main_parts.cc.orig 2019-04-08 08:32:48 UTC ++++ chromecast/browser/cast_browser_main_parts.cc +@@ -66,7 +66,7 @@ + #include "ui/compositor/compositor_switches.h" + #include "ui/gl/gl_switches.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <fontconfig/fontconfig.h> + #include <signal.h> + #include <sys/prctl.h> +@@ -244,7 +244,7 @@ const DefaultCommandLineSwitch kDefaultSwitches[] = { + {cc::switches::kDisableThreadedAnimation, ""}, + #endif // defined(OS_ANDROID) + #endif // BUILDFLAG(IS_CAST_AUDIO_ONLY) +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #if defined(ARCH_CPU_X86_FAMILY) + // This is needed for now to enable the x11 Ozone platform to work with + // current Linux/NVidia OpenGL drivers. +@@ -393,7 +393,7 @@ void CastBrowserMainParts::PostMainMessageLoopStart() + } + + void CastBrowserMainParts::ToolkitInitialized() { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Without this call, the FontConfig library gets implicitly initialized + // on the first call to FontConfig. Since it's not safe to initialize it + // concurrently from multiple threads, we explicitly initialize it here diff --git a/devel/electron5/files/patch-chromecast_browser_cast__content__browser__client.cc b/devel/electron5/files/patch-chromecast_browser_cast__content__browser__client.cc new file mode 100644 index 000000000000..c2463460ce64 --- /dev/null +++ b/devel/electron5/files/patch-chromecast_browser_cast__content__browser__client.cc @@ -0,0 +1,11 @@ +--- chromecast/browser/cast_content_browser_client.cc.orig 2019-04-08 08:32:48 UTC ++++ chromecast/browser/cast_content_browser_client.cc +@@ -524,7 +524,7 @@ void CastContentBrowserClient::AppendExtraCommandLineS + switches::kAudioOutputChannels)); + } + } else if (process_type == switches::kGpuProcess) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Necessary for accelerated 2d canvas. By default on Linux, Chromium assumes + // GLES2 contexts can be lost to a power-save mode, which breaks GPU canvas + // apps. diff --git a/devel/electron5/files/patch-chromecast_browser_tts_tts__controller__impl.cc b/devel/electron5/files/patch-chromecast_browser_tts_tts__controller__impl.cc new file mode 100644 index 000000000000..2577edc60b08 --- /dev/null +++ b/devel/electron5/files/patch-chromecast_browser_tts_tts__controller__impl.cc @@ -0,0 +1,14 @@ +--- chromecast/browser/tts/tts_controller_impl.cc.orig 2019-04-08 08:18:16 UTC ++++ chromecast/browser/tts/tts_controller_impl.cc +@@ -390,7 +390,11 @@ int TtsControllerImpl::QueueSize() { + } + + TtsPlatformImpl* TtsControllerImpl::GetPlatformImpl() { ++#if defined(OS_BSD) ++ return NULL; ++#else + return platform_impl_.get(); ++#endif // defined(OS_BSD) + } + + std::string TtsControllerImpl::GetApplicationLocale() const { diff --git a/devel/electron5/files/patch-chromecast_media_cma_backend_media__pipeline__backend__for__mixer.cc b/devel/electron5/files/patch-chromecast_media_cma_backend_media__pipeline__backend__for__mixer.cc new file mode 100644 index 000000000000..523c884e0063 --- /dev/null +++ b/devel/electron5/files/patch-chromecast_media_cma_backend_media__pipeline__backend__for__mixer.cc @@ -0,0 +1,23 @@ +--- chromecast/media/cma/backend/media_pipeline_backend_for_mixer.cc.orig 2019-04-08 08:32:48 UTC ++++ chromecast/media/cma/backend/media_pipeline_backend_for_mixer.cc +@@ -14,9 +14,9 @@ + #include "chromecast/media/cma/backend/av_sync.h" + #include "chromecast/media/cma/backend/video_decoder_for_mixer.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "chromecast/media/cma/backend/audio_buildflags.h" +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + #if defined(OS_FUCHSIA) + #include <zircon/syscalls.h> +@@ -226,7 +226,7 @@ MediaPipelineBackendForMixer::GetTaskRunner() const { + return static_cast<TaskRunnerImpl*>(params_.task_runner)->runner(); + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + int64_t MediaPipelineBackendForMixer::MonotonicClockNow() const { + timespec now = {0, 0}; + #if BUILDFLAG(MEDIA_CLOCK_MONOTONIC_RAW) diff --git a/devel/electron5/files/patch-components_autofill__strings.grdp b/devel/electron5/files/patch-components_autofill__strings.grdp new file mode 100644 index 000000000000..36a088d484e5 --- /dev/null +++ b/devel/electron5/files/patch-components_autofill__strings.grdp @@ -0,0 +1,11 @@ +--- components/autofill_strings.grdp.orig 2019-04-08 08:32:49 UTC ++++ components/autofill_strings.grdp +@@ -217,7 +217,7 @@ + <message name="IDS_AUTOFILL_NAME_FIX_FLOW_PROMPT_SAVE_CARD" desc="Text to show for the Autofill save credit card prompt card holder name fix flow button." formatter_data="android_java"> + Save card + </message> +- <if expr="is_linux and not chromeos"> ++ <if expr="is_posix and not chromeos"> + <then> + <message name="IDS_AUTOFILL_SAVE_CARD_PROMPT_TITLE_TO_CLOUD" desc="Title text for the Autofill save card prompt when the card is to be saved by uploading it to Google Payments and also saved locally. The prompt can be either a bubble or an infobar."> + Do you want to save this card to your Google Account? diff --git a/devel/electron5/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc b/devel/electron5/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc new file mode 100644 index 000000000000..e0c8c931fee6 --- /dev/null +++ b/devel/electron5/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc @@ -0,0 +1,14 @@ +--- components/autofill/content/renderer/password_form_conversion_utils.cc.orig 2019-04-08 08:32:49 UTC ++++ components/autofill/content/renderer/password_form_conversion_utils.cc +@@ -37,7 +37,11 @@ + #include "third_party/blink/public/web/web_form_control_element.h" + #include "third_party/blink/public/web/web_input_element.h" + #include "third_party/blink/public/web/web_local_frame.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + #include "url/gurl.h" + + using blink::WebFormControlElement; diff --git a/devel/electron5/files/patch-components_autofill_core_browser_autofill__experiments.cc b/devel/electron5/files/patch-components_autofill_core_browser_autofill__experiments.cc new file mode 100644 index 000000000000..10af17286e6b --- /dev/null +++ b/devel/electron5/files/patch-components_autofill_core_browser_autofill__experiments.cc @@ -0,0 +1,46 @@ +--- components/autofill/core/browser/autofill_experiments.cc.orig 2019-04-08 08:32:49 UTC ++++ components/autofill/core/browser/autofill_experiments.cc +@@ -28,7 +28,7 @@ + + namespace autofill { + +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + const base::Feature kAutofillDropdownLayoutExperiment{ + "AutofillDropdownLayout", base::FEATURE_DISABLED_BY_DEFAULT}; + const char kAutofillDropdownLayoutParameterName[] = "variant"; +@@ -36,7 +36,7 @@ const char kAutofillDropdownLayoutParameterLeadingIcon + const char kAutofillDropdownLayoutParameterTrailingIcon[] = "trailing-icon"; + const char kAutofillDropdownLayoutParameterTwoLinesLeadingIcon[] = + "two-lines-leading-icon"; +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + + bool IsCreditCardUploadEnabled(const PrefService* pref_service, + const syncer::SyncService* sync_service, +@@ -143,7 +143,7 @@ bool IsAutofillNoLocalSaveOnUploadSuccessExperimentEna + } + + bool OfferStoreUnmaskedCards(bool is_off_the_record) { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + // The checkbox can be forced on with a flag, but by default we don't store + // on Linux due to lack of system keychain integration. See crbug.com/162735 + return base::CommandLine::ForCurrentProcess()->HasSwitch( +@@ -181,7 +181,7 @@ bool ShouldUseActiveSignedInAccount() { + features::kAutofillGetPaymentsIdentityFromSync); + } + +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + ForcedPopupLayoutState GetForcedPopupLayoutState() { + if (!base::FeatureList::IsEnabled( + autofill::kAutofillDropdownLayoutExperiment)) +@@ -205,6 +205,6 @@ ForcedPopupLayoutState GetForcedPopupLayoutState() { + NOTREACHED(); + return ForcedPopupLayoutState::kDefault; + } +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + + } // namespace autofill diff --git a/devel/electron5/files/patch-components_autofill_core_browser_autofill__experiments.h b/devel/electron5/files/patch-components_autofill_core_browser_autofill__experiments.h new file mode 100644 index 000000000000..ca1fe8f433cc --- /dev/null +++ b/devel/electron5/files/patch-components_autofill_core_browser_autofill__experiments.h @@ -0,0 +1,36 @@ +--- components/autofill/core/browser/autofill_experiments.h.orig 2019-04-08 08:32:49 UTC ++++ components/autofill/core/browser/autofill_experiments.h +@@ -23,13 +23,13 @@ class SyncService; + namespace autofill { + + // Parameterized Features (grouped with parameter name and options) +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + extern const base::Feature kAutofillDropdownLayoutExperiment; + extern const char kAutofillDropdownLayoutParameterName[]; + extern const char kAutofillDropdownLayoutParameterLeadingIcon[]; + extern const char kAutofillDropdownLayoutParameterTrailingIcon[]; + extern const char kAutofillDropdownLayoutParameterTwoLinesLeadingIcon[]; +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + + // Returns true if uploading credit cards to Wallet servers is enabled. This + // requires the appropriate flags and user settings to be true and the user to +@@ -59,7 +59,7 @@ bool OfferStoreUnmaskedCards(bool is_off_the_record); + // Returns whether the account of the active signed-in user should be used. + bool ShouldUseActiveSignedInAccount(); + +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + enum class ForcedPopupLayoutState { + kDefault, // No popup layout forced by experiment. + kLeadingIcon, // Experiment forces leading (left in LTR) icon layout. +@@ -73,7 +73,7 @@ enum class ForcedPopupLayoutState { + // if the experiment param matches kAutofillDropdownLayoutParameterLeadingIcon + // or kAutofillDropdownLayoutParameterTrailingIcon, respectively. + ForcedPopupLayoutState GetForcedPopupLayoutState(); +-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + + } // namespace autofill + diff --git a/devel/electron5/files/patch-components_autofill_core_common_autofill__util.cc b/devel/electron5/files/patch-components_autofill_core_common_autofill__util.cc new file mode 100644 index 000000000000..3b152c50b763 --- /dev/null +++ b/devel/electron5/files/patch-components_autofill_core_common_autofill__util.cc @@ -0,0 +1,11 @@ +--- components/autofill/core/common/autofill_util.cc.orig 2019-04-08 08:32:49 UTC ++++ components/autofill/core/common/autofill_util.cc +@@ -203,7 +203,7 @@ bool SanitizedFieldIsEmpty(const base::string16& value + } + + bool ShouldAutoselectFirstSuggestionOnArrowDown() { +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + return true; + #else + return false; diff --git a/devel/electron5/files/patch-components_content__settings_core_browser_website__settings__registry.cc b/devel/electron5/files/patch-components_content__settings_core_browser_website__settings__registry.cc new file mode 100644 index 000000000000..5d3b51f38b4f --- /dev/null +++ b/devel/electron5/files/patch-components_content__settings_core_browser_website__settings__registry.cc @@ -0,0 +1,11 @@ +--- components/content_settings/core/browser/website_settings_registry.cc.orig 2019-04-08 08:32:49 UTC ++++ components/content_settings/core/browser/website_settings_registry.cc +@@ -66,7 +66,7 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Re + #if defined(OS_WIN) + if (!(platform & PLATFORM_WINDOWS)) + return nullptr; +-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#elif (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + if (!(platform & PLATFORM_LINUX)) + return nullptr; + #elif defined(OS_MACOSX) && !defined(OS_IOS) diff --git a/devel/electron5/files/patch-components_cookie__config_cookie__store__util.cc b/devel/electron5/files/patch-components_cookie__config_cookie__store__util.cc new file mode 100644 index 000000000000..26459aa2acfb --- /dev/null +++ b/devel/electron5/files/patch-components_cookie__config_cookie__store__util.cc @@ -0,0 +1,24 @@ +--- components/cookie_config/cookie_store_util.cc.orig 2019-04-08 08:18:17 UTC ++++ components/cookie_config/cookie_store_util.cc +@@ -11,7 +11,7 @@ + + namespace cookie_config { + +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + namespace { + + // Use the operating system's mechanisms to encrypt cookies before writing +@@ -63,10 +63,10 @@ base::LazyInstance<CookieOSCryptoDelegate>::Destructor + net::CookieCryptoDelegate* GetCookieCryptoDelegate() { + return g_cookie_crypto_delegate.Pointer(); + } +-#else // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#else // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + net::CookieCryptoDelegate* GetCookieCryptoDelegate() { + return NULL; + } +-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + + } // namespace cookie_config diff --git a/devel/electron5/files/patch-components_crash_content_app_BUILD.gn b/devel/electron5/files/patch-components_crash_content_app_BUILD.gn new file mode 100644 index 000000000000..be52fea0e98a --- /dev/null +++ b/devel/electron5/files/patch-components_crash_content_app_BUILD.gn @@ -0,0 +1,29 @@ +--- components/crash/content/app/BUILD.gn.orig 2019-04-08 08:32:49 UTC ++++ components/crash/content/app/BUILD.gn +@@ -36,12 +36,12 @@ static_library("app") { + sources += [ "crashpad.cc" ] + } + +- if (is_android || (is_linux && !is_chromeos)) { ++ if (is_android || (is_linux && !is_chromeos && !is_bsd)) { + set_sources_assignment_filter([]) + sources += [ "crashpad_linux.cc" ] + } + +- if (is_linux) { ++ if (is_linux && !is_bsd) { + sources += [ + "breakpad_linux.cc", + "breakpad_linux.h", +@@ -79,7 +79,10 @@ static_library("app") { + "//third_party/crashpad/crashpad/snapshot", + ] + +- if (is_linux) { ++ if (is_bsd) { ++ deps -= [ "//third_party/crashpad/crashpad/snapshot" ] ++ } ++ if (is_linux && !is_bsd) { + deps += [ "//third_party/breakpad:client" ] + } + } diff --git a/devel/electron5/files/patch-components_crash_content_app_crashpad.cc b/devel/electron5/files/patch-components_crash_content_app_crashpad.cc new file mode 100644 index 000000000000..fcbf710f39a5 --- /dev/null +++ b/devel/electron5/files/patch-components_crash_content_app_crashpad.cc @@ -0,0 +1,43 @@ +--- components/crash/content/app/crashpad.cc.orig 2019-04-08 08:32:49 UTC ++++ components/crash/content/app/crashpad.cc +@@ -102,6 +102,12 @@ void InitializeCrashpadImpl(bool initial_client, + const base::FilePath& exe_path, + const std::vector<std::string>& initial_arguments, + bool embedded_handler) { ++ ++#if defined(OS_BSD) ++ NOTIMPLEMENTED(); ++ return; ++#endif ++ + static bool initialized = false; + DCHECK(!initialized); + initialized = true; +@@ -122,7 +128,7 @@ void InitializeCrashpadImpl(bool initial_client, + DCHECK(browser_process || process_type == "Chrome Installer" || + process_type == "notification-helper" || + process_type == "GCPW Installer" || process_type == "GCPW DLL"); +-#elif defined(OS_LINUX) || defined(OS_ANDROID) ++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + DCHECK(browser_process); + #else + #error Port. +@@ -187,7 +193,7 @@ void InitializeCrashpadImpl(bool initial_client, + // other "main, first process" to initialize things. There is no "relauncher" + // on Windows, so this is synonymous with initial_client. + const bool should_initialize_database_and_set_upload_policy = initial_client; +-#elif defined(OS_LINUX) || defined(OS_ANDROID) ++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + const bool should_initialize_database_and_set_upload_policy = browser_process; + #endif + if (should_initialize_database_and_set_upload_policy) { +@@ -267,7 +273,9 @@ bool GetUploadsEnabled() { + + #if !defined(OS_ANDROID) + void DumpWithoutCrashing() { ++#if !defined(OS_BSD) + CRASHPAD_SIMULATE_CRASH(); ++#endif + } + #endif + diff --git a/devel/electron5/files/patch-components_crash_content_browser_BUILD.gn b/devel/electron5/files/patch-components_crash_content_browser_BUILD.gn new file mode 100644 index 000000000000..81ac98290989 --- /dev/null +++ b/devel/electron5/files/patch-components_crash_content_browser_BUILD.gn @@ -0,0 +1,27 @@ +--- components/crash/content/browser/BUILD.gn.orig 2019-04-08 08:18:17 UTC ++++ components/crash/content/browser/BUILD.gn +@@ -28,7 +28,7 @@ source_set("browser") { + "//content/public/common", + ] + +- if (is_linux || is_android) { ++ if ((is_linux && !is_bsd) || is_android) { + set_sources_assignment_filter([]) + + # Want this file on both Linux and Android. +@@ -42,13 +42,13 @@ source_set("browser") { + deps += [ "//third_party/crashpad/crashpad/client" ] + } + +- if (!is_android) { ++ if (!is_android && !is_bsd) { + deps += [ "//third_party/breakpad:client" ] + } + + # This is not in the GYP build but this target includes breakpad client + # headers, so add the dependency here. +- if ((is_posix && !is_ios) || is_fuchsia) { ++ if ((is_posix && !is_ios && !is_bsd) || is_fuchsia) { + configs += [ "//third_party/breakpad:client_config" ] + public_configs = [ "//third_party/breakpad:client_config" ] + } diff --git a/devel/electron5/files/patch-components_crash_core_common_BUILD.gn b/devel/electron5/files/patch-components_crash_core_common_BUILD.gn new file mode 100644 index 000000000000..8c1dd6dfd748 --- /dev/null +++ b/devel/electron5/files/patch-components_crash_core_common_BUILD.gn @@ -0,0 +1,28 @@ +--- components/crash/core/common/BUILD.gn.orig 2019-04-08 08:32:49 UTC ++++ components/crash/core/common/BUILD.gn +@@ -6,7 +6,7 @@ import("//build/buildflag_header.gni") + + declare_args() { + # If set to true, this will stub out and disable the entire crash key system. +- use_crash_key_stubs = is_fuchsia ++ use_crash_key_stubs = is_fuchsia || is_bsd + } + + group("common") { +@@ -89,7 +89,6 @@ target(crash_key_target_type, "crash_key") { + ] + } + +- deps += [ "//third_party/breakpad:client" ] + } + } + +@@ -144,7 +143,7 @@ source_set("unit_tests") { + sources += [ "objc_zombie_unittest.mm" ] + } + +- if (!is_mac && !is_win && !is_fuchsia && !is_android) { ++ if (!is_mac && !is_win && !is_fuchsia && !is_android && !is_bsd) { + include_dirs = [ "//third_party/breakpad/breakpad/src/" ] + sources += [ "crash_key_breakpad_unittest.cc" ] + } diff --git a/devel/electron5/files/patch-components_download_internal_common_base__file.cc b/devel/electron5/files/patch-components_download_internal_common_base__file.cc new file mode 100644 index 000000000000..74d8f60684a4 --- /dev/null +++ b/devel/electron5/files/patch-components_download_internal_common_base__file.cc @@ -0,0 +1,11 @@ +--- components/download/internal/common/base_file.cc.orig 2019-04-08 08:32:49 UTC ++++ components/download/internal/common/base_file.cc +@@ -446,7 +446,7 @@ DownloadInterruptReason BaseFile::LogInterruptReason( + return reason; + } + +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + + namespace { + diff --git a/devel/electron5/files/patch-components_download_quarantine_quarantine__linux.cc b/devel/electron5/files/patch-components_download_quarantine_quarantine__linux.cc new file mode 100644 index 000000000000..f9acd2f5a69a --- /dev/null +++ b/devel/electron5/files/patch-components_download_quarantine_quarantine__linux.cc @@ -0,0 +1,36 @@ +--- components/download/quarantine/quarantine_linux.cc.orig 2019-04-08 08:32:49 UTC ++++ components/download/quarantine/quarantine_linux.cc +@@ -2,11 +2,15 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + ++#include "build/build_config.h" ++ + #include "components/download/quarantine/quarantine.h" + + #include <stddef.h> + #include <sys/types.h> ++#if !defined(OS_BSD) + #include <sys/xattr.h> ++#endif + + #include "base/files/file_path.h" + #include "base/logging.h" +@@ -25,7 +29,7 @@ bool SetExtendedFileAttribute(const char* path, + int flags) { + // On Chrome OS, there is no component that can validate these extended + // attributes so there is no need to set them. +-#if !defined(OS_CHROMEOS) ++#if !defined(OS_CHROMEOS) && !defined(OS_BSD) + base::ScopedBlockingCall scoped_blocking_call(base::BlockingType::MAY_BLOCK); + int result = setxattr(path, name, value, value_size, flags); + if (result) { +@@ -33,7 +37,7 @@ bool SetExtendedFileAttribute(const char* path, + << path; + return false; + } +-#endif // !defined(OS_CHROMEOS) ++#endif // !defined(OS_CHROMEOS) && !defined(OS_BSD) + return true; + } + diff --git a/devel/electron5/files/patch-components_download_quarantine_test__support__linux.cc b/devel/electron5/files/patch-components_download_quarantine_test__support__linux.cc new file mode 100644 index 000000000000..762ae5d740cf --- /dev/null +++ b/devel/electron5/files/patch-components_download_quarantine_test__support__linux.cc @@ -0,0 +1,20 @@ +--- components/download/quarantine/test_support_linux.cc.orig 2019-04-08 08:32:49 UTC ++++ components/download/quarantine/test_support_linux.cc +@@ -21,6 +21,7 @@ namespace download { + namespace { + + std::string GetExtendedFileAttribute(const char* path, const char* name) { ++#if !defined(OS_BSD) + base::ScopedBlockingCall scoped_blocking_call(base::BlockingType::MAY_BLOCK); + ssize_t len = getxattr(path, name, nullptr, 0); + if (len <= 0) +@@ -31,6 +32,9 @@ std::string GetExtendedFileAttribute(const char* path, + if (len < static_cast<ssize_t>(buffer.size())) + return std::string(); + return std::string(buffer.begin(), buffer.end()); ++#else ++ return std::string(); ++#endif // !defined(OS_BSD) + } + + } // namespace diff --git a/devel/electron5/files/patch-components_feature__engagement_public_event__constants.cc b/devel/electron5/files/patch-components_feature__engagement_public_event__constants.cc new file mode 100644 index 000000000000..29bdef914db1 --- /dev/null +++ b/devel/electron5/files/patch-components_feature__engagement_public_event__constants.cc @@ -0,0 +1,14 @@ +--- components/feature_engagement/public/event_constants.cc.orig 2019-04-08 08:18:17 UTC ++++ components/feature_engagement/public/event_constants.cc +@@ -26,9 +26,9 @@ const char kReopenTabConditionsMet[] = "reopen_tab_con + const char kTabReopened[] = "tab_reopened"; + #endif // BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP) + +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD) + const char kNewTabOpened[] = "new_tab_opened"; +-#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) ++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD) + + #if defined(OS_IOS) + const char kChromeOpened[] = "chrome_opened"; diff --git a/devel/electron5/files/patch-components_feature__engagement_public_event__constants.h b/devel/electron5/files/patch-components_feature__engagement_public_event__constants.h new file mode 100644 index 000000000000..de0c6fd03309 --- /dev/null +++ b/devel/electron5/files/patch-components_feature__engagement_public_event__constants.h @@ -0,0 +1,20 @@ +--- components/feature_engagement/public/event_constants.h.orig 2019-04-08 08:18:17 UTC ++++ components/feature_engagement/public/event_constants.h +@@ -49,7 +49,7 @@ extern const char kReopenTabConditionsMet[]; + extern const char kTabReopened[]; + #endif // BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP) + +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD) + // This event is included in the deferred onboarding events for the New Tab + // described above, but it is also used on iOS, so it must be compiled + // separately. +@@ -57,7 +57,7 @@ extern const char kTabReopened[]; + // The user has explicitly opened a new tab via an entry point from inside of + // Chrome. + extern const char kNewTabOpened[]; +-#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) ++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD) + + #if defined(OS_IOS) + // The user has opened Chrome (cold start or from background). diff --git a/devel/electron5/files/patch-components_feedback_anonymizer__tool.cc b/devel/electron5/files/patch-components_feedback_anonymizer__tool.cc new file mode 100644 index 000000000000..f0b9a2ca259c --- /dev/null +++ b/devel/electron5/files/patch-components_feedback_anonymizer__tool.cc @@ -0,0 +1,14 @@ +--- components/feedback/anonymizer_tool.cc.orig 2019-04-08 08:32:49 UTC ++++ components/feedback/anonymizer_tool.cc +@@ -13,7 +13,11 @@ + #include "base/strings/stringprintf.h" + #include "content/public/browser/browser_thread.h" + #include "net/base/ip_address.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + + using re2::RE2; + diff --git a/devel/electron5/files/patch-components_flags__ui_flags__state.cc b/devel/electron5/files/patch-components_flags__ui_flags__state.cc new file mode 100644 index 000000000000..2b8b92ba87ec --- /dev/null +++ b/devel/electron5/files/patch-components_flags__ui_flags__state.cc @@ -0,0 +1,11 @@ +--- components/flags_ui/flags_state.cc.orig 2019-04-08 08:32:49 UTC ++++ components/flags_ui/flags_state.cc +@@ -618,7 +618,7 @@ int FlagsState::GetCurrentPlatform() { + return kOsWin; + #elif defined(OS_CHROMEOS) // Needs to be before the OS_LINUX check. + return kOsCrOS; +-#elif defined(OS_LINUX) || defined(OS_OPENBSD) ++#elif defined(OS_LINUX) || defined(OS_OPENBSD) || defined(OS_FREEBSD) + return kOsLinux; + #elif defined(OS_ANDROID) + return kOsAndroid; diff --git a/devel/electron5/files/patch-components_gcm__driver_gcm__client.h b/devel/electron5/files/patch-components_gcm__driver_gcm__client.h new file mode 100644 index 000000000000..136366e9880d --- /dev/null +++ b/devel/electron5/files/patch-components_gcm__driver_gcm__client.h @@ -0,0 +1,10 @@ +--- components/gcm_driver/gcm_client.h.orig 2019-04-08 08:32:49 UTC ++++ components/gcm_driver/gcm_client.h +@@ -85,6 +85,7 @@ class GCMClient { + PLATFORM_CROS, + PLATFORM_IOS, + PLATFORM_ANDROID, ++ PLATFORM_BSD, + PLATFORM_UNSPECIFIED + }; + diff --git a/devel/electron5/files/patch-components_gcm__driver_gcm__client__impl.cc b/devel/electron5/files/patch-components_gcm__driver_gcm__client__impl.cc new file mode 100644 index 000000000000..38e672ed5cb6 --- /dev/null +++ b/devel/electron5/files/patch-components_gcm__driver_gcm__client__impl.cc @@ -0,0 +1,12 @@ +--- components/gcm_driver/gcm_client_impl.cc.orig 2019-04-08 08:18:17 UTC ++++ components/gcm_driver/gcm_client_impl.cc +@@ -150,6 +150,9 @@ void ToCheckinProtoVersion( + case GCMClient::PLATFORM_CROS: + platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_CROS; + break; ++ case GCMClient::PLATFORM_BSD: ++ platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_LINUX; ++ break; + case GCMClient::PLATFORM_UNSPECIFIED: + // For unknown platform, return as LINUX. + platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_LINUX; diff --git a/devel/electron5/files/patch-components_keyed__service_core_dependency__graph__unittest.cc b/devel/electron5/files/patch-components_keyed__service_core_dependency__graph__unittest.cc new file mode 100644 index 000000000000..051e2918ce3a --- /dev/null +++ b/devel/electron5/files/patch-components_keyed__service_core_dependency__graph__unittest.cc @@ -0,0 +1,14 @@ +--- components/keyed_service/core/dependency_graph_unittest.cc.orig 2019-04-08 08:18:17 UTC ++++ components/keyed_service/core/dependency_graph_unittest.cc +@@ -9,7 +9,11 @@ + #include "components/keyed_service/core/dependency_graph.h" + #include "components/keyed_service/core/dependency_node.h" + #include "testing/gtest/include/gtest/gtest.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + + namespace { + diff --git a/devel/electron5/files/patch-components_metrics_BUILD.gn b/devel/electron5/files/patch-components_metrics_BUILD.gn new file mode 100644 index 000000000000..bb60389c143b --- /dev/null +++ b/devel/electron5/files/patch-components_metrics_BUILD.gn @@ -0,0 +1,14 @@ +--- components/metrics/BUILD.gn.orig 2019-04-08 08:32:49 UTC ++++ components/metrics/BUILD.gn +@@ -143,6 +143,11 @@ jumbo_static_library("metrics") { + if (is_fuchsia) { + sources += [ "drive_metrics_provider_fuchsia.cc" ] + } ++ ++ if (is_bsd) { ++ sources -= [ "system_memory_stats_recorder_linux.cc" ] ++ } ++ + } + + # The component metrics provider is a separate target because it depends upon diff --git a/devel/electron5/files/patch-components_metrics_drive__metrics__provider__linux.cc b/devel/electron5/files/patch-components_metrics_drive__metrics__provider__linux.cc new file mode 100644 index 000000000000..3bd146182f76 --- /dev/null +++ b/devel/electron5/files/patch-components_metrics_drive__metrics__provider__linux.cc @@ -0,0 +1,16 @@ +--- components/metrics/drive_metrics_provider_linux.cc.orig 2019-04-08 08:18:17 UTC ++++ components/metrics/drive_metrics_provider_linux.cc +@@ -4,7 +4,13 @@ + + #include "components/metrics/drive_metrics_provider.h" + ++#if defined(OS_BSD) ++#include <sys/types.h> ++#define MAJOR(dev) major(dev) ++#define MINOR(dev) minor(dev) ++#else + #include <linux/kdev_t.h> // For MAJOR()/MINOR(). ++#endif + #include <sys/stat.h> + #include <string> + diff --git a/devel/electron5/files/patch-components_metrics_metrics__log.cc b/devel/electron5/files/patch-components_metrics_metrics__log.cc new file mode 100644 index 000000000000..1fb05d911114 --- /dev/null +++ b/devel/electron5/files/patch-components_metrics_metrics__log.cc @@ -0,0 +1,11 @@ +--- components/metrics/metrics_log.cc.orig 2019-04-08 08:32:49 UTC ++++ components/metrics/metrics_log.cc +@@ -198,7 +198,7 @@ void MetricsLog::RecordCoreSystemProfile(MetricsServic + // OperatingSystemVersion refers to the ChromeOS release version. + #if defined(OS_CHROMEOS) + os->set_kernel_version(base::SysInfo::KernelVersion()); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + // Linux operating system version is copied over into kernel version to be + // consistent. + os->set_kernel_version(base::SysInfo::OperatingSystemVersion()); diff --git a/devel/electron5/files/patch-components_metrics_system__memory__stats__recorder__linux.cc b/devel/electron5/files/patch-components_metrics_system__memory__stats__recorder__linux.cc new file mode 100644 index 000000000000..e08a20f9a71f --- /dev/null +++ b/devel/electron5/files/patch-components_metrics_system__memory__stats__recorder__linux.cc @@ -0,0 +1,18 @@ +--- components/metrics/system_memory_stats_recorder_linux.cc.orig 2019-04-08 08:18:17 UTC ++++ components/metrics/system_memory_stats_recorder_linux.cc +@@ -30,6 +30,7 @@ namespace metrics { + UMA_HISTOGRAM_LINEAR(name, sample, 2500, 50) + + void RecordMemoryStats(RecordMemoryStatsType type) { ++#if !defined(OS_FREEBSD) + base::SystemMemoryInfoKB memory; + if (!base::GetSystemMemoryInfo(&memory)) + return; +@@ -93,6 +94,7 @@ void RecordMemoryStats(RecordMemoryStatsType type) { + break; + } + } ++#endif // !defined(OS_FREEBSD) + } + + } // namespace metrics diff --git a/devel/electron5/files/patch-components_neterror_resources_neterror.js b/devel/electron5/files/patch-components_neterror_resources_neterror.js new file mode 100644 index 000000000000..20918d48b85f --- /dev/null +++ b/devel/electron5/files/patch-components_neterror_resources_neterror.js @@ -0,0 +1,11 @@ +--- components/neterror/resources/neterror.js.orig 2019-04-08 08:32:49 UTC ++++ components/neterror/resources/neterror.js +@@ -166,7 +166,7 @@ function setUpCachedButton(buttonStrings) { + } + + var primaryControlOnLeft = true; +-// <if expr="is_macosx or is_ios or is_linux or is_android"> ++// <if expr="is_macosx or is_ios or is_linux or is_android or is_bsd"> + primaryControlOnLeft = false; + // </if> + diff --git a/devel/electron5/files/patch-components_network__session__configurator_browser_network__session__configurator.cc b/devel/electron5/files/patch-components_network__session__configurator_browser_network__session__configurator.cc new file mode 100644 index 000000000000..a60db582f931 --- /dev/null +++ b/devel/electron5/files/patch-components_network__session__configurator_browser_network__session__configurator.cc @@ -0,0 +1,11 @@ +--- components/network_session_configurator/browser/network_session_configurator.cc.orig 2019-04-08 08:32:49 UTC ++++ components/network_session_configurator/browser/network_session_configurator.cc +@@ -662,7 +662,7 @@ net::URLRequestContextBuilder::HttpCacheParams::Type C + } + #endif // #if !defined(OS_ANDROID) + +-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + return net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE; + #else + return net::URLRequestContextBuilder::HttpCacheParams::DISK_BLOCKFILE; diff --git a/devel/electron5/files/patch-components_new__or__sad__tab__strings.grdp b/devel/electron5/files/patch-components_new__or__sad__tab__strings.grdp new file mode 100644 index 000000000000..6a882f986ce3 --- /dev/null +++ b/devel/electron5/files/patch-components_new__or__sad__tab__strings.grdp @@ -0,0 +1,38 @@ +--- components/new_or_sad_tab_strings.grdp.orig 2019-04-08 08:18:18 UTC ++++ components/new_or_sad_tab_strings.grdp +@@ -51,7 +51,7 @@ + Open page in a new Incognito window (⇧⌘N) + </message> + </if> +- <if expr="is_win or is_linux or chromeos"> ++ <if expr="is_win or is_posix or chromeos"> + <message name="IDS_SAD_TAB_RELOAD_INCOGNITO" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to open the web page in Chrome's Incognito mode."> + Open page in a new Incognito window (Ctrl-Shift-N) + </message> +@@ -69,7 +69,7 @@ + Close other tabs or apps + </message> + </if> +- <if expr="is_linux and not chromeos"> ++ <if expr="is_posix and not chromeos"> + <message name="IDS_SAD_TAB_RELOAD_CLOSE_TABS" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to close other Chrome tabs or programs running on their computer."> + Close other tabs or programs + </message> +@@ -79,7 +79,7 @@ + Close other apps + </message> + </if> +- <if expr="is_linux and not chromeos"> ++ <if expr="is_posix and not chromeos"> + <message name="IDS_SAD_TAB_RELOAD_CLOSE_NOTABS" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to close other programs running on their computer (Linux)."> + Close other programs + </message> +@@ -94,7 +94,7 @@ + Restart Chromium + </message> + </if> +- <if expr="is_win or is_linux or is_macosx or chromeos"> ++ <if expr="is_win or is_posix or is_macosx or chromeos"> + <message name="IDS_SAD_TAB_RELOAD_RESTART_DEVICE" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to restart their computer."> + Restart your computer + </message> diff --git a/devel/electron5/files/patch-components_os__crypt_os__crypt.h b/devel/electron5/files/patch-components_os__crypt_os__crypt.h new file mode 100644 index 000000000000..1b56184c92a0 --- /dev/null +++ b/devel/electron5/files/patch-components_os__crypt_os__crypt.h @@ -0,0 +1,48 @@ +--- components/os_crypt/os_crypt.h.orig 2019-04-08 08:18:18 UTC ++++ components/os_crypt/os_crypt.h +@@ -15,9 +15,9 @@ + #include "base/strings/string16.h" + #include "build/build_config.h" + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + class KeyStorageLinux; +-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + + #if defined(OS_MACOSX) && !defined(OS_IOS) + class PrefRegistrySimple; +@@ -34,13 +34,13 @@ struct Config; + // true for Linux, if a password management tool is available. + class OSCrypt { + public: +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + // Set the configuration of OSCrypt. + static COMPONENT_EXPORT(OS_CRYPT) void SetConfig( + std::unique_ptr<os_crypt::Config> config); +-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + +-#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + // On Linux returns true iff the real secret key (not hardcoded one) is + // available. On MacOS returns true if Keychain is available (for mock + // Keychain it returns true if not using locked Keychain, false if using +@@ -112,7 +112,7 @@ class OSCrypt { + DISALLOW_IMPLICIT_CONSTRUCTORS(OSCrypt); + }; + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + // For unit testing purposes, inject methods to be used. + // |get_key_storage_mock| provides the desired |KeyStorage| implementation. + // If the provider returns |nullptr|, a hardcoded password will be used. +@@ -127,6 +127,6 @@ void UseMockKeyStorageForTesting( + // Clears any caching and most lazy initialisations performed by the production + // code. Should be used after any test which required a password. + COMPONENT_EXPORT(OS_CRYPT) void ClearCacheForTesting(); +-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + + #endif // COMPONENTS_OS_CRYPT_OS_CRYPT_H_ diff --git a/devel/electron5/files/patch-components_os__crypt_os__crypt__unittest.cc b/devel/electron5/files/patch-components_os__crypt_os__crypt__unittest.cc new file mode 100644 index 000000000000..0e23dc941bd3 --- /dev/null +++ b/devel/electron5/files/patch-components_os__crypt_os__crypt__unittest.cc @@ -0,0 +1,11 @@ +--- components/os_crypt/os_crypt_unittest.cc.orig 2019-04-08 08:32:50 UTC ++++ components/os_crypt/os_crypt_unittest.cc +@@ -18,7 +18,7 @@ + #include "components/os_crypt/os_crypt_mocker.h" + #include "testing/gtest/include/gtest/gtest.h" + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + #include "components/os_crypt/os_crypt_mocker_linux.h" + #endif + diff --git a/devel/electron5/files/patch-components_plugins_renderer_plugin__placeholder.cc b/devel/electron5/files/patch-components_plugins_renderer_plugin__placeholder.cc new file mode 100644 index 000000000000..60e5e4137919 --- /dev/null +++ b/devel/electron5/files/patch-components_plugins_renderer_plugin__placeholder.cc @@ -0,0 +1,14 @@ +--- components/plugins/renderer/plugin_placeholder.cc.orig 2019-04-08 08:18:18 UTC ++++ components/plugins/renderer/plugin_placeholder.cc +@@ -17,7 +17,11 @@ + #include "third_party/blink/public/web/web_plugin_container.h" + #include "third_party/blink/public/web/web_script_source.h" + #include "third_party/blink/public/web/web_serialized_script_value.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif // defined(OS_BSD) + + namespace plugins { + diff --git a/devel/electron5/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc b/devel/electron5/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc new file mode 100644 index 000000000000..f71c490cfad1 --- /dev/null +++ b/devel/electron5/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc @@ -0,0 +1,73 @@ +--- components/policy/core/common/cloud/cloud_policy_util.cc.orig 2019-04-08 08:18:18 UTC ++++ components/policy/core/common/cloud/cloud_policy_util.cc +@@ -16,7 +16,7 @@ + #include <wincred.h> + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_MACOSX) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD) + #include <pwd.h> + #include <sys/types.h> + #include <unistd.h> +@@ -28,7 +28,7 @@ + #include <sys/sysctl.h> + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + #include <limits.h> // For HOST_NAME_MAX + #endif + +@@ -52,7 +52,7 @@ + #include "base/system/sys_info.h" + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + #include "base/system/sys_info.h" + #endif + +@@ -61,11 +61,24 @@ namespace policy { + namespace em = enterprise_management; + + std::string GetMachineName() { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) + char hostname[HOST_NAME_MAX]; + if (gethostname(hostname, HOST_NAME_MAX) == 0) // Success. + return hostname; + return std::string(); ++#elif defined(OS_BSD) ++ long host_name_max = sysconf(_SC_HOST_NAME_MAX); ++ if (host_name_max != -1) { ++ char *hostname = new char[host_name_max + 1](); ++ std::string hostname_r; ++ ++ if (gethostname(hostname, host_name_max) == 0) ++ hostname_r = hostname; ++ ++ delete[] hostname; ++ return hostname_r; ++ } ++ return std::string(); + #elif defined(OS_MACOSX) + // Do not use NSHost currentHost, as it's very slow. http://crbug.com/138570 + SCDynamicStoreContext context = {0, NULL, NULL, NULL}; +@@ -111,7 +124,7 @@ std::string GetMachineName() { + } + + std::string GetOSVersion() { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_MACOSX) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD) + return base::SysInfo::OperatingSystemVersion(); + #elif defined(OS_WIN) + base::win::OSInfo::VersionNumber version_number = +@@ -134,7 +147,7 @@ std::string GetOSArchitecture() { + } + + std::string GetOSUsername() { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_MACOSX) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD) + struct passwd* creds = getpwuid(getuid()); + if (!creds || !creds->pw_name) + return std::string(); diff --git a/devel/electron5/files/patch-components_policy_core_common_schema.cc b/devel/electron5/files/patch-components_policy_core_common_schema.cc new file mode 100644 index 000000000000..2fb2bf60092a --- /dev/null +++ b/devel/electron5/files/patch-components_policy_core_common_schema.cc @@ -0,0 +1,14 @@ +--- components/policy/core/common/schema.cc.orig 2019-04-08 08:32:50 UTC ++++ components/policy/core/common/schema.cc +@@ -23,7 +23,11 @@ + #include "base/strings/stringprintf.h" + #include "components/policy/core/common/json_schema_constants.h" + #include "components/policy/core/common/schema_internal.h" ++#if defined(OS_FREEBSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + + namespace schema = json_schema_constants; + diff --git a/devel/electron5/files/patch-components_policy_resources_policy__templates.json b/devel/electron5/files/patch-components_policy_resources_policy__templates.json new file mode 100644 index 000000000000..b360320b2344 --- /dev/null +++ b/devel/electron5/files/patch-components_policy_resources_policy__templates.json @@ -0,0 +1,83 @@ +--- components/policy/resources/policy_templates.json.orig 2019-04-08 08:32:50 UTC ++++ components/policy/resources/policy_templates.json +@@ -956,7 +956,7 @@ + 'name': 'HomepageLocation', + 'type': 'string', + 'schema': { 'type': 'string' }, +- 'supported_on': ['chrome.*:8-', 'chrome_os:11-'], ++ 'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'chrome.freebsd:9-'], + 'features': { + 'can_be_recommended': True, + 'dynamic_refresh': True, +@@ -983,7 +983,7 @@ + 'name': 'HomepageIsNewTabPage', + 'type': 'main', + 'schema': { 'type': 'boolean' }, +- 'supported_on': ['chrome.*:8-', 'chrome_os:11-'], ++ 'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'chrome.freebsd:9-'], + 'features': { + 'can_be_recommended': True, + 'dynamic_refresh': True, +@@ -1009,7 +1009,7 @@ + 'name': 'NewTabPageLocation', + 'type': 'string', + 'schema': { 'type': 'string' }, +- 'supported_on': ['chrome.*:58-', 'chrome_os:58-'], ++ 'supported_on': ['chrome.*:58-', 'chrome_os:58-', 'chrome.freebsd:9-'], + 'features': { + 'can_be_recommended': True, + 'dynamic_refresh': True, +@@ -1702,7 +1702,7 @@ + 'name': 'RemoteAccessHostMatchUsername', + 'type': 'main', + 'schema': { 'type': 'boolean' }, +- 'supported_on': ['chrome.linux:25-', 'chrome.mac:25-', 'chrome_os:42-'], ++ 'supported_on': ['chrome.linux:25-', 'chrome.mac:25-', 'chrome_os:42-', 'chrome.freebsd:25-'], + 'features': { + 'dynamic_refresh': True, + 'per_profile': False, +@@ -3192,7 +3192,7 @@ + 'name': 'GSSAPILibraryName', + 'type': 'string', + 'schema': { 'type': 'string' }, +- 'supported_on': ['chrome.linux:9-'], ++ 'supported_on': ['chrome.linux:9-', 'chrome.freebsd:9-'], + 'features': { + 'dynamic_refresh': False, + 'per_profile': False, +@@ -3244,7 +3244,7 @@ + 'name': 'NtlmV2Enabled', + 'type': 'main', + 'schema': { 'type': 'boolean' }, +- 'supported_on': ['chrome.linux:63-','chrome.mac:63-','chrome_os:63-','android:63-','webview_android:63-'], ++ 'supported_on': ['chrome.linux:63-','chrome.mac:63-','chrome_os:63-','android:63-','webview_android:63-', 'chrome.freebsd:63-'], + 'features': { + 'dynamic_refresh': True, + 'per_profile': False, +@@ -6303,7 +6303,7 @@ + 'name': 'RequireOnlineRevocationChecksForLocalAnchors', + 'type': 'main', + 'schema': { 'type': 'boolean' }, +- 'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-'], ++ 'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-', 'chrome.freebsd:30-'], + 'features': { + 'dynamic_refresh': True, + 'per_profile': False, +@@ -7433,7 +7433,7 @@ + 'name': 'BackgroundModeEnabled', + 'type': 'main', + 'schema': { 'type': 'boolean' }, +- 'supported_on': ['chrome.win:19-', 'chrome.linux:19-'], ++ 'supported_on': ['chrome.win:19-', 'chrome.linux:19-', 'chrome.freebsd:19-'], + 'features': { + 'can_be_recommended': True, + 'dynamic_refresh': True, +@@ -7948,7 +7948,7 @@ + 'name': 'FullscreenAllowed', + 'type': 'main', + 'schema': { 'type': 'boolean' }, +- 'supported_on': ['chrome.win:31-', 'chrome.linux:31-', 'chrome_os:31-'], ++ 'supported_on': ['chrome.win:31-', 'chrome.linux:31-', 'chrome_os:31-', 'chrome.freebsd:31-'], + 'features': { + 'dynamic_refresh': True, + 'per_profile': True, diff --git a/devel/electron5/files/patch-components_policy_tools_generate__policy__source.py b/devel/electron5/files/patch-components_policy_tools_generate__policy__source.py new file mode 100644 index 000000000000..17fd8cafd12a --- /dev/null +++ b/devel/electron5/files/patch-components_policy_tools_generate__policy__source.py @@ -0,0 +1,20 @@ +--- components/policy/tools/generate_policy_source.py.orig 2019-04-08 08:32:51 UTC ++++ components/policy/tools/generate_policy_source.py +@@ -86,7 +86,7 @@ class PolicyDetails: + if platform not in [ + 'chrome_frame', 'chrome_os', 'android', 'webview_android', + 'chrome.win', 'chrome.linux', 'chrome.mac', 'chrome.fuchsia', +- 'chrome.*' ++ 'chrome.freebsd', 'chrome.*' + ]: + raise RuntimeError('Platform "%s" is not supported' % platform) + +@@ -105,7 +105,7 @@ class PolicyDetails: + if platform.startswith('chrome.'): + platform_sub = platform[7:] + if platform_sub == '*': +- self.platforms.extend(['win', 'mac', 'linux', 'fuchsia']) ++ self.platforms.extend(['win', 'mac', 'linux', 'fuchsia', 'freebsd']) + else: + self.platforms.append(platform_sub) + else: diff --git a/devel/electron5/files/patch-components_previews_core_previews__features.cc b/devel/electron5/files/patch-components_previews_core_previews__features.cc new file mode 100644 index 000000000000..9f49cf55b30e --- /dev/null +++ b/devel/electron5/files/patch-components_previews_core_previews__features.cc @@ -0,0 +1,18 @@ +--- components/previews/core/previews_features.cc.orig 2019-04-08 08:32:51 UTC ++++ components/previews/core/previews_features.cc +@@ -14,12 +14,12 @@ namespace features { + // are enabled are controlled by other features. + const base::Feature kPreviews { + "Previews", +-#if defined(OS_ANDROID) || defined(OS_LINUX) ++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD) + // Previews allowed for Android (but also allow on Linux for dev/debug). + base::FEATURE_ENABLED_BY_DEFAULT +-#else // !defined(OS_ANDROID) || defined(OS_LINUX) ++#else // !defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD) + base::FEATURE_DISABLED_BY_DEFAULT +-#endif // defined(OS_ANDROID) || defined(OS_LINUX) ++#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD) + }; + + // Enables the Offline previews on android slow connections. diff --git a/devel/electron5/files/patch-components_services_filesystem_file__system__app.cc b/devel/electron5/files/patch-components_services_filesystem_file__system__app.cc new file mode 100644 index 000000000000..2eb39ce0d2cd --- /dev/null +++ b/devel/electron5/files/patch-components_services_filesystem_file__system__app.cc @@ -0,0 +1,20 @@ +--- components/services/filesystem/file_system_app.cc.orig 2019-04-08 08:32:51 UTC ++++ components/services/filesystem/file_system_app.cc +@@ -19,7 +19,7 @@ + #elif defined(OS_ANDROID) + #include "base/base_paths_android.h" + #include "base/path_service.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "base/environment.h" + #include "base/nix/xdg_util.h" + #elif defined(OS_MACOSX) +@@ -73,7 +73,7 @@ base::FilePath FileSystemApp::GetUserDataDir() { + CHECK(base::PathService::Get(base::DIR_APP_DATA, &path)); + #elif defined(OS_ANDROID) + CHECK(base::PathService::Get(base::DIR_ANDROID_APP_DATA, &path)); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + std::unique_ptr<base::Environment> env(base::Environment::Create()); + path = base::nix::GetXDGDirectory( + env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir); diff --git a/devel/electron5/files/patch-components_services_font_font__service__app.cc b/devel/electron5/files/patch-components_services_font_font__service__app.cc new file mode 100644 index 000000000000..10043906fb47 --- /dev/null +++ b/devel/electron5/files/patch-components_services_font_font__service__app.cc @@ -0,0 +1,11 @@ +--- components/services/font/font_service_app.cc.orig 2019-04-08 08:32:51 UTC ++++ components/services/font/font_service_app.cc +@@ -20,7 +20,7 @@ + #include "components/services/font/ppapi_fontconfig_matching.h" // nogncheck + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "base/test/fontconfig_util_linux.h" + #endif + diff --git a/devel/electron5/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc b/devel/electron5/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc new file mode 100644 index 000000000000..e3334c5fc472 --- /dev/null +++ b/devel/electron5/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc @@ -0,0 +1,20 @@ +--- components/startup_metric_utils/browser/startup_metric_utils.cc.orig 2019-04-08 08:32:51 UTC ++++ components/startup_metric_utils/browser/startup_metric_utils.cc +@@ -456,7 +456,7 @@ void AddStartupEventsForTelemetry() + // RecordBrowserMainMessageLoopStart, the time since last startup is also logged + // to a histogram suffixed with the startup temperature. + void RecordTimeSinceLastStartup(PrefService* pref_service) { +-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + DCHECK(pref_service); + + // Get the timestamp of the current startup. +@@ -485,7 +485,7 @@ void RecordTimeSinceLastStartup(PrefService* pref_serv + // Write the timestamp of the current startup in |pref_service|. + pref_service->SetInt64(prefs::kLastStartupTimestamp, + process_start_time.ToInternalValue()); +-#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) ++#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + } + + // Logs the Startup.SameVersionStartupCount histogram. Relies on |pref_service| diff --git a/devel/electron5/files/patch-components_storage__monitor_BUILD.gn b/devel/electron5/files/patch-components_storage__monitor_BUILD.gn new file mode 100644 index 000000000000..246f01948e98 --- /dev/null +++ b/devel/electron5/files/patch-components_storage__monitor_BUILD.gn @@ -0,0 +1,20 @@ +--- components/storage_monitor/BUILD.gn.orig 2019-04-08 08:18:18 UTC ++++ components/storage_monitor/BUILD.gn +@@ -65,6 +65,17 @@ static_library("storage_monitor") { + ] + } + ++ if (is_bsd) { ++ sources -= [ ++ "mtab_watcher_linux.cc", ++ "mtab_watcher_linux.h", ++ ] ++ sources += [ ++ "storage_monitor_freebsd.cc", ++ "storage_monitor_freebsd.h", ++ ] ++ } ++ + if (use_udev) { + deps += [ "//device/udev_linux" ] + } else if (is_linux) { diff --git a/devel/electron5/files/patch-components_storage__monitor_removable__device__constants.cc b/devel/electron5/files/patch-components_storage__monitor_removable__device__constants.cc new file mode 100644 index 000000000000..8e3c4f45fabc --- /dev/null +++ b/devel/electron5/files/patch-components_storage__monitor_removable__device__constants.cc @@ -0,0 +1,11 @@ +--- components/storage_monitor/removable_device_constants.cc.orig 2019-04-08 08:18:18 UTC ++++ components/storage_monitor/removable_device_constants.cc +@@ -10,7 +10,7 @@ namespace storage_monitor { + const char kFSUniqueIdPrefix[] = "UUID:"; + const char kVendorModelSerialPrefix[] = "VendorModelSerial:"; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + const char kVendorModelVolumeStoragePrefix[] = "VendorModelVolumeStorage:"; + #endif + diff --git a/devel/electron5/files/patch-components_storage__monitor_removable__device__constants.h b/devel/electron5/files/patch-components_storage__monitor_removable__device__constants.h new file mode 100644 index 000000000000..a8ced84a6840 --- /dev/null +++ b/devel/electron5/files/patch-components_storage__monitor_removable__device__constants.h @@ -0,0 +1,11 @@ +--- components/storage_monitor/removable_device_constants.h.orig 2019-04-08 08:18:18 UTC ++++ components/storage_monitor/removable_device_constants.h +@@ -15,7 +15,7 @@ namespace storage_monitor { + extern const char kFSUniqueIdPrefix[]; + extern const char kVendorModelSerialPrefix[]; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + extern const char kVendorModelVolumeStoragePrefix[]; + #endif + diff --git a/devel/electron5/files/patch-components_storage__monitor_storage__monitor__freebsd.cc b/devel/electron5/files/patch-components_storage__monitor_storage__monitor__freebsd.cc new file mode 100644 index 000000000000..a39e5b9a0831 --- /dev/null +++ b/devel/electron5/files/patch-components_storage__monitor_storage__monitor__freebsd.cc @@ -0,0 +1,57 @@ +--- components/storage_monitor/storage_monitor_freebsd.cc.orig 2019-04-09 12:48:46 UTC ++++ components/storage_monitor/storage_monitor_freebsd.cc +@@ -0,0 +1,54 @@ ++// Copyright 2014 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// StorageMonitorFreeBSD implementation. ++ ++#include "components/storage_monitor/storage_monitor_freebsd.h" ++ ++#include <stdio.h> ++ ++#include <list> ++ ++#include "base/bind.h" ++#include "base/metrics/histogram.h" ++#include "base/process/kill.h" ++#include "base/process/launch.h" ++#include "base/stl_util.h" ++#include "base/strings/string_number_conversions.h" ++#include "base/strings/string_util.h" ++#include "base/strings/utf_string_conversions.h" ++#include "components/storage_monitor/media_storage_util.h" ++#include "components/storage_monitor/removable_device_constants.h" ++#include "components/storage_monitor/storage_info.h" ++ ++using content::BrowserThread; ++ ++namespace storage_monitor { ++ ++namespace { ++ ++} // namespace ++ ++StorageMonitorFreeBSD::StorageMonitorFreeBSD() { ++ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); ++} ++ ++StorageMonitorFreeBSD::~StorageMonitorFreeBSD() { ++ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); ++} ++ ++void StorageMonitorFreeBSD::Init() { ++} ++ ++bool StorageMonitorFreeBSD::GetStorageInfoForPath( ++ const base::FilePath& path, ++ StorageInfo* device_info) const { ++ return false; // TODO ++} ++ ++StorageMonitor* StorageMonitor::CreateInternal() { ++ return new StorageMonitorFreeBSD(); ++} ++ ++} // namespace storage_monitor diff --git a/devel/electron5/files/patch-components_storage__monitor_storage__monitor__freebsd.h b/devel/electron5/files/patch-components_storage__monitor_storage__monitor__freebsd.h new file mode 100644 index 000000000000..0b301a208cd9 --- /dev/null +++ b/devel/electron5/files/patch-components_storage__monitor_storage__monitor__freebsd.h @@ -0,0 +1,48 @@ +--- components/storage_monitor/storage_monitor_freebsd.h.orig 2019-04-09 12:48:46 UTC ++++ components/storage_monitor/storage_monitor_freebsd.h +@@ -0,0 +1,45 @@ ++// Copyright 2014 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// StorageMonitorFreeBSD processes mount point change events, notifies listeners ++// about the addition and deletion of media devices, and answers queries about ++// mounted devices. ++// StorageMonitorFreeBSD lives on the UI thread, and uses ??? ++// the FILE thread to get mount point change events. ++ ++#ifndef COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_ ++#define COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_ ++ ++#include <map> ++#include <string> ++ ++#include "base/compiler_specific.h" ++#include "base/files/file_path.h" ++#include "base/files/file_path_watcher.h" ++#include "base/memory/weak_ptr.h" ++#include "components/storage_monitor/storage_monitor.h" ++#include "content/public/browser/browser_thread.h" ++ ++namespace storage_monitor { ++ ++class StorageMonitorFreeBSD : public StorageMonitor { ++ public: ++ // Should only be called by browser start up code. ++ // Use StorageMonitor::GetInstance() instead. ++ explicit StorageMonitorFreeBSD(); ++ virtual ~StorageMonitorFreeBSD(); ++ ++ // Must be called for StorageMonitorFreeBSD to work. ++ virtual void Init() override; ++ private: ++ // StorageMonitor implementation. ++ virtual bool GetStorageInfoForPath(const base::FilePath& path, ++ StorageInfo* device_info) const override; ++ ++ DISALLOW_COPY_AND_ASSIGN(StorageMonitorFreeBSD); ++}; ++ ++} // namespace storage_monitor ++ ++#endif // COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_ diff --git a/devel/electron5/files/patch-components_sync_base_get__session__name.cc b/devel/electron5/files/patch-components_sync_base_get__session__name.cc new file mode 100644 index 000000000000..457a8ff7aba8 --- /dev/null +++ b/devel/electron5/files/patch-components_sync_base_get__session__name.cc @@ -0,0 +1,20 @@ +--- components/sync/base/get_session_name.cc.orig 2019-04-08 08:32:52 UTC ++++ components/sync/base/get_session_name.cc +@@ -17,7 +17,7 @@ + + #if defined(OS_CHROMEOS) + #include "chromeos/constants/devicetype.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "components/sync/base/get_session_name_linux.h" + #elif defined(OS_IOS) + #include "components/sync/base/get_session_name_ios.h" +@@ -52,7 +52,7 @@ std::string GetSessionNameBlocking() { + session_name = "Chromebook"; + break; + } +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + session_name = internal::GetHostname(); + #elif defined(OS_IOS) + session_name = internal::GetComputerName(); diff --git a/devel/electron5/files/patch-components_sync_base_get__session__name__linux.cc b/devel/electron5/files/patch-components_sync_base_get__session__name__linux.cc new file mode 100644 index 000000000000..2f447c6d116c --- /dev/null +++ b/devel/electron5/files/patch-components_sync_base_get__session__name__linux.cc @@ -0,0 +1,14 @@ +--- components/sync/base/get_session_name_linux.cc.orig 2019-04-08 08:18:18 UTC ++++ components/sync/base/get_session_name_linux.cc +@@ -13,8 +13,9 @@ namespace syncer { + namespace internal { + + std::string GetHostname() { +- char hostname[HOST_NAME_MAX]; +- if (gethostname(hostname, HOST_NAME_MAX) == 0) // Success. ++ int len = sysconf(_SC_HOST_NAME_MAX); ++ char hostname[len]; ++ if (gethostname(hostname, len) == 0) // Success. + return hostname; + return base::GetLinuxDistro(); + } diff --git a/devel/electron5/files/patch-components_sync_device__info_local__device__info__provider__impl.cc b/devel/electron5/files/patch-components_sync_device__info_local__device__info__provider__impl.cc new file mode 100644 index 000000000000..c0bf786fda9d --- /dev/null +++ b/devel/electron5/files/patch-components_sync_device__info_local__device__info__provider__impl.cc @@ -0,0 +1,11 @@ +--- components/sync/device_info/local_device_info_provider_impl.cc.orig 2019-04-08 08:32:52 UTC ++++ components/sync/device_info/local_device_info_provider_impl.cc +@@ -15,7 +15,7 @@ namespace { + sync_pb::SyncEnums::DeviceType GetLocalDeviceType(bool is_tablet) { + #if defined(OS_CHROMEOS) + return sync_pb::SyncEnums_DeviceType_TYPE_CROS; +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + return sync_pb::SyncEnums_DeviceType_TYPE_LINUX; + #elif defined(OS_ANDROID) || defined(OS_IOS) + return is_tablet ? sync_pb::SyncEnums_DeviceType_TYPE_TABLET diff --git a/devel/electron5/files/patch-components_update__client_update__query__params.cc b/devel/electron5/files/patch-components_update__client_update__query__params.cc new file mode 100644 index 000000000000..d3d51d838078 --- /dev/null +++ b/devel/electron5/files/patch-components_update__client_update__query__params.cc @@ -0,0 +1,11 @@ +--- components/update_client/update_query_params.cc.orig 2019-04-08 08:32:52 UTC ++++ components/update_client/update_query_params.cc +@@ -38,6 +38,8 @@ const char kOs[] = + "fuchsia"; + #elif defined(OS_OPENBSD) + "openbsd"; ++#elif defined(OS_FREEBSD) ++ "freebsd"; + #else + #error "unknown os" + #endif diff --git a/devel/electron5/files/patch-components_url__matcher_regex__set__matcher.cc b/devel/electron5/files/patch-components_url__matcher_regex__set__matcher.cc new file mode 100644 index 000000000000..bfdbfff020ca --- /dev/null +++ b/devel/electron5/files/patch-components_url__matcher_regex__set__matcher.cc @@ -0,0 +1,16 @@ +--- components/url_matcher/regex_set_matcher.cc.orig 2019-04-08 08:18:18 UTC ++++ components/url_matcher/regex_set_matcher.cc +@@ -11,8 +11,13 @@ + #include "base/logging.h" + #include "base/strings/string_util.h" + #include "components/url_matcher/substring_set_matcher.h" ++#if defined(OS_BSD) ++#include <re2/filtered_re2.h> ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/filtered_re2.h" + #include "third_party/re2/src/re2/re2.h" ++#endif + + namespace url_matcher { + diff --git a/devel/electron5/files/patch-components_url__matcher_url__matcher__factory.cc b/devel/electron5/files/patch-components_url__matcher_url__matcher__factory.cc new file mode 100644 index 000000000000..851085a479aa --- /dev/null +++ b/devel/electron5/files/patch-components_url__matcher_url__matcher__factory.cc @@ -0,0 +1,14 @@ +--- components/url_matcher/url_matcher_factory.cc.orig 2019-04-08 08:18:18 UTC ++++ components/url_matcher/url_matcher_factory.cc +@@ -16,7 +16,11 @@ + #include "base/values.h" + #include "components/url_matcher/url_matcher_constants.h" + #include "components/url_matcher/url_matcher_helpers.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + + namespace url_matcher { + diff --git a/devel/electron5/files/patch-components_webcrypto_algorithms_test__helpers.cc b/devel/electron5/files/patch-components_webcrypto_algorithms_test__helpers.cc new file mode 100644 index 000000000000..04bf4e642ba7 --- /dev/null +++ b/devel/electron5/files/patch-components_webcrypto_algorithms_test__helpers.cc @@ -0,0 +1,14 @@ +--- components/webcrypto/algorithms/test_helpers.cc.orig 2019-04-08 08:32:53 UTC ++++ components/webcrypto/algorithms/test_helpers.cc +@@ -25,7 +25,11 @@ + #include "components/webcrypto/status.h" + #include "third_party/blink/public/platform/web_crypto_algorithm_params.h" + #include "third_party/blink/public/platform/web_crypto_key_algorithm.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + + namespace webcrypto { + diff --git a/devel/electron5/files/patch-content_app_content__main__runner__impl.cc b/devel/electron5/files/patch-content_app_content__main__runner__impl.cc new file mode 100644 index 000000000000..8497a70a3d28 --- /dev/null +++ b/devel/electron5/files/patch-content_app_content__main__runner__impl.cc @@ -0,0 +1,73 @@ +--- content/app/content_main_runner_impl.cc.orig 2019-04-09 12:48:20 UTC ++++ content/app/content_main_runner_impl.cc +@@ -93,17 +93,17 @@ + #include "base/posix/global_descriptors.h" + #include "content/public/common/content_descriptors.h" + +-#if !defined(OS_MACOSX) ++#if !defined(OS_MACOSX) && !defined(OS_BSD) + #include "services/service_manager/zygote/common/zygote_fork_delegate_linux.h" + #endif +-#if !defined(OS_MACOSX) && !defined(OS_ANDROID) ++#if !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD) + #include "sandbox/linux/services/libc_interceptor.h" + #include "services/service_manager/zygote/zygote_main.h" + #endif + + #endif // OS_POSIX || OS_FUCHSIA + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "base/native_library.h" + #include "base/rand_util.h" + #include "services/service_manager/zygote/common/common_sandbox_support_linux.h" +@@ -124,7 +124,7 @@ + #include "content/public/common/content_client.h" + #endif + +-#endif // OS_LINUX ++#endif // OS_LINUX || defined(OS_BSD) + + #if !defined(CHROME_MULTIPLE_DLL_BROWSER) + #include "content/child/field_trial.h" +@@ -309,7 +309,7 @@ void InitializeZygoteSandboxForBrowserProcess( + } + #endif // BUILDFLAG(USE_ZYGOTE_HANDLE) + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + + #if BUILDFLAG(ENABLE_PLUGINS) + // Loads the (native) libraries but does not initialize them (i.e., does not +@@ -406,7 +406,7 @@ void PreSandboxInit() { + } + #endif // BUILDFLAG(USE_ZYGOTE_HANDLE) + +-#endif // OS_LINUX ++#endif // OS_LINUX || OS_BSD + + } // namespace + +@@ -464,7 +464,7 @@ int RunZygote(ContentMainDelegate* delegate) { + delegate->ZygoteStarting(&zygote_fork_delegates); + media::InitializeMediaLibrary(); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + PreSandboxInit(); + #endif + +@@ -637,11 +637,11 @@ int ContentMainRunnerImpl::Initialize(const ContentMai + base::GlobalDescriptors::kBaseDescriptor); + #endif // !OS_ANDROID + +-#if defined(OS_LINUX) || defined(OS_OPENBSD) ++#if defined(OS_LINUX) + g_fds->Set(service_manager::kCrashDumpSignal, + service_manager::kCrashDumpSignal + + base::GlobalDescriptors::kBaseDescriptor); +-#endif // OS_LINUX || OS_OPENBSD ++#endif // OS_LINUX + + #endif // !OS_WIN + diff --git a/devel/electron5/files/patch-content_browser_BUILD.gn b/devel/electron5/files/patch-content_browser_BUILD.gn new file mode 100644 index 000000000000..4fca3c5fa7ba --- /dev/null +++ b/devel/electron5/files/patch-content_browser_BUILD.gn @@ -0,0 +1,14 @@ +--- content/browser/BUILD.gn.orig 2019-04-08 08:32:53 UTC ++++ content/browser/BUILD.gn +@@ -1939,11 +1939,6 @@ jumbo_source_set("browser") { + "tracing/cros_tracing_agent.h", + ] + deps += [ "//chromeos/resources" ] +- } else { +- sources += [ +- "memory/memory_monitor_linux.cc", +- "memory/memory_monitor_linux.h", +- ] + } + + if (is_chromeos || is_android || is_chromecast) { diff --git a/devel/electron5/files/patch-content_browser_browser__main__loop.cc b/devel/electron5/files/patch-content_browser_browser__main__loop.cc new file mode 100644 index 000000000000..9b715ca09eb2 --- /dev/null +++ b/devel/electron5/files/patch-content_browser_browser__main__loop.cc @@ -0,0 +1,46 @@ +--- content/browser/browser_main_loop.cc.orig 2019-04-09 12:48:20 UTC ++++ content/browser/browser_main_loop.cc +@@ -250,6 +250,13 @@ + #include "mojo/public/cpp/bindings/lib/test_random_mojo_delays.h" + #endif + ++#if defined(OS_BSD) ++#include "content/browser/sandbox_host_linux.h" ++#include "services/service_manager/zygote/common/common_sandbox_support_linux.h" ++#include "content/public/common/common_sandbox_support_linux.h" ++#include "services/service_manager/sandbox/sandbox.h" ++#endif ++ + // One of the linux specific headers defines this as a macro. + #ifdef DestroyAll + #undef DestroyAll +@@ -585,6 +592,11 @@ int BrowserMainLoop::EarlyInitialization() { + // by now since a thread to start the ServiceManager has been created + // before the browser main loop starts. + DCHECK(SandboxHostLinux::GetInstance()->IsInitialized()); ++#elif defined(OS_BSD) ++ SandboxHostLinux::GetInstance()->Init(); ++ base::FileHandleMappingVector fds_to_map; ++ const int sfd = SandboxHostLinux::GetInstance()->GetChildSocket(); ++ fds_to_map.push_back(std::make_pair(sfd, service_manager::GetSandboxFD())); + #endif + + #if defined(USE_X11) +@@ -629,7 +641,7 @@ int BrowserMainLoop::EarlyInitialization() { + #endif // defined(OS_ANDROID) || defined(OS_CHROMEOS) + + #if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \ +- defined(OS_ANDROID) ++ defined(OS_ANDROID) || defined(OS_BSD) + // We use quite a few file descriptors for our IPC as well as disk the disk + // cache,and the default limit on the Mac is low (256), so bump it up. + +@@ -639,7 +651,7 @@ int BrowserMainLoop::EarlyInitialization() { + // an arbitrarily high number. See https://crbug.com/539567 + base::IncreaseFdLimitTo(8192); + #endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || +- // defined(OS_ANDROID) ++ // defined(OS_ANDROID) || defined(OS_BSD) + + #if defined(OS_WIN) + net::EnsureWinsockInit(); diff --git a/devel/electron5/files/patch-content_browser_child__process__launcher__helper__linux.cc b/devel/electron5/files/patch-content_browser_child__process__launcher__helper__linux.cc new file mode 100644 index 000000000000..fc75b91a8681 --- /dev/null +++ b/devel/electron5/files/patch-content_browser_child__process__launcher__helper__linux.cc @@ -0,0 +1,76 @@ +--- content/browser/child_process_launcher_helper_linux.cc.orig 2019-04-08 08:32:53 UTC ++++ content/browser/child_process_launcher_helper_linux.cc +@@ -17,7 +17,9 @@ + #include "content/public/common/sandboxed_process_launcher_delegate.h" + #include "services/service_manager/sandbox/linux/sandbox_linux.h" + #include "services/service_manager/zygote/common/common_sandbox_support_linux.h" ++#if !defined(OS_BSD) + #include "services/service_manager/zygote/common/zygote_handle.h" ++#endif + #include "services/service_manager/zygote/host/zygote_communication_linux.h" + #include "services/service_manager/zygote/host/zygote_host_impl_linux.h" + +@@ -69,6 +71,7 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr + int* launch_result) { + *is_synchronous_launch = true; + ++#if !defined(OS_BSD) + service_manager::ZygoteHandle zygote_handle = + base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kNoZygote) + ? nullptr +@@ -82,7 +85,6 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr + GetProcessType()); + *launch_result = LAUNCH_RESULT_SUCCESS; + +-#if !defined(OS_OPENBSD) + if (handle) { + // This is just a starting score for a renderer or extension (the + // only types of processes that will be started this way). It will +@@ -93,13 +95,13 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr + service_manager::ZygoteHostImpl::GetInstance()->AdjustRendererOOMScore( + handle, kLowestRendererOomScore); + } +-#endif + + Process process; + process.process = base::Process(handle); + process.zygote = zygote_handle; + return process; + } ++#endif + + Process process; + process.process = base::LaunchProcess(*command_line(), options); +@@ -117,10 +119,14 @@ ChildProcessTerminationInfo ChildProcessLauncherHelper + const ChildProcessLauncherHelper::Process& process, + bool known_dead) { + ChildProcessTerminationInfo info; ++#if !defined(OS_BSD) + if (process.zygote) { + info.status = process.zygote->GetTerminationStatus( + process.process.Handle(), known_dead, &info.exit_code); + } else if (known_dead) { ++#else ++ if (known_dead) { ++#endif + info.status = base::GetKnownDeadTerminationStatus(process.process.Handle(), + &info.exit_code); + } else { +@@ -144,13 +150,17 @@ void ChildProcessLauncherHelper::ForceNormalProcessTer + DCHECK(CurrentlyOnProcessLauncherTaskRunner()); + process.process.Terminate(service_manager::RESULT_CODE_NORMAL_EXIT, false); + // On POSIX, we must additionally reap the child. ++#if !defined(OS_BSD) + if (process.zygote) { + // If the renderer was created via a zygote, we have to proxy the reaping + // through the zygote process. + process.zygote->EnsureProcessTerminated(process.process.Handle()); + } else { ++#endif + base::EnsureProcessTerminated(std::move(process.process)); ++#if !defined(OS_BSD) + } ++#endif + } + + void ChildProcessLauncherHelper::SetProcessPriorityOnLauncherThread( diff --git a/devel/electron5/files/patch-content_browser_media_media__internals.cc b/devel/electron5/files/patch-content_browser_media_media__internals.cc new file mode 100644 index 000000000000..a2523c0ceef1 --- /dev/null +++ b/devel/electron5/files/patch-content_browser_media_media__internals.cc @@ -0,0 +1,11 @@ +--- content/browser/media/media_internals.cc.orig 2019-04-08 08:32:54 UTC ++++ content/browser/media/media_internals.cc +@@ -763,7 +763,7 @@ void MediaInternals::UpdateVideoCaptureDeviceCapabilit + device_dict->SetString("name", descriptor.GetNameAndModel()); + device_dict->Set("formats", std::move(format_list)); + #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ +- defined(OS_ANDROID) ++ defined(OS_ANDROID) || defined(OS_BSD) + device_dict->SetString("captureApi", descriptor.GetCaptureApiTypeString()); + #endif + video_capture_capabilities_cached_data_.Append(std::move(device_dict)); diff --git a/devel/electron5/files/patch-content_browser_memory_memory__monitor.cc b/devel/electron5/files/patch-content_browser_memory_memory__monitor.cc new file mode 100644 index 000000000000..442d814f3bc2 --- /dev/null +++ b/devel/electron5/files/patch-content_browser_memory_memory__monitor.cc @@ -0,0 +1,11 @@ +--- content/browser/memory/memory_monitor.cc.orig 2019-04-08 08:18:19 UTC ++++ content/browser/memory/memory_monitor.cc +@@ -22,7 +22,7 @@ void MemoryMonitorDelegate::GetSystemMemoryInfo( + base::GetSystemMemoryInfo(mem_info); + } + +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) + // TODO(bashi,bcwhite): Remove when memory monitor for mac is available. + std::unique_ptr<MemoryMonitor> CreateMemoryMonitor() { + NOTREACHED(); diff --git a/devel/electron5/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc b/devel/electron5/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc new file mode 100644 index 000000000000..a1531915b262 --- /dev/null +++ b/devel/electron5/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc @@ -0,0 +1,27 @@ +--- content/browser/memory/swap_metrics_driver_impl_linux.cc.orig 2019-04-08 08:18:19 UTC ++++ content/browser/memory/swap_metrics_driver_impl_linux.cc +@@ -43,6 +43,7 @@ SwapMetricsDriverImplLinux::~SwapMetricsDriverImplLinu + + SwapMetricsDriver::SwapMetricsUpdateResult + SwapMetricsDriverImplLinux::UpdateMetricsInternal(base::TimeDelta interval) { ++#if !defined(OS_BSD) + base::VmStatInfo vmstat; + if (!base::GetVmStatInfo(&vmstat)) { + return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateFailed; +@@ -55,12 +56,15 @@ SwapMetricsDriverImplLinux::UpdateMetricsInternal(base + + if (interval.is_zero()) + return SwapMetricsDriver::SwapMetricsUpdateResult:: +- kSwapMetricsUpdateSuccess; ++ kSwapMetricsUpdateSuccess; + + delegate_->OnSwapInCount(in_counts, interval); + delegate_->OnSwapOutCount(out_counts, interval); + + return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateSuccess; ++#else ++ return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateFailed; ++#endif + } + + } // namespace content diff --git a/devel/electron5/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc b/devel/electron5/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc new file mode 100644 index 000000000000..173633245d7b --- /dev/null +++ b/devel/electron5/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc @@ -0,0 +1,29 @@ +--- content/browser/renderer_host/input/input_device_change_observer.cc.orig 2019-04-08 08:18:19 UTC ++++ content/browser/renderer_host/input/input_device_change_observer.cc +@@ -10,7 +10,7 @@ + + #if defined(OS_WIN) + #include "ui/events/devices/input_device_observer_win.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "ui/events/devices/input_device_manager.h" + #elif defined(OS_ANDROID) + #include "ui/events/devices/input_device_observer_android.h" +@@ -22,7 +22,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R + render_view_host_impl_ = rvhi; + #if defined(OS_WIN) + ui::InputDeviceObserverWin::GetInstance()->AddObserver(this); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + ui::InputDeviceManager::GetInstance()->AddObserver(this); + #elif defined(OS_ANDROID) + ui::InputDeviceObserverAndroid::GetInstance()->AddObserver(this); +@@ -32,7 +32,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R + InputDeviceChangeObserver::~InputDeviceChangeObserver() { + #if defined(OS_WIN) + ui::InputDeviceObserverWin::GetInstance()->RemoveObserver(this); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + ui::InputDeviceManager::GetInstance()->RemoveObserver(this); + #elif defined(OS_ANDROID) + ui::InputDeviceObserverAndroid::GetInstance()->RemoveObserver(this); diff --git a/devel/electron5/files/patch-content_browser_renderer__host_render__message__filter.cc b/devel/electron5/files/patch-content_browser_renderer__host_render__message__filter.cc new file mode 100644 index 000000000000..3673a9721890 --- /dev/null +++ b/devel/electron5/files/patch-content_browser_renderer__host_render__message__filter.cc @@ -0,0 +1,29 @@ +--- content/browser/renderer_host/render_message_filter.cc.orig 2019-04-08 08:18:19 UTC ++++ content/browser/renderer_host/render_message_filter.cc +@@ -71,7 +71,7 @@ + #if defined(OS_MACOSX) + #include "ui/accelerated_widget_mac/window_resize_helper_mac.h" + #endif +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "base/linux_util.h" + #include "base/threading/platform_thread.h" + #endif +@@ -151,7 +151,7 @@ void RenderMessageFilter::CreateFullscreenWidget( + std::move(callback).Run(route_id); + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + void RenderMessageFilter::SetThreadPriorityOnFileThread( + base::PlatformThreadId ns_tid, + base::ThreadPriority priority) { +@@ -172,7 +172,7 @@ void RenderMessageFilter::SetThreadPriorityOnFileThrea + } + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + void RenderMessageFilter::SetThreadPriority(int32_t ns_tid, + base::ThreadPriority priority) { + constexpr base::TaskTraits kTraits = { diff --git a/devel/electron5/files/patch-content_browser_renderer__host_render__message__filter.h b/devel/electron5/files/patch-content_browser_renderer__host_render__message__filter.h new file mode 100644 index 000000000000..bf67c7d20ae8 --- /dev/null +++ b/devel/electron5/files/patch-content_browser_renderer__host_render__message__filter.h @@ -0,0 +1,19 @@ +--- content/browser/renderer_host/render_message_filter.h.orig 2019-04-08 08:18:19 UTC ++++ content/browser/renderer_host/render_message_filter.h +@@ -87,14 +87,14 @@ class CONTENT_EXPORT RenderMessageFilter + mojom::WidgetPtr widget, + CreateFullscreenWidgetCallback callback) override; + void HasGpuProcess(HasGpuProcessCallback callback) override; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + void SetThreadPriority(int32_t ns_tid, + base::ThreadPriority priority) override; + #endif + + void OnResolveProxy(const GURL& url, IPC::Message* reply_msg); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + void SetThreadPriorityOnFileThread(base::PlatformThreadId ns_tid, + base::ThreadPriority priority); + #endif diff --git a/devel/electron5/files/patch-content_browser_renderer__host_render__process__host__impl.h b/devel/electron5/files/patch-content_browser_renderer__host_render__process__host__impl.h new file mode 100644 index 000000000000..5c58b7351ead --- /dev/null +++ b/devel/electron5/files/patch-content_browser_renderer__host_render__process__host__impl.h @@ -0,0 +1,15 @@ +--- content/browser/renderer_host/render_process_host_impl.h.orig 2019-04-08 08:32:54 UTC ++++ content/browser/renderer_host/render_process_host_impl.h +@@ -407,10 +407,10 @@ class CONTENT_EXPORT RenderProcessHostImpl + is_for_guests_only_ = is_for_guests_only; + } + +-#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) ++#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD) + // Launch the zygote early in the browser startup. + static void EarlyZygoteLaunch(); +-#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) ++#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD) + + RendererAudioOutputStreamFactoryContext* + GetRendererAudioOutputStreamFactoryContext() override; diff --git a/devel/electron5/files/patch-content_browser_renderer__host_render__view__host__impl.cc b/devel/electron5/files/patch-content_browser_renderer__host_render__view__host__impl.cc new file mode 100644 index 000000000000..303aab716e04 --- /dev/null +++ b/devel/electron5/files/patch-content_browser_renderer__host_render__view__host__impl.cc @@ -0,0 +1,11 @@ +--- content/browser/renderer_host/render_view_host_impl.cc.orig 2019-04-08 08:32:54 UTC ++++ content/browser/renderer_host/render_view_host_impl.cc +@@ -161,7 +161,7 @@ void GetPlatformSpecificPrefs(RendererPreferences* pre + display::win::ScreenWin::GetSystemMetricsInDIP(SM_CYVSCROLL); + prefs->arrow_bitmap_width_horizontal_scroll_bar_in_dips = + display::win::ScreenWin::GetSystemMetricsInDIP(SM_CXHSCROLL); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + prefs->system_font_family_name = gfx::Font().GetFontName(); + #endif + } diff --git a/devel/electron5/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc b/devel/electron5/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc new file mode 100644 index 000000000000..012854ec2417 --- /dev/null +++ b/devel/electron5/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc @@ -0,0 +1,29 @@ +--- content/browser/renderer_host/render_widget_host_view_aura.cc.orig 2019-04-08 08:32:54 UTC ++++ content/browser/renderer_host/render_widget_host_view_aura.cc +@@ -121,7 +121,7 @@ + #include "content/browser/accessibility/browser_accessibility_auralinux.h" + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + #include "ui/base/ime/linux/text_edit_command_auralinux.h" + #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h" + #endif +@@ -2192,7 +2192,7 @@ bool RenderWidgetHostViewAura::NeedsInputGrab() { + } + + bool RenderWidgetHostViewAura::NeedsMouseCapture() { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + return NeedsInputGrab(); + #endif + return false; +@@ -2390,7 +2390,7 @@ void RenderWidgetHostViewAura::ForwardKeyboardEventWit + if (!target_host) + return; + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + ui::TextEditKeyBindingsDelegateAuraLinux* keybinding_delegate = + ui::GetTextEditKeyBindingsDelegate(); + std::vector<ui::TextEditCommandAuraLinux> commands; diff --git a/devel/electron5/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc b/devel/electron5/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc new file mode 100644 index 000000000000..e4ae33552531 --- /dev/null +++ b/devel/electron5/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc @@ -0,0 +1,11 @@ +--- content/browser/renderer_host/render_widget_host_view_event_handler.cc.orig 2019-04-08 08:18:19 UTC ++++ content/browser/renderer_host/render_widget_host_view_event_handler.cc +@@ -608,7 +608,7 @@ bool RenderWidgetHostViewEventHandler::CanRendererHand + if (event->type() == ui::ET_MOUSE_EXITED) { + if (mouse_locked || selection_popup) + return false; +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + // Don't forward the mouse leave message which is received when the context + // menu is displayed by the page. This confuses the page and causes state + // changes. diff --git a/devel/electron5/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc b/devel/electron5/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc new file mode 100644 index 000000000000..1319ffd70470 --- /dev/null +++ b/devel/electron5/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc @@ -0,0 +1,29 @@ +--- content/browser/scheduler/responsiveness/native_event_observer.cc.orig 2019-04-08 08:18:19 UTC ++++ content/browser/scheduler/responsiveness/native_event_observer.cc +@@ -15,7 +15,7 @@ + + #include "ui/events/platform/platform_event_source.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "ui/aura/env.h" + #include "ui/events/event.h" + #endif +@@ -39,7 +39,7 @@ NativeEventObserver::~NativeEventObserver() { + DeregisterObserver(); + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + void NativeEventObserver::RegisterObserver() { + aura::Env::GetInstance()->AddWindowEventDispatcherObserver(this); + } +@@ -61,7 +61,7 @@ void NativeEventObserver::OnWindowEventDispatcherFinis + did_run_event_callback_.Run(info.unique_id); + events_being_processed_.pop_back(); + } +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + #if defined(OS_WIN) + void NativeEventObserver::RegisterObserver() { diff --git a/devel/electron5/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h b/devel/electron5/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h new file mode 100644 index 000000000000..5f428c6ed946 --- /dev/null +++ b/devel/electron5/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h @@ -0,0 +1,47 @@ +--- content/browser/scheduler/responsiveness/native_event_observer.h.orig 2019-04-08 08:18:19 UTC ++++ content/browser/scheduler/responsiveness/native_event_observer.h +@@ -14,7 +14,7 @@ + #include "content/public/browser/native_event_processor_observer_mac.h" + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "ui/aura/window_event_dispatcher_observer.h" + #endif + +@@ -39,7 +39,7 @@ namespace responsiveness { + class CONTENT_EXPORT NativeEventObserver + #if defined(OS_MACOSX) + : public NativeEventProcessorObserver +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + : public aura::WindowEventDispatcherObserver + #elif defined(OS_WIN) + : public base::MessagePumpForUI::Observer +@@ -56,7 +56,7 @@ class CONTENT_EXPORT NativeEventObserver + NativeEventObserver(WillRunEventCallback will_run_event_callback, + DidRunEventCallback did_run_event_callback); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + ~NativeEventObserver() override; + #else + virtual ~NativeEventObserver(); +@@ -68,7 +68,7 @@ class CONTENT_EXPORT NativeEventObserver + // Exposed for tests. + void WillRunNativeEvent(const void* opaque_identifier) override; + void DidRunNativeEvent(const void* opaque_identifier) override; +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + // aura::WindowEventDispatcherObserver overrides: + void OnWindowEventDispatcherStartedProcessing( + aura::WindowEventDispatcher* dispatcher, +@@ -85,7 +85,7 @@ class CONTENT_EXPORT NativeEventObserver + void RegisterObserver(); + void DeregisterObserver(); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + struct EventInfo { + const void* unique_id; + }; diff --git a/devel/electron5/files/patch-content_browser_service__manager_service__manager__context.cc b/devel/electron5/files/patch-content_browser_service__manager_service__manager__context.cc new file mode 100644 index 000000000000..0a9aa9acde92 --- /dev/null +++ b/devel/electron5/files/patch-content_browser_service__manager_service__manager__context.cc @@ -0,0 +1,35 @@ +--- content/browser/service_manager/service_manager_context.cc.orig 2019-04-08 08:32:54 UTC ++++ content/browser/service_manager/service_manager_context.cc +@@ -99,7 +99,7 @@ + #include "jni/ContentNfcDelegate_jni.h" + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "components/services/font/font_service_app.h" + #include "components/services/font/public/interfaces/constants.mojom.h" + #endif +@@ -378,12 +378,12 @@ void CreateInProcessAudioService( + BrowserMainLoop::GetAudioManager(), std::move(request))); + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + std::unique_ptr<service_manager::Service> CreateFontService( + service_manager::mojom::ServiceRequest request) { + return std::make_unique<font_service::FontServiceApp>(std::move(request)); + } +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + std::unique_ptr<service_manager::Service> CreateResourceCoordinatorService( + service_manager::mojom::ServiceRequest request) { +@@ -618,7 +618,7 @@ ServiceManagerContext::ServiceManagerContext( + base::BindRepeating(&CreateVideoCaptureService)); + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + RegisterInProcessService( + packaged_services_connection_.get(), font_service::mojom::kServiceName, + base::CreateSequencedTaskRunnerWithTraits( diff --git a/devel/electron5/files/patch-content_browser_storage__partition__impl.cc b/devel/electron5/files/patch-content_browser_storage__partition__impl.cc new file mode 100644 index 000000000000..b4a2284f90e3 --- /dev/null +++ b/devel/electron5/files/patch-content_browser_storage__partition__impl.cc @@ -0,0 +1,11 @@ +--- content/browser/storage_partition_impl.cc.orig 2019-04-08 08:32:54 UTC ++++ content/browser/storage_partition_impl.cc +@@ -768,7 +768,7 @@ net::URLRequestContextGetter* StoragePartitionImpl::Ge + // TODO(jam): enable for all, still used on WebView. + // See copy of this ifdef in: + // StoragePartitionImplMap::Get +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + if (base::FeatureList::IsEnabled(network::features::kNetworkService)) + NOTREACHED(); + #endif diff --git a/devel/electron5/files/patch-content_browser_storage__partition__impl__map.cc b/devel/electron5/files/patch-content_browser_storage__partition__impl__map.cc new file mode 100644 index 000000000000..bad77210c635 --- /dev/null +++ b/devel/electron5/files/patch-content_browser_storage__partition__impl__map.cc @@ -0,0 +1,11 @@ +--- content/browser/storage_partition_impl_map.cc.orig 2019-04-08 08:32:54 UTC ++++ content/browser/storage_partition_impl_map.cc +@@ -425,7 +425,7 @@ StoragePartitionImpl* StoragePartitionImplMap::Get( + bool create_request_context = true; + if (base::FeatureList::IsEnabled(network::features::kNetworkService)) { + // These ifdefs should match StoragePartitionImpl::GetURLRequestContext. +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + create_request_context = false; + #elif defined(OS_ANDROID) + create_request_context = diff --git a/devel/electron5/files/patch-content_browser_webui_shared__resources__data__source.cc b/devel/electron5/files/patch-content_browser_webui_shared__resources__data__source.cc new file mode 100644 index 000000000000..20d0742f869c --- /dev/null +++ b/devel/electron5/files/patch-content_browser_webui_shared__resources__data__source.cc @@ -0,0 +1,14 @@ +--- content/browser/webui/shared_resources_data_source.cc.orig 2019-04-08 08:32:54 UTC ++++ content/browser/webui/shared_resources_data_source.cc +@@ -72,9 +72,9 @@ const std::map<int, std::string> CreateMojoResourceIdT + return std::map<int, std::string> { + {IDR_MOJO_MOJO_BINDINGS_JS, "js/mojo_bindings.js"}, + {IDR_MOJO_MOJO_BINDINGS_LITE_JS, "js/mojo_bindings_lite.js"}, +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + {IDR_MOJO_TIME_MOJOM_JS, "js/time.mojom.js"}, +-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + }; + } + diff --git a/devel/electron5/files/patch-content_common_BUILD.gn b/devel/electron5/files/patch-content_common_BUILD.gn new file mode 100644 index 000000000000..84a623759634 --- /dev/null +++ b/devel/electron5/files/patch-content_common_BUILD.gn @@ -0,0 +1,15 @@ +--- content/common/BUILD.gn.orig 2019-04-08 08:32:54 UTC ++++ content/common/BUILD.gn +@@ -382,6 +382,12 @@ source_set("common") { + libs += [ "android" ] + } + ++ if (is_bsd) { ++ sources -= [ ++ "sandbox_init_linux.cc", ++ ] ++ } ++ + if (is_debug && !is_component_build && enable_plugins) { + # Content depends on the PPAPI message logging stuff; if this isn't here, + # some unit test binaries won't compile. This only worked in release mode diff --git a/devel/electron5/files/patch-content_common_common__sandbox__support__linux.cc b/devel/electron5/files/patch-content_common_common__sandbox__support__linux.cc new file mode 100644 index 000000000000..a255b6f85604 --- /dev/null +++ b/devel/electron5/files/patch-content_common_common__sandbox__support__linux.cc @@ -0,0 +1,10 @@ +--- content/common/common_sandbox_support_linux.cc.orig 2019-04-08 08:18:19 UTC ++++ content/common/common_sandbox_support_linux.cc +@@ -5,6 +5,7 @@ + #include "content/public/common/common_sandbox_support_linux.h" + + #include <sys/stat.h> ++#include <unistd.h> + + #include <limits> + #include <memory> diff --git a/devel/electron5/files/patch-content_common_user__agent.cc b/devel/electron5/files/patch-content_common_user__agent.cc new file mode 100644 index 000000000000..4456692317e9 --- /dev/null +++ b/devel/electron5/files/patch-content_common_user__agent.cc @@ -0,0 +1,17 @@ +--- content/common/user_agent.cc.orig 2019-04-08 08:32:54 UTC ++++ content/common/user_agent.cc +@@ -131,6 +131,14 @@ std::string BuildOSCpuInfo(bool include_android_build_ + #endif + ); // NOLINT + ++#if defined(OS_BSD) ++#if defined(__x86_64__) ++ base::StringAppendF(&os_cpu, "; Linux x86_64"); ++#else ++ base::StringAppendF(&os_cpu, "; Linux i686"); ++#endif ++#endif ++ + return os_cpu; + } + diff --git a/devel/electron5/files/patch-content_gpu_BUILD.gn b/devel/electron5/files/patch-content_gpu_BUILD.gn new file mode 100644 index 000000000000..3ecb06b8b71e --- /dev/null +++ b/devel/electron5/files/patch-content_gpu_BUILD.gn @@ -0,0 +1,11 @@ +--- content/gpu/BUILD.gn.orig 2019-04-08 08:32:54 UTC ++++ content/gpu/BUILD.gn +@@ -133,7 +133,7 @@ target(link_target_type, "gpu_sources") { + + # Use DRI on desktop Linux builds. + if (current_cpu != "s390x" && current_cpu != "ppc64" && is_desktop_linux && +- (!is_chromecast || is_cast_desktop_build)) { ++ (!is_chromecast || is_cast_desktop_build) && !is_bsd) { + configs += [ "//build/config/linux/dri" ] + } + } diff --git a/devel/electron5/files/patch-content_gpu_gpu__main.cc b/devel/electron5/files/patch-content_gpu_gpu__main.cc new file mode 100644 index 000000000000..a5db07f08c04 --- /dev/null +++ b/devel/electron5/files/patch-content_gpu_gpu__main.cc @@ -0,0 +1,47 @@ +--- content/gpu/gpu_main.cc.orig 2019-04-09 12:48:19 UTC ++++ content/gpu/gpu_main.cc +@@ -78,7 +78,7 @@ + #include "ui/gfx/x/x11_switches.h" // nogncheck + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "content/gpu/gpu_sandbox_hook_linux.h" + #include "content/public/common/sandbox_init.h" + #include "services/service_manager/sandbox/linux/sandbox_linux.h" +@@ -111,7 +111,7 @@ namespace content { + + namespace { + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) && !defined(OS_BSD) + bool StartSandboxLinux(gpu::GpuWatchdogThread*, + const gpu::GPUInfo*, + const gpu::GpuPreferences&); +@@ -172,7 +172,7 @@ class ContentSandboxHelper : public gpu::GpuSandboxHel + bool EnsureSandboxInitialized(gpu::GpuWatchdogThread* watchdog_thread, + const gpu::GPUInfo* gpu_info, + const gpu::GpuPreferences& gpu_prefs) override { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) && !defined(OS_BSD) + return StartSandboxLinux(watchdog_thread, gpu_info, gpu_prefs); + #elif defined(OS_WIN) + return StartSandboxWindows(sandbox_info_); +@@ -367,7 +367,7 @@ int GpuMain(const MainFunctionParams& parameters) { + + namespace { + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) && !defined(OS_BSD) + bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdog_thread, + const gpu::GPUInfo* gpu_info, + const gpu::GpuPreferences& gpu_prefs) { +@@ -402,7 +402,7 @@ bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdo + + return res; + } +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) && !defined(OS_BSD) + + #if defined(OS_WIN) + bool StartSandboxWindows(const sandbox::SandboxInterfaceInfo* sandbox_info) { diff --git a/devel/electron5/files/patch-content_gpu_gpu__sandbox__hook__linux.cc b/devel/electron5/files/patch-content_gpu_gpu__sandbox__hook__linux.cc new file mode 100644 index 000000000000..790ba884806f --- /dev/null +++ b/devel/electron5/files/patch-content_gpu_gpu__sandbox__hook__linux.cc @@ -0,0 +1,58 @@ +--- content/gpu/gpu_sandbox_hook_linux.cc.orig 2019-04-08 08:18:19 UTC ++++ content/gpu/gpu_sandbox_hook_linux.cc +@@ -95,8 +95,9 @@ static const char kLibV4lEncPluginPath[] = + "/usr/lib/libv4l/plugins/libv4l-encplugin.so"; + #endif + +-constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE; ++constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL; + ++#if !defined(OS_BSD) + void AddV4L2GpuWhitelist( + std::vector<BrokerFilePermission>* permissions, + const service_manager::SandboxSeccompBPF::Options& options) { +@@ -277,8 +278,10 @@ std::vector<BrokerFilePermission> FilePermissionsForGp + AddStandardGpuWhiteList(&permissions); + return permissions; + } ++#endif + + void LoadArmGpuLibraries() { ++#if !defined(OS_BSD) + // Preload the Mali library. + if (UseChromecastSandboxWhitelist()) { + for (const char* path : kWhitelistedChromecastPaths) { +@@ -293,6 +296,7 @@ void LoadArmGpuLibraries() { + // Preload the Tegra V4L2 (video decode acceleration) library. + dlopen(kLibTegraPath, dlopen_flag); + } ++#endif + } + + bool LoadAmdGpuLibraries() { +@@ -348,6 +352,7 @@ bool LoadLibrariesForGpu( + return true; + } + ++#if !defined(OS_BSD) + sandbox::syscall_broker::BrokerCommandSet CommandSetForGPU( + const service_manager::SandboxLinux::Options& options) { + sandbox::syscall_broker::BrokerCommandSet command_set; +@@ -368,13 +373,17 @@ bool BrokerProcessPreSandboxHook( + service_manager::SetProcessTitleFromCommandLine(nullptr); + return true; + } ++#endif + + } // namespace + + bool GpuProcessPreSandboxHook(service_manager::SandboxLinux::Options options) { ++ NOTIMPLEMENTED(); ++#if !defined(OS_BSD) + service_manager::SandboxLinux::GetInstance()->StartBrokerProcess( + CommandSetForGPU(options), FilePermissionsForGpu(options), + base::BindOnce(BrokerProcessPreSandboxHook), options); ++#endif + + if (!LoadLibrariesForGpu(options)) + return false; diff --git a/devel/electron5/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc b/devel/electron5/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc new file mode 100644 index 000000000000..0ffa35fa93e3 --- /dev/null +++ b/devel/electron5/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc @@ -0,0 +1,38 @@ +--- content/ppapi_plugin/ppapi_blink_platform_impl.cc.orig 2019-04-08 08:32:54 UTC ++++ content/ppapi_plugin/ppapi_blink_platform_impl.cc +@@ -20,7 +20,7 @@ + + #if defined(OS_MACOSX) + #include "content/child/child_process_sandbox_support_impl_mac.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "content/child/child_process_sandbox_support_impl_linux.h" + #endif + +@@ -34,7 +34,7 @@ typedef struct CGFont* CGFontRef; + namespace content { + + PpapiBlinkPlatformImpl::PpapiBlinkPlatformImpl() { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + font_loader_ = + sk_make_sp<font_service::FontLoader>(ChildThread::Get()->GetConnector()); + SkFontConfigInterface::SetGlobal(font_loader_); +@@ -49,7 +49,7 @@ PpapiBlinkPlatformImpl::~PpapiBlinkPlatformImpl() { + } + + void PpapiBlinkPlatformImpl::Shutdown() { +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + // SandboxSupport contains a map of OutOfProcessFont objects, which hold + // WebStrings and WebVectors, which become invalidated when blink is shut + // down. Hence, we need to clear that map now, just before blink::shutdown() +@@ -59,7 +59,7 @@ void PpapiBlinkPlatformImpl::Shutdown() { + } + + blink::WebSandboxSupport* PpapiBlinkPlatformImpl::GetSandboxSupport() { +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + return sandbox_support_.get(); + #else + return nullptr; diff --git a/devel/electron5/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h b/devel/electron5/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h new file mode 100644 index 000000000000..2ec5475bec25 --- /dev/null +++ b/devel/electron5/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h @@ -0,0 +1,25 @@ +--- content/ppapi_plugin/ppapi_blink_platform_impl.h.orig 2019-04-08 08:32:54 UTC ++++ content/ppapi_plugin/ppapi_blink_platform_impl.h +@@ -13,7 +13,7 @@ + #include "build/build_config.h" + #include "content/child/blink_platform_impl.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "components/services/font/public/cpp/font_loader.h" + #include "third_party/skia/include/core/SkRefCnt.h" + #endif +@@ -42,11 +42,11 @@ class PpapiBlinkPlatformImpl : public BlinkPlatformImp + bool sync_dir) override; + + private: +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + std::unique_ptr<blink::WebSandboxSupport> sandbox_support_; + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + sk_sp<font_service::FontLoader> font_loader_; + #endif + diff --git a/devel/electron5/files/patch-content_public_app_content__packaged__services__manifest.cc b/devel/electron5/files/patch-content_public_app_content__packaged__services__manifest.cc new file mode 100644 index 000000000000..ea5add9d44ce --- /dev/null +++ b/devel/electron5/files/patch-content_public_app_content__packaged__services__manifest.cc @@ -0,0 +1,20 @@ +--- content/public/app/content_packaged_services_manifest.cc.orig 2019-04-08 08:32:55 UTC ++++ content/public/app/content_packaged_services_manifest.cc +@@ -23,7 +23,7 @@ + #include "services/video_capture/manifest.h" + #include "services/viz/manifest.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "components/services/font/manifest.h" + #endif + +@@ -67,7 +67,7 @@ const service_manager::Manifest& GetContentPackagedSer + .PackageService(tracing::GetManifest()) + .PackageService(video_capture::GetManifest()) + .PackageService(viz::GetManifest()) +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + .PackageService(font_service::GetManifest()) + #endif + #if defined(OS_CHROMEOS) diff --git a/devel/electron5/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc b/devel/electron5/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc new file mode 100644 index 000000000000..ee77b0ab1e0a --- /dev/null +++ b/devel/electron5/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc @@ -0,0 +1,11 @@ +--- content/public/app/v8_snapshot_overlay_manifest.cc.orig 2019-04-08 08:18:19 UTC ++++ content/public/app/v8_snapshot_overlay_manifest.cc +@@ -15,7 +15,7 @@ namespace content { + const service_manager::Manifest& GetV8SnapshotOverlayManifest() { + static base::NoDestructor<service_manager::Manifest> manifest { + service_manager::ManifestBuilder() +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + .PreloadFile(kV8NativesDataDescriptor, + base::FilePath(FILE_PATH_LITERAL("natives_blob.bin"))) + #if defined(USE_V8_CONTEXT_SNAPSHOT) diff --git a/devel/electron5/files/patch-content_public_common_child__process__host.h b/devel/electron5/files/patch-content_public_common_child__process__host.h new file mode 100644 index 000000000000..37f3d7d78f59 --- /dev/null +++ b/devel/electron5/files/patch-content_public_common_child__process__host.h @@ -0,0 +1,20 @@ +--- content/public/common/child_process_host.h.orig 2019-04-08 08:32:55 UTC ++++ content/public/common/child_process_host.h +@@ -47,7 +47,7 @@ class CONTENT_EXPORT ChildProcessHost : public IPC::Se + // No special behavior requested. + CHILD_NORMAL = 0, + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Indicates that the child execed after forking may be execced from + // /proc/self/exe rather than using the "real" app path. This prevents + // autoupdate from confusing us if it changes the file out from under us. +@@ -56,7 +56,7 @@ class CONTENT_EXPORT ChildProcessHost : public IPC::Se + // gdb). In this case, you'd use GetChildPath to get the real executable + // file name, and then prepend the GDB command to the command line. + CHILD_ALLOW_SELF = 1 << 0, +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + }; + + // Returns the pathname to be used for a child process. If a subprocess diff --git a/devel/electron5/files/patch-content_public_common_common__param__traits__macros.h b/devel/electron5/files/patch-content_public_common_common__param__traits__macros.h new file mode 100644 index 000000000000..3767c3b68ca0 --- /dev/null +++ b/devel/electron5/files/patch-content_public_common_common__param__traits__macros.h @@ -0,0 +1,11 @@ +--- content/public/common/common_param_traits_macros.h.orig 2019-04-08 08:32:55 UTC ++++ content/public/common/common_param_traits_macros.h +@@ -325,7 +325,7 @@ IPC_STRUCT_TRAITS_BEGIN(content::RendererPreferences) + IPC_STRUCT_TRAITS_MEMBER(disable_client_blocked_error_page) + IPC_STRUCT_TRAITS_MEMBER(plugin_fullscreen_allowed) + IPC_STRUCT_TRAITS_MEMBER(network_contry_iso) +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + IPC_STRUCT_TRAITS_MEMBER(system_font_family_name) + #endif + #if defined(OS_WIN) diff --git a/devel/electron5/files/patch-content_public_common_content__features.cc b/devel/electron5/files/patch-content_public_common_content__features.cc new file mode 100644 index 000000000000..9038c05e0a96 --- /dev/null +++ b/devel/electron5/files/patch-content_public_common_content__features.cc @@ -0,0 +1,11 @@ +--- content/public/common/content_features.cc.orig 2019-04-08 08:32:55 UTC ++++ content/public/common/content_features.cc +@@ -493,7 +493,7 @@ const base::Feature kWebAssemblyThreads{"WebAssemblyTh + base::FEATURE_DISABLED_BY_DEFAULT}; + + // Enable WebAssembly trap handler. +-#if defined(OS_LINUX) && defined(ARCH_CPU_X86_64) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_64) + const base::Feature kWebAssemblyTrapHandler{"WebAssemblyTrapHandler", + base::FEATURE_ENABLED_BY_DEFAULT}; + #else diff --git a/devel/electron5/files/patch-content_public_common_content__switches.cc b/devel/electron5/files/patch-content_public_common_content__switches.cc new file mode 100644 index 000000000000..cca3699508eb --- /dev/null +++ b/devel/electron5/files/patch-content_public_common_content__switches.cc @@ -0,0 +1,11 @@ +--- content/public/common/content_switches.cc.orig 2019-04-08 08:32:55 UTC ++++ content/public/common/content_switches.cc +@@ -968,7 +968,7 @@ const char kDisableAudioSupportForDesktopShare[] = + const char kDisablePanelFitting[] = "disable-panel-fitting"; + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD) + // Allows sending text-to-speech requests to speech-dispatcher, a common + // Linux speech service. Because it's buggy, the user must explicitly + // enable it so that visiting a random webpage can't cause instability. diff --git a/devel/electron5/files/patch-content_public_common_content__switches.h b/devel/electron5/files/patch-content_public_common_content__switches.h new file mode 100644 index 000000000000..4ad5026ad08c --- /dev/null +++ b/devel/electron5/files/patch-content_public_common_content__switches.h @@ -0,0 +1,11 @@ +--- content/public/common/content_switches.h.orig 2019-04-08 08:32:55 UTC ++++ content/public/common/content_switches.h +@@ -270,7 +270,7 @@ CONTENT_EXPORT extern const char kEnableOSKOverscroll[ + CONTENT_EXPORT extern const char kDisablePanelFitting[]; + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD) + CONTENT_EXPORT extern const char kEnableSpeechDispatcher[]; + #endif + diff --git a/devel/electron5/files/patch-content_public_common_renderer__preferences.h b/devel/electron5/files/patch-content_public_common_renderer__preferences.h new file mode 100644 index 000000000000..04190193cc83 --- /dev/null +++ b/devel/electron5/files/patch-content_public_common_renderer__preferences.h @@ -0,0 +1,11 @@ +--- content/public/common/renderer_preferences.h.orig 2019-04-08 08:32:55 UTC ++++ content/public/common/renderer_preferences.h +@@ -120,7 +120,7 @@ struct CONTENT_EXPORT RendererPreferences { + // Country iso of the mobile network for content detection purpose. + std::string network_contry_iso; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + std::string system_font_family_name; + #endif + diff --git a/devel/electron5/files/patch-content_public_common_use__zoom__for__dsf__policy.cc b/devel/electron5/files/patch-content_public_common_use__zoom__for__dsf__policy.cc new file mode 100644 index 000000000000..1d8bdce8fd3c --- /dev/null +++ b/devel/electron5/files/patch-content_public_common_use__zoom__for__dsf__policy.cc @@ -0,0 +1,11 @@ +--- content/public/common/use_zoom_for_dsf_policy.cc.orig 2019-04-08 08:18:19 UTC ++++ content/public/common/use_zoom_for_dsf_policy.cc +@@ -25,7 +25,7 @@ const base::Feature kUseZoomForDsfEnabledByDefault{ + #endif + + bool IsUseZoomForDSFEnabledByDefault() { +-#if defined(OS_LINUX) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) + return true; + #elif defined(OS_WIN) || defined(OS_ANDROID) + return base::FeatureList::IsEnabled(kUseZoomForDsfEnabledByDefault); diff --git a/devel/electron5/files/patch-content_public_test_browser__test__base.cc b/devel/electron5/files/patch-content_public_test_browser__test__base.cc new file mode 100644 index 000000000000..5080cfd82237 --- /dev/null +++ b/devel/electron5/files/patch-content_public_test_browser__test__base.cc @@ -0,0 +1,13 @@ +--- content/public/test/browser_test_base.cc.orig 2019-04-08 08:32:55 UTC ++++ content/public/test/browser_test_base.cc +@@ -62,6 +62,10 @@ + #include "ui/views/test/event_generator_delegate_mac.h" + #endif + ++#if defined(OS_FREEBSD) ++#include <sys/signal.h> ++#endif ++ + #if defined(OS_POSIX) + #include "base/process/process_handle.h" + #endif diff --git a/devel/electron5/files/patch-content_public_test_mock__render__thread.cc b/devel/electron5/files/patch-content_public_test_mock__render__thread.cc new file mode 100644 index 000000000000..54d358309dc3 --- /dev/null +++ b/devel/electron5/files/patch-content_public_test_mock__render__thread.cc @@ -0,0 +1,11 @@ +--- content/public/test/mock_render_thread.cc.orig 2019-04-08 08:32:55 UTC ++++ content/public/test/mock_render_thread.cc +@@ -69,7 +69,7 @@ class MockRenderMessageFilterImpl : public mojom::Rend + std::move(callback).Run(false); + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + void SetThreadPriority(int32_t platform_thread_id, + base::ThreadPriority thread_priority) override {} + #endif diff --git a/devel/electron5/files/patch-content_renderer_media_audio_audio__device__factory.cc b/devel/electron5/files/patch-content_renderer_media_audio_audio__device__factory.cc new file mode 100644 index 000000000000..c4b271290315 --- /dev/null +++ b/devel/electron5/files/patch-content_renderer_media_audio_audio__device__factory.cc @@ -0,0 +1,11 @@ +--- content/renderer/media/audio/audio_device_factory.cc.orig 2019-04-08 08:32:55 UTC ++++ content/renderer/media/audio/audio_device_factory.cc +@@ -33,7 +33,7 @@ AudioDeviceFactory* AudioDeviceFactory::factory_ = nul + + namespace { + +-#if defined(OS_WIN) || defined(OS_MACOSX) || \ ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \ + (defined(OS_LINUX) && !defined(OS_CHROMEOS)) + // Due to driver deadlock issues on Windows (http://crbug/422522) there is a + // chance device authorization response is never received from the browser side. diff --git a/devel/electron5/files/patch-content_renderer_media_stream_processed__local__audio__source.cc b/devel/electron5/files/patch-content_renderer_media_stream_processed__local__audio__source.cc new file mode 100644 index 000000000000..ef7824fc5db7 --- /dev/null +++ b/devel/electron5/files/patch-content_renderer_media_stream_processed__local__audio__source.cc @@ -0,0 +1,20 @@ +--- content/renderer/media/stream/processed_local_audio_source.cc.orig 2019-04-08 08:32:55 UTC ++++ content/renderer/media/stream/processed_local_audio_source.cc +@@ -35,7 +35,7 @@ void* const kProcessedLocalAudioSourceIdentifier = + const_cast<void**>(&kProcessedLocalAudioSourceIdentifier); + + bool ApmInAudioServiceEnabled() { +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + return base::FeatureList::IsEnabled(features::kWebRtcApmInAudioService); + #else + return false; +@@ -355,7 +355,7 @@ void ProcessedLocalAudioSource::CaptureUsingProcessor( + bool key_pressed) { + #if defined(OS_WIN) || defined(OS_MACOSX) + DCHECK_LE(volume, 1.0); +-#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_OPENBSD) ++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + // We have a special situation on Linux where the microphone volume can be + // "higher than maximum". The input volume slider in the sound preference + // allows the user to set a scaling that is higher than 100%. It means that diff --git a/devel/electron5/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc b/devel/electron5/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc new file mode 100644 index 000000000000..10d5c966c9d1 --- /dev/null +++ b/devel/electron5/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc @@ -0,0 +1,11 @@ +--- content/renderer/media/webrtc/webrtc_audio_renderer_unittest.cc.orig 2019-04-08 08:32:55 UTC ++++ content/renderer/media/webrtc/webrtc_audio_renderer_unittest.cc +@@ -203,7 +203,7 @@ TEST_F(WebRtcAudioRendererTest, MultipleRenderers) { + TEST_F(WebRtcAudioRendererTest, VerifySinkParameters) { + SetupRenderer(kDefaultOutputDeviceId); + renderer_proxy_->Start(); +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD) + static const int kExpectedBufferSize = kHardwareSampleRate / 100; + #elif defined(OS_ANDROID) + static const int kExpectedBufferSize = 2 * kHardwareSampleRate / 100; diff --git a/devel/electron5/files/patch-content_renderer_render__thread__impl.cc b/devel/electron5/files/patch-content_renderer_render__thread__impl.cc new file mode 100644 index 000000000000..f8c259b5e58d --- /dev/null +++ b/devel/electron5/files/patch-content_renderer_render__thread__impl.cc @@ -0,0 +1,56 @@ +--- content/renderer/render_thread_impl.cc.orig 2019-04-09 12:48:19 UTC ++++ content/renderer/render_thread_impl.cc +@@ -191,12 +191,21 @@ + #include "mojo/public/cpp/bindings/message_dumper.h" + #endif + ++#if !defined(OS_BSD) + #if defined(OS_MACOSX) + #include <malloc/malloc.h> + #else + #include <malloc.h> + #endif ++#endif + ++#if defined(OS_BSD) ++#include <stddef.h> ++#include <stdint.h> ++#include <sys/param.h> ++#include <sys/sysctl.h> ++#endif ++ + using base::ThreadRestrictions; + using blink::WebDocument; + using blink::WebFrame; +@@ -926,7 +935,7 @@ void RenderThreadImpl::Init() { + DCHECK(parsed_num_raster_threads) << string_value; + DCHECK_GT(num_raster_threads, 0); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + categorized_worker_pool_->SetBackgroundingCallback( + main_thread_scheduler_->DefaultTaskRunner(), + base::BindOnce( +@@ -967,7 +976,7 @@ void RenderThreadImpl::Init() { + GetConnector()->BindInterface(mojom::kBrowserServiceName, + mojo::MakeRequest(&storage_partition_service_)); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + render_message_filter()->SetThreadPriority( + ChildProcess::current()->io_thread_id(), base::ThreadPriority::DISPLAY); + #endif +@@ -1337,11 +1346,11 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl: + gpu::kGpuFeatureStatusEnabled); + const bool enable_gpu_memory_buffers = + !is_gpu_compositing_disabled_ && +-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + !cmd_line->HasSwitch(switches::kDisableGpuMemoryBufferVideoFrames); + #else + cmd_line->HasSwitch(switches::kEnableGpuMemoryBufferVideoFrames); +-#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) ++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + const bool enable_media_stream_gpu_memory_buffers = + enable_gpu_memory_buffers && + base::FeatureList::IsEnabled( diff --git a/devel/electron5/files/patch-content_renderer_renderer__blink__platform__impl.cc b/devel/electron5/files/patch-content_renderer_renderer__blink__platform__impl.cc new file mode 100644 index 000000000000..31a6cfd814a8 --- /dev/null +++ b/devel/electron5/files/patch-content_renderer_renderer__blink__platform__impl.cc @@ -0,0 +1,56 @@ +--- content/renderer/renderer_blink_platform_impl.cc.orig 2019-04-09 12:48:19 UTC ++++ content/renderer/renderer_blink_platform_impl.cc +@@ -109,7 +109,7 @@ + + #if defined(OS_MACOSX) + #include "content/child/child_process_sandbox_support_impl_mac.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "content/child/child_process_sandbox_support_impl_linux.h" + #endif + +@@ -202,7 +202,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl( + ->Clone(); + thread_safe_sender_ = RenderThreadImpl::current()->thread_safe_sender(); + blob_registry_.reset(new WebBlobRegistryImpl(thread_safe_sender_.get())); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + font_loader_ = sk_make_sp<font_service::FontLoader>(connector_.get()); + SkFontConfigInterface::SetGlobal(font_loader_); + #endif +@@ -211,7 +211,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl( + connector_ = service_manager::Connector::Create(&request); + } + +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + if (g_sandbox_enabled && sandboxEnabled()) { + #if defined(OS_MACOSX) + sandbox_support_.reset(new WebSandboxSupportMac(connector_.get())); +@@ -239,7 +239,7 @@ RendererBlinkPlatformImpl::~RendererBlinkPlatformImpl( + } + + void RendererBlinkPlatformImpl::Shutdown() { +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + // SandboxSupport contains a map of OutOfProcessFont objects, which hold + // WebStrings and WebVectors, which become invalidated when blink is shut + // down. Hence, we need to clear that map now, just before blink::shutdown() +@@ -320,7 +320,7 @@ RendererBlinkPlatformImpl::CreateNetworkURLLoaderFacto + + void RendererBlinkPlatformImpl::SetDisplayThreadPriority( + base::PlatformThreadId thread_id) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + if (RenderThreadImpl* render_thread = RenderThreadImpl::current()) { + render_thread->render_message_filter()->SetThreadPriority( + thread_id, base::ThreadPriority::DISPLAY); +@@ -333,7 +333,7 @@ blink::BlameContext* RendererBlinkPlatformImpl::GetTop + } + + blink::WebSandboxSupport* RendererBlinkPlatformImpl::GetSandboxSupport() { +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + return sandbox_support_.get(); + #else + // These platforms do not require sandbox support. diff --git a/devel/electron5/files/patch-content_renderer_renderer__blink__platform__impl.h b/devel/electron5/files/patch-content_renderer_renderer__blink__platform__impl.h new file mode 100644 index 000000000000..daf3ceb03ccc --- /dev/null +++ b/devel/electron5/files/patch-content_renderer_renderer__blink__platform__impl.h @@ -0,0 +1,29 @@ +--- content/renderer/renderer_blink_platform_impl.h.orig 2019-04-09 12:48:19 UTC ++++ content/renderer/renderer_blink_platform_impl.h +@@ -29,7 +29,7 @@ + #include "third_party/blink/public/mojom/loader/code_cache.mojom.h" + #include "third_party/blink/public/platform/modules/webdatabase/web_database.mojom.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "components/services/font/public/cpp/font_loader.h" // nogncheck + #include "third_party/skia/include/core/SkRefCnt.h" // nogncheck + #endif +@@ -264,7 +264,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi + std::unique_ptr<service_manager::Connector> connector_; + scoped_refptr<base::SingleThreadTaskRunner> io_runner_; + +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + std::unique_ptr<blink::WebSandboxSupport> sandbox_support_; + #endif + +@@ -299,7 +299,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi + blink::mojom::CodeCacheHostPtrInfo code_cache_host_info_; + scoped_refptr<blink::mojom::ThreadSafeCodeCacheHostPtr> code_cache_host_; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + sk_sp<font_service::FontLoader> font_loader_; + #endif + diff --git a/devel/electron5/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc b/devel/electron5/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc new file mode 100644 index 000000000000..3d0117a67802 --- /dev/null +++ b/devel/electron5/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc @@ -0,0 +1,19 @@ +--- content/renderer/renderer_main_platform_delegate_linux.cc.orig 2019-04-08 08:18:19 UTC ++++ content/renderer/renderer_main_platform_delegate_linux.cc +@@ -30,6 +30,7 @@ void RendererMainPlatformDelegate::PlatformUninitializ + } + + bool RendererMainPlatformDelegate::EnableSandbox() { ++#if !defined(OS_BSD) + // The setuid sandbox is started in the zygote process: zygote_main_linux.cc + // https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox.md + // +@@ -65,7 +66,7 @@ bool RendererMainPlatformDelegate::EnableSandbox() { + CHECK_EQ(errno, EPERM); + } + #endif // __x86_64__ +- ++#endif // ! OS_BSD + return true; + } + diff --git a/devel/electron5/files/patch-content_shell_BUILD.gn b/devel/electron5/files/patch-content_shell_BUILD.gn new file mode 100644 index 000000000000..5b280089b62f --- /dev/null +++ b/devel/electron5/files/patch-content_shell_BUILD.gn @@ -0,0 +1,11 @@ +--- content/shell/BUILD.gn.orig 2019-04-08 08:32:55 UTC ++++ content/shell/BUILD.gn +@@ -942,7 +942,7 @@ group("content_shell_crash_test") { + if (is_win) { + data_deps += [ "//build/win:copy_cdb_to_output" ] + } +- if (is_posix && !is_android) { ++ if (is_posix && !is_android && !is_bsd) { + data_deps += [ + "//third_party/breakpad:dump_syms($host_toolchain)", + "//third_party/breakpad:minidump_stackwalk($host_toolchain)", diff --git a/devel/electron5/files/patch-content_shell_browser_shell__browser__context.cc b/devel/electron5/files/patch-content_shell_browser_shell__browser__context.cc new file mode 100644 index 000000000000..cca1d51f6a73 --- /dev/null +++ b/devel/electron5/files/patch-content_shell_browser_shell__browser__context.cc @@ -0,0 +1,20 @@ +--- content/shell/browser/shell_browser_context.cc.orig 2019-04-08 08:18:19 UTC ++++ content/shell/browser/shell_browser_context.cc +@@ -28,7 +28,7 @@ + + #if defined(OS_WIN) + #include "base/base_paths_win.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "base/nix/xdg_util.h" + #elif defined(OS_MACOSX) + #include "base/base_paths_mac.h" +@@ -103,7 +103,7 @@ void ShellBrowserContext::InitWhileIOAllowed() { + #if defined(OS_WIN) + CHECK(base::PathService::Get(base::DIR_LOCAL_APP_DATA, &path_)); + path_ = path_.Append(std::wstring(L"content_shell")); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + std::unique_ptr<base::Environment> env(base::Environment::Create()); + base::FilePath config_dir( + base::nix::GetXDGDirectory(env.get(), diff --git a/devel/electron5/files/patch-content_shell_browser_shell__browser__main__parts.cc b/devel/electron5/files/patch-content_shell_browser_shell__browser__main__parts.cc new file mode 100644 index 000000000000..c3236c2785a2 --- /dev/null +++ b/devel/electron5/files/patch-content_shell_browser_shell__browser__main__parts.cc @@ -0,0 +1,20 @@ +--- content/shell/browser/shell_browser_main_parts.cc.orig 2019-04-08 08:32:55 UTC ++++ content/shell/browser/shell_browser_main_parts.cc +@@ -48,7 +48,7 @@ + #if defined(USE_AURA) && defined(USE_X11) + #include "ui/events/devices/x11/touch_factory_x11.h" // nogncheck + #endif +-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX) ++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) + #include "ui/base/ime/input_method_initializer.h" + #endif + #if defined(OS_CHROMEOS) +@@ -126,7 +126,7 @@ int ShellBrowserMainParts::PreEarlyInitialization() { + #if defined(USE_X11) + ui::SetDefaultX11ErrorHandlers(); + #endif +-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX) ++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) + ui::InitializeInputMethodForTesting(); + #endif + #if defined(OS_ANDROID) diff --git a/devel/electron5/files/patch-content_shell_test__runner_test__runner.cc b/devel/electron5/files/patch-content_shell_test__runner_test__runner.cc new file mode 100644 index 000000000000..b0df38733e4c --- /dev/null +++ b/devel/electron5/files/patch-content_shell_test__runner_test__runner.cc @@ -0,0 +1,29 @@ +--- content/shell/test_runner/test_runner.cc.orig 2019-04-08 08:32:55 UTC ++++ content/shell/test_runner/test_runner.cc +@@ -64,7 +64,7 @@ + #include "ui/gfx/geometry/size.h" + #include "ui/gfx/skia_util.h" + +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) + #include "third_party/blink/public/platform/web_font_render_style.h" + #endif + +@@ -1542,7 +1542,7 @@ void TestRunner::Reset() { + drag_image_.reset(); + + blink::WebSecurityPolicy::ClearOriginAccessList(); +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) + blink::WebFontRenderStyle::SetSubpixelPositioning(false); + #endif + +@@ -2091,7 +2091,7 @@ void TestRunner::AddOriginAccessAllowListEntry( + } + + void TestRunner::SetTextSubpixelPositioning(bool value) { +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) + // Since FontConfig doesn't provide a variable to control subpixel + // positioning, we'll fall back to setting it globally for all fonts. + blink::WebFontRenderStyle::SetSubpixelPositioning(value); diff --git a/devel/electron5/files/patch-content_test_content__test__suite.cc b/devel/electron5/files/patch-content_test_content__test__suite.cc new file mode 100644 index 000000000000..fbd3fec4c6a4 --- /dev/null +++ b/devel/electron5/files/patch-content_test_content__test__suite.cc @@ -0,0 +1,18 @@ +--- content/test/content_test_suite.cc.orig 2019-04-08 08:32:55 UTC ++++ content/test/content_test_suite.cc +@@ -85,6 +85,7 @@ void ContentTestSuite::Initialize() { + // to initialize GL, so don't do it here. + base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); + bool is_child_process = command_line->HasSwitch(switches::kTestChildProcess); ++#if !defined(OS_BSD) + if (!is_child_process) { + gl::GLSurfaceTestSupport::InitializeNoExtensionsOneOff(); + auto* gpu_feature_info = gpu::GetTestGpuThreadHolder()->GetGpuFeatureInfo(); +@@ -92,6 +93,7 @@ void ContentTestSuite::Initialize() { + gpu_feature_info->disabled_extensions); + gl::init::InitializeExtensionSettingsOneOffPlatform(); + } ++#endif + testing::TestEventListeners& listeners = + testing::UnitTest::GetInstance()->listeners(); + listeners.Append(new TestInitializationListener); diff --git a/devel/electron5/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc b/devel/electron5/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc new file mode 100644 index 000000000000..269d7b9da7b3 --- /dev/null +++ b/devel/electron5/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc @@ -0,0 +1,29 @@ +--- content/utility/utility_blink_platform_with_sandbox_support_impl.cc.orig 2019-04-08 08:18:20 UTC ++++ content/utility/utility_blink_platform_with_sandbox_support_impl.cc +@@ -8,7 +8,7 @@ + + #if defined(OS_MACOSX) + #include "content/child/child_process_sandbox_support_impl_mac.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "content/child/child_process_sandbox_support_impl_linux.h" + #endif + +@@ -17,7 +17,7 @@ namespace content { + UtilityBlinkPlatformWithSandboxSupportImpl:: + UtilityBlinkPlatformWithSandboxSupportImpl( + service_manager::Connector* connector) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + font_loader_ = sk_make_sp<font_service::FontLoader>(connector); + SkFontConfigInterface::SetGlobal(font_loader_); + sandbox_support_ = std::make_unique<WebSandboxSupportLinux>(font_loader_); +@@ -31,7 +31,7 @@ UtilityBlinkPlatformWithSandboxSupportImpl:: + + blink::WebSandboxSupport* + UtilityBlinkPlatformWithSandboxSupportImpl::GetSandboxSupport() { +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + return sandbox_support_.get(); + #else + return nullptr; diff --git a/devel/electron5/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h b/devel/electron5/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h new file mode 100644 index 000000000000..eb29dd292c9c --- /dev/null +++ b/devel/electron5/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h @@ -0,0 +1,24 @@ +--- content/utility/utility_blink_platform_with_sandbox_support_impl.h.orig 2019-04-08 08:18:20 UTC ++++ content/utility/utility_blink_platform_with_sandbox_support_impl.h +@@ -11,7 +11,7 @@ + #include "build/build_config.h" + #include "third_party/blink/public/platform/platform.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "components/services/font/public/cpp/font_loader.h" // nogncheck + #include "third_party/skia/include/core/SkRefCnt.h" // nogncheck + #endif +@@ -39,10 +39,10 @@ class UtilityBlinkPlatformWithSandboxSupportImpl : pub + blink::WebSandboxSupport* GetSandboxSupport() override; + + private: +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + std::unique_ptr<blink::WebSandboxSupport> sandbox_support_; + #endif +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + sk_sp<font_service::FontLoader> font_loader_; + #endif + diff --git a/devel/electron5/files/patch-device_bluetooth_BUILD.gn b/devel/electron5/files/patch-device_bluetooth_BUILD.gn new file mode 100644 index 000000000000..abd58abba84e --- /dev/null +++ b/devel/electron5/files/patch-device_bluetooth_BUILD.gn @@ -0,0 +1,11 @@ +--- device/bluetooth/BUILD.gn.orig 2019-04-08 08:32:55 UTC ++++ device/bluetooth/BUILD.gn +@@ -277,7 +277,7 @@ component("bluetooth") { + ] + } + +- if (is_chromeos || is_linux) { ++ if (is_chromeos || (is_linux && !is_bsd)) { + if (use_dbus) { + sources += [ + "bluez/bluetooth_adapter_bluez.cc", diff --git a/devel/electron5/files/patch-device_gamepad_gamepad__provider.cc b/devel/electron5/files/patch-device_gamepad_gamepad__provider.cc new file mode 100644 index 000000000000..2554909b1c07 --- /dev/null +++ b/devel/electron5/files/patch-device_gamepad_gamepad__provider.cc @@ -0,0 +1,11 @@ +--- device/gamepad/gamepad_provider.cc.orig 2019-04-08 08:32:56 UTC ++++ device/gamepad/gamepad_provider.cc +@@ -164,7 +164,7 @@ void GamepadProvider::Initialize(std::unique_ptr<Gamep + monitor->AddDevicesChangedObserver(this); + + polling_thread_.reset(new base::Thread("Gamepad polling thread")); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // On Linux, the data fetcher needs to watch file descriptors, so the message + // loop needs to be a libevent loop. + const base::MessageLoop::Type kMessageLoopType = base::MessageLoop::TYPE_IO; diff --git a/devel/electron5/files/patch-device_usb_BUILD.gn b/devel/electron5/files/patch-device_usb_BUILD.gn new file mode 100644 index 000000000000..8db32d7ec105 --- /dev/null +++ b/devel/electron5/files/patch-device_usb_BUILD.gn @@ -0,0 +1,21 @@ +--- device/usb/BUILD.gn.orig 2019-04-08 08:32:56 UTC ++++ device/usb/BUILD.gn +@@ -112,10 +112,17 @@ static_library("usb") { + ] + } + +- if (is_android || is_chromeos || is_linux) { ++ if (is_android || is_chromeos || (is_linux && !is_bsd)) { + sources += [ + "usb_device_handle_usbfs.cc", + "usb_device_handle_usbfs.h", ++ ] ++ } ++ ++ if (is_bsd) { ++ sources -= [ ++ "usb_device_linux.cc", ++ "usb_device_linux.h", + ] + } + diff --git a/devel/electron5/files/patch-device_usb_usb__context.cc b/devel/electron5/files/patch-device_usb_usb__context.cc new file mode 100644 index 000000000000..976725befc57 --- /dev/null +++ b/devel/electron5/files/patch-device_usb_usb__context.cc @@ -0,0 +1,12 @@ +--- device/usb/usb_context.cc.orig 2019-04-08 08:18:20 UTC ++++ device/usb/usb_context.cc +@@ -58,7 +58,9 @@ void UsbContext::UsbEventHandler::Run() { + + void UsbContext::UsbEventHandler::Stop() { + base::subtle::Release_Store(&running_, 0); ++#if !defined(OS_FREEBSD) // XXX(rene) not available in base version + libusb_interrupt_handle_event(context_); ++#endif + } + + UsbContext::UsbContext(PlatformUsbContext context) : context_(context) { diff --git a/devel/electron5/files/patch-device_usb_usb__error.cc b/devel/electron5/files/patch-device_usb_usb__error.cc new file mode 100644 index 000000000000..919ca8366d6b --- /dev/null +++ b/devel/electron5/files/patch-device_usb_usb__error.cc @@ -0,0 +1,11 @@ +--- device/usb/usb_error.cc.orig 2019-04-08 08:18:20 UTC ++++ device/usb/usb_error.cc +@@ -9,7 +9,7 @@ + namespace device { + + std::string ConvertPlatformUsbErrorToString(int errcode) { +- return libusb_strerror(static_cast<libusb_error>(errcode)); ++ return ""; + } + + } // namespace device diff --git a/devel/electron5/files/patch-device_usb_usb__service__impl.cc b/devel/electron5/files/patch-device_usb_usb__service__impl.cc new file mode 100644 index 000000000000..e528cef5cbbd --- /dev/null +++ b/devel/electron5/files/patch-device_usb_usb__service__impl.cc @@ -0,0 +1,45 @@ +--- device/usb/usb_service_impl.cc.orig 2019-04-08 08:32:56 UTC ++++ device/usb/usb_service_impl.cc +@@ -231,8 +231,10 @@ UsbServiceImpl::UsbServiceImpl() + } + + UsbServiceImpl::~UsbServiceImpl() { ++#if !defined(OS_FREEBSD) + if (hotplug_enabled_) + libusb_hotplug_deregister_callback(context_->context(), hotplug_handle_); ++#endif // !defined(OS_FREEBSD) + } + + void UsbServiceImpl::GetDevices(const GetDevicesCallback& callback) { +@@ -287,6 +289,7 @@ void UsbServiceImpl::OnUsbContext(scoped_refptr<UsbCon + + context_ = std::move(context); + ++#if !defined(OS_FREEBSD) + int rv = libusb_hotplug_register_callback( + context_->context(), + static_cast<libusb_hotplug_event>(LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED | +@@ -299,6 +302,7 @@ void UsbServiceImpl::OnUsbContext(scoped_refptr<UsbCon + + // This will call any enumeration callbacks queued while initializing. + RefreshDevices(); ++#endif // !defined(OS_FREEBSD) + + #if defined(OS_WIN) + DeviceMonitorWin* device_monitor = DeviceMonitorWin::GetForAllInterfaces(); +@@ -495,6 +499,7 @@ void UsbServiceImpl::RemoveDevice(scoped_refptr<UsbDev + device->OnDisconnect(); + } + ++#if !defined(OS_FREEBSD) + // static + int LIBUSB_CALL UsbServiceImpl::HotplugCallback(libusb_context* context, + libusb_device* device_raw, +@@ -528,6 +533,7 @@ int LIBUSB_CALL UsbServiceImpl::HotplugCallback(libusb + + return 0; + } ++#endif // !defined(OS_FREEBSD) + + void UsbServiceImpl::OnPlatformDeviceAdded( + ScopedLibusbDeviceRef platform_device) { diff --git a/devel/electron5/files/patch-device_usb_usb__service__impl.h b/devel/electron5/files/patch-device_usb_usb__service__impl.h new file mode 100644 index 000000000000..ad11f82527ed --- /dev/null +++ b/devel/electron5/files/patch-device_usb_usb__service__impl.h @@ -0,0 +1,26 @@ +--- device/usb/usb_service_impl.h.orig 2019-04-08 08:18:20 UTC ++++ device/usb/usb_service_impl.h +@@ -73,11 +73,13 @@ class UsbServiceImpl : + scoped_refptr<UsbDeviceImpl> device); + void RemoveDevice(scoped_refptr<UsbDeviceImpl> device); + ++#if !defined(OS_FREEBSD) + // Handle hotplug events from libusb. + static int LIBUSB_CALL HotplugCallback(libusb_context* context, + libusb_device* device, + libusb_hotplug_event event, + void* user_data); ++#endif + // These functions release a reference to the provided platform device. + void OnPlatformDeviceAdded(ScopedLibusbDeviceRef platform_device); + void OnPlatformDeviceRemoved(ScopedLibusbDeviceRef platform_device); +@@ -97,7 +99,9 @@ class UsbServiceImpl : + // connected instead of only when a full enumeration is requested. + // TODO(reillyg): Support this on all platforms. crbug.com/411715 + bool hotplug_enabled_ = false; ++#if !defined(OS_FREEBSD) + libusb_hotplug_callback_handle hotplug_handle_; ++#endif + + // Enumeration callbacks are queued until an enumeration completes. + bool enumeration_ready_ = false; diff --git a/devel/electron5/files/patch-electron_BUILD.gn b/devel/electron5/files/patch-electron_BUILD.gn new file mode 100644 index 000000000000..2daec0384286 --- /dev/null +++ b/devel/electron5/files/patch-electron_BUILD.gn @@ -0,0 +1,36 @@ +--- electron/BUILD.gn.orig 2019-07-23 18:38:39 UTC ++++ electron/BUILD.gn +@@ -366,6 +366,15 @@ static_library("electron_lib") { + sources = filenames.lib_sources + set_sources_assignment_filter(sources_assignment_filter) + ++ if (is_bsd) { ++ sources -= [ ++ "atom/common/crash_reporter/crash_reporter_linux.cc", ++ "atom/common/crash_reporter/crash_reporter_linux.h", ++ "atom/common/crash_reporter/linux/crash_dump_handler.cc", ++ "atom/common/crash_reporter/linux/crash_dump_handler.h", ++ ] ++ } ++ + if (is_component_build) { + defines += [ "NODE_SHARED_MODE" ] + } +@@ -440,7 +449,7 @@ static_library("electron_lib") { + if (is_win) { + libs += [ "dwmapi.lib" ] + } +- if (is_linux || is_win) { ++ if ((is_linux && !is_bsd) || is_win) { + deps += [ "//third_party/breakpad:client" ] + include_dirs += [ "//third_party/breakpad" ] + } +@@ -1057,7 +1066,7 @@ dist_zip("electron_dist_zip") { + ":licenses", + ":electron_version", + ] +- if (is_linux) { ++ if (is_linux && !is_bsd) { + data_deps += [ "//sandbox/linux:chrome_sandbox" ] + } + outputs = [ diff --git a/devel/electron5/files/patch-electron_atom_app_atom__main.cc b/devel/electron5/files/patch-electron_atom_app_atom__main.cc new file mode 100644 index 000000000000..0074c4419b54 --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_app_atom__main.cc @@ -0,0 +1,35 @@ +--- electron/atom/app/atom_main.cc.orig 2019-04-04 16:09:31 UTC ++++ electron/atom/app/atom_main.cc +@@ -25,12 +25,12 @@ + #include "base/win/windows_version.h" + #include "content/public/app/sandbox_helper_win.h" + #include "sandbox/win/src/sandbox_types.h" +-#elif defined(OS_LINUX) // defined(OS_WIN) ++#elif defined(OS_LINUX) || defined(OS_BSD) // defined(OS_WIN) + #include <unistd.h> + #include <cstdio> + #include "atom/app/atom_main_delegate.h" // NOLINT + #include "content/public/app/content_main.h" +-#else // defined(OS_LINUX) ++#else // defined(OS_LINUX) || defined(OS_BSD) + #include <mach-o/dyld.h> + #include <unistd.h> + #include <cstdio> +@@ -181,7 +181,7 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, w + return content::ContentMain(params); + } + +-#elif defined(OS_LINUX) // defined(OS_WIN) ++#elif defined(OS_LINUX) || defined(OS_BSD) // defined(OS_WIN) + + int main(int argc, char* argv[]) { + FixStdioStreams(); +@@ -202,7 +202,7 @@ int main(int argc, char* argv[]) { + return content::ContentMain(params); + } + +-#else // defined(OS_LINUX) ++#else // defined(OS_LINUX) || defined(OS_BSD) + + int main(int argc, char* argv[]) { + FixStdioStreams(); diff --git a/devel/electron5/files/patch-electron_atom_app_atom__main__delegate.cc b/devel/electron5/files/patch-electron_atom_app_atom__main__delegate.cc new file mode 100644 index 000000000000..dac3eabea8cd --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_app_atom__main__delegate.cc @@ -0,0 +1,29 @@ +--- electron/atom/app/atom_main_delegate.cc.orig 2019-12-17 03:11:25 UTC ++++ electron/atom/app/atom_main_delegate.cc +@@ -8,7 +8,7 @@ + #include <memory> + #include <string> + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <glib.h> // for g_setenv() + #endif + +@@ -188,7 +188,7 @@ bool AtomMainDelegate::BasicStartupComplete(int* exit_ + base::win::DisableHandleVerifier(); + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Check for --no-sandbox parameter when running as root. + if (getuid() == 0 && IsSandboxEnabled(command_line)) + LOG(FATAL) << "Running as root without --" +@@ -213,7 +213,7 @@ void AtomMainDelegate::PostEarlyInitialization(bool is + ui::ResourceBundle::GetSharedInstance().GetLocaleFilePath(locale, true); + if (!locale_file_path.empty()) { + custom_locale = locale; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + /* When built with USE_GLIB, libcc's GetApplicationLocaleInternal() uses + * glib's g_get_language_names(), which keys off of getenv("LC_ALL") */ + g_setenv("LC_ALL", custom_locale.c_str(), TRUE); diff --git a/devel/electron5/files/patch-electron_atom_browser_api_atom__api__app.cc b/devel/electron5/files/patch-electron_atom_browser_api_atom__api__app.cc new file mode 100644 index 000000000000..97f47ba7a2f3 --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_browser_api_atom__api__app.cc @@ -0,0 +1,38 @@ +--- electron/atom/browser/api/atom_api_app.cc.orig 2019-04-04 16:09:31 UTC ++++ electron/atom/browser/api/atom_api_app.cc +@@ -609,7 +609,7 @@ void App::OnWillFinishLaunching() { + } + + void App::OnFinishLaunching(const base::DictionaryValue& launch_info) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Set the application name for audio streams shown in external + // applications. Only affects pulseaudio currently. + media::AudioManager::SetGlobalAppName(Browser::Get()->GetName()); +@@ -864,7 +864,7 @@ void App::SetPath(mate::Arguments* args, + } + + void App::SetDesktopName(const std::string& desktop_name) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + std::unique_ptr<base::Environment> env(base::Environment::Create()); + env->SetVar("CHROME_DESKTOP", desktop_name); + #endif +@@ -1313,7 +1313,7 @@ void App::BuildPrototype(v8::Isolate* isolate, + .SetMethod("moveToApplicationsFolder", &App::MoveToApplicationsFolder) + .SetMethod("isInApplicationsFolder", &App::IsInApplicationsFolder) + #endif +-#if defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + .SetMethod("setAboutPanelOptions", + base::Bind(&Browser::SetAboutPanelOptions, browser)) + .SetMethod("showAboutPanel", +@@ -1324,7 +1324,7 @@ void App::BuildPrototype(v8::Isolate* isolate, + .SetMethod("getJumpListSettings", &App::GetJumpListSettings) + .SetMethod("setJumpList", &App::SetJumpList) + #endif +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + .SetMethod("isUnityRunning", + base::Bind(&Browser::IsUnityRunning, browser)) + #endif diff --git a/devel/electron5/files/patch-electron_atom_browser_api_atom__api__web__contents.cc b/devel/electron5/files/patch-electron_atom_browser_api_atom__api__web__contents.cc new file mode 100644 index 000000000000..8e548542e2ee --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_browser_api_atom__api__web__contents.cc @@ -0,0 +1,34 @@ +--- electron/atom/browser/api/atom_api_web_contents.cc.orig 2019-12-17 03:11:25 UTC ++++ electron/atom/browser/api/atom_api_web_contents.cc +@@ -97,11 +97,11 @@ + #include "ui/base/cocoa/defaults_utils.h" + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "ui/views/linux_ui/linux_ui.h" + #endif + +-#if defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + #include "content/public/common/renderer_preferences.h" + #include "ui/gfx/font_render_params.h" + #endif +@@ -428,7 +428,7 @@ void WebContents::InitWithSessionAndOptions( + auto* prefs = web_contents()->GetMutableRendererPrefs(); + prefs->accept_languages = g_browser_process->GetApplicationLocale(); + +-#if defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + // Update font settings. + static const base::NoDestructor<gfx::FontRenderParams> params( + gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), nullptr)); +@@ -445,7 +445,7 @@ void WebContents::InitWithSessionAndOptions( + base::TimeDelta interval; + if (ui::TextInsertionCaretBlinkPeriod(&interval)) + prefs->caret_blink_interval = interval; +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + views::LinuxUI* linux_ui = views::LinuxUI::instance(); + if (linux_ui) + prefs->caret_blink_interval = linux_ui->GetCursorBlinkInterval(); diff --git a/devel/electron5/files/patch-electron_atom_browser_atom__browser__main__parts.cc b/devel/electron5/files/patch-electron_atom_browser_atom__browser__main__parts.cc new file mode 100644 index 000000000000..6aa2b67607b3 --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_browser_atom__browser__main__parts.cc @@ -0,0 +1,11 @@ +--- electron/atom/browser/atom_browser_main_parts.cc.orig 2019-12-19 06:05:28 UTC ++++ electron/atom/browser/atom_browser_main_parts.cc +@@ -6,7 +6,7 @@ + + #include <utility> + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <glib.h> // for g_setenv() + #endif + diff --git a/devel/electron5/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc b/devel/electron5/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc new file mode 100644 index 000000000000..6555d08f055e --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc @@ -0,0 +1,20 @@ +--- electron/atom/browser/atom_browser_main_parts_posix.cc.orig 2019-04-04 16:09:31 UTC ++++ electron/atom/browser/atom_browser_main_parts_posix.cc +@@ -182,6 +182,9 @@ void AtomBrowserMainParts::HandleShutdownSignals() { + g_pipe_pid = getpid(); + g_shutdown_pipe_read_fd = pipefd[0]; + g_shutdown_pipe_write_fd = pipefd[1]; ++#if defined(OS_BSD) ++ const size_t kShutdownDetectorThreadStackSize = 0; ++#else + #if !defined(ADDRESS_SANITIZER) && !defined(KEEP_SHADOW_STACKS) + const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2; + #else +@@ -189,6 +192,7 @@ void AtomBrowserMainParts::HandleShutdownSignals() { + // shadow stacks) bloat the stack frames, so we need to increase the stack + // size to avoid hitting the guard page. + const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4; ++#endif + #endif + // TODO(viettrungluu,willchan): crbug.com/29675 - This currently leaks, so + // if you change this, you'll probably need to change the suppression. diff --git a/devel/electron5/files/patch-electron_atom_browser_atom__paths.h b/devel/electron5/files/patch-electron_atom_browser_atom__paths.h new file mode 100644 index 000000000000..3f7191c61ed9 --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_browser_atom__paths.h @@ -0,0 +1,11 @@ +--- electron/atom/browser/atom_paths.h.orig 2019-04-04 16:09:31 UTC ++++ electron/atom/browser/atom_paths.h +@@ -26,7 +26,7 @@ enum { + DIR_USER_CACHE, // Directory where user cache can be written. + DIR_APP_LOGS, // Directory where app logs live + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + DIR_APP_DATA, // Application Data directory under the user profile. + #else + DIR_APP_DATA = base::DIR_APP_DATA, diff --git a/devel/electron5/files/patch-electron_atom_browser_browser.h b/devel/electron5/files/patch-electron_atom_browser_browser.h new file mode 100644 index 000000000000..d7144305fcef --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_browser_browser.h @@ -0,0 +1,33 @@ +--- electron/atom/browser/browser.h.orig 2019-04-04 16:09:31 UTC ++++ electron/atom/browser/browser.h +@@ -182,7 +182,7 @@ class Browser : public WindowListObserver { + + #endif // defined(OS_MACOSX) + +-#if defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + void ShowAboutPanel(); + void SetAboutPanelOptions(const base::DictionaryValue& options); + #endif +@@ -210,10 +210,10 @@ class Browser : public WindowListObserver { + PCWSTR GetAppUserModelID(); + #endif // defined(OS_WIN) + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Whether Unity launcher is running. + bool IsUnityRunning(); +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + // Tell the application to open a file. + bool OpenFile(const std::string& file_path); +@@ -294,7 +294,7 @@ class Browser : public WindowListObserver { + + std::unique_ptr<util::Promise> ready_promise_; + +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + base::DictionaryValue about_panel_options_; + #endif + diff --git a/devel/electron5/files/patch-electron_atom_browser_native__window__views.cc b/devel/electron5/files/patch-electron_atom_browser_native__window__views.cc new file mode 100644 index 000000000000..684b3c62ad07 --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_browser_native__window__views.cc @@ -0,0 +1,47 @@ +--- electron/atom/browser/native_window_views.cc.orig 2019-08-19 21:30:51 UTC ++++ electron/atom/browser/native_window_views.cc +@@ -290,7 +290,7 @@ NativeWindowViews::NativeWindowViews(const mate::Dicti + last_normal_bounds_ = GetBounds(); + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Listen to move events. + aura::Window* window = GetNativeWindow(); + if (window) +@@ -306,7 +306,7 @@ NativeWindowViews::~NativeWindowViews() { + SetForwardMouseMessages(false); + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + aura::Window* window = GetNativeWindow(); + if (window) + window->RemovePreTargetHandler(this); +@@ -1228,7 +1228,7 @@ void NativeWindowViews::OnWidgetBoundsChanged(views::W + } + + void NativeWindowViews::OnWidgetDestroying(views::Widget* widget) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + aura::Window* window = GetNativeWindow(); + if (window) + window->RemovePreTargetHandler(this); +@@ -1321,7 +1321,7 @@ void NativeWindowViews::OnWidgetMove() { + void NativeWindowViews::HandleKeyboardEvent( + content::WebContents*, + const content::NativeWebKeyboardEvent& event) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + if (event.windows_key_code == ui::VKEY_BROWSER_BACK) + NotifyWindowExecuteAppCommand(kBrowserBackward); + else if (event.windows_key_code == ui::VKEY_BROWSER_FORWARD) +@@ -1333,7 +1333,7 @@ void NativeWindowViews::HandleKeyboardEvent( + root_view_->HandleKeyEvent(event); + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + void NativeWindowViews::OnMouseEvent(ui::MouseEvent* event) { + if (event->type() != ui::ET_MOUSE_PRESSED) + return; diff --git a/devel/electron5/files/patch-electron_atom_browser_native__window__views.h b/devel/electron5/files/patch-electron_atom_browser_native__window__views.h new file mode 100644 index 000000000000..7ab9fa37ba58 --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_browser_native__window__views.h @@ -0,0 +1,11 @@ +--- electron/atom/browser/native_window_views.h.orig 2019-04-04 16:09:31 UTC ++++ electron/atom/browser/native_window_views.h +@@ -209,7 +209,7 @@ class NativeWindowViews : public NativeWindow, + content::WebContents*, + const content::NativeWebKeyboardEvent& event) override; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // ui::EventHandler: + void OnMouseEvent(ui::MouseEvent* event) override; + #endif diff --git a/devel/electron5/files/patch-electron_atom_browser_relauncher__linux.cc b/devel/electron5/files/patch-electron_atom_browser_relauncher__linux.cc new file mode 100644 index 000000000000..132838134d02 --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_browser_relauncher__linux.cc @@ -0,0 +1,32 @@ +--- electron/atom/browser/relauncher_linux.cc.orig 2019-04-04 16:09:31 UTC ++++ electron/atom/browser/relauncher_linux.cc +@@ -6,8 +6,10 @@ + + #include <fcntl.h> + #include <signal.h> ++#if !defined(__FreeBSD__) + #include <sys/prctl.h> + #include <sys/signalfd.h> ++#endif + + #include "base/files/file_util.h" + #include "base/files/scoped_file.h" +@@ -26,6 +28,10 @@ void RelauncherSynchronizeWithParent() { + base::ScopedFD relauncher_sync_fd(kRelauncherSyncFD); + static const auto signum = SIGUSR2; + ++#if defined(__FreeBSD__) ++ PLOG(ERROR) << "signalfd & prctl"; ++ fprintf(stderr, "Not Implemented signalfd & prctl in atom/browser/relauncher_linux.cc"); ++#else + // send signum to current process when parent process ends. + if (HANDLE_EINTR(prctl(PR_SET_PDEATHSIG, signum)) != 0) { + PLOG(ERROR) << "prctl"; +@@ -50,6 +56,7 @@ void RelauncherSynchronizeWithParent() { + + // Wait for the parent to exit + parentWaiter.Wait(); ++#endif + } + + int LaunchProgram(const StringVector& relauncher_args, diff --git a/devel/electron5/files/patch-electron_atom_browser_ui_views_atom__views__delegate.cc b/devel/electron5/files/patch-electron_atom_browser_ui_views_atom__views__delegate.cc new file mode 100644 index 000000000000..2f4f2d4a5a61 --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_browser_ui_views_atom__views__delegate.cc @@ -0,0 +1,38 @@ +--- electron/atom/browser/ui/views/atom_views_delegate.cc.orig 2019-04-04 16:09:31 UTC ++++ electron/atom/browser/ui/views/atom_views_delegate.cc +@@ -9,7 +9,7 @@ + #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" + #include "ui/views/widget/native_widget_aura.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "base/environment.h" + #include "base/nix/xdg_util.h" + #include "ui/views/linux_ui/linux_ui.h" +@@ -17,7 +17,7 @@ + + namespace { + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + bool IsDesktopEnvironmentUnity() { + std::unique_ptr<base::Environment> env(base::Environment::Create()); + base::nix::DesktopEnvironment desktop_env = +@@ -68,7 +68,7 @@ bool ViewsDelegate::IsWindowInMetro(gfx::NativeWindow + return false; + } + +-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const { + return NULL; + } +@@ -100,7 +100,7 @@ void ViewsDelegate::OnBeforeWidgetInit( + } + + bool ViewsDelegate::WindowManagerProvidesTitleBar(bool maximized) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // On Ubuntu Unity, the system always provides a title bar for maximized + // windows. + if (!maximized) diff --git a/devel/electron5/files/patch-electron_atom_browser_ui_views_atom__views__delegate.h b/devel/electron5/files/patch-electron_atom_browser_ui_views_atom__views__delegate.h new file mode 100644 index 000000000000..f282feba6bac --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_browser_ui_views_atom__views__delegate.h @@ -0,0 +1,11 @@ +--- electron/atom/browser/ui/views/atom_views_delegate.h.orig 2019-04-04 16:09:31 UTC ++++ electron/atom/browser/ui/views/atom_views_delegate.h +@@ -37,7 +37,7 @@ class ViewsDelegate : public views::ViewsDelegate { + HICON GetDefaultWindowIcon() const override; + HICON GetSmallWindowIcon() const override; + bool IsWindowInMetro(gfx::NativeWindow window) const override; +-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + gfx::ImageSkia* GetDefaultWindowIcon() const override; + #endif + views::NonClientFrameView* CreateDefaultNonClientFrameView( diff --git a/devel/electron5/files/patch-electron_atom_browser_ui_views_submenu__button.cc b/devel/electron5/files/patch-electron_atom_browser_ui_views_submenu__button.cc new file mode 100644 index 000000000000..a51eb62cdf35 --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_browser_ui_views_submenu__button.cc @@ -0,0 +1,11 @@ +--- electron/atom/browser/ui/views/submenu_button.cc.orig 2019-04-04 16:09:31 UTC ++++ electron/atom/browser/ui/views/submenu_button.cc +@@ -25,7 +25,7 @@ SubmenuButton::SubmenuButton(const base::string16& tit + : views::MenuButton(gfx::RemoveAcceleratorChar(title, '&', NULL, NULL), + menu_button_listener), + background_color_(background_color) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Dont' use native style border. + SetBorder(CreateDefaultBorder()); + #endif diff --git a/devel/electron5/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc b/devel/electron5/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc new file mode 100644 index 000000000000..40e69d413987 --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc @@ -0,0 +1,42 @@ +--- electron/atom/common/api/atom_api_crash_reporter.cc.orig 2019-04-04 16:09:31 UTC ++++ electron/atom/common/api/atom_api_crash_reporter.cc +@@ -35,15 +35,23 @@ struct Converter<CrashReporter::UploadReportResult> { + namespace { + + void AddExtraParameter(const std::string& key, const std::string& value) { ++#if !defined(OS_BSD) + CrashReporter::GetInstance()->AddExtraParameter(key, value); ++#endif + } + + void RemoveExtraParameter(const std::string& key) { ++#if !defined(OS_BSD) + CrashReporter::GetInstance()->RemoveExtraParameter(key); ++#endif + } + + std::map<std::string, std::string> GetParameters() { ++#if !defined(OS_BSD) + return CrashReporter::GetInstance()->GetParameters(); ++#else ++ return std::map<std::string, std::string>(); ++#endif + } + + void Initialize(v8::Local<v8::Object> exports, +@@ -51,6 +59,7 @@ void Initialize(v8::Local<v8::Object> exports, + v8::Local<v8::Context> context, + void* priv) { + mate::Dictionary dict(context->GetIsolate(), exports); ++#if !defined(OS_BSD) + auto reporter = base::Unretained(CrashReporter::GetInstance()); + dict.SetMethod("start", base::Bind(&CrashReporter::Start, reporter)); + dict.SetMethod("addExtraParameter", &AddExtraParameter); +@@ -62,6 +71,7 @@ void Initialize(v8::Local<v8::Object> exports, + base::Bind(&CrashReporter::SetUploadToServer, reporter)); + dict.SetMethod("getUploadToServer", + base::Bind(&CrashReporter::GetUploadToServer, reporter)); ++#endif + } + + } // namespace diff --git a/devel/electron5/files/patch-electron_atom_common_api_atom__bindings.cc b/devel/electron5/files/patch-electron_atom_common_api_atom__bindings.cc new file mode 100644 index 000000000000..0d33a0aefeee --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_common_api_atom__bindings.cc @@ -0,0 +1,11 @@ +--- electron/atom/common/api/atom_bindings.cc.orig 2019-12-19 06:08:26 UTC ++++ electron/atom/common/api/atom_bindings.cc +@@ -273,7 +273,7 @@ void AtomBindings::DidReceiveMemoryDump( + if (base::GetCurrentProcId() == dump.pid()) { + mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate); + const auto& osdump = dump.os_dump(); +-#if defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + dict.Set("residentSet", osdump.resident_set_kb); + #endif + dict.Set("private", osdump.private_footprint_kb); diff --git a/devel/electron5/files/patch-electron_atom_common_atom__command__line.cc b/devel/electron5/files/patch-electron_atom_common_atom__command__line.cc new file mode 100644 index 000000000000..a735ffad0884 --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_common_atom__command__line.cc @@ -0,0 +1,11 @@ +--- electron/atom/common/atom_command_line.cc.orig 2019-04-04 16:09:31 UTC ++++ electron/atom/common/atom_command_line.cc +@@ -26,7 +26,7 @@ void AtomCommandLine::Init(int argc, base::CommandLine + argv_.assign(argv, argv + argc); + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // static + void AtomCommandLine::InitializeFromCommandLine() { + argv_ = base::CommandLine::ForCurrentProcess()->argv(); diff --git a/devel/electron5/files/patch-electron_atom_common_atom__command__line.h b/devel/electron5/files/patch-electron_atom_common_atom__command__line.h new file mode 100644 index 000000000000..556a52335549 --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_common_atom__command__line.h @@ -0,0 +1,11 @@ +--- electron/atom/common/atom_command_line.h.orig 2019-04-04 16:09:31 UTC ++++ electron/atom/common/atom_command_line.h +@@ -21,7 +21,7 @@ class AtomCommandLine { + + static void Init(int argc, base::CommandLine::CharType** argv); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // On Linux the command line has to be read from base::CommandLine since + // it is using zygote. + static void InitializeFromCommandLine(); diff --git a/devel/electron5/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc b/devel/electron5/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc new file mode 100644 index 000000000000..f0b4664f0b16 --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc @@ -0,0 +1,14 @@ +--- electron/atom/common/crash_reporter/crash_reporter.cc.orig 2019-04-04 16:09:31 UTC ++++ electron/atom/common/crash_reporter/crash_reporter.cc +@@ -102,7 +102,11 @@ CrashReporter* CrashReporter::GetInstance() { + #endif + + void CrashReporter::StartInstance(const mate::Dictionary& options) { ++#if !defined(OS_BSD) + auto* reporter = GetInstance(); ++#else ++ CrashReporter *reporter = NULL; ++#endif + if (!reporter) + return; + diff --git a/devel/electron5/files/patch-electron_atom_common_node__bindings.cc b/devel/electron5/files/patch-electron_atom_common_node__bindings.cc new file mode 100644 index 000000000000..f54a497962e0 --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_common_node__bindings.cc @@ -0,0 +1,11 @@ +--- electron/atom/common/node_bindings.cc.orig 2019-06-26 20:05:00 UTC ++++ electron/atom/common/node_bindings.cc +@@ -210,7 +210,7 @@ void NodeBindings::Initialize() { + node::g_standalone_mode = browser_env_ == BROWSER; + node::g_upstream_node_mode = false; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Get real command line in renderer process forked by zygote. + if (browser_env_ != BROWSER) + AtomCommandLine::InitializeFromCommandLine(); diff --git a/devel/electron5/files/patch-electron_atom_common_node__bindings__linux.cc b/devel/electron5/files/patch-electron_atom_common_node__bindings__linux.cc new file mode 100644 index 000000000000..62927deda81e --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_common_node__bindings__linux.cc @@ -0,0 +1,69 @@ +--- electron/atom/common/node_bindings_linux.cc.orig 2019-04-04 16:09:31 UTC ++++ electron/atom/common/node_bindings_linux.cc +@@ -4,17 +4,31 @@ + + #include "atom/common/node_bindings_linux.h" + ++#if !defined(OS_BSD) + #include <sys/epoll.h> ++#else ++#include <errno.h> ++#include <sys/select.h> ++#include <sys/sysctl.h> ++#include <sys/time.h> ++#include <sys/types.h> ++#endif + + namespace atom { + + NodeBindingsLinux::NodeBindingsLinux(BrowserEnvironment browser_env) ++#if !defined(OS_BSD) + : NodeBindings(browser_env), epoll_(epoll_create(1)) { ++#else ++ : NodeBindings(browser_env) { ++#endif ++#if !defined(OS_BSD) + int backend_fd = uv_backend_fd(uv_loop_); + struct epoll_event ev = {0}; + ev.events = EPOLLIN; + ev.data.fd = backend_fd; + epoll_ctl(epoll_, EPOLL_CTL_ADD, backend_fd, &ev); ++#endif + } + + NodeBindingsLinux::~NodeBindingsLinux() {} +@@ -37,6 +51,7 @@ void NodeBindingsLinux::OnWatcherQueueChanged(uv_loop_ + } + + void NodeBindingsLinux::PollEvents() { ++#if !defined(OS_BSD) + int timeout = uv_backend_timeout(uv_loop_); + + // Wait for new libuv events. +@@ -45,6 +60,26 @@ void NodeBindingsLinux::PollEvents() { + struct epoll_event ev; + r = epoll_wait(epoll_, &ev, 1, timeout); + } while (r == -1 && errno == EINTR); ++#else ++ struct timeval tv; ++ int timeout = uv_backend_timeout(uv_loop_); ++ if (timeout != -1) { ++ tv.tv_sec = timeout / 1000; ++ tv.tv_usec = (timeout % 1000) * 1000; ++ } ++ ++ fd_set readset; ++ int fd = uv_backend_fd(uv_loop_); ++ FD_ZERO(&readset); ++ FD_SET(fd, &readset); ++ ++ // Wait for new libuv events. ++ int r; ++ do { ++ r = select(fd + 1, &readset, nullptr, nullptr, ++ timeout == -1 ? nullptr : &tv); ++ } while (r == -1 && errno == EINTR); ++#endif + } + + // static diff --git a/devel/electron5/files/patch-electron_atom_common_platform__util.h b/devel/electron5/files/patch-electron_atom_common_platform__util.h new file mode 100644 index 000000000000..15c526cf5e51 --- /dev/null +++ b/devel/electron5/files/patch-electron_atom_common_platform__util.h @@ -0,0 +1,11 @@ +--- electron/atom/common/platform_util.h.orig 2019-04-04 16:09:31 UTC ++++ electron/atom/common/platform_util.h +@@ -64,7 +64,7 @@ bool GetLoginItemEnabled(); + bool SetLoginItemEnabled(bool enabled); + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Returns a success flag. + // Unlike libgtkui, does *not* use "chromium-browser.desktop" as a fallback. + bool GetDesktopName(std::string* setme); diff --git a/devel/electron5/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc b/devel/electron5/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc new file mode 100644 index 000000000000..2d44062601e5 --- /dev/null +++ b/devel/electron5/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc @@ -0,0 +1,20 @@ +--- electron/chromium_src/chrome/browser/process_singleton_posix.cc.orig 2019-12-17 03:11:25 UTC ++++ electron/chromium_src/chrome/browser/process_singleton_posix.cc +@@ -95,7 +95,7 @@ + #include "net/base/network_interfaces.h" + #include "ui/base/l10n/l10n_util.h" + +-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(TOOLKIT_VIEWS) && ((defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)) + #include "ui/views/linux_ui/linux_ui.h" + #endif + +@@ -862,7 +862,7 @@ ProcessSingleton::NotifyResult ProcessSingleton::Notif + // The other process is shutting down, it's safe to start a new process. + return PROCESS_NONE; + } else if (strncmp(buf, kACKToken, base::size(kACKToken) - 1) == 0) { +-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(TOOLKIT_VIEWS) && ((defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)) + // Likely NULL in unit tests. + views::LinuxUI* linux_ui = views::LinuxUI::instance(); + if (linux_ui) diff --git a/devel/electron5/files/patch-electron_default__app_default__app.js b/devel/electron5/files/patch-electron_default__app_default__app.js new file mode 100644 index 000000000000..ad4007078dbd --- /dev/null +++ b/devel/electron5/files/patch-electron_default__app_default__app.js @@ -0,0 +1,11 @@ +--- electron/default_app/default_app.js.orig 2019-12-19 06:10:58 UTC ++++ electron/default_app/default_app.js +@@ -27,7 +27,7 @@ exports.load = async (appUrl) => { + show: false + } + +- if (process.platform === 'linux') { ++ if (process.platform === 'linux' || process.platform === 'freebsd') { + options.icon = path.join(__dirname, 'icon.png') + } + diff --git a/devel/electron5/files/patch-electron_lib_browser_api_app.js b/devel/electron5/files/patch-electron_lib_browser_api_app.js new file mode 100644 index 000000000000..2dbbfb776b86 --- /dev/null +++ b/devel/electron5/files/patch-electron_lib_browser_api_app.js @@ -0,0 +1,11 @@ +--- electron/lib/browser/api/app.js.orig 2019-06-04 19:13:27 UTC ++++ electron/lib/browser/api/app.js +@@ -84,7 +84,7 @@ if (process.platform === 'darwin') { + } + } + +-if (process.platform === 'linux') { ++if (process.platform === 'linux' || process.platform === 'freebsd') { + app.launcher = { + setBadgeCount: bindings.unityLauncherSetBadgeCount, + getBadgeCount: bindings.unityLauncherGetBadgeCount, diff --git a/devel/electron5/files/patch-electron_lib_browser_api_dialog.js b/devel/electron5/files/patch-electron_lib_browser_api_dialog.js new file mode 100644 index 000000000000..4f67fb9f9434 --- /dev/null +++ b/devel/electron5/files/patch-electron_lib_browser_api_dialog.js @@ -0,0 +1,11 @@ +--- electron/lib/browser/api/dialog.js.orig 2019-05-23 04:03:08 UTC ++++ electron/lib/browser/api/dialog.js +@@ -54,7 +54,7 @@ const normalizeAccessKey = (text) => { + // existing single underscores with a second underscore, replace double + // ampersands with a single ampersand, and replace a single ampersand with + // a single underscore +- if (process.platform === 'linux') { ++ if (process.platform === 'linux' || process.platform === 'freebsd') { + return text.replace(/_/g, '__').replace(/&(.?)/g, (match, after) => { + if (after === '&') return after + return `_${after}` diff --git a/devel/electron5/files/patch-electron_lib_browser_api_menu-item-roles.js b/devel/electron5/files/patch-electron_lib_browser_api_menu-item-roles.js new file mode 100644 index 000000000000..2259913a86f7 --- /dev/null +++ b/devel/electron5/files/patch-electron_lib_browser_api_menu-item-roles.js @@ -0,0 +1,11 @@ +--- electron/lib/browser/api/menu-item-roles.js.orig 2019-05-23 04:04:22 UTC ++++ electron/lib/browser/api/menu-item-roles.js +@@ -4,7 +4,7 @@ const { app } = require('electron') + + const isMac = process.platform === 'darwin' + const isWindows = process.platform === 'win32' +-const isLinux = process.platform === 'linux' ++const isLinux = (process.platform === 'linux' || process.platform === 'freebsd') + + const roles = { + about: { diff --git a/devel/electron5/files/patch-electron_lib_browser_api_power-monitor.js b/devel/electron5/files/patch-electron_lib_browser_api_power-monitor.js new file mode 100644 index 000000000000..3e130dc4bfc9 --- /dev/null +++ b/devel/electron5/files/patch-electron_lib_browser_api_power-monitor.js @@ -0,0 +1,11 @@ +--- electron/lib/browser/api/power-monitor.js.orig 2019-05-23 04:05:25 UTC ++++ electron/lib/browser/api/power-monitor.js +@@ -8,7 +8,7 @@ Object.setPrototypeOf(PowerMonitor.prototype, EventEmi + EventEmitter.call(powerMonitor) + + // On Linux we need to call blockShutdown() to subscribe to shutdown event. +-if (process.platform === 'linux') { ++if (process.platform === 'linux' || process.platform === 'freebsd') { + powerMonitor.on('newListener', (event) => { + if (event === 'shutdown' && powerMonitor.listenerCount('shutdown') === 0) { + powerMonitor.blockShutdown() diff --git a/devel/electron5/files/patch-electron_lib_browser_init.js b/devel/electron5/files/patch-electron_lib_browser_init.js new file mode 100644 index 000000000000..46f3242ca52e --- /dev/null +++ b/devel/electron5/files/patch-electron_lib_browser_init.js @@ -0,0 +1,11 @@ +--- electron/lib/browser/init.js.orig 2019-05-23 04:06:34 UTC ++++ electron/lib/browser/init.js +@@ -164,7 +164,7 @@ const mainStartupScript = packageJson.main || 'index.j + const KNOWN_XDG_DESKTOP_VALUES = ['Pantheon', 'Unity:Unity7', 'pop:GNOME'] + + function currentPlatformSupportsAppIndicator () { +- if (process.platform !== 'linux') return false ++ if (process.platform !== 'linux' && process.platform !== 'freebsd') return false + const currentDesktop = process.env.XDG_CURRENT_DESKTOP + + if (!currentDesktop) return false diff --git a/devel/electron5/files/patch-electron_lib_common_api_clipboard.js b/devel/electron5/files/patch-electron_lib_common_api_clipboard.js new file mode 100644 index 000000000000..55a61b461274 --- /dev/null +++ b/devel/electron5/files/patch-electron_lib_common_api_clipboard.js @@ -0,0 +1,10 @@ +--- electron/lib/common/api/clipboard.js.orig 2019-05-23 04:07:30 UTC ++++ electron/lib/common/api/clipboard.js +@@ -1,6 +1,6 @@ + 'use strict' + +-if (process.platform === 'linux' && process.type === 'renderer') { ++if ((process.platform === 'linux' || process.platform === 'freebsd') && process.type === 'renderer') { + // On Linux we could not access clipboard in renderer process. + const { getRemote } = require('@electron/internal/renderer/remote') + module.exports = getRemote('clipboard') diff --git a/devel/electron5/files/patch-electron_script_lib_config.py b/devel/electron5/files/patch-electron_script_lib_config.py new file mode 100644 index 000000000000..5869a1ee8c2c --- /dev/null +++ b/devel/electron5/files/patch-electron_script_lib_config.py @@ -0,0 +1,11 @@ +--- electron/script/lib/config.py.orig 2019-12-19 06:24:18 UTC ++++ electron/script/lib/config.py +@@ -21,6 +21,8 @@ PLATFORM = { + 'cygwin': 'win32', + 'darwin': 'darwin', + 'linux2': 'linux', ++ 'freebsd11': 'freebsd', ++ 'freebsd12': 'freebsd', + 'win32': 'win32', + }[sys.platform] + diff --git a/devel/electron5/files/patch-electron_script_lib_utils.js b/devel/electron5/files/patch-electron_script_lib_utils.js new file mode 100644 index 000000000000..9faa8173951e --- /dev/null +++ b/devel/electron5/files/patch-electron_script_lib_utils.js @@ -0,0 +1,11 @@ +--- electron/script/lib/utils.js.orig 2019-12-17 03:11:25 UTC ++++ electron/script/lib/utils.js +@@ -12,7 +12,7 @@ function getElectronExec () { + return `out/${OUT_DIR}/Electron.app/Contents/MacOS/Electron` + case 'win32': + return `out/${OUT_DIR}/electron.exe` +- case 'linux': ++ case 'linux': case 'freebsd': + return `out/${OUT_DIR}/electron` + default: + throw new Error('Unknown platform') diff --git a/devel/electron5/files/patch-electron_script_spec-runner.js b/devel/electron5/files/patch-electron_script_spec-runner.js new file mode 100644 index 000000000000..a0651c1c5713 --- /dev/null +++ b/devel/electron5/files/patch-electron_script_spec-runner.js @@ -0,0 +1,11 @@ +--- electron/script/spec-runner.js.orig 2019-12-19 06:12:13 UTC ++++ electron/script/spec-runner.js +@@ -40,7 +40,7 @@ function saveSpecHash ([newSpecHash, newSpecInstallHas + async function runElectronTests () { + let exe = path.resolve(BASE, utils.getElectronExec()) + const args = process.argv.slice(2) +- if (process.platform === 'linux') { ++ if (process.platform === 'linux' || process.platform === 'freebsd') { + args.unshift(path.resolve(__dirname, 'dbus_mock.py'), exe) + exe = 'python' + } diff --git a/devel/electron5/files/patch-electron_spec_api-app-spec.js b/devel/electron5/files/patch-electron_spec_api-app-spec.js new file mode 100644 index 000000000000..2dcca1b118eb --- /dev/null +++ b/devel/electron5/files/patch-electron_spec_api-app-spec.js @@ -0,0 +1,83 @@ +--- electron/spec/api-app-spec.js.orig 2019-12-17 03:11:25 UTC ++++ electron/spec/api-app-spec.js +@@ -129,7 +129,7 @@ describe('app module', () => { + describe('app.getLocaleCountryCode()', () => { + it('should be empty or have length of two', () => { + let expectedLength = 2 +- if (isCI && process.platform === 'linux') { ++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) { + // Linux CI machines have no locale. + expectedLength = 0 + } +@@ -189,7 +189,7 @@ describe('app module', () => { + }) + + it('exits gracefully', async function () { +- if (!['darwin', 'linux'].includes(process.platform)) { ++ if (!['darwin', 'linux', 'freebsd'].includes(process.platform)) { + this.skip() + return + } +@@ -289,7 +289,7 @@ describe('app module', () => { + let w = null + + before(function () { +- if (process.platform !== 'linux') { ++ if (process.platform !== 'linux' && process.platform !== 'freebsd') { + this.skip() + } + }) +@@ -482,7 +482,7 @@ describe('app module', () => { + describe('app.setBadgeCount', () => { + const platformIsNotSupported = + (process.platform === 'win32') || +- (process.platform === 'linux' && !app.isUnityRunning()) ++ (process.platform === 'linux' && !app.isUnityRunning()) || (process.platform === 'freebsd') + const platformIsSupported = !platformIsNotSupported + + const expectedBadgeCount = 42 +@@ -536,7 +536,7 @@ describe('app module', () => { + ] + + before(function () { +- if (process.platform === 'linux' || process.mas) this.skip() ++ if (process.platform === 'linux' || process.platform === 'freebsd' || process.mas) this.skip() + }) + + beforeEach(() => { +@@ -665,7 +665,7 @@ describe('app module', () => { + let w = null + + before(function () { +- if (process.platform === 'linux') { ++ if (process.platform === 'linux' || process.platform === 'freebsd') { + this.skip() + } + }) +@@ -859,7 +859,7 @@ describe('app module', () => { + // doesn't affect nested `describe`s. + beforeEach(function () { + // FIXME Get these specs running on Linux CI +- if (process.platform === 'linux' && isCI) { ++ if ((process.platform === 'linux' || process.platform === 'freebsd') && isCI) { + this.skip() + } + }) +@@ -1011,7 +1011,7 @@ describe('app module', () => { + + it('succeeds with complete GPUInfo', async () => { + const completeInfo = await getGPUInfo('complete') +- if (process.platform === 'linux') { ++ if (process.platform === 'linux' || process.platform === 'freebsd') { + // For linux and macOS complete info is same as basic info + await verifyBasicGPUInfo(completeInfo) + const basicInfo = await getGPUInfo('basic') +@@ -1039,7 +1039,7 @@ describe('app module', () => { + const socketPath = process.platform === 'win32' ? '\\\\.\\pipe\\electron-mixed-sandbox' : '/tmp/electron-mixed-sandbox' + + beforeEach(function (done) { +- if (process.platform === 'linux' && (process.arch === 'arm64' || process.arch === 'arm')) { ++ if ((process.platform === 'linux' || process.platform === 'freebsd') && (process.arch === 'arm64' || process.arch === 'arm')) { + // Our ARM tests are run on VSTS rather than CircleCI, and the Docker + // setup on VSTS disallows syscalls that Chrome requires for setting up + // sandboxing. diff --git a/devel/electron5/files/patch-electron_spec_api-auto-updater-spec.js b/devel/electron5/files/patch-electron_spec_api-auto-updater-spec.js new file mode 100644 index 000000000000..fe4b4d3acd8c --- /dev/null +++ b/devel/electron5/files/patch-electron_spec_api-auto-updater-spec.js @@ -0,0 +1,11 @@ +--- electron/spec/api-auto-updater-spec.js.orig 2019-05-16 02:00:37 UTC ++++ electron/spec/api-auto-updater-spec.js +@@ -140,7 +140,7 @@ describe('autoUpdater module', function () { + + describe('error event', () => { + it('serializes correctly over the remote module', function (done) { +- if (process.platform === 'linux') { ++ if (process.platform === 'linux' || process.platform === 'freebsd') { + // FIXME(alexeykuzmin): Skip the test. + // this.skip() + return done() diff --git a/devel/electron5/files/patch-electron_spec_api-browser-window-spec.js b/devel/electron5/files/patch-electron_spec_api-browser-window-spec.js new file mode 100644 index 000000000000..d89d39b5fb2f --- /dev/null +++ b/devel/electron5/files/patch-electron_spec_api-browser-window-spec.js @@ -0,0 +1,47 @@ +--- electron/spec/api-browser-window-spec.js.orig 2019-12-17 03:11:25 UTC ++++ electron/spec/api-browser-window-spec.js +@@ -1174,7 +1174,7 @@ describe('BrowserWindow module', () => { + describe('BrowserWindow.setOpacity(opacity)', () => { + describe('Windows and Mac', () => { + before(function () { +- if (process.platform === 'linux') { ++ if (process.platform === 'linux' || process.platform === 'freebsd') { + this.skip() + } + }) +@@ -1206,7 +1206,7 @@ describe('BrowserWindow module', () => { + + describe('Linux', () => { + before(function () { +- if (process.platform !== 'linux') { ++ if (process.platform !== 'linux' && process.platform !== 'freebsd') { + this.skip() + } + }) +@@ -1306,7 +1306,7 @@ describe('BrowserWindow module', () => { + + describe('enableLargerThanScreen" option', () => { + before(function () { +- if (process.platform === 'linux') { ++ if (process.platform === 'linux' || process.platform === 'freebsd') { + this.skip() + } + }) +@@ -2400,7 +2400,7 @@ describe('BrowserWindow module', () => { + w.loadFile(path.join(fixtures, 'pages', 'visibilitychange.html')) + }) + it('visibilityState changes when window is minimized', function (done) { +- if (isCI && process.platform === 'linux') { ++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) { + // FIXME(alexeykuzmin): Skip the test instead of marking it as passed. + // afterEach hook won't be run if a test is skipped dynamically. + // If afterEach isn't run current window won't be destroyed +@@ -2833,7 +2833,7 @@ describe('BrowserWindow module', () => { + // - `.skip()` called in the 'beforeEach' hook prevents 'afterEach' + // hook from being called. + // Not implemented on Linux. +- if (process.platform === 'linux') { ++ if (process.platform === 'linux' || process.platform === 'freebsd') { + return + } + diff --git a/devel/electron5/files/patch-electron_spec_api-clipboard-spec.js b/devel/electron5/files/patch-electron_spec_api-clipboard-spec.js new file mode 100644 index 000000000000..2c86fc0089a7 --- /dev/null +++ b/devel/electron5/files/patch-electron_spec_api-clipboard-spec.js @@ -0,0 +1,38 @@ +--- electron/spec/api-clipboard-spec.js.orig 2019-05-16 02:04:28 UTC ++++ electron/spec/api-clipboard-spec.js +@@ -27,7 +27,7 @@ describe('clipboard module', () => { + describe('clipboard.readHTML()', () => { + it('returns markup correctly', () => { + const text = '<string>Hi</string>' +- const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><string>Hi</string>" : process.platform === 'linux' ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><string>Hi</string>' : '<string>Hi</string>' ++ const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><string>Hi</string>" : (process.platform === 'linux' || process.platform === 'freebsd') ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><string>Hi</string>' : '<string>Hi</string>' + clipboard.writeHTML(text) + expect(clipboard.readHTML()).to.equal(markup) + }) +@@ -43,7 +43,7 @@ describe('clipboard module', () => { + + describe('clipboard.readBookmark', () => { + before(function () { +- if (process.platform === 'linux') { ++ if (process.platform === 'linux' || process.platform === 'freebsd') { + this.skip() + } + }) +@@ -69,7 +69,7 @@ describe('clipboard module', () => { + const rtf = '{\\rtf1\\utf8 text}' + const p = path.join(fixtures, 'assets', 'logo.png') + const i = nativeImage.createFromPath(p) +- const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><b>Hi</b>" : process.platform === 'linux' ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><b>Hi</b>' : '<b>Hi</b>' ++ const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><b>Hi</b>" : (process.platform === 'linux' || process.platform === 'freebsd') ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><b>Hi</b>' : '<b>Hi</b>' + const bookmark = { title: 'a title', url: 'test' } + clipboard.write({ + text: 'test', +@@ -84,7 +84,7 @@ describe('clipboard module', () => { + expect(clipboard.readRTF()).to.equal(rtf) + expect(clipboard.readImage().toDataURL()).to.equal(i.toDataURL()) + +- if (process.platform !== 'linux') { ++ if (process.platform !== 'linux' && process.platform !== 'freebsd') { + expect(clipboard.readBookmark()).to.deep.equal(bookmark) + } + }) diff --git a/devel/electron5/files/patch-electron_spec_api-content-tracing-spec.js b/devel/electron5/files/patch-electron_spec_api-content-tracing-spec.js new file mode 100644 index 000000000000..faec2f2ff9e1 --- /dev/null +++ b/devel/electron5/files/patch-electron_spec_api-content-tracing-spec.js @@ -0,0 +1,11 @@ +--- electron/spec/api-content-tracing-spec.js.orig 2019-12-19 06:17:05 UTC ++++ electron/spec/api-content-tracing-spec.js +@@ -22,7 +22,7 @@ const getPathInATempFolder = (filename) => { + describe('contentTracing', () => { + beforeEach(function () { + // FIXME: The tests are skipped on arm/arm64. +- if (process.platform === 'linux' && ++ if ((process.platform === 'linux' || process.platform === 'freebsd') && + ['arm', 'arm64'].includes(process.arch)) { + this.skip() + } diff --git a/devel/electron5/files/patch-electron_spec_api-crash-reporter-spec.js b/devel/electron5/files/patch-electron_spec_api-crash-reporter-spec.js new file mode 100644 index 000000000000..9caa2c7f8d7b --- /dev/null +++ b/devel/electron5/files/patch-electron_spec_api-crash-reporter-spec.js @@ -0,0 +1,11 @@ +--- electron/spec/api-crash-reporter-spec.js.orig 2019-05-16 02:07:53 UTC ++++ electron/spec/api-crash-reporter-spec.js +@@ -16,7 +16,7 @@ describe('crashReporter module', () => { + if (process.mas || process.env.DISABLE_CRASH_REPORTER_TESTS) return + + // TODO(alexeykuzmin): [Ch66] Fails. Fix it and enable back. +- if (process.platform === 'linux') return ++ if (process.platform === 'linux' || process.platform === 'freebsd') return + + let originalTempDirectory = null + let tempDirectory = null diff --git a/devel/electron5/files/patch-electron_spec_api-net-log-spec.js b/devel/electron5/files/patch-electron_spec_api-net-log-spec.js new file mode 100644 index 000000000000..f5f7abf16bad --- /dev/null +++ b/devel/electron5/files/patch-electron_spec_api-net-log-spec.js @@ -0,0 +1,29 @@ +--- electron/spec/api-net-log-spec.js.orig 2019-05-16 02:08:40 UTC ++++ electron/spec/api-net-log-spec.js +@@ -95,7 +95,7 @@ describe('netLog module', () => { + }) + + it('should begin and end logging automatically when --log-net-log is passed', done => { +- if (isCI && process.platform === 'linux') { ++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) { + done() + return + } +@@ -116,7 +116,7 @@ describe('netLog module', () => { + + // FIXME(deepak1556): Ch69 follow up. + it('should begin and end logging automtically when --log-net-log is passed, and behave correctly when .startLogging() and .stopLogging() is called', done => { +- if (isCI && process.platform === 'linux') { ++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) { + done() + return + } +@@ -139,7 +139,7 @@ describe('netLog module', () => { + }) + + it('should end logging automatically when only .startLogging() is called', done => { +- if (isCI && process.platform === 'linux') { ++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) { + done() + return + } diff --git a/devel/electron5/files/patch-electron_spec_api-notification-dbus-spec.js b/devel/electron5/files/patch-electron_spec_api-notification-dbus-spec.js new file mode 100644 index 000000000000..bc1852ba00be --- /dev/null +++ b/devel/electron5/files/patch-electron_spec_api-notification-dbus-spec.js @@ -0,0 +1,11 @@ +--- electron/spec/api-notification-dbus-spec.js.orig 2019-12-17 03:11:25 UTC ++++ electron/spec/api-notification-dbus-spec.js +@@ -13,7 +13,7 @@ const Promise = require('bluebird') + const { remote } = require('electron') + const { app } = remote + +-const skip = process.platform !== 'linux' || ++const skip = process.platform !== 'linux' || process.platform !== 'freebsd' || + process.arch === 'ia32' || + process.arch.indexOf('arm') === 0 || + !process.env.DBUS_SESSION_BUS_ADDRESS; diff --git a/devel/electron5/files/patch-electron_spec_api-power-monitor-spec.js b/devel/electron5/files/patch-electron_spec_api-power-monitor-spec.js new file mode 100644 index 000000000000..edfa796f7a9d --- /dev/null +++ b/devel/electron5/files/patch-electron_spec_api-power-monitor-spec.js @@ -0,0 +1,11 @@ +--- electron/spec/api-power-monitor-spec.js.orig 2019-05-16 02:12:02 UTC ++++ electron/spec/api-power-monitor-spec.js +@@ -14,7 +14,7 @@ const Promise = require('bluebird') + const { expect } = chai + chai.use(dirtyChai) + +-const skip = process.platform !== 'linux' || !process.env.DBUS_SYSTEM_BUS_ADDRESS ++const skip = process.platform !== 'linux' || process.platform === 'freebsd' || !process.env.DBUS_SYSTEM_BUS_ADDRESS + + describe('powerMonitor', () => { + let logindMock, dbusMockPowerMonitor, getCalls, emitSignal, reset diff --git a/devel/electron5/files/patch-electron_spec_api-process-spec.js b/devel/electron5/files/patch-electron_spec_api-process-spec.js new file mode 100644 index 000000000000..1316a566cd6b --- /dev/null +++ b/devel/electron5/files/patch-electron_spec_api-process-spec.js @@ -0,0 +1,11 @@ +--- electron/spec/api-process-spec.js.orig 2019-12-19 06:18:31 UTC ++++ electron/spec/api-process-spec.js +@@ -42,7 +42,7 @@ describe('process module', () => { + it('resolves promise successfully with valid data', async () => { + const memoryInfo = await process.getProcessMemoryInfo() + expect(memoryInfo).to.be.an('object') +- if (process.platform === 'linux' || process.platform === 'windows') { ++ if (process.platform === 'linux' || process.platform === 'windows' || process.platform === 'freebsd') { + expect(memoryInfo.residentSet).to.be.a('number').greaterThan(0) + } + expect(memoryInfo.private).to.be.a('number').greaterThan(0) diff --git a/devel/electron5/files/patch-electron_spec_api-shell-spec.js b/devel/electron5/files/patch-electron_spec_api-shell-spec.js new file mode 100644 index 000000000000..87aace3f7828 --- /dev/null +++ b/devel/electron5/files/patch-electron_spec_api-shell-spec.js @@ -0,0 +1,42 @@ +--- electron/spec/api-shell-spec.js.orig 2019-12-17 03:11:25 UTC ++++ electron/spec/api-shell-spec.js +@@ -35,7 +35,7 @@ describe('shell module', () => { + await closeWindow(w) + w = null + // reset env vars to prevent side effects +- if (process.platform === 'linux') { ++ if (process.platform === 'linux' || process.platform === 'freebsd') { + process.env.DE = envVars.de + process.env.BROWSER = envVars.browser + process.env.DISPLAY = envVars.display +@@ -48,6 +48,10 @@ describe('shell module', () => { + process.env.BROWSER = '/bin/true' + process.env.DE = 'generic' + process.env.DISPLAY = '' ++ } else if (process.platform === 'freebsd') { ++ process.env.BROWSER = '/usr/bin/true' ++ process.env.DE = 'generic' ++ process.env.DISPLAY = '' + } + + // Ensure an external window is activated via a new window's blur event +@@ -64,7 +68,7 @@ describe('shell module', () => { + + shell.openExternal(url).then(() => { + promiseResolved = true +- if (blurEventEmitted || process.platform === 'linux') { ++ if (blurEventEmitted || process.platform === 'linux' || process.platform === 'freebsd') { + done() + } + }) +@@ -75,6 +79,10 @@ describe('shell module', () => { + if (process.platform === 'linux') { + process.env.DE = 'generic' + process.env.DE = '/bin/true' ++ process.env.DISPLAY = '' ++ } else if (process.platform === 'freebsd') { ++ process.env.DE = 'generic' ++ process.env.DE = '/usr/bin/true' + process.env.DISPLAY = '' + } + diff --git a/devel/electron5/files/patch-electron_spec_chromium-spec.js b/devel/electron5/files/patch-electron_spec_chromium-spec.js new file mode 100644 index 000000000000..e1c8eb62bfd4 --- /dev/null +++ b/devel/electron5/files/patch-electron_spec_chromium-spec.js @@ -0,0 +1,27 @@ +--- electron/spec/chromium-spec.js.orig 2019-05-16 02:16:13 UTC ++++ electron/spec/chromium-spec.js +@@ -849,7 +849,7 @@ describe('chromium feature', () => { + }) + + it('can be get as context in canvas', () => { +- if (process.platform === 'linux') { ++ if (process.platform === 'linux' || process.platform === 'freebsd') { + // FIXME(alexeykuzmin): Skip the test. + // this.skip() + return +@@ -1533,12 +1533,13 @@ describe('font fallback', () => { + expect(fonts[0].familyName).to.equal({ + 'win32': 'Arial', + 'darwin': 'Helvetica', +- 'linux': 'DejaVu Sans' // I think this depends on the distro? We don't specify a default. ++ 'linux': 'DejaVu Sans', // I think this depends on the distro? We don't specify a default. ++ 'freebsd': 'DejaVu Sans' + }[process.platform]) + }) + + it('should fall back to Japanese font for sans-serif Japanese script', async function () { +- if (process.platform === 'linux') { ++ if (process.platform === 'linux' || process.platform === 'freebsd') { + return this.skip() + } + const html = ` diff --git a/devel/electron5/files/patch-electron_spec_version-bump-spec.js b/devel/electron5/files/patch-electron_spec_version-bump-spec.js new file mode 100644 index 000000000000..2f9557c97349 --- /dev/null +++ b/devel/electron5/files/patch-electron_spec_version-bump-spec.js @@ -0,0 +1,11 @@ +--- electron/spec/version-bump-spec.js.orig 2019-12-19 06:19:49 UTC ++++ electron/spec/version-bump-spec.js +@@ -51,7 +51,7 @@ describeFn('bump-version script', () => { + const betaPattern = /[0-9.]*(-beta[0-9.]*)/g + + before(function () { +- if (process.platform === 'linux' && process.arch === 'arm') { ++ if ((process.platform === 'linux' || process.platform === 'freebsd') && process.arch === 'arm') { + this.skip() + } + }) diff --git a/devel/electron5/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc b/devel/electron5/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc new file mode 100644 index 000000000000..b3fc09fc608d --- /dev/null +++ b/devel/electron5/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc @@ -0,0 +1,14 @@ +--- extensions/browser/api/declarative_webrequest/webrequest_action.cc.orig 2019-04-08 08:18:20 UTC ++++ extensions/browser/api/declarative_webrequest/webrequest_action.cc +@@ -28,7 +28,11 @@ + #include "extensions/common/extension.h" + #include "net/base/registry_controlled_domains/registry_controlled_domain.h" + #include "net/http/http_util.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + + using content::ResourceRequestInfo; + using extension_web_request_api_helpers::EventResponseDelta; diff --git a/devel/electron5/files/patch-extensions_browser_api_messaging_message__service.cc b/devel/electron5/files/patch-extensions_browser_api_messaging_message__service.cc new file mode 100644 index 000000000000..fa865cd4321d --- /dev/null +++ b/devel/electron5/files/patch-extensions_browser_api_messaging_message__service.cc @@ -0,0 +1,35 @@ +--- extensions/browser/api/messaging/message_service.cc.orig 2019-04-08 08:32:56 UTC ++++ extensions/browser/api/messaging/message_service.cc +@@ -58,7 +58,7 @@ namespace { + + const char kReceivingEndDoesntExistError[] = + "Could not establish connection. Receiving end does not exist."; +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + const char kMissingPermissionError[] = + "Access to native messaging requires nativeMessaging permission."; + const char kProhibitedByPoliciesError[] = +@@ -318,7 +318,7 @@ void MessageService::OpenChannelToNativeApp( + if (!source) + return; + +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + content::WebContents* web_contents = + content::WebContents::FromRenderFrameHost(source); + ExtensionWebContentsObserver* extension_web_contents_observer = +@@ -378,12 +378,12 @@ void MessageService::OpenChannelToNativeApp( + channel->opener->IncrementLazyKeepaliveCount(); + + AddChannel(std::move(channel), receiver_port_id); +-#else // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)) ++#else // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)) + const char kNativeMessagingNotSupportedError[] = + "Native Messaging is not supported on this platform."; + DispatchOnDisconnect( + source, receiver_port_id, kNativeMessagingNotSupportedError); +-#endif // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)) ++#endif // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)) + } + + void MessageService::OpenChannelToTab(int source_process_id, diff --git a/devel/electron5/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc b/devel/electron5/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc new file mode 100644 index 000000000000..c2c287d5ac0e --- /dev/null +++ b/devel/electron5/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc @@ -0,0 +1,20 @@ +--- extensions/browser/api/networking_private/networking_private_delegate_factory.cc.orig 2019-04-08 08:18:20 UTC ++++ extensions/browser/api/networking_private/networking_private_delegate_factory.cc +@@ -11,7 +11,7 @@ + + #if defined(OS_CHROMEOS) + #include "extensions/browser/api/networking_private/networking_private_chromeos.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "extensions/browser/api/networking_private/networking_private_linux.h" + #elif defined(OS_WIN) || defined(OS_MACOSX) + #include "components/wifi/wifi_service.h" +@@ -61,7 +61,7 @@ KeyedService* NetworkingPrivateDelegateFactory::BuildS + NetworkingPrivateDelegate* delegate; + #if defined(OS_CHROMEOS) + delegate = new NetworkingPrivateChromeOS(browser_context); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + delegate = new NetworkingPrivateLinux(); + #elif defined(OS_WIN) || defined(OS_MACOSX) + std::unique_ptr<wifi::WiFiService> wifi_service(wifi::WiFiService::Create()); diff --git a/devel/electron5/files/patch-extensions_browser_api_web__request_form__data__parser.cc b/devel/electron5/files/patch-extensions_browser_api_web__request_form__data__parser.cc new file mode 100644 index 000000000000..69b1a7176fbd --- /dev/null +++ b/devel/electron5/files/patch-extensions_browser_api_web__request_form__data__parser.cc @@ -0,0 +1,14 @@ +--- extensions/browser/api/web_request/form_data_parser.cc.orig 2019-04-08 08:18:20 UTC ++++ extensions/browser/api/web_request/form_data_parser.cc +@@ -15,7 +15,11 @@ + #include "base/values.h" + #include "net/base/escape.h" + #include "net/http/http_request_headers.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + + using base::DictionaryValue; + using base::ListValue; diff --git a/devel/electron5/files/patch-extensions_browser_browser__context__keyed__service__factories.cc b/devel/electron5/files/patch-extensions_browser_browser__context__keyed__service__factories.cc new file mode 100644 index 000000000000..84d3d268c369 --- /dev/null +++ b/devel/electron5/files/patch-extensions_browser_browser__context__keyed__service__factories.cc @@ -0,0 +1,11 @@ +--- extensions/browser/browser_context_keyed_service_factories.cc.orig 2019-04-08 08:32:56 UTC ++++ extensions/browser/browser_context_keyed_service_factories.cc +@@ -85,7 +85,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt() + #if defined(OS_CHROMEOS) + NetworkingConfigServiceFactory::GetInstance(); + #endif +-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) + NetworkingPrivateEventRouterFactory::GetInstance(); + #endif + PowerAPI::GetFactoryInstance(); diff --git a/devel/electron5/files/patch-extensions_common_api___permission__features.json b/devel/electron5/files/patch-extensions_common_api___permission__features.json new file mode 100644 index 000000000000..4c3651e0b06d --- /dev/null +++ b/devel/electron5/files/patch-extensions_common_api___permission__features.json @@ -0,0 +1,29 @@ +--- extensions/common/api/_permission_features.json.orig 2019-04-08 08:32:56 UTC ++++ extensions/common/api/_permission_features.json +@@ -135,7 +135,7 @@ + { + "channel": "stable", + "extension_types": ["platform_app"], +- "platforms": ["chromeos", "win", "mac", "linux"], ++ "platforms": ["chromeos", "win", "mac", "linux", "bsd"], + "whitelist": [ + "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80", // http://crbug.com/387169 + "A3BC37E2148AC4E99BE4B16AF9D42DD1E592BBBE", // http://crbug.com/387169 +@@ -470,7 +470,7 @@ + }, { + "channel": "stable", + "extension_types": ["extension", "legacy_packaged_app", "platform_app"], +- "platforms": ["chromeos", "mac", "win", "linux"], ++ "platforms": ["chromeos", "mac", "win", "linux", "bsd"], + "whitelist": [ + "0DE0F05680A4A056BCEC864ED8DDA84296F82B40", // http://crbug.com/434651 + "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80", // http://crbug.com/293683 +@@ -501,7 +501,7 @@ + "networkingPrivate": { + "channel": "stable", + "extension_types": ["extension", "legacy_packaged_app", "platform_app"], +- "platforms": ["chromeos", "mac", "win", "linux"], ++ "platforms": ["chromeos", "mac", "win", "linux", "bsd"], + "whitelist": [ + // DO NOT ADD ANY MORE ENTRIES HERE. + // networkingPrivate is being migrated to networking.onc. diff --git a/devel/electron5/files/patch-extensions_common_api_runtime.json b/devel/electron5/files/patch-extensions_common_api_runtime.json new file mode 100644 index 000000000000..9a25613be199 --- /dev/null +++ b/devel/electron5/files/patch-extensions_common_api_runtime.json @@ -0,0 +1,11 @@ +--- extensions/common/api/runtime.json.orig 2019-04-08 08:32:56 UTC ++++ extensions/common/api/runtime.json +@@ -66,7 +66,7 @@ + "id": "PlatformOs", + "type": "string", + "description": "The operating system chrome is running on.", +- "enum": ["mac", "win", "android", "cros", "linux", "openbsd"] ++ "enum": ["mac", "win", "android", "cros", "linux", "freebsd", "openbsd"] + }, + { + "id": "PlatformArch", diff --git a/devel/electron5/files/patch-extensions_common_feature__switch.cc b/devel/electron5/files/patch-extensions_common_feature__switch.cc new file mode 100644 index 000000000000..95eb7ed5dd72 --- /dev/null +++ b/devel/electron5/files/patch-extensions_common_feature__switch.cc @@ -0,0 +1,14 @@ +--- extensions/common/feature_switch.cc.orig 2019-04-08 08:18:20 UTC ++++ extensions/common/feature_switch.cc +@@ -44,11 +44,7 @@ class CommonSwitches { + FeatureSwitch::DEFAULT_ENABLED), + load_media_router_component_extension( + kLoadMediaRouterComponentExtensionFlag, +-#if defined(GOOGLE_CHROME_BUILD) + FeatureSwitch::DEFAULT_ENABLED) +-#else +- FeatureSwitch::DEFAULT_DISABLED) +-#endif // defined(GOOGLE_CHROME_BUILD) + { + } + diff --git a/devel/electron5/files/patch-extensions_common_features_feature.cc b/devel/electron5/files/patch-extensions_common_features_feature.cc new file mode 100644 index 000000000000..0f316dd9f39e --- /dev/null +++ b/devel/electron5/files/patch-extensions_common_features_feature.cc @@ -0,0 +1,11 @@ +--- extensions/common/features/feature.cc.orig 2019-04-08 08:18:20 UTC ++++ extensions/common/features/feature.cc +@@ -26,6 +26,8 @@ Feature::Platform Feature::GetCurrentPlatform() { + return MACOSX_PLATFORM; + #elif defined(OS_WIN) + return WIN_PLATFORM; ++#elif defined(OS_BSD) ++ return LINUX_PLATFORM; + #else + return UNSPECIFIED_PLATFORM; + #endif diff --git a/devel/electron5/files/patch-extensions_common_image__util.cc b/devel/electron5/files/patch-extensions_common_image__util.cc new file mode 100644 index 000000000000..def441ae2217 --- /dev/null +++ b/devel/electron5/files/patch-extensions_common_image__util.cc @@ -0,0 +1,14 @@ +--- extensions/common/image_util.cc.orig 2019-04-08 08:32:56 UTC ++++ extensions/common/image_util.cc +@@ -18,7 +18,11 @@ + #include "base/strings/stringprintf.h" + #include "base/time/time.h" + #include "base/timer/elapsed_timer.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif // defined(OS_BSD) + #include "third_party/skia/include/core/SkBitmap.h" + #include "third_party/skia/include/core/SkCanvas.h" + #include "third_party/skia/include/core/SkColor.h" diff --git a/devel/electron5/files/patch-extensions_common_stack__frame.cc b/devel/electron5/files/patch-extensions_common_stack__frame.cc new file mode 100644 index 000000000000..c6b9302e36e3 --- /dev/null +++ b/devel/electron5/files/patch-extensions_common_stack__frame.cc @@ -0,0 +1,14 @@ +--- extensions/common/stack_frame.cc.orig 2019-04-08 08:18:20 UTC ++++ extensions/common/stack_frame.cc +@@ -7,7 +7,11 @@ + #include <string> + + #include "base/strings/utf_string_conversions.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + + namespace extensions { + diff --git a/devel/electron5/files/patch-extensions_renderer_bindings_api__binding__util.cc b/devel/electron5/files/patch-extensions_renderer_bindings_api__binding__util.cc new file mode 100644 index 000000000000..edd4646df31b --- /dev/null +++ b/devel/electron5/files/patch-extensions_renderer_bindings_api__binding__util.cc @@ -0,0 +1,11 @@ +--- extensions/renderer/bindings/api_binding_util.cc.orig 2019-04-08 08:18:20 UTC ++++ extensions/renderer/bindings/api_binding_util.cc +@@ -129,6 +129,8 @@ std::string GetPlatformString() { + return "mac"; + #elif defined(OS_WIN) + return "win"; ++#elif defined(OS_BSD) ++ return "bsd"; + #else + NOTREACHED(); + return std::string(); diff --git a/devel/electron5/files/patch-extensions_shell_app_shell__main__delegate.cc b/devel/electron5/files/patch-extensions_shell_app_shell__main__delegate.cc new file mode 100644 index 000000000000..cec6a956b1ad --- /dev/null +++ b/devel/electron5/files/patch-extensions_shell_app_shell__main__delegate.cc @@ -0,0 +1,29 @@ +--- extensions/shell/app/shell_main_delegate.cc.orig 2019-04-08 08:18:20 UTC ++++ extensions/shell/app/shell_main_delegate.cc +@@ -38,7 +38,7 @@ + + #if defined(OS_WIN) + #include "base/base_paths_win.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "base/nix/xdg_util.h" + #elif defined(OS_MACOSX) + #include "base/base_paths_mac.h" +@@ -52,7 +52,7 @@ + + namespace { + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + extensions::ShellCrashReporterClient* GetCrashReporterClient() { + static base::NoDestructor<extensions::ShellCrashReporterClient> instance; + return instance.get(); +@@ -70,7 +70,7 @@ base::FilePath GetDataPath() { + return cmd_line->GetSwitchValuePath(switches::kContentShellDataPath); + + base::FilePath data_dir; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + std::unique_ptr<base::Environment> env(base::Environment::Create()); + data_dir = base::nix::GetXDGDirectory( + env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir); diff --git a/devel/electron5/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc b/devel/electron5/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc new file mode 100644 index 000000000000..d1f614ba85da --- /dev/null +++ b/devel/electron5/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc @@ -0,0 +1,11 @@ +--- gpu/command_buffer/common/gpu_memory_buffer_support.cc.orig 2019-04-08 08:32:57 UTC ++++ gpu/command_buffer/common/gpu_memory_buffer_support.cc +@@ -89,7 +89,7 @@ bool IsImageSizeValidForGpuMemoryBufferFormat(const gf + uint32_t GetPlatformSpecificTextureTarget() { + #if defined(OS_MACOSX) + return GL_TEXTURE_RECTANGLE_ARB; +-#elif defined(OS_ANDROID) || defined(OS_LINUX) ++#elif defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD) + return GL_TEXTURE_EXTERNAL_OES; + #elif defined(OS_WIN) + return GL_TEXTURE_2D; diff --git a/devel/electron5/files/patch-gpu_command__buffer_service_program__manager.cc b/devel/electron5/files/patch-gpu_command__buffer_service_program__manager.cc new file mode 100644 index 000000000000..75e45fcc066b --- /dev/null +++ b/devel/electron5/files/patch-gpu_command__buffer_service_program__manager.cc @@ -0,0 +1,14 @@ +--- gpu/command_buffer/service/program_manager.cc.orig 2019-04-08 08:32:57 UTC ++++ gpu/command_buffer/service/program_manager.cc +@@ -30,7 +30,11 @@ + #include "gpu/command_buffer/service/program_cache.h" + #include "gpu/command_buffer/service/shader_manager.h" + #include "gpu/config/gpu_preferences.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + #include "ui/gl/gl_version_info.h" + #include "ui/gl/progress_reporter.h" + diff --git a/devel/electron5/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc b/devel/electron5/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc new file mode 100644 index 000000000000..7cb781d9cfea --- /dev/null +++ b/devel/electron5/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc @@ -0,0 +1,11 @@ +--- gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc.orig 2019-04-08 08:32:57 UTC ++++ gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc +@@ -562,7 +562,7 @@ class GLCopyTextureCHROMIUMES3Test : public GLCopyText + + bool ShouldSkipNorm16() const { + DCHECK(!ShouldSkipTest()); +-#if (defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)) && \ ++#if (defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)) && \ + (defined(ARCH_CPU_X86) || defined(ARCH_CPU_X86_64)) + // Make sure it's tested; it is safe to assume that the flag is always true + // on desktop. diff --git a/devel/electron5/files/patch-gpu_command__buffer_tests_gl__test__utils.cc b/devel/electron5/files/patch-gpu_command__buffer_tests_gl__test__utils.cc new file mode 100644 index 000000000000..c5b2286b5c5d --- /dev/null +++ b/devel/electron5/files/patch-gpu_command__buffer_tests_gl__test__utils.cc @@ -0,0 +1,20 @@ +--- gpu/command_buffer/tests/gl_test_utils.cc.orig 2019-04-08 08:32:57 UTC ++++ gpu/command_buffer/tests/gl_test_utils.cc +@@ -22,7 +22,7 @@ + #include "ui/gfx/geometry/size.h" + #include "ui/gl/init/gl_factory.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "ui/gl/gl_image_native_pixmap.h" + #endif + +@@ -425,7 +425,7 @@ void GpuCommandBufferTestEGL::RestoreGLDefault() { + window_system_binding_info_ = gl::GLWindowSystemBindingInfo(); + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + scoped_refptr<gl::GLImageNativePixmap> + GpuCommandBufferTestEGL::CreateGLImageNativePixmap(gfx::BufferFormat format, + gfx::Size size, diff --git a/devel/electron5/files/patch-gpu_command__buffer_tests_gl__test__utils.h b/devel/electron5/files/patch-gpu_command__buffer_tests_gl__test__utils.h new file mode 100644 index 000000000000..eb7c32cf12dd --- /dev/null +++ b/devel/electron5/files/patch-gpu_command__buffer_tests_gl__test__utils.h @@ -0,0 +1,11 @@ +--- gpu/command_buffer/tests/gl_test_utils.h.orig 2019-04-08 08:18:20 UTC ++++ gpu/command_buffer/tests/gl_test_utils.h +@@ -112,7 +112,7 @@ class GpuCommandBufferTestEGL { + return gfx::HasExtension(gl_extensions_, extension); + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Create GLImageNativePixmap filled in with the given pixels. + scoped_refptr<gl::GLImageNativePixmap> CreateGLImageNativePixmap( + gfx::BufferFormat format, diff --git a/devel/electron5/files/patch-gpu_config_gpu__control__list.cc b/devel/electron5/files/patch-gpu_config_gpu__control__list.cc new file mode 100644 index 000000000000..d5284e500ac5 --- /dev/null +++ b/devel/electron5/files/patch-gpu_config_gpu__control__list.cc @@ -0,0 +1,32 @@ +--- gpu/config/gpu_control_list.cc.orig 2019-04-08 08:32:57 UTC ++++ gpu/config/gpu_control_list.cc +@@ -16,7 +16,11 @@ + #include "base/values.h" + #include "build/build_config.h" + #include "gpu/config/gpu_util.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif // defined(OS_BSD) + + namespace gpu { + namespace { +@@ -213,7 +217,7 @@ bool GpuControlList::More::GLVersionInfoMismatch( + GpuControlList::GLType GpuControlList::More::GetDefaultGLType() { + #if defined(OS_CHROMEOS) + return kGLTypeGL; +-#elif defined(OS_LINUX) || defined(OS_OPENBSD) ++#elif defined(OS_LINUX) || defined(OS_BSD) + return kGLTypeGL; + #elif defined(OS_MACOSX) + return kGLTypeGL; +@@ -699,7 +703,7 @@ GpuControlList::OsType GpuControlList::GetOsType() { + return kOsAndroid; + #elif defined(OS_FUCHSIA) + return kOsFuchsia; +-#elif defined(OS_LINUX) || defined(OS_OPENBSD) ++#elif defined(OS_LINUX) || defined(OS_BSD) + return kOsLinux; + #elif defined(OS_MACOSX) + return kOsMacosx; diff --git a/devel/electron5/files/patch-gpu_config_gpu__test__config.cc b/devel/electron5/files/patch-gpu_config_gpu__test__config.cc new file mode 100644 index 000000000000..b169e7555541 --- /dev/null +++ b/devel/electron5/files/patch-gpu_config_gpu__test__config.cc @@ -0,0 +1,11 @@ +--- gpu/config/gpu_test_config.cc.orig 2019-04-08 08:18:21 UTC ++++ gpu/config/gpu_test_config.cc +@@ -25,7 +25,7 @@ namespace { + GPUTestConfig::OS GetCurrentOS() { + #if defined(OS_CHROMEOS) + return GPUTestConfig::kOsChromeOS; +-#elif defined(OS_LINUX) || defined(OS_OPENBSD) ++#elif defined(OS_LINUX) || defined(OS_BSD) + return GPUTestConfig::kOsLinux; + #elif defined(OS_WIN) + int32_t major_version = 0; diff --git a/devel/electron5/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc b/devel/electron5/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc new file mode 100644 index 000000000000..a8c1a59e9642 --- /dev/null +++ b/devel/electron5/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc @@ -0,0 +1,47 @@ +--- gpu/ipc/common/gpu_memory_buffer_support.cc.orig 2019-04-08 08:32:57 UTC ++++ gpu/ipc/common/gpu_memory_buffer_support.cc +@@ -12,7 +12,7 @@ + #include "gpu/ipc/common/gpu_memory_buffer_impl_io_surface.h" + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "gpu/ipc/common/gpu_memory_buffer_impl_native_pixmap.h" + #include "ui/gfx/client_native_pixmap_factory.h" + #include "ui/gfx/linux/client_native_pixmap_factory_dmabuf.h" +@@ -37,7 +37,7 @@ namespace gpu { + GpuMemoryBufferSupport::GpuMemoryBufferSupport() { + #if defined(USE_OZONE) + client_native_pixmap_factory_ = ui::CreateClientNativePixmapFactoryOzone(); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + client_native_pixmap_factory_.reset( + gfx::CreateClientNativePixmapFactoryDmabuf()); + #endif +@@ -51,7 +51,7 @@ GpuMemoryBufferSupport::GetNativeGpuMemoryBufferType() + return gfx::IO_SURFACE_BUFFER; + #elif defined(OS_ANDROID) + return gfx::ANDROID_HARDWARE_BUFFER; +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + return gfx::NATIVE_PIXMAP; + #elif defined(OS_WIN) + return gfx::DXGI_SHARED_HANDLE; +@@ -109,7 +109,7 @@ bool GpuMemoryBufferSupport::IsNativeGpuMemoryBufferCo + #elif defined(USE_OZONE) + return ui::OzonePlatform::EnsureInstance()->IsNativePixmapConfigSupported( + format, usage); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + return false; // TODO(julian.isorce): Add linux support. + #elif defined(OS_WIN) + switch (usage) { +@@ -166,7 +166,7 @@ GpuMemoryBufferSupport::CreateGpuMemoryBufferImplFromH + return GpuMemoryBufferImplIOSurface::CreateFromHandle( + std::move(handle), size, format, usage, std::move(callback)); + #endif +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + case gfx::NATIVE_PIXMAP: + return GpuMemoryBufferImplNativePixmap::CreateFromHandle( + client_native_pixmap_factory(), std::move(handle), size, format, diff --git a/devel/electron5/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h b/devel/electron5/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h new file mode 100644 index 000000000000..9dabad770214 --- /dev/null +++ b/devel/electron5/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h @@ -0,0 +1,29 @@ +--- gpu/ipc/common/gpu_memory_buffer_support.h.orig 2019-04-08 08:18:21 UTC ++++ gpu/ipc/common/gpu_memory_buffer_support.h +@@ -16,7 +16,7 @@ + #include "ui/gfx/geometry/size.h" + #include "ui/gfx/gpu_memory_buffer.h" + +-#if defined(OS_LINUX) || defined(USE_OZONE) ++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE) + namespace gfx { + class ClientNativePixmapFactory; + } +@@ -38,7 +38,7 @@ class GPU_EXPORT GpuMemoryBufferSupport { + bool IsNativeGpuMemoryBufferConfigurationSupported(gfx::BufferFormat format, + gfx::BufferUsage usage); + +-#if defined(OS_LINUX) || defined(USE_OZONE) ++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE) + gfx::ClientNativePixmapFactory* client_native_pixmap_factory() { + return client_native_pixmap_factory_.get(); + } +@@ -61,7 +61,7 @@ class GPU_EXPORT GpuMemoryBufferSupport { + GpuMemoryBufferImpl::DestructionCallback callback); + + private: +-#if defined(OS_LINUX) || defined(USE_OZONE) ++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE) + std::unique_ptr<gfx::ClientNativePixmapFactory> client_native_pixmap_factory_; + #endif + diff --git a/devel/electron5/files/patch-gpu_ipc_service_gpu__init.cc b/devel/electron5/files/patch-gpu_ipc_service_gpu__init.cc new file mode 100644 index 000000000000..d80d5b5ca9ea --- /dev/null +++ b/devel/electron5/files/patch-gpu_ipc_service_gpu__init.cc @@ -0,0 +1,29 @@ +--- gpu/ipc/service/gpu_init.cc.orig 2019-04-08 08:32:57 UTC ++++ gpu/ipc/service/gpu_init.cc +@@ -87,7 +87,7 @@ void InitializeDirectCompositionOverlaySupport(GPUInfo + } + #endif // defined(OS_WIN) + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)) || defined(OS_BSD) + bool CanAccessNvidiaDeviceFile() { + bool res = true; + base::ScopedBlockingCall scoped_blocking_call(base::BlockingType::WILL_BLOCK); +@@ -129,7 +129,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + // crash during feature collection. + gpu::SetKeysForCrashLogging(gpu_info_); + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + if (gpu_info_.gpu.vendor_id == 0x10de && // NVIDIA + gpu_info_.gpu.driver_vendor == "NVIDIA" && !CanAccessNvidiaDeviceFile()) + return false; +@@ -199,7 +199,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + sandbox_helper_->PreSandboxStartup(); + + bool attempted_startsandbox = false; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) && !defined(OS_BSD) + // On Chrome OS ARM Mali, GPU driver userspace creates threads when + // initializing a GL context, so start the sandbox early. + // TODO(zmo): Need to collect OS version before this. diff --git a/devel/electron5/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc b/devel/electron5/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc new file mode 100644 index 000000000000..71374fdd34a3 --- /dev/null +++ b/devel/electron5/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc @@ -0,0 +1,20 @@ +--- gpu/ipc/service/gpu_memory_buffer_factory.cc.orig 2019-04-08 08:18:21 UTC ++++ gpu/ipc/service/gpu_memory_buffer_factory.cc +@@ -12,7 +12,7 @@ + #include "gpu/ipc/service/gpu_memory_buffer_factory_io_surface.h" + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "gpu/ipc/service/gpu_memory_buffer_factory_native_pixmap.h" + #endif + +@@ -33,7 +33,7 @@ GpuMemoryBufferFactory::CreateNativeType() { + return base::WrapUnique(new GpuMemoryBufferFactoryIOSurface); + #elif defined(OS_ANDROID) + return base::WrapUnique(new GpuMemoryBufferFactoryAndroidHardwareBuffer); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + return base::WrapUnique(new GpuMemoryBufferFactoryNativePixmap); + #elif defined(OS_WIN) + return base::WrapUnique(new GpuMemoryBufferFactoryDXGI); diff --git a/devel/electron5/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc b/devel/electron5/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc new file mode 100644 index 000000000000..0a5145ee02db --- /dev/null +++ b/devel/electron5/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc @@ -0,0 +1,73 @@ +--- gpu/ipc/service/gpu_watchdog_thread.cc.orig 2019-04-08 08:32:57 UTC ++++ gpu/ipc/service/gpu_watchdog_thread.cc +@@ -51,8 +51,10 @@ const int kGpuTimeout = 10000; + #endif + + #if defined(USE_X11) ++#if !defined(OS_BSD) + const base::FilePath::CharType kTtyFilePath[] = + FILE_PATH_LITERAL("/sys/class/tty/tty0/active"); ++#endif + const unsigned char text[20] = "check"; + #endif + +@@ -75,8 +77,10 @@ GpuWatchdogThread::GpuWatchdogThread() + display_(nullptr), + window_(0), + atom_(x11::None), ++#if !defined(OS_BSD) + host_tty_(-1), + #endif ++#endif + weak_factory_(this) { + base::subtle::NoBarrier_Store(&awaiting_acknowledge_, false); + +@@ -91,7 +95,9 @@ GpuWatchdogThread::GpuWatchdogThread() + #endif + + #if defined(USE_X11) ++#if !defined(OS_BSD) + tty_file_ = base::OpenFile(base::FilePath(kTtyFilePath), "r"); ++#endif + SetupXServer(); + #endif + base::MessageLoopCurrent::Get()->AddTaskObserver(&task_observer_); +@@ -238,8 +244,10 @@ GpuWatchdogThread::~GpuWatchdogThread() { + power_monitor->RemoveObserver(this); + + #if defined(USE_X11) ++#if !defined(OS_BSD) + if (tty_file_) + fclose(tty_file_); ++#endif + if (display_) { + DCHECK(window_); + XDestroyWindow(display_, window_); +@@ -463,7 +471,7 @@ void GpuWatchdogThread::DeliberatelyTerminateToRecover + return; + #endif + +-#if defined(USE_X11) ++#if defined(USE_X11) && !defined(OS_BSD) + // Don't crash if we're not on the TTY of our host X11 server. + int active_tty = GetActiveTTY(); + if (host_tty_ != -1 && active_tty != -1 && host_tty_ != active_tty) { +@@ -526,7 +534,9 @@ void GpuWatchdogThread::SetupXServer() { + CopyFromParent, InputOutput, CopyFromParent, 0, nullptr); + atom_ = XInternAtom(display_, "CHECK", x11::False); + } ++#if !defined(OS_BSD) + host_tty_ = GetActiveTTY(); ++#endif + } + + void GpuWatchdogThread::SetupXChangeProp() { +@@ -627,7 +637,7 @@ base::ThreadTicks GpuWatchdogThread::GetWatchedThreadT + } + #endif + +-#if defined(USE_X11) ++#if defined(USE_X11) && !defined(OS_BSD) + int GpuWatchdogThread::GetActiveTTY() const { + char tty_string[8] = {0}; + if (tty_file_ && !fseek(tty_file_, 0, SEEK_SET) && diff --git a/devel/electron5/files/patch-gpu_ipc_service_gpu__watchdog__thread.h b/devel/electron5/files/patch-gpu_ipc_service_gpu__watchdog__thread.h new file mode 100644 index 000000000000..cc2a3b4d121d --- /dev/null +++ b/devel/electron5/files/patch-gpu_ipc_service_gpu__watchdog__thread.h @@ -0,0 +1,13 @@ +--- gpu/ipc/service/gpu_watchdog_thread.h.orig 2019-04-08 08:32:57 UTC ++++ gpu/ipc/service/gpu_watchdog_thread.h +@@ -191,8 +191,10 @@ class GPU_IPC_SERVICE_EXPORT GpuWatchdogThread : publi + XDisplay* display_; + gfx::AcceleratedWidget window_; + XAtom atom_; ++#if !defined(OS_BSD) + FILE* tty_file_; + int host_tty_; ++#endif + #endif + + base::RepeatingClosure alternative_terminate_for_testing_; diff --git a/devel/electron5/files/patch-headless_lib_browser_headless__content__browser__client.cc b/devel/electron5/files/patch-headless_lib_browser_headless__content__browser__client.cc new file mode 100644 index 000000000000..27fb859e4b7a --- /dev/null +++ b/devel/electron5/files/patch-headless_lib_browser_headless__content__browser__client.cc @@ -0,0 +1,20 @@ +--- headless/lib/browser/headless_content_browser_client.cc.orig 2019-04-08 08:32:57 UTC ++++ headless/lib/browser/headless_content_browser_client.cc +@@ -187,7 +187,7 @@ HeadlessContentBrowserClient::GetGeneratedCodeCacheSet + return content::GeneratedCodeCacheSettings(true, 0, context->GetPath()); + } + +-#if defined(OS_POSIX) && !defined(OS_MACOSX) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) + void HeadlessContentBrowserClient::GetAdditionalMappedFilesForChildProcess( + const base::CommandLine& command_line, + int child_process_id, +@@ -198,7 +198,7 @@ void HeadlessContentBrowserClient::GetAdditionalMapped + mappings->Share(service_manager::kCrashDumpSignal, crash_signal_fd); + #endif // defined(HEADLESS_USE_BREAKPAD) + } +-#endif // defined(OS_POSIX) && !defined(OS_MACOSX) ++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) + + void HeadlessContentBrowserClient::AppendExtraCommandLineSwitches( + base::CommandLine* command_line, diff --git a/devel/electron5/files/patch-headless_lib_browser_headless__content__browser__client.h b/devel/electron5/files/patch-headless_lib_browser_headless__content__browser__client.h new file mode 100644 index 000000000000..f3db145c0e95 --- /dev/null +++ b/devel/electron5/files/patch-headless_lib_browser_headless__content__browser__client.h @@ -0,0 +1,11 @@ +--- headless/lib/browser/headless_content_browser_client.h.orig 2019-04-08 08:18:21 UTC ++++ headless/lib/browser/headless_content_browser_client.h +@@ -34,7 +34,7 @@ class HeadlessContentBrowserClient : public content::C + ::storage::OptionalQuotaSettingsCallback callback) override; + content::GeneratedCodeCacheSettings GetGeneratedCodeCacheSettings( + content::BrowserContext* context) override; +-#if defined(OS_POSIX) && !defined(OS_MACOSX) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) + void GetAdditionalMappedFilesForChildProcess( + const base::CommandLine& command_line, + int child_process_id, diff --git a/devel/electron5/files/patch-headless_lib_browser_headless__request__context__manager.cc b/devel/electron5/files/patch-headless_lib_browser_headless__request__context__manager.cc new file mode 100644 index 000000000000..a3d5c2f229de --- /dev/null +++ b/devel/electron5/files/patch-headless_lib_browser_headless__request__context__manager.cc @@ -0,0 +1,38 @@ +--- headless/lib/browser/headless_request_context_manager.cc.orig 2019-04-08 08:32:57 UTC ++++ headless/lib/browser/headless_request_context_manager.cc +@@ -35,7 +35,7 @@ namespace headless { + + namespace { + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + static char kProductName[] = "HeadlessChrome"; + #endif + +@@ -81,7 +81,7 @@ net::NetworkTrafficAnnotationTag GetProxyConfigTraffic + return traffic_annotation; + } + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + ::network::mojom::CryptConfigPtr BuildCryptConfigOnce( + const base::FilePath& user_data_path) { + static bool done_once = false; +@@ -290,7 +290,7 @@ HeadlessRequestContextManager::HeadlessRequestContextM + proxy_config_monitor_ = + std::make_unique<HeadlessProxyConfigMonitor>(proxy_monitor_task_runner); + } +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + crypt_config_ = BuildCryptConfigOnce(user_data_path_); + if (network_service_enabled_ && crypt_config_) + content::GetNetworkService()->SetCryptConfig(std::move(crypt_config_)); +@@ -366,7 +366,7 @@ void HeadlessRequestContextManager::InitializeOnIO() { + std::move(protocol_handler.second)); + } + protocol_handlers_.clear(); +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + if (crypt_config_) { + content::GetNetworkServiceImpl()->SetCryptConfig( + std::move(crypt_config_)); diff --git a/devel/electron5/files/patch-headless_lib_browser_headless__request__context__manager.h b/devel/electron5/files/patch-headless_lib_browser_headless__request__context__manager.h new file mode 100644 index 000000000000..6ad7e4b69bd1 --- /dev/null +++ b/devel/electron5/files/patch-headless_lib_browser_headless__request__context__manager.h @@ -0,0 +1,11 @@ +--- headless/lib/browser/headless_request_context_manager.h.orig 2019-04-08 08:18:21 UTC ++++ headless/lib/browser/headless_request_context_manager.h +@@ -69,7 +69,7 @@ class HeadlessRequestContextManager { + std::unique_ptr<HeadlessProxyConfigMonitor> proxy_config_monitor_; + bool is_system_context_; + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + ::network::mojom::CryptConfigPtr crypt_config_; + #endif + diff --git a/devel/electron5/files/patch-headless_lib_headless__macros.h b/devel/electron5/files/patch-headless_lib_headless__macros.h new file mode 100644 index 000000000000..91de5d982ec9 --- /dev/null +++ b/devel/electron5/files/patch-headless_lib_headless__macros.h @@ -0,0 +1,13 @@ +--- headless/lib/headless_macros.h.orig 2019-04-08 08:18:21 UTC ++++ headless/lib/headless_macros.h +@@ -7,8 +7,8 @@ + + #include "build/build_config.h" + +-#if defined(OS_POSIX) && !defined(OS_MACOSX) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) + #define HEADLESS_USE_BREAKPAD +-#endif // defined(OS_POSIX) && !defined(OS_MACOSX) ++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) + + #endif // HEADLESS_LIB_HEADLESS_MACROS_H_ diff --git a/devel/electron5/files/patch-ipc_ipc__channel.h b/devel/electron5/files/patch-ipc_ipc__channel.h new file mode 100644 index 000000000000..bd2c82e7791e --- /dev/null +++ b/devel/electron5/files/patch-ipc_ipc__channel.h @@ -0,0 +1,11 @@ +--- ipc/ipc_channel.h.orig 2019-04-08 08:32:59 UTC ++++ ipc/ipc_channel.h +@@ -244,7 +244,7 @@ class COMPONENT_EXPORT(IPC) Channel : public Sender { + static std::string GenerateUniqueRandomChannelID(); + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Sandboxed processes live in a PID namespace, so when sending the IPC hello + // message from client to server we need to send the PID from the global + // PID namespace. diff --git a/devel/electron5/files/patch-ipc_ipc__channel__common.cc b/devel/electron5/files/patch-ipc_ipc__channel__common.cc new file mode 100644 index 000000000000..80a9eac25d53 --- /dev/null +++ b/devel/electron5/files/patch-ipc_ipc__channel__common.cc @@ -0,0 +1,11 @@ +--- ipc/ipc_channel_common.cc.orig 2019-04-08 08:18:22 UTC ++++ ipc/ipc_channel_common.cc +@@ -9,7 +9,7 @@ + + namespace IPC { + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + + namespace { + int g_global_pid = 0; diff --git a/devel/electron5/files/patch-ipc_ipc__channel__mojo.cc b/devel/electron5/files/patch-ipc_ipc__channel__mojo.cc new file mode 100644 index 000000000000..23d22bf7228d --- /dev/null +++ b/devel/electron5/files/patch-ipc_ipc__channel__mojo.cc @@ -0,0 +1,11 @@ +--- ipc/ipc_channel_mojo.cc.orig 2019-04-08 08:32:59 UTC ++++ ipc/ipc_channel_mojo.cc +@@ -64,7 +64,7 @@ class MojoChannelFactory : public ChannelFactory { + }; + + base::ProcessId GetSelfPID() { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + if (int global_pid = Channel::GetGlobalPid()) + return global_pid; + #endif // OS_LINUX diff --git a/devel/electron5/files/patch-ipc_ipc__message__utils.cc b/devel/electron5/files/patch-ipc_ipc__message__utils.cc new file mode 100644 index 000000000000..49cd38da4230 --- /dev/null +++ b/devel/electron5/files/patch-ipc_ipc__message__utils.cc @@ -0,0 +1,11 @@ +--- ipc/ipc_message_utils.cc.orig 2019-04-08 08:32:59 UTC ++++ ipc/ipc_message_utils.cc +@@ -349,7 +349,7 @@ void ParamTraits<unsigned int>::Log(const param_type& + } + + #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || \ +- (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS)) ++ defined(OS_BSD) || (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS)) + void ParamTraits<long>::Log(const param_type& p, std::string* l) { + l->append(base::NumberToString(p)); + } diff --git a/devel/electron5/files/patch-ipc_ipc__message__utils.h b/devel/electron5/files/patch-ipc_ipc__message__utils.h new file mode 100644 index 000000000000..2586a2577eb5 --- /dev/null +++ b/devel/electron5/files/patch-ipc_ipc__message__utils.h @@ -0,0 +1,11 @@ +--- ipc/ipc_message_utils.h.orig 2019-04-08 08:32:59 UTC ++++ ipc/ipc_message_utils.h +@@ -204,7 +204,7 @@ struct ParamTraits<unsigned int> { + // Since we want to support Android 32<>64 bit IPC, as long as we don't have + // these traits for 32 bit ARM then that'll catch any errors. + #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || \ +- (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS)) ++ defined(OS_BSD) || (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS)) + template <> + struct ParamTraits<long> { + typedef long param_type; diff --git a/devel/electron5/files/patch-media_BUILD.gn b/devel/electron5/files/patch-media_BUILD.gn new file mode 100644 index 000000000000..7a73dae0671b --- /dev/null +++ b/devel/electron5/files/patch-media_BUILD.gn @@ -0,0 +1,12 @@ +--- media/BUILD.gn.orig 2019-04-08 08:32:59 UTC ++++ media/BUILD.gn +@@ -59,6 +59,9 @@ config("media_config") { + defines += [ "DLOPEN_PULSEAUDIO" ] + } + } ++ if (use_sndio) { ++ defines += [ "USE_SNDIO" ] ++ } + if (use_cras) { + defines += [ "USE_CRAS" ] + } diff --git a/devel/electron5/files/patch-media_audio_BUILD.gn b/devel/electron5/files/patch-media_audio_BUILD.gn new file mode 100644 index 000000000000..fd28953c9bcc --- /dev/null +++ b/devel/electron5/files/patch-media_audio_BUILD.gn @@ -0,0 +1,22 @@ +--- media/audio/BUILD.gn.orig 2019-04-09 12:48:19 UTC ++++ media/audio/BUILD.gn +@@ -248,8 +248,18 @@ source_set("audio") { + deps += [ "//media/base/android:media_jni_headers" ] + } + +- if (is_linux) { ++ if (is_linux && !use_sndio) { + sources += [ "linux/audio_manager_linux.cc" ] ++ } ++ if (use_sndio) { ++ libs += [ "sndio" ] ++ sources += [ ++ "openbsd/audio_manager_openbsd.cc", ++ "sndio/sndio_input.cc", ++ "sndio/sndio_input.h", ++ "sndio/sndio_output.cc", ++ "sndio/sndio_output.h" ++ ] + } + + if (use_alsa) { diff --git a/devel/electron5/files/patch-media_audio_alsa_audio__manager__alsa.cc b/devel/electron5/files/patch-media_audio_alsa_audio__manager__alsa.cc new file mode 100644 index 000000000000..3d6bef4bdca2 --- /dev/null +++ b/devel/electron5/files/patch-media_audio_alsa_audio__manager__alsa.cc @@ -0,0 +1,54 @@ +--- media/audio/alsa/audio_manager_alsa.cc.orig 2019-04-08 08:18:22 UTC ++++ media/audio/alsa/audio_manager_alsa.cc +@@ -92,7 +92,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType + int card = -1; + + // Loop through the sound cards to get ALSA device hints. ++#if defined(OS_LINUX) + while (!wrapper_->CardNext(&card) && card >= 0) { ++#endif + void** hints = NULL; + int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints); + if (!error) { +@@ -104,7 +106,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType + DLOG(WARNING) << "GetAlsaAudioDevices: unable to get device hints: " + << wrapper_->StrError(error); + } ++#if defined(OS_LINUX) + } ++#endif + } + + void AudioManagerAlsa::GetAlsaDevicesInfo(AudioManagerAlsa::StreamType type, +@@ -187,7 +191,11 @@ bool AudioManagerAlsa::IsAlsaDeviceAvailable( + // goes through software conversion if needed (e.g. incompatible + // sample rate). + // TODO(joi): Should we prefer "hw" instead? ++#ifdef OS_LINUX + static const char kDeviceTypeDesired[] = "plughw"; ++#else ++ static const char kDeviceTypeDesired[] = "plug"; ++#endif + return strncmp(kDeviceTypeDesired, device_name, + base::size(kDeviceTypeDesired) - 1) == 0; + } +@@ -209,7 +217,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice( + // Loop through the sound cards. + // Don't use snd_device_name_hint(-1,..) since there is a access violation + // inside this ALSA API with libasound.so.2.0.0. ++#if defined(OS_LINUX) + while (!wrapper_->CardNext(&card) && (card >= 0) && !has_device) { ++#endif + int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints); + if (!error) { + for (void** hint_iter = hints; *hint_iter != NULL; hint_iter++) { +@@ -233,7 +243,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice( + DLOG(WARNING) << "HasAnyAudioDevice: unable to get device hints: " + << wrapper_->StrError(error); + } ++#if defined(OS_LINUX) + } ++#endif + + return has_device; + } diff --git a/devel/electron5/files/patch-media_audio_audio__input__device.cc b/devel/electron5/files/patch-media_audio_audio__input__device.cc new file mode 100644 index 000000000000..e0540ac98ef5 --- /dev/null +++ b/devel/electron5/files/patch-media_audio_audio__input__device.cc @@ -0,0 +1,11 @@ +--- media/audio/audio_input_device.cc.orig 2019-04-08 08:18:22 UTC ++++ media/audio/audio_input_device.cc +@@ -248,7 +248,7 @@ void AudioInputDevice::OnStreamCreated( + // also a risk of false positives if we are suspending when starting the stream + // here. See comments in AliveChecker and PowerObserverHelper for details and + // todos. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + const bool stop_at_first_alive_notification = true; + const bool pause_check_during_suspend = false; + #else diff --git a/devel/electron5/files/patch-media_audio_audio__manager.cc b/devel/electron5/files/patch-media_audio_audio__manager.cc new file mode 100644 index 000000000000..7aceb6038d07 --- /dev/null +++ b/devel/electron5/files/patch-media_audio_audio__manager.cc @@ -0,0 +1,29 @@ +--- media/audio/audio_manager.cc.orig 2019-04-08 08:18:22 UTC ++++ media/audio/audio_manager.cc +@@ -48,7 +48,7 @@ class AudioManagerHelper { + } + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + void set_app_name(const std::string& app_name) { app_name_ = app_name; } + const std::string& app_name() const { return app_name_; } + #endif +@@ -59,7 +59,7 @@ class AudioManagerHelper { + std::unique_ptr<base::win::ScopedCOMInitializer> com_initializer_for_testing_; + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + std::string app_name_; + #endif + +@@ -128,7 +128,7 @@ std::unique_ptr<AudioManager> AudioManager::CreateForT + return Create(std::move(audio_thread), GetHelper()->fake_log_factory()); + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // static + void AudioManager::SetGlobalAppName(const std::string& app_name) { + GetHelper()->set_app_name(app_name); diff --git a/devel/electron5/files/patch-media_audio_audio__manager.h b/devel/electron5/files/patch-media_audio_audio__manager.h new file mode 100644 index 000000000000..1206e1c0f003 --- /dev/null +++ b/devel/electron5/files/patch-media_audio_audio__manager.h @@ -0,0 +1,11 @@ +--- media/audio/audio_manager.h.orig 2019-04-08 08:18:22 UTC ++++ media/audio/audio_manager.h +@@ -60,7 +60,7 @@ class MEDIA_EXPORT AudioManager { + static std::unique_ptr<AudioManager> CreateForTesting( + std::unique_ptr<AudioThread> audio_thread); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Sets the name of the audio source as seen by external apps. Only actually + // used with PulseAudio as of this writing. + static void SetGlobalAppName(const std::string& app_name); diff --git a/devel/electron5/files/patch-media_audio_audio__output__proxy__unittest.cc b/devel/electron5/files/patch-media_audio_audio__output__proxy__unittest.cc new file mode 100644 index 000000000000..2edd7bc92e96 --- /dev/null +++ b/devel/electron5/files/patch-media_audio_audio__output__proxy__unittest.cc @@ -0,0 +1,11 @@ +--- media/audio/audio_output_proxy_unittest.cc.orig 2019-04-08 08:32:59 UTC ++++ media/audio/audio_output_proxy_unittest.cc +@@ -410,7 +410,7 @@ class AudioOutputProxyTest : public testing::Test { + // |stream| is closed at this point. Start() should reopen it again. + EXPECT_CALL(manager(), MakeAudioOutputStream(_, _, _)) + .Times(2) +- .WillRepeatedly(Return(reinterpret_cast<AudioOutputStream*>(NULL))); ++ .WillRepeatedly(Return(static_cast<AudioOutputStream*>(NULL))); + + EXPECT_CALL(callback_, OnError()).Times(2); + diff --git a/devel/electron5/files/patch-media_base_audio__latency.cc b/devel/electron5/files/patch-media_base_audio__latency.cc new file mode 100644 index 000000000000..3e0733304ea8 --- /dev/null +++ b/devel/electron5/files/patch-media_base_audio__latency.cc @@ -0,0 +1,11 @@ +--- media/base/audio_latency.cc.orig 2019-04-08 08:18:22 UTC ++++ media/base/audio_latency.cc +@@ -106,7 +106,7 @@ int AudioLatency::GetRtcBufferSize(int sample_rate, in + return frames_per_buffer; + } + +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD) + // On Linux, MacOS and Fuchsia, the low level IO implementations on the + // browser side supports all buffer size the clients want. We use the native + // peer connection buffer size (10ms) to achieve best possible performance. diff --git a/devel/electron5/files/patch-media_base_scopedfd__helper.h b/devel/electron5/files/patch-media_base_scopedfd__helper.h new file mode 100644 index 000000000000..6ad60567ddf7 --- /dev/null +++ b/devel/electron5/files/patch-media_base_scopedfd__helper.h @@ -0,0 +1,19 @@ +--- media/base/scopedfd_helper.h.orig 2019-04-08 08:18:23 UTC ++++ media/base/scopedfd_helper.h +@@ -14,14 +14,14 @@ namespace media { + // since the only current user is V4L2 we are limiting the scope to OS_LINUX so + // the binary size does not inflate on non-using systems. Feel free to adapt + // this and BUILD.gn as our needs evolve. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + + // Return a new vector containing duplicates of |fds|, or an empty vector in + // case of error. + MEDIA_EXPORT std::vector<base::ScopedFD> DuplicateFDs( + const std::vector<base::ScopedFD>& fds); + +-#endif // OS_LINUX ++#endif // OS_LINUX || OS_BSD + + } // namespace media + diff --git a/devel/electron5/files/patch-media_base_video__frame.cc b/devel/electron5/files/patch-media_base_video__frame.cc new file mode 100644 index 000000000000..c40ba7da4618 --- /dev/null +++ b/devel/electron5/files/patch-media_base_video__frame.cc @@ -0,0 +1,47 @@ +--- media/base/video_frame.cc.orig 2019-04-08 08:32:59 UTC ++++ media/base/video_frame.cc +@@ -53,7 +53,7 @@ static std::string StorageTypeToString( + return "OWNED_MEMORY"; + case VideoFrame::STORAGE_SHMEM: + return "SHMEM"; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + case VideoFrame::STORAGE_DMABUFS: + return "DMABUFS"; + #endif +@@ -68,7 +68,7 @@ static std::string StorageTypeToString( + // static + bool VideoFrame::IsStorageTypeMappable(VideoFrame::StorageType storage_type) { + return +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // This is not strictly needed but makes explicit that, at VideoFrame + // level, DmaBufs are not mappable from userspace. + storage_type != VideoFrame::STORAGE_DMABUFS && +@@ -461,7 +461,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapExternalYuva + return frame; + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // static + scoped_refptr<VideoFrame> VideoFrame::WrapExternalDmabufs( + const VideoFrameLayout& layout, +@@ -592,7 +592,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapVideoFrame( + } + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // If there are any |dmabuf_fds_| plugged in, we should duplicate them. + if (frame->storage_type() == STORAGE_DMABUFS) { + wrapping_frame->dmabuf_fds_ = DuplicateFDs(frame->dmabuf_fds_); +@@ -917,7 +917,7 @@ size_t VideoFrame::shared_memory_offset() const { + return shared_memory_offset_; + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + const std::vector<base::ScopedFD>& VideoFrame::DmabufFds() const { + DCHECK_EQ(storage_type_, STORAGE_DMABUFS); + diff --git a/devel/electron5/files/patch-media_base_video__frame.h b/devel/electron5/files/patch-media_base_video__frame.h new file mode 100644 index 000000000000..754660888d92 --- /dev/null +++ b/devel/electron5/files/patch-media_base_video__frame.h @@ -0,0 +1,38 @@ +--- media/base/video_frame.h.orig 2019-04-08 08:32:59 UTC ++++ media/base/video_frame.h +@@ -71,7 +71,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte + STORAGE_UNOWNED_MEMORY = 2, // External, non owned data pointers. + STORAGE_OWNED_MEMORY = 3, // VideoFrame has allocated its own data buffer. + STORAGE_SHMEM = 4, // Pixels are backed by Shared Memory. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // TODO(mcasas): Consider turning this type into STORAGE_NATIVE + // based on the idea of using this same enum value for both DMA + // buffers on Linux and CVPixelBuffers on Mac (which currently use +@@ -245,7 +245,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte + uint8_t* a_data, + base::TimeDelta timestamp); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Wraps provided dmabufs + // (https://www.kernel.org/doc/html/latest/driver-api/dma-buf.html) with a + // VideoFrame. The frame will take ownership of |dmabuf_fds|, and will +@@ -430,7 +430,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte + // Returns the offset into the shared memory where the frame data begins. + size_t shared_memory_offset() const; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Returns a vector containing the backing DmaBufs for this frame. The number + // of returned DmaBufs will be equal or less than the number of planes of + // the frame. If there are less, this means that the last FD contains the +@@ -624,7 +624,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte + // memory. + size_t shared_memory_offset_; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Dmabufs for the frame, used when storage is STORAGE_DMABUFS. Size is either + // equal or less than the number of planes of the frame. If it is less, then + // the memory area represented by the last FD contains the remaining planes. diff --git a/devel/electron5/files/patch-media_capture_video_create__video__capture__device__factory.cc b/devel/electron5/files/patch-media_capture_video_create__video__capture__device__factory.cc new file mode 100644 index 000000000000..c35af6d0cfd1 --- /dev/null +++ b/devel/electron5/files/patch-media_capture_video_create__video__capture__device__factory.cc @@ -0,0 +1,20 @@ +--- media/capture/video/create_video_capture_device_factory.cc.orig 2019-04-08 08:18:23 UTC ++++ media/capture/video/create_video_capture_device_factory.cc +@@ -10,7 +10,7 @@ + #include "media/capture/video/fake_video_capture_device_factory.h" + #include "media/capture/video/file_video_capture_device_factory.h" + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + #include "media/capture/video/linux/video_capture_device_factory_linux.h" + #elif defined(OS_CHROMEOS) + #include "media/capture/video/chromeos/public/cros_features.h" +@@ -33,7 +33,7 @@ namespace { + std::unique_ptr<VideoCaptureDeviceFactory> + CreatePlatformSpecificVideoCaptureDeviceFactory( + scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + return std::make_unique<VideoCaptureDeviceFactoryLinux>(ui_task_runner); + #elif defined(OS_CHROMEOS) + // On Chrome OS we have to support two use cases: diff --git a/devel/electron5/files/patch-media_capture_video_fake__video__capture__device__factory.cc b/devel/electron5/files/patch-media_capture_video_fake__video__capture__device__factory.cc new file mode 100644 index 000000000000..0fe3b2b6e5f7 --- /dev/null +++ b/devel/electron5/files/patch-media_capture_video_fake__video__capture__device__factory.cc @@ -0,0 +1,11 @@ +--- media/capture/video/fake_video_capture_device_factory.cc.orig 2019-04-08 08:32:59 UTC ++++ media/capture/video/fake_video_capture_device_factory.cc +@@ -204,7 +204,7 @@ void FakeVideoCaptureDeviceFactory::GetDeviceDescripto + for (const auto& entry : devices_config_) { + device_descriptors->emplace_back( + base::StringPrintf("fake_device_%d", entry_index), entry.device_id, +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE + #elif defined(OS_MACOSX) + VideoCaptureApi::MACOSX_AVFOUNDATION diff --git a/devel/electron5/files/patch-media_capture_video_file__video__capture__device__factory.cc b/devel/electron5/files/patch-media_capture_video_file__video__capture__device__factory.cc new file mode 100644 index 000000000000..033e1da95914 --- /dev/null +++ b/devel/electron5/files/patch-media_capture_video_file__video__capture__device__factory.cc @@ -0,0 +1,11 @@ +--- media/capture/video/file_video_capture_device_factory.cc.orig 2019-04-08 08:32:59 UTC ++++ media/capture/video/file_video_capture_device_factory.cc +@@ -53,7 +53,7 @@ void FileVideoCaptureDeviceFactory::GetDeviceDescripto + #elif defined(OS_MACOSX) + command_line_file_path.value(), kFileVideoCaptureDeviceName, + VideoCaptureApi::MACOSX_AVFOUNDATION +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + command_line_file_path.value(), kFileVideoCaptureDeviceName, + VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE + #else diff --git a/devel/electron5/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc b/devel/electron5/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc new file mode 100644 index 000000000000..f8f5049ac9b3 --- /dev/null +++ b/devel/electron5/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc @@ -0,0 +1,26 @@ +--- media/capture/video/linux/v4l2_capture_delegate.cc.orig 2019-04-08 08:32:59 UTC ++++ media/capture/video/linux/v4l2_capture_delegate.cc +@@ -4,8 +4,10 @@ + + #include "media/capture/video/linux/v4l2_capture_delegate.h" + ++#if !defined(OS_BSD) + #include <linux/version.h> + #include <linux/videodev2.h> ++#endif + #include <poll.h> + #include <sys/fcntl.h> + #include <sys/ioctl.h> +@@ -24,10 +26,10 @@ + + using media::mojom::MeteringMode; + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0) ++// #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0) + // 16 bit depth, Realsense F200. + #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') +-#endif ++// #endif + + // TODO(aleksandar.stojiljkovic): Wrap this with kernel version check once the + // format is introduced to kernel. diff --git a/devel/electron5/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc b/devel/electron5/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc new file mode 100644 index 000000000000..3d050521bb7a --- /dev/null +++ b/devel/electron5/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc @@ -0,0 +1,32 @@ +--- media/capture/video/linux/video_capture_device_factory_linux.cc.orig 2019-04-08 08:18:23 UTC ++++ media/capture/video/linux/video_capture_device_factory_linux.cc +@@ -259,6 +259,7 @@ bool VideoCaptureDeviceFactoryLinux::HasUsableFormats( + if (!(capabilities & V4L2_CAP_VIDEO_CAPTURE)) + return false; + ++#if !defined(OS_FREEBSD) + const std::vector<uint32_t>& usable_fourccs = + VideoCaptureDeviceLinux::GetListOfUsableFourCCs(false); + v4l2_fmtdesc fmtdesc = {}; +@@ -267,6 +268,7 @@ bool VideoCaptureDeviceFactoryLinux::HasUsableFormats( + if (base::ContainsValue(usable_fourccs, fmtdesc.pixelformat)) + return true; + } ++#endif + + DVLOG(1) << "No usable formats found"; + return false; +@@ -312,9 +314,13 @@ void VideoCaptureDeviceFactoryLinux::GetSupportedForma + v4l2_format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + for (; DoIoctl(fd, VIDIOC_ENUM_FMT, &v4l2_format) == 0; ++v4l2_format.index) { + VideoCaptureFormat supported_format; ++#if !defined(OS_FREEBSD) + supported_format.pixel_format = + VideoCaptureDeviceLinux::V4l2FourCcToChromiumPixelFormat( + v4l2_format.pixelformat); ++#else ++ supported_format.pixel_format = PIXEL_FORMAT_UNKNOWN; ++#endif + + if (supported_format.pixel_format == PIXEL_FORMAT_UNKNOWN) + continue; diff --git a/devel/electron5/files/patch-media_capture_video_linux_video__capture__device__linux.cc b/devel/electron5/files/patch-media_capture_video_linux_video__capture__device__linux.cc new file mode 100644 index 000000000000..7de7520a8409 --- /dev/null +++ b/devel/electron5/files/patch-media_capture_video_linux_video__capture__device__linux.cc @@ -0,0 +1,60 @@ +--- media/capture/video/linux/video_capture_device_linux.cc.orig 2019-04-08 08:32:59 UTC ++++ media/capture/video/linux/video_capture_device_linux.cc +@@ -37,6 +37,7 @@ int TranslatePowerLineFrequencyToV4L2(PowerLineFrequen + + } // namespace + ++#if !defined(OS_FREEBSD) + // Translates Video4Linux pixel formats to Chromium pixel formats. + // static + VideoPixelFormat VideoCaptureDeviceLinux::V4l2FourCcToChromiumPixelFormat( +@@ -50,6 +51,7 @@ std::vector<uint32_t> VideoCaptureDeviceLinux::GetList + bool favour_mjpeg) { + return V4L2CaptureDelegate::GetListOfUsableFourCcs(favour_mjpeg); + } ++#endif // !defined(OS_FREEBSD) + + VideoCaptureDeviceLinux::VideoCaptureDeviceLinux( + scoped_refptr<V4L2CaptureDevice> v4l2, +@@ -68,6 +70,7 @@ VideoCaptureDeviceLinux::~VideoCaptureDeviceLinux() { + void VideoCaptureDeviceLinux::AllocateAndStart( + const VideoCaptureParams& params, + std::unique_ptr<VideoCaptureDevice::Client> client) { ++#if !defined(OS_FREEBSD) + DCHECK(!capture_impl_); + if (v4l2_thread_.IsRunning()) + return; // Wrong state. +@@ -95,9 +98,11 @@ void VideoCaptureDeviceLinux::AllocateAndStart( + for (auto& request : photo_requests_queue_) + v4l2_thread_.task_runner()->PostTask(FROM_HERE, std::move(request)); + photo_requests_queue_.clear(); ++#endif // !defined(OS_FREEBSD) + } + + void VideoCaptureDeviceLinux::StopAndDeAllocate() { ++#if !defined(OS_FREEBSD) + if (!v4l2_thread_.IsRunning()) + return; // Wrong state. + v4l2_thread_.task_runner()->PostTask( +@@ -107,6 +112,7 @@ void VideoCaptureDeviceLinux::StopAndDeAllocate() { + v4l2_thread_.Stop(); + + capture_impl_ = nullptr; ++#endif // !defined(OS_FREEBSD) + } + + void VideoCaptureDeviceLinux::TakePhoto(TakePhotoCallback callback) { +@@ -149,11 +155,13 @@ void VideoCaptureDeviceLinux::SetPhotoOptions( + } + + void VideoCaptureDeviceLinux::SetRotation(int rotation) { ++#if !defined(OS_FREEBSD) + if (v4l2_thread_.IsRunning()) { + v4l2_thread_.task_runner()->PostTask( + FROM_HERE, base::BindOnce(&V4L2CaptureDelegate::SetRotation, + capture_impl_->GetWeakPtr(), rotation)); + } ++#endif // !defined(OS_FREEBSD) + } + + } // namespace media diff --git a/devel/electron5/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc b/devel/electron5/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc new file mode 100644 index 000000000000..ea2cf0f3c02c --- /dev/null +++ b/devel/electron5/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc @@ -0,0 +1,11 @@ +--- media/capture/video/mock_gpu_memory_buffer_manager.cc.orig 2019-04-08 08:32:59 UTC ++++ media/capture/video/mock_gpu_memory_buffer_manager.cc +@@ -103,7 +103,7 @@ class FakeGpuMemoryBuffer : public gfx::GpuMemoryBuffe + gfx::GpuMemoryBufferHandle handle; + handle.type = gfx::NATIVE_PIXMAP; + handle.id = handle_.id; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + handle.native_pixmap_handle = + gfx::CloneHandleForIPC(handle_.native_pixmap_handle); + #endif diff --git a/devel/electron5/files/patch-media_capture_video_shared__memory__handle__provider.cc b/devel/electron5/files/patch-media_capture_video_shared__memory__handle__provider.cc new file mode 100644 index 000000000000..6a23b69c4743 --- /dev/null +++ b/devel/electron5/files/patch-media_capture_video_shared__memory__handle__provider.cc @@ -0,0 +1,11 @@ +--- media/capture/video/shared_memory_handle_provider.cc.orig 2019-04-08 08:18:23 UTC ++++ media/capture/video/shared_memory_handle_provider.cc +@@ -63,7 +63,7 @@ bool SharedMemoryHandleProvider::InitFromMojoHandle( + return true; + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + bool SharedMemoryHandleProvider::InitAsReadOnlyFromRawFileDescriptor( + mojo::ScopedHandle fd_handle, + uint32_t memory_size_in_bytes) { diff --git a/devel/electron5/files/patch-media_capture_video_shared__memory__handle__provider.h b/devel/electron5/files/patch-media_capture_video_shared__memory__handle__provider.h new file mode 100644 index 000000000000..e6aae89c4358 --- /dev/null +++ b/devel/electron5/files/patch-media_capture_video_shared__memory__handle__provider.h @@ -0,0 +1,11 @@ +--- media/capture/video/shared_memory_handle_provider.h.orig 2019-04-08 08:18:23 UTC ++++ media/capture/video/shared_memory_handle_provider.h +@@ -38,7 +38,7 @@ class CAPTURE_EXPORT SharedMemoryHandleProvider + + // This requires platforms where base::SharedMemoryHandle is backed by a + // file descriptor. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + bool InitAsReadOnlyFromRawFileDescriptor(mojo::ScopedHandle fd_handle, + uint32_t memory_size_in_bytes); + #endif // defined(OS_LINUX) diff --git a/devel/electron5/files/patch-media_capture_video_video__capture__device__client.cc b/devel/electron5/files/patch-media_capture_video_video__capture__device__client.cc new file mode 100644 index 000000000000..29b7a3c2b088 --- /dev/null +++ b/devel/electron5/files/patch-media_capture_video_video__capture__device__client.cc @@ -0,0 +1,11 @@ +--- media/capture/video/video_capture_device_client.cc.orig 2019-04-08 08:32:59 UTC ++++ media/capture/video/video_capture_device_client.cc +@@ -236,7 +236,7 @@ void VideoCaptureDeviceClient::OnIncomingCapturedData( + // see http://linuxtv.org/downloads/v4l-dvb-apis/packed-rgb.html. + // Windows RGB24 defines blue at lowest byte, + // see https://msdn.microsoft.com/en-us/library/windows/desktop/dd407253 +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + origin_colorspace = libyuv::FOURCC_RAW; + #elif defined(OS_WIN) + origin_colorspace = libyuv::FOURCC_24BG; diff --git a/devel/electron5/files/patch-media_filters_vp9__parser.h b/devel/electron5/files/patch-media_filters_vp9__parser.h new file mode 100644 index 000000000000..236d06463247 --- /dev/null +++ b/devel/electron5/files/patch-media_filters_vp9__parser.h @@ -0,0 +1,10 @@ +--- media/filters/vp9_parser.h.orig 2019-04-08 08:18:23 UTC ++++ media/filters/vp9_parser.h +@@ -14,6 +14,7 @@ + + #include <stddef.h> + #include <stdint.h> ++#include <unistd.h> + #include <sys/types.h> + + #include <memory> diff --git a/devel/electron5/files/patch-media_formats_common_offset__byte__queue.cc b/devel/electron5/files/patch-media_formats_common_offset__byte__queue.cc new file mode 100644 index 000000000000..dd4a1c50da88 --- /dev/null +++ b/devel/electron5/files/patch-media_formats_common_offset__byte__queue.cc @@ -0,0 +1,20 @@ +--- media/formats/common/offset_byte_queue.cc.orig 2019-04-08 08:18:23 UTC ++++ media/formats/common/offset_byte_queue.cc +@@ -46,13 +46,13 @@ void OffsetByteQueue::PeekAt(int64_t offset, const uin + *size = tail() - offset; + } + +-bool OffsetByteQueue::Trim(int64_t max_offset) { +- if (max_offset < head_) return true; +- if (max_offset > tail()) { ++bool OffsetByteQueue::Trim(int64_t _max_offset) { ++ if (_max_offset < head_) return true; ++ if (_max_offset > tail()) { + Pop(size_); + return false; + } +- Pop(max_offset - head_); ++ Pop(_max_offset - head_); + return true; + } + diff --git a/devel/electron5/files/patch-media_formats_common_offset__byte__queue.h b/devel/electron5/files/patch-media_formats_common_offset__byte__queue.h new file mode 100644 index 000000000000..ebfc7cbdb13f --- /dev/null +++ b/devel/electron5/files/patch-media_formats_common_offset__byte__queue.h @@ -0,0 +1,22 @@ +--- media/formats/common/offset_byte_queue.h.orig 2019-04-08 08:18:23 UTC ++++ media/formats/common/offset_byte_queue.h +@@ -36,15 +36,15 @@ class MEDIA_EXPORT OffsetByteQueue { + // a null |buf| and a |size| of zero. + void PeekAt(int64_t offset, const uint8_t** buf, int* size); + +- // Marks the bytes up to (but not including) |max_offset| as ready for ++ // Marks the bytes up to (but not including) |_max_offset| as ready for + // deletion. This is relatively inexpensive, but will not necessarily reduce + // the resident buffer size right away (or ever). + // + // Returns true if the full range of bytes were successfully trimmed, +- // including the case where |max_offset| is less than the current head. +- // Returns false if |max_offset| > tail() (although all bytes currently ++ // including the case where |_max_offset| is less than the current head. ++ // Returns false if |_max_offset| > tail() (although all bytes currently + // buffered are still cleared). +- bool Trim(int64_t max_offset); ++ bool Trim(int64_t _max_offset); + + // The head and tail positions, in terms of the file's absolute offsets. + // tail() is an exclusive bound. diff --git a/devel/electron5/files/patch-media_formats_mp2t_es__parser__adts.cc b/devel/electron5/files/patch-media_formats_mp2t_es__parser__adts.cc new file mode 100644 index 000000000000..018a9b784027 --- /dev/null +++ b/devel/electron5/files/patch-media_formats_mp2t_es__parser__adts.cc @@ -0,0 +1,26 @@ +--- media/formats/mp2t/es_parser_adts.cc.orig 2019-04-08 08:32:59 UTC ++++ media/formats/mp2t/es_parser_adts.cc +@@ -63,11 +63,11 @@ bool EsParserAdts::LookForAdtsFrame(AdtsFrame* adts_fr + const uint8_t* es; + es_queue_->Peek(&es, &es_size); + +- int max_offset = es_size - kADTSHeaderMinSize; +- if (max_offset <= 0) ++ int _max_offset = es_size - kADTSHeaderMinSize; ++ if (_max_offset <= 0) + return false; + +- for (int offset = 0; offset < max_offset; offset++) { ++ for (int offset = 0; offset < _max_offset; offset++) { + const uint8_t* cur_buf = &es[offset]; + if (!isAdtsSyncWord(cur_buf)) + continue; +@@ -107,7 +107,7 @@ bool EsParserAdts::LookForAdtsFrame(AdtsFrame* adts_fr + return true; + } + +- es_queue_->Pop(max_offset); ++ es_queue_->Pop(_max_offset); + return false; + } + diff --git a/devel/electron5/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc b/devel/electron5/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc new file mode 100644 index 000000000000..4c873d31d4f4 --- /dev/null +++ b/devel/electron5/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc @@ -0,0 +1,26 @@ +--- media/formats/mp2t/es_parser_mpeg1audio.cc.orig 2019-04-08 08:18:23 UTC ++++ media/formats/mp2t/es_parser_mpeg1audio.cc +@@ -108,11 +108,11 @@ bool EsParserMpeg1Audio::LookForMpeg1AudioFrame( + const uint8_t* es; + es_queue_->Peek(&es, &es_size); + +- int max_offset = es_size - MPEG1AudioStreamParser::kHeaderSize; +- if (max_offset <= 0) ++ int _max_offset = es_size - MPEG1AudioStreamParser::kHeaderSize; ++ if (_max_offset <= 0) + return false; + +- for (int offset = 0; offset < max_offset; offset++) { ++ for (int offset = 0; offset < _max_offset; offset++) { + const uint8_t* cur_buf = &es[offset]; + if (cur_buf[0] != 0xff) + continue; +@@ -153,7 +153,7 @@ bool EsParserMpeg1Audio::LookForMpeg1AudioFrame( + return true; + } + +- es_queue_->Pop(max_offset); ++ es_queue_->Pop(_max_offset); + return false; + } + diff --git a/devel/electron5/files/patch-media_media__options.gni b/devel/electron5/files/patch-media_media__options.gni new file mode 100644 index 000000000000..bfa30ca26d18 --- /dev/null +++ b/devel/electron5/files/patch-media_media__options.gni @@ -0,0 +1,12 @@ +--- media/media_options.gni.orig 2019-04-08 08:33:00 UTC ++++ media/media_options.gni +@@ -100,6 +100,9 @@ declare_args() { + # Enables runtime selection of ALSA library for audio. + use_alsa = false + ++ # Enable runtime selection of sndio(7) ++ use_sndio = false ++ + # Alsa should be used on non-Android, non-Mac POSIX systems. + # Alsa should be used on desktop Chromecast and audio-only Chromecast builds. + if (is_posix && !is_android && !is_mac && diff --git a/devel/electron5/files/patch-media_mojo_services_gpu__mojo__media__client.cc b/devel/electron5/files/patch-media_mojo_services_gpu__mojo__media__client.cc new file mode 100644 index 000000000000..3172827a9f0f --- /dev/null +++ b/devel/electron5/files/patch-media_mojo_services_gpu__mojo__media__client.cc @@ -0,0 +1,20 @@ +--- media/mojo/services/gpu_mojo_media_client.cc.orig 2019-04-08 08:33:00 UTC ++++ media/mojo/services/gpu_mojo_media_client.cc +@@ -55,7 +55,7 @@ namespace media { + namespace { + + #if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(OS_MACOSX) || \ +- defined(OS_WIN) || defined(OS_LINUX) ++ defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + gpu::CommandBufferStub* GetCommandBufferStub( + base::WeakPtr<MediaGpuChannelManager> media_gpu_channel_manager, + base::UnguessableToken channel_token, +@@ -172,7 +172,7 @@ std::unique_ptr<VideoDecoder> GpuMojoMediaClient::Crea + std::make_unique<VideoFrameFactoryImpl>(gpu_task_runner_, + std::move(get_stub_cb))); + #elif defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) || \ +- defined(OS_LINUX) ++ defined(OS_LINUX) || defined(OS_BSD) + std::unique_ptr<VideoDecoder> vda_video_decoder = VdaVideoDecoder::Create( + task_runner, gpu_task_runner_, media_log->Clone(), target_color_space, + gpu_preferences_, gpu_workarounds_, diff --git a/devel/electron5/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc b/devel/electron5/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc new file mode 100644 index 000000000000..53075d2de6e4 --- /dev/null +++ b/devel/electron5/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc @@ -0,0 +1,11 @@ +--- media/video/gpu_memory_buffer_video_frame_pool.cc.orig 2019-04-08 08:33:00 UTC ++++ media/video/gpu_memory_buffer_video_frame_pool.cc +@@ -633,7 +633,7 @@ void GpuMemoryBufferVideoFramePool::PoolImpl::CreateHa + } + + bool is_software_backed_video_frame = !video_frame->HasTextures(); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + is_software_backed_video_frame &= !video_frame->HasDmaBufs(); + #endif + diff --git a/devel/electron5/files/patch-mojo_public_c_system_thunks.cc b/devel/electron5/files/patch-mojo_public_c_system_thunks.cc new file mode 100644 index 000000000000..3fe24aa3d915 --- /dev/null +++ b/devel/electron5/files/patch-mojo_public_c_system_thunks.cc @@ -0,0 +1,47 @@ +--- mojo/public/c/system/thunks.cc.orig 2019-04-08 08:18:24 UTC ++++ mojo/public/c/system/thunks.cc +@@ -16,7 +16,7 @@ + #include "build/build_config.h" + #include "mojo/public/c/system/core.h" + +-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + #include "base/environment.h" + #include "base/files/file_path.h" + #include "base/optional.h" +@@ -28,7 +28,7 @@ namespace { + + typedef void (*MojoGetSystemThunksFunction)(MojoSystemThunks* thunks); + +-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + PROTECTED_MEMORY_SECTION + base::ProtectedMemory<MojoGetSystemThunksFunction> g_get_thunks; + #endif +@@ -65,7 +65,7 @@ namespace mojo { + class CoreLibraryInitializer { + public: + CoreLibraryInitializer(const MojoInitializeOptions* options) { +-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + bool application_provided_path = false; + base::Optional<base::FilePath> library_path; + if (options && options->struct_size >= sizeof(*options) && +@@ -84,7 +84,7 @@ class CoreLibraryInitializer { + + if (!library_path) { + // Default to looking for the library in the current working directory. +-#if defined(OS_CHROMEOS) || defined(OS_LINUX) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD) + const base::FilePath::CharType kDefaultLibraryPathValue[] = + FILE_PATH_LITERAL("./libmojo_core.so"); + #elif defined(OS_WIN) +@@ -147,7 +147,7 @@ class CoreLibraryInitializer { + ~CoreLibraryInitializer() = default; + + private: +-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + base::Optional<base::ScopedNativeLibrary> library_; + #endif + diff --git a/devel/electron5/files/patch-mojo_public_js_mojo__bindings__resources.grd b/devel/electron5/files/patch-mojo_public_js_mojo__bindings__resources.grd new file mode 100644 index 000000000000..cce20626c908 --- /dev/null +++ b/devel/electron5/files/patch-mojo_public_js_mojo__bindings__resources.grd @@ -0,0 +1,11 @@ +--- mojo/public/js/mojo_bindings_resources.grd.orig 2019-04-08 08:33:00 UTC ++++ mojo/public/js/mojo_bindings_resources.grd +@@ -23,7 +23,7 @@ + use_base_dir="false" + type="BINDATA" + compress="gzip" /> +- <if expr="is_win or is_macosx or is_linux"> ++ <if expr="is_win or is_macosx or is_posix"> + <include name="IDR_MOJO_TIME_MOJOM_JS" + file="${root_gen_dir}/mojo/public/mojom/base/time.mojom.js" + use_base_dir="false" diff --git a/devel/electron5/files/patch-net_BUILD.gn b/devel/electron5/files/patch-net_BUILD.gn new file mode 100644 index 000000000000..f638d4205b9e --- /dev/null +++ b/devel/electron5/files/patch-net_BUILD.gn @@ -0,0 +1,37 @@ +--- net/BUILD.gn.orig 2019-04-08 08:33:00 UTC ++++ net/BUILD.gn +@@ -97,7 +97,7 @@ net_configs = [ + "//build/config/compiler:wexit_time_destructors", + ] + +-if (is_linux) { ++if (is_linux && !is_bsd) { + net_configs += [ "//build/config/linux:libresolv" ] + } + +@@ -1900,7 +1900,7 @@ component("net") { + } + + # Use getifaddrs() on POSIX platforms, except Linux and Android. +- if (is_posix && !is_linux && !is_android) { ++ if (is_posix && ((!is_linux && !is_android) || (is_bsd))) { + sources += [ + "base/network_interfaces_getifaddrs.cc", + "base/network_interfaces_getifaddrs.h", +@@ -1993,6 +1993,16 @@ component("net") { + ] + + sources -= [ "disk_cache/blockfile/file_posix.cc" ] ++ } ++ ++ if (is_bsd) { ++ sources -= [ ++ "base/address_tracker_linux.cc", ++ "base/address_tracker_linux.h", ++ "base/network_change_notifier_linux.cc", ++ "base/network_change_notifier_linux.h", ++ "base/network_interfaces_linux.cc", ++ ] + } + + if (is_ios || is_mac) { diff --git a/devel/electron5/files/patch-net_base_address__tracker__linux.cc b/devel/electron5/files/patch-net_base_address__tracker__linux.cc new file mode 100644 index 000000000000..a922c8691e46 --- /dev/null +++ b/devel/electron5/files/patch-net_base_address__tracker__linux.cc @@ -0,0 +1,360 @@ +--- net/base/address_tracker_linux.cc.orig 2019-04-08 08:33:00 UTC ++++ net/base/address_tracker_linux.cc +@@ -21,96 +21,10 @@ + namespace net { + namespace internal { + +-namespace { +- +-// Some kernel functions such as wireless_send_event and rtnetlink_ifinfo_prep +-// may send spurious messages over rtnetlink. RTM_NEWLINK messages where +-// ifi_change == 0 and rta_type == IFLA_WIRELESS should be ignored. +-bool IgnoreWirelessChange(const struct nlmsghdr* header, +- const struct ifinfomsg* msg) { +- size_t length = IFLA_PAYLOAD(header); +- for (const struct rtattr* attr = IFLA_RTA(msg); RTA_OK(attr, length); +- attr = RTA_NEXT(attr, length)) { +- if (attr->rta_type == IFLA_WIRELESS && msg->ifi_change == 0) +- return true; +- } +- return false; +-} +- +-// Retrieves address from NETLINK address message. +-// Sets |really_deprecated| for IPv6 addresses with preferred lifetimes of 0. +-bool GetAddress(const struct nlmsghdr* header, +- IPAddress* out, +- bool* really_deprecated) { +- if (really_deprecated) +- *really_deprecated = false; +- const struct ifaddrmsg* msg = +- reinterpret_cast<struct ifaddrmsg*>(NLMSG_DATA(header)); +- size_t address_length = 0; +- switch (msg->ifa_family) { +- case AF_INET: +- address_length = IPAddress::kIPv4AddressSize; +- break; +- case AF_INET6: +- address_length = IPAddress::kIPv6AddressSize; +- break; +- default: +- // Unknown family. +- return false; +- } +- // Use IFA_ADDRESS unless IFA_LOCAL is present. This behavior here is based on +- // getaddrinfo in glibc (check_pf.c). Judging from kernel implementation of +- // NETLINK, IPv4 addresses have only the IFA_ADDRESS attribute, while IPv6 +- // have the IFA_LOCAL attribute. +- uint8_t* address = NULL; +- uint8_t* local = NULL; +- size_t length = IFA_PAYLOAD(header); +- for (const struct rtattr* attr = +- reinterpret_cast<const struct rtattr*>(IFA_RTA(msg)); +- RTA_OK(attr, length); +- attr = RTA_NEXT(attr, length)) { +- switch (attr->rta_type) { +- case IFA_ADDRESS: +- DCHECK_GE(RTA_PAYLOAD(attr), address_length); +- address = reinterpret_cast<uint8_t*>(RTA_DATA(attr)); +- break; +- case IFA_LOCAL: +- DCHECK_GE(RTA_PAYLOAD(attr), address_length); +- local = reinterpret_cast<uint8_t*>(RTA_DATA(attr)); +- break; +- case IFA_CACHEINFO: { +- const struct ifa_cacheinfo *cache_info = +- reinterpret_cast<const struct ifa_cacheinfo*>(RTA_DATA(attr)); +- if (really_deprecated) +- *really_deprecated = (cache_info->ifa_prefered == 0); +- } break; +- default: +- break; +- } +- } +- if (local) +- address = local; +- if (!address) +- return false; +- *out = IPAddress(address, address_length); +- return true; +-} +- +-} // namespace +- + // static + char* AddressTrackerLinux::GetInterfaceName(int interface_index, char* buf) { +- memset(buf, 0, IFNAMSIZ); +- base::ScopedFD ioctl_socket = GetSocketForIoctl(); +- if (!ioctl_socket.is_valid()) +- return buf; +- +- struct ifreq ifr = {}; +- ifr.ifr_ifindex = interface_index; +- +- if (ioctl(ioctl_socket.get(), SIOCGIFNAME, &ifr) == 0) +- strncpy(buf, ifr.ifr_name, IFNAMSIZ - 1); +- return buf; ++ NOTIMPLEMENTED(); ++ return NULL; + } + + AddressTrackerLinux::AddressTrackerLinux() +@@ -153,93 +67,8 @@ AddressTrackerLinux::~AddressTrackerLinux() { + } + + void AddressTrackerLinux::Init() { +- netlink_fd_ = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE); +- if (netlink_fd_ < 0) { +- PLOG(ERROR) << "Could not create NETLINK socket"; +- AbortAndForceOnline(); +- return; +- } +- +- int rv; +- +- if (tracking_) { +- // Request notifications. +- struct sockaddr_nl addr = {}; +- addr.nl_family = AF_NETLINK; +- addr.nl_pid = getpid(); +- // TODO(szym): Track RTMGRP_LINK as well for ifi_type, +- // http://crbug.com/113993 +- addr.nl_groups = +- RTMGRP_IPV4_IFADDR | RTMGRP_IPV6_IFADDR | RTMGRP_NOTIFY | RTMGRP_LINK; +- rv = bind( +- netlink_fd_, reinterpret_cast<struct sockaddr*>(&addr), sizeof(addr)); +- if (rv < 0) { +- PLOG(ERROR) << "Could not bind NETLINK socket"; +- AbortAndForceOnline(); +- return; +- } +- } +- +- // Request dump of addresses. +- struct sockaddr_nl peer = {}; +- peer.nl_family = AF_NETLINK; +- +- struct { +- struct nlmsghdr header; +- struct rtgenmsg msg; +- } request = {}; +- +- request.header.nlmsg_len = NLMSG_LENGTH(sizeof(request.msg)); +- request.header.nlmsg_type = RTM_GETADDR; +- request.header.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; +- request.header.nlmsg_pid = getpid(); +- request.msg.rtgen_family = AF_UNSPEC; +- +- rv = HANDLE_EINTR(sendto(netlink_fd_, &request, request.header.nlmsg_len, +- 0, reinterpret_cast<struct sockaddr*>(&peer), +- sizeof(peer))); +- if (rv < 0) { +- PLOG(ERROR) << "Could not send NETLINK request"; +- AbortAndForceOnline(); +- return; +- } +- +- // Consume pending message to populate the AddressMap, but don't notify. +- // Sending another request without first reading responses results in EBUSY. +- bool address_changed; +- bool link_changed; +- bool tunnel_changed; +- ReadMessages(&address_changed, &link_changed, &tunnel_changed); +- +- // Request dump of link state +- request.header.nlmsg_type = RTM_GETLINK; +- +- rv = HANDLE_EINTR(sendto(netlink_fd_, &request, request.header.nlmsg_len, 0, +- reinterpret_cast<struct sockaddr*>(&peer), +- sizeof(peer))); +- if (rv < 0) { +- PLOG(ERROR) << "Could not send NETLINK request"; +- AbortAndForceOnline(); +- return; +- } +- +- // Consume pending message to populate links_online_, but don't notify. +- ReadMessages(&address_changed, &link_changed, &tunnel_changed); +- { +- AddressTrackerAutoLock lock(*this, connection_type_lock_); +- connection_type_initialized_ = true; +- connection_type_initialized_cv_.Broadcast(); +- } +- +- if (tracking_) { +- rv = base::MessageLoopCurrentForIO::Get()->WatchFileDescriptor( +- netlink_fd_, true, base::MessagePumpForIO::WATCH_READ, &watcher_, this); +- if (rv < 0) { +- PLOG(ERROR) << "Could not watch NETLINK socket"; +- AbortAndForceOnline(); +- return; +- } +- } ++NOTIMPLEMENTED(); ++AbortAndForceOnline(); + } + + void AddressTrackerLinux::AbortAndForceOnline() { +@@ -250,25 +79,6 @@ void AddressTrackerLinux::AbortAndForceOnline() { + connection_type_initialized_cv_.Broadcast(); + } + +-AddressTrackerLinux::AddressMap AddressTrackerLinux::GetAddressMap() const { +- AddressTrackerAutoLock lock(*this, address_map_lock_); +- return address_map_; +-} +- +-std::unordered_set<int> AddressTrackerLinux::GetOnlineLinks() const { +- AddressTrackerAutoLock lock(*this, online_links_lock_); +- return online_links_; +-} +- +-bool AddressTrackerLinux::IsInterfaceIgnored(int interface_index) const { +- if (ignored_interfaces_.empty()) +- return false; +- +- char buf[IFNAMSIZ] = {0}; +- const char* interface_name = get_interface_name_(interface_index, buf); +- return ignored_interfaces_.find(interface_name) != ignored_interfaces_.end(); +-} +- + NetworkChangeNotifier::ConnectionType + AddressTrackerLinux::GetCurrentConnectionType() { + // http://crbug.com/125097 +@@ -326,102 +136,7 @@ void AddressTrackerLinux::HandleMessage(char* buffer, + bool* address_changed, + bool* link_changed, + bool* tunnel_changed) { +- DCHECK(buffer); +- for (struct nlmsghdr* header = reinterpret_cast<struct nlmsghdr*>(buffer); +- NLMSG_OK(header, length); +- header = NLMSG_NEXT(header, length)) { +- switch (header->nlmsg_type) { +- case NLMSG_DONE: +- return; +- case NLMSG_ERROR: { +- const struct nlmsgerr* msg = +- reinterpret_cast<struct nlmsgerr*>(NLMSG_DATA(header)); +- LOG(ERROR) << "Unexpected netlink error " << msg->error << "."; +- } return; +- case RTM_NEWADDR: { +- IPAddress address; +- bool really_deprecated; +- struct ifaddrmsg* msg = +- reinterpret_cast<struct ifaddrmsg*>(NLMSG_DATA(header)); +- if (IsInterfaceIgnored(msg->ifa_index)) +- break; +- if (GetAddress(header, &address, &really_deprecated)) { +- AddressTrackerAutoLock lock(*this, address_map_lock_); +- // Routers may frequently (every few seconds) output the IPv6 ULA +- // prefix which can cause the linux kernel to frequently output two +- // back-to-back messages, one without the deprecated flag and one with +- // the deprecated flag but both with preferred lifetimes of 0. Avoid +- // interpretting this as an actual change by canonicalizing the two +- // messages by setting the deprecated flag based on the preferred +- // lifetime also. http://crbug.com/268042 +- if (really_deprecated) +- msg->ifa_flags |= IFA_F_DEPRECATED; +- // Only indicate change if the address is new or ifaddrmsg info has +- // changed. +- auto it = address_map_.find(address); +- if (it == address_map_.end()) { +- address_map_.insert(it, std::make_pair(address, *msg)); +- *address_changed = true; +- } else if (memcmp(&it->second, msg, sizeof(*msg))) { +- it->second = *msg; +- *address_changed = true; +- } +- } +- } break; +- case RTM_DELADDR: { +- IPAddress address; +- const struct ifaddrmsg* msg = +- reinterpret_cast<struct ifaddrmsg*>(NLMSG_DATA(header)); +- if (IsInterfaceIgnored(msg->ifa_index)) +- break; +- if (GetAddress(header, &address, NULL)) { +- AddressTrackerAutoLock lock(*this, address_map_lock_); +- if (address_map_.erase(address)) +- *address_changed = true; +- } +- } break; +- case RTM_NEWLINK: { +- const struct ifinfomsg* msg = +- reinterpret_cast<struct ifinfomsg*>(NLMSG_DATA(header)); +- if (IsInterfaceIgnored(msg->ifi_index)) +- break; +- if (IgnoreWirelessChange(header, msg)) { +- VLOG(2) << "Ignoring RTM_NEWLINK message"; +- break; +- } +- if (!(msg->ifi_flags & IFF_LOOPBACK) && (msg->ifi_flags & IFF_UP) && +- (msg->ifi_flags & IFF_LOWER_UP) && (msg->ifi_flags & IFF_RUNNING)) { +- AddressTrackerAutoLock lock(*this, online_links_lock_); +- if (online_links_.insert(msg->ifi_index).second) { +- *link_changed = true; +- if (IsTunnelInterface(msg->ifi_index)) +- *tunnel_changed = true; +- } +- } else { +- AddressTrackerAutoLock lock(*this, online_links_lock_); +- if (online_links_.erase(msg->ifi_index)) { +- *link_changed = true; +- if (IsTunnelInterface(msg->ifi_index)) +- *tunnel_changed = true; +- } +- } +- } break; +- case RTM_DELLINK: { +- const struct ifinfomsg* msg = +- reinterpret_cast<struct ifinfomsg*>(NLMSG_DATA(header)); +- if (IsInterfaceIgnored(msg->ifi_index)) +- break; +- AddressTrackerAutoLock lock(*this, online_links_lock_); +- if (online_links_.erase(msg->ifi_index)) { +- *link_changed = true; +- if (IsTunnelInterface(msg->ifi_index)) +- *tunnel_changed = true; +- } +- } break; +- default: +- break; +- } +- } ++ NOTIMPLEMENTED(); + } + + void AddressTrackerLinux::OnFileCanReadWithoutBlocking(int fd) { +@@ -458,31 +173,7 @@ bool AddressTrackerLinux::IsTunnelInterfaceName(const + } + + void AddressTrackerLinux::UpdateCurrentConnectionType() { +- AddressTrackerLinux::AddressMap address_map = GetAddressMap(); +- std::unordered_set<int> online_links = GetOnlineLinks(); +- +- // Strip out tunnel interfaces from online_links +- for (auto it = online_links.cbegin(); it != online_links.cend();) { +- if (IsTunnelInterface(*it)) { +- it = online_links.erase(it); +- } else { +- ++it; +- } +- } +- +- NetworkInterfaceList networks; +- NetworkChangeNotifier::ConnectionType type = +- NetworkChangeNotifier::CONNECTION_NONE; +- if (GetNetworkListImpl(&networks, 0, online_links, address_map, +- get_interface_name_)) { +- type = NetworkChangeNotifier::ConnectionTypeFromInterfaceList(networks); +- } else { +- type = online_links.empty() ? NetworkChangeNotifier::CONNECTION_NONE +- : NetworkChangeNotifier::CONNECTION_UNKNOWN; +- } +- +- AddressTrackerAutoLock lock(*this, connection_type_lock_); +- current_connection_type_ = type; ++ NOTIMPLEMENTED(); + } + + int AddressTrackerLinux::GetThreadsWaitingForConnectionTypeInitForTesting() diff --git a/devel/electron5/files/patch-net_base_address__tracker__linux.h b/devel/electron5/files/patch-net_base_address__tracker__linux.h new file mode 100644 index 000000000000..b9fde9d72f32 --- /dev/null +++ b/devel/electron5/files/patch-net_base_address__tracker__linux.h @@ -0,0 +1,12 @@ +--- net/base/address_tracker_linux.h.orig 2019-04-08 08:33:00 UTC ++++ net/base/address_tracker_linux.h +@@ -7,9 +7,6 @@ + + #include <sys/socket.h> // Needed to include netlink. + // Mask superfluous definition of |struct net|. This is fixed in Linux 2.6.38. +-#define net net_kernel +-#include <linux/rtnetlink.h> +-#undef net + #include <stddef.h> + + #include <map> diff --git a/devel/electron5/files/patch-net_base_address__tracker__linux__unittest.cc b/devel/electron5/files/patch-net_base_address__tracker__linux__unittest.cc new file mode 100644 index 000000000000..c85866fb9652 --- /dev/null +++ b/devel/electron5/files/patch-net_base_address__tracker__linux__unittest.cc @@ -0,0 +1,14 @@ +--- net/base/address_tracker_linux_unittest.cc.orig 2019-04-08 08:18:25 UTC ++++ net/base/address_tracker_linux_unittest.cc +@@ -4,7 +4,11 @@ + + #include "net/base/address_tracker_linux.h" + ++#if defined(__linux__) + #include <linux/if.h> ++#else ++#include <net/if.h> ++#endif + + #include <memory> + #include <unordered_set> diff --git a/devel/electron5/files/patch-net_base_network__change__notifier.cc b/devel/electron5/files/patch-net_base_network__change__notifier.cc new file mode 100644 index 000000000000..d20604193091 --- /dev/null +++ b/devel/electron5/files/patch-net_base_network__change__notifier.cc @@ -0,0 +1,10 @@ +--- net/base/network_change_notifier.cc.orig 2019-04-08 08:33:00 UTC ++++ net/base/network_change_notifier.cc +@@ -221,7 +221,6 @@ NetworkChangeNotifier* NetworkChangeNotifier::Create() + #elif defined(OS_FUCHSIA) + return new NetworkChangeNotifierFuchsia(0 /* required_features */); + #else +- NOTIMPLEMENTED(); + return NULL; + #endif + } diff --git a/devel/electron5/files/patch-net_base_network__interfaces__posix.h b/devel/electron5/files/patch-net_base_network__interfaces__posix.h new file mode 100644 index 000000000000..27757bfa412e --- /dev/null +++ b/devel/electron5/files/patch-net_base_network__interfaces__posix.h @@ -0,0 +1,11 @@ +--- net/base/network_interfaces_posix.h.orig 2019-04-08 08:18:25 UTC ++++ net/base/network_interfaces_posix.h +@@ -8,6 +8,8 @@ + // This file provides some basic functionality shared between + // network_interfaces_linux.cc and network_interfaces_getifaddrs.cc. + ++#include <sys/socket.h> ++ + #include <string> + + struct sockaddr; diff --git a/devel/electron5/files/patch-net_disk__cache_blockfile_disk__format.h b/devel/electron5/files/patch-net_disk__cache_blockfile_disk__format.h new file mode 100644 index 000000000000..fe3f7204cb7d --- /dev/null +++ b/devel/electron5/files/patch-net_disk__cache_blockfile_disk__format.h @@ -0,0 +1,12 @@ +--- net/disk_cache/blockfile/disk_format.h.orig 2019-04-08 08:18:25 UTC ++++ net/disk_cache/blockfile/disk_format.h +@@ -149,7 +149,9 @@ struct RankingsNode { + }; + #pragma pack(pop) + ++#if !defined(OS_BSD) + static_assert(sizeof(RankingsNode) == 36, "bad RankingsNode"); ++#endif + + } // namespace disk_cache + diff --git a/devel/electron5/files/patch-net_dns_address__sorter__posix.cc b/devel/electron5/files/patch-net_dns_address__sorter__posix.cc new file mode 100644 index 000000000000..fc4e9a208cde --- /dev/null +++ b/devel/electron5/files/patch-net_dns_address__sorter__posix.cc @@ -0,0 +1,12 @@ +--- net/dns/address_sorter_posix.cc.orig 2019-04-08 08:33:00 UTC ++++ net/dns/address_sorter_posix.cc +@@ -13,7 +13,9 @@ + #include <sys/socket.h> // Must be included before ifaddrs.h. + #include <ifaddrs.h> + #include <net/if.h> ++#include <net/if_var.h> + #include <netinet/in_var.h> ++#include <netinet6/in6_var.h> + #include <string.h> + #include <sys/ioctl.h> + #endif diff --git a/devel/electron5/files/patch-net_dns_dns__config__service__posix__unittest.cc b/devel/electron5/files/patch-net_dns_dns__config__service__posix__unittest.cc new file mode 100644 index 000000000000..b712096ff9d6 --- /dev/null +++ b/devel/electron5/files/patch-net_dns_dns__config__service__posix__unittest.cc @@ -0,0 +1,47 @@ +--- net/dns/dns_config_service_posix_unittest.cc.orig 2019-04-08 08:33:00 UTC ++++ net/dns/dns_config_service_posix_unittest.cc +@@ -2,8 +2,6 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + +-#include <resolv.h> +- + #include <memory> + + #include "base/cancelable_callback.h" +@@ -46,7 +44,7 @@ const char* const kNameserversIPv4[] = { + "1.0.0.1", + }; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + const char* const kNameserversIPv6[] = { + NULL, + "2001:DB8:0::42", +@@ -82,7 +80,7 @@ void InitializeResState(res_state res) { + ++res->nscount; + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Install IPv6 addresses, replacing the corresponding IPv4 addresses. + unsigned nscount6 = 0; + for (unsigned i = 0; i < base::size(kNameserversIPv6) && i < MAXNS; ++i) { +@@ -103,7 +101,7 @@ void InitializeResState(res_state res) { + } + + void CloseResState(res_state res) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + for (int i = 0; i < res->nscount; ++i) { + if (res->_u._ext.nsaddrs[i] != NULL) + free(res->_u._ext.nsaddrs[i]); +@@ -128,7 +126,7 @@ void InitializeExpectedConfig(DnsConfig* config) { + config->nameservers.push_back(IPEndPoint(ip, NS_DEFAULTPORT + i)); + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + for (unsigned i = 0; i < base::size(kNameserversIPv6) && i < MAXNS; ++i) { + if (!kNameserversIPv6[i]) + continue; diff --git a/devel/electron5/files/patch-net_dns_dns__reloader.cc b/devel/electron5/files/patch-net_dns_dns__reloader.cc new file mode 100644 index 000000000000..f09b0f7482e0 --- /dev/null +++ b/devel/electron5/files/patch-net_dns_dns__reloader.cc @@ -0,0 +1,13 @@ +--- net/dns/dns_reloader.cc.orig 2019-04-08 08:18:25 UTC ++++ net/dns/dns_reloader.cc +@@ -7,6 +7,10 @@ + #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \ + !defined(OS_ANDROID) && !defined(OS_FUCHSIA) + ++#if defined(OS_FREEBSD) ++#include <netinet/in.h> ++#endif ++ + #include <resolv.h> + + #include "base/lazy_instance.h" diff --git a/devel/electron5/files/patch-net_dns_dns__util.cc b/devel/electron5/files/patch-net_dns_dns__util.cc new file mode 100644 index 000000000000..7e82382e3190 --- /dev/null +++ b/devel/electron5/files/patch-net_dns_dns__util.cc @@ -0,0 +1,11 @@ +--- net/dns/dns_util.cc.orig 2019-04-08 08:33:00 UTC ++++ net/dns/dns_util.cc +@@ -36,6 +36,8 @@ const uint16_t kFlagNamePointer = 0xc000; + + } // namespace + ++#include <sys/socket.h> ++ + #if defined(OS_POSIX) + #include <netinet/in.h> + #if !defined(OS_NACL) diff --git a/devel/electron5/files/patch-net_dns_host__resolver__proc.cc b/devel/electron5/files/patch-net_dns_host__resolver__proc.cc new file mode 100644 index 000000000000..d2614e0359d5 --- /dev/null +++ b/devel/electron5/files/patch-net_dns_host__resolver__proc.cc @@ -0,0 +1,11 @@ +--- net/dns/host_resolver_proc.cc.orig 2019-04-08 08:33:00 UTC ++++ net/dns/host_resolver_proc.cc +@@ -195,7 +195,7 @@ int SystemHostResolverCall(const std::string& host, + // current process during that time. + base::ScopedBlockingCall scoped_blocking_call(base::BlockingType::WILL_BLOCK); + +-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \ ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) && \ + !defined(OS_ANDROID) && !defined(OS_FUCHSIA) + DnsReloaderMaybeReload(); + #endif diff --git a/devel/electron5/files/patch-net_features.gni b/devel/electron5/files/patch-net_features.gni new file mode 100644 index 000000000000..2840a729638a --- /dev/null +++ b/devel/electron5/files/patch-net_features.gni @@ -0,0 +1,11 @@ +--- net/features.gni.orig 2019-04-08 08:33:00 UTC ++++ net/features.gni +@@ -27,7 +27,7 @@ declare_args() { + disable_brotli_filter = false + + # Multicast DNS. +- enable_mdns = is_win || is_linux || is_fuchsia || is_mac || is_ios ++ enable_mdns = is_win || is_linux || is_fuchsia || is_mac || is_ios || is_bsd + + # Reporting not used on iOS. + enable_reporting = !is_ios diff --git a/devel/electron5/files/patch-net_http_http__auth__gssapi__posix.cc b/devel/electron5/files/patch-net_http_http__auth__gssapi__posix.cc new file mode 100644 index 000000000000..ab308b34295e --- /dev/null +++ b/devel/electron5/files/patch-net_http_http__auth__gssapi__posix.cc @@ -0,0 +1,14 @@ +--- net/http/http_auth_gssapi_posix.cc.orig 2019-04-08 08:33:00 UTC ++++ net/http/http_auth_gssapi_posix.cc +@@ -431,8 +431,9 @@ base::NativeLibrary GSSAPISharedLibrary::LoadSharedLib + static const char* const kDefaultLibraryNames[] = { + #if defined(OS_MACOSX) + "/System/Library/Frameworks/GSS.framework/GSS" +-#elif defined(OS_OPENBSD) +- "libgssapi.so" // Heimdal - OpenBSD ++#elif defined(OS_BSD) ++ "libgssapi_krb5.so.2", // MIT Kerberos - FreeBSD ++ "libgssapi.so" // Heimdal - OpenBSD, FreeBSD + #else + "libgssapi_krb5.so.2", // MIT Kerberos - FC, Suse10, Debian + "libgssapi.so.4", // Heimdal - Suse10, MDK diff --git a/devel/electron5/files/patch-net_http_http__network__session.cc b/devel/electron5/files/patch-net_http_http__network__session.cc new file mode 100644 index 000000000000..4a7a218f925d --- /dev/null +++ b/devel/electron5/files/patch-net_http_http__network__session.cc @@ -0,0 +1,12 @@ +--- net/http/http_network_session.cc.orig 2019-04-08 08:33:01 UTC ++++ net/http/http_network_session.cc +@@ -19,7 +19,9 @@ + #include "base/trace_event/memory_dump_request_args.h" + #include "base/trace_event/process_memory_dump.h" + #include "base/values.h" ++#if defined(USE_KERBEROS) + #include "net/http/http_auth_handler_factory.h" ++#endif + #include "net/http/http_response_body_drainer.h" + #include "net/http/http_stream_factory.h" + #include "net/http/url_security_manager.h" diff --git a/devel/electron5/files/patch-net_nqe_network__quality__estimator.cc b/devel/electron5/files/patch-net_nqe_network__quality__estimator.cc new file mode 100644 index 000000000000..de1c9ebe8b2b --- /dev/null +++ b/devel/electron5/files/patch-net_nqe_network__quality__estimator.cc @@ -0,0 +1,11 @@ +--- net/nqe/network_quality_estimator.cc.orig 2019-04-08 08:33:01 UTC ++++ net/nqe/network_quality_estimator.cc +@@ -99,7 +99,7 @@ nqe::internal::NetworkID DoGetCurrentNetworkID() { + case NetworkChangeNotifier::ConnectionType::CONNECTION_ETHERNET: + break; + case NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI: +-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + network_id.id = GetWifiSSID(); + #endif + break; diff --git a/devel/electron5/files/patch-net_nqe_network__quality__estimator__unittest.cc b/devel/electron5/files/patch-net_nqe_network__quality__estimator__unittest.cc new file mode 100644 index 000000000000..514541af29a0 --- /dev/null +++ b/devel/electron5/files/patch-net_nqe_network__quality__estimator__unittest.cc @@ -0,0 +1,11 @@ +--- net/nqe/network_quality_estimator_unittest.cc.orig 2019-04-08 08:33:01 UTC ++++ net/nqe/network_quality_estimator_unittest.cc +@@ -2058,7 +2058,7 @@ TEST_F(NetworkQualityEstimatorTest, TestGlobalSocketWa + + // TestTCPSocketRTT requires kernel support for tcp_info struct, and so it is + // enabled only on certain platforms. +-#if defined(TCP_INFO) || defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(TCP_INFO) || defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + #define MAYBE_TestTCPSocketRTT TestTCPSocketRTT + #else + #define MAYBE_TestTCPSocketRTT DISABLED_TestTCPSocketRTT diff --git a/devel/electron5/files/patch-net_proxy__resolution_proxy__config__service__linux.cc b/devel/electron5/files/patch-net_proxy__resolution_proxy__config__service__linux.cc new file mode 100644 index 000000000000..bb246d01beb4 --- /dev/null +++ b/devel/electron5/files/patch-net_proxy__resolution_proxy__config__service__linux.cc @@ -0,0 +1,39 @@ +--- net/proxy_resolution/proxy_config_service_linux.cc.orig 2019-04-08 08:33:01 UTC ++++ net/proxy_resolution/proxy_config_service_linux.cc +@@ -6,7 +6,9 @@ + + #include <errno.h> + #include <limits.h> ++#if !defined(OS_BSD) + #include <sys/inotify.h> ++#endif + #include <unistd.h> + + #include <map> +@@ -495,6 +497,7 @@ int StringToIntOrDefault(base::StringPiece value, int + return default_value; + } + ++#if !defined(OS_BSD) + // This is the KDE version that reads kioslaverc and simulates gsettings. + // Doing this allows the main Delegate code, as well as the unit tests + // for it, to stay the same - and the settings map fairly well besides. +@@ -986,6 +989,7 @@ class SettingGetterImplKDE : public ProxyConfigService + + DISALLOW_COPY_AND_ASSIGN(SettingGetterImplKDE); + }; ++#endif + + } // namespace + +@@ -1197,8 +1201,10 @@ ProxyConfigServiceLinux::Delegate::Delegate( + case base::nix::DESKTOP_ENVIRONMENT_KDE3: + case base::nix::DESKTOP_ENVIRONMENT_KDE4: + case base::nix::DESKTOP_ENVIRONMENT_KDE5: ++#if !defined(OS_BSD) + setting_getter_.reset(new SettingGetterImplKDE(env_var_getter_.get())); + break; ++#endif + case base::nix::DESKTOP_ENVIRONMENT_XFCE: + case base::nix::DESKTOP_ENVIRONMENT_OTHER: + break; diff --git a/devel/electron5/files/patch-net_proxy__resolution_proxy__resolution__service.cc b/devel/electron5/files/patch-net_proxy__resolution_proxy__resolution__service.cc new file mode 100644 index 000000000000..8f7f26908d4f --- /dev/null +++ b/devel/electron5/files/patch-net_proxy__resolution_proxy__resolution__service.cc @@ -0,0 +1,29 @@ +--- net/proxy_resolution/proxy_resolution_service.cc.orig 2019-04-08 08:33:01 UTC ++++ net/proxy_resolution/proxy_resolution_service.cc +@@ -48,7 +48,7 @@ + #elif defined(OS_MACOSX) + #include "net/proxy_resolution/proxy_config_service_mac.h" + #include "net/proxy_resolution/proxy_resolver_mac.h" +-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#elif (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + #include "net/proxy_resolution/proxy_config_service_linux.h" + #elif defined(OS_ANDROID) + #include "net/proxy_resolution/proxy_config_service_android.h" +@@ -62,7 +62,7 @@ namespace net { + namespace { + + #if defined(OS_WIN) || defined(OS_IOS) || defined(OS_MACOSX) || \ +- (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++ ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)) + constexpr net::NetworkTrafficAnnotationTag kSystemProxyConfigTrafficAnnotation = + net::DefineNetworkTrafficAnnotation("proxy_config_system", R"( + semantics { +@@ -1577,7 +1577,7 @@ ProxyResolutionService::CreateSystemProxyConfigService + << "profile_io_data.cc::CreateProxyConfigService and this should " + << "be used only for examples."; + return std::make_unique<UnsetProxyConfigService>(); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + std::unique_ptr<ProxyConfigServiceLinux> linux_config_service( + new ProxyConfigServiceLinux()); + diff --git a/devel/electron5/files/patch-net_socket_socket__posix.cc b/devel/electron5/files/patch-net_socket_socket__posix.cc new file mode 100644 index 000000000000..409de8cf7e7a --- /dev/null +++ b/devel/electron5/files/patch-net_socket_socket__posix.cc @@ -0,0 +1,11 @@ +--- net/socket/socket_posix.cc.orig 2019-04-08 08:33:01 UTC ++++ net/socket/socket_posix.cc +@@ -568,7 +568,7 @@ void SocketPosix::ReadCompleted() { + } + + int SocketPosix::DoWrite(IOBuffer* buf, int buf_len) { +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + // Disable SIGPIPE for this write. Although Chromium globally disables + // SIGPIPE, the net stack may be used in other consumers which do not do + // this. MSG_NOSIGNAL is a Linux-only API. On OS X, this is a setsockopt on diff --git a/devel/electron5/files/patch-net_socket_socks5__client__socket.cc b/devel/electron5/files/patch-net_socket_socks5__client__socket.cc new file mode 100644 index 000000000000..80bb40867f0f --- /dev/null +++ b/devel/electron5/files/patch-net_socket_socks5__client__socket.cc @@ -0,0 +1,13 @@ +--- net/socket/socks5_client_socket.cc.orig 2019-04-08 08:33:01 UTC ++++ net/socket/socks5_client_socket.cc +@@ -4,6 +4,10 @@ + + #include "net/socket/socks5_client_socket.h" + ++#if defined(OS_BSD) ++#include <netinet/in.h> ++#endif ++ + #include <utility> + + #include "base/callback_helpers.h" diff --git a/devel/electron5/files/patch-net_socket_tcp__socket__posix.cc b/devel/electron5/files/patch-net_socket_tcp__socket__posix.cc new file mode 100644 index 000000000000..bbe9bcaf664f --- /dev/null +++ b/devel/electron5/files/patch-net_socket_tcp__socket__posix.cc @@ -0,0 +1,20 @@ +--- net/socket/tcp_socket_posix.cc.orig 2019-04-08 08:18:25 UTC ++++ net/socket/tcp_socket_posix.cc +@@ -88,6 +88,17 @@ bool SetTCPKeepAlive(int fd, bool enable, int delay) { + PLOG(ERROR) << "Failed to set TCP_KEEPALIVE on fd: " << fd; + return false; + } ++#elif defined(OS_BSD) ++ // Set seconds until first TCP keep alive. ++ if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &delay, sizeof(delay))) { ++ PLOG(ERROR) << "Failed to set TCP_KEEPIDLE on fd: " << fd; ++ return false; ++ } ++ // Set seconds between TCP keep alives. ++ if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &delay, sizeof(delay))) { ++ PLOG(ERROR) << "Failed to set TCP_KEEPINTVL on fd: " << fd; ++ return false; ++ } + #endif + return true; + } diff --git a/devel/electron5/files/patch-net_socket_udp__socket__posix.cc b/devel/electron5/files/patch-net_socket_udp__socket__posix.cc new file mode 100644 index 000000000000..3433652f0c25 --- /dev/null +++ b/devel/electron5/files/patch-net_socket_udp__socket__posix.cc @@ -0,0 +1,115 @@ +--- net/socket/udp_socket_posix.cc.orig 2019-04-08 08:33:01 UTC ++++ net/socket/udp_socket_posix.cc +@@ -68,7 +68,7 @@ const int kActivityMonitorMinimumSamplesForThroughputE + const base::TimeDelta kActivityMonitorMsThreshold = + base::TimeDelta::FromMilliseconds(100); + +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) + // When enabling multicast using setsockopt(IP_MULTICAST_IF) MacOS + // requires passing IPv4 address instead of interface index. This function + // resolves IPv4 address by interface index. The |address| is returned in +@@ -97,7 +97,7 @@ int GetIPv4AddressFromIndex(int socket, uint32_t index + return OK; + } + +-#endif // OS_MACOSX ++#endif // OS_MACOSX || OS_BSD + + #if defined(OS_MACOSX) && !defined(OS_IOS) + +@@ -644,13 +644,13 @@ int UDPSocketPosix::SetDoNotFragment() { + } + + void UDPSocketPosix::SetMsgConfirm(bool confirm) { +-#if !defined(OS_MACOSX) && !defined(OS_IOS) ++#if !defined(OS_MACOSX) && !defined(OS_IOS) && !defined(OS_BSD) + if (confirm) { + sendto_flags_ |= MSG_CONFIRM; + } else { + sendto_flags_ &= ~MSG_CONFIRM; + } +-#endif // !defined(OS_MACOSX) && !defined(OS_IOS) ++#endif // !defined(OS_MACOSX) && !defined(OS_IOS) && !defined(OS_BSD) + } + + int UDPSocketPosix::AllowAddressReuse() { +@@ -665,17 +665,20 @@ int UDPSocketPosix::SetBroadcast(bool broadcast) { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + int value = broadcast ? 1 : 0; + int rv; +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) + // SO_REUSEPORT on OSX permits multiple processes to each receive + // UDP multicast or broadcast datagrams destined for the bound + // port. + // This is only being set on OSX because its behavior is platform dependent + // and we are playing it safe by only setting it on platforms where things + // break. ++ rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value)); ++ if (rv != 0) ++ return MapSystemError(errno); + rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEPORT, &value, sizeof(value)); + if (rv != 0) + return MapSystemError(errno); +-#endif // defined(OS_MACOSX) ++#endif // defined(OS_MACOSX) || defined(OS_BSD) + rv = setsockopt(socket_, SOL_SOCKET, SO_BROADCAST, &value, sizeof(value)); + + return rv == 0 ? OK : MapSystemError(errno); +@@ -937,19 +940,24 @@ int UDPSocketPosix::SetMulticastOptions() { + if (multicast_interface_ != 0) { + switch (addr_family_) { + case AF_INET: { +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) + ip_mreq mreq = {}; + int error = GetIPv4AddressFromIndex(socket_, multicast_interface_, + &mreq.imr_interface.s_addr); + if (error != OK) + return error; +-#else // defined(OS_MACOSX) ++#else // defined(OS_MACOSX) || defined(OS_BSD) + ip_mreqn mreq = {}; + mreq.imr_ifindex = multicast_interface_; + mreq.imr_address.s_addr = htonl(INADDR_ANY); +-#endif // !defined(OS_MACOSX) ++#endif // !defined(OS_MACOSX) || defined(OS_BSD) + int rv = setsockopt(socket_, IPPROTO_IP, IP_MULTICAST_IF, ++#if defined(OS_BSD) ++ reinterpret_cast<const char*>(&mreq.imr_interface.s_addr), ++ sizeof(mreq.imr_interface.s_addr)); ++#else + reinterpret_cast<const char*>(&mreq), sizeof(mreq)); ++#endif + if (rv) + return MapSystemError(errno); + break; +@@ -1011,7 +1019,7 @@ int UDPSocketPosix::JoinGroup(const IPAddress& group_a + if (addr_family_ != AF_INET) + return ERR_ADDRESS_INVALID; + +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) + ip_mreq mreq = {}; + int error = GetIPv4AddressFromIndex(socket_, multicast_interface_, + &mreq.imr_interface.s_addr); +@@ -1059,9 +1067,18 @@ int UDPSocketPosix::LeaveGroup(const IPAddress& group_ + case IPAddress::kIPv4AddressSize: { + if (addr_family_ != AF_INET) + return ERR_ADDRESS_INVALID; ++#if defined(OS_BSD) ++ ip_mreq mreq = {}; ++ int error = GetIPv4AddressFromIndex(socket_, multicast_interface_, ++ &mreq.imr_interface.s_addr); ++ ++ if (error != OK) ++ return error; ++#else + ip_mreqn mreq = {}; + mreq.imr_ifindex = multicast_interface_; + mreq.imr_address.s_addr = INADDR_ANY; ++#endif + memcpy(&mreq.imr_multiaddr, group_address.bytes().data(), + IPAddress::kIPv4AddressSize); + int rv = setsockopt(socket_, IPPROTO_IP, IP_DROP_MEMBERSHIP, diff --git a/devel/electron5/files/patch-net_third__party_quic_platform_impl_quic__ip__address__impl.cc b/devel/electron5/files/patch-net_third__party_quic_platform_impl_quic__ip__address__impl.cc new file mode 100644 index 000000000000..547ab5980c42 --- /dev/null +++ b/devel/electron5/files/patch-net_third__party_quic_platform_impl_quic__ip__address__impl.cc @@ -0,0 +1,10 @@ +--- net/third_party/quic/platform/impl/quic_ip_address_impl.cc.orig 2019-04-08 08:33:01 UTC ++++ net/third_party/quic/platform/impl/quic_ip_address_impl.cc +@@ -13,6 +13,7 @@ + #include <ws2bth.h> + #elif defined(OS_POSIX) || defined(OS_FUCHSIA) + #include <netinet/in.h> ++#include <sys/socket.h> + #endif + + using std::string; diff --git a/devel/electron5/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc b/devel/electron5/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc new file mode 100644 index 000000000000..669edf6f284c --- /dev/null +++ b/devel/electron5/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc @@ -0,0 +1,20 @@ +--- net/tools/cert_verify_tool/cert_verify_tool.cc.orig 2019-04-08 08:33:01 UTC ++++ net/tools/cert_verify_tool/cert_verify_tool.cc +@@ -27,7 +27,7 @@ + #include "net/url_request/url_request_context_builder.h" + #include "net/url_request/url_request_context_getter.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "net/proxy_resolution/proxy_config.h" + #include "net/proxy_resolution/proxy_config_service_fixed.h" + #endif +@@ -46,7 +46,7 @@ void SetUpOnNetworkThread(std::unique_ptr<net::URLRequ + base::WaitableEvent* initialization_complete_event) { + net::URLRequestContextBuilder url_request_context_builder; + url_request_context_builder.set_user_agent(GetUserAgent()); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // On Linux, use a fixed ProxyConfigService, since the default one + // depends on glib. + // diff --git a/devel/electron5/files/patch-net_tools_quic_quic__http__proxy__backend.cc b/devel/electron5/files/patch-net_tools_quic_quic__http__proxy__backend.cc new file mode 100644 index 000000000000..ab751ee3acc4 --- /dev/null +++ b/devel/electron5/files/patch-net_tools_quic_quic__http__proxy__backend.cc @@ -0,0 +1,11 @@ +--- net/tools/quic/quic_http_proxy_backend.cc.orig 2019-04-08 08:33:01 UTC ++++ net/tools/quic/quic_http_proxy_backend.cc +@@ -160,7 +160,7 @@ void QuicHttpProxyBackend::InitializeURLRequestContext + // Enable HTTP2, but disable QUIC on the backend + context_builder.SetSpdyAndQuicEnabled(true /* http2 */, false /* quic */); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // On Linux, use a fixed ProxyConfigService, since the default one + // depends on glib. + context_builder.set_proxy_config_service( diff --git a/devel/electron5/files/patch-net_url__request_url__request__context__builder.cc b/devel/electron5/files/patch-net_url__request_url__request__context__builder.cc new file mode 100644 index 000000000000..726efab0d3cd --- /dev/null +++ b/devel/electron5/files/patch-net_url__request_url__request__context__builder.cc @@ -0,0 +1,11 @@ +--- net/url_request/url_request_context_builder.cc.orig 2019-04-08 08:33:01 UTC ++++ net/url_request/url_request_context_builder.cc +@@ -520,7 +520,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu + } + + if (!proxy_resolution_service_) { +-#if !defined(OS_LINUX) && !defined(OS_ANDROID) ++#if !defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_BSD) + // TODO(willchan): Switch to using this code when + // ProxyResolutionService::CreateSystemProxyConfigService()'s signature + // doesn't suck. diff --git a/devel/electron5/files/patch-pdf_pdfium_pdfium__engine.cc b/devel/electron5/files/patch-pdf_pdfium_pdfium__engine.cc new file mode 100644 index 000000000000..762a00cc9f74 --- /dev/null +++ b/devel/electron5/files/patch-pdf_pdfium_pdfium__engine.cc @@ -0,0 +1,74 @@ +--- pdf/pdfium/pdfium_engine.cc.orig 2019-04-08 08:33:02 UTC ++++ pdf/pdfium/pdfium_engine.cc +@@ -133,7 +133,7 @@ constexpr base::TimeDelta kMaxInitialProgressivePaintT + + PDFiumEngine* g_engine_for_fontmapper = nullptr; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + + PP_Instance g_last_instance_id; + +@@ -413,7 +413,7 @@ void Release(FPDF_SYSFONTINFO* sysfontinfo) { + fontinfo_with_metrics->default_sysfontinfo->Release( + fontinfo_with_metrics->default_sysfontinfo); + } +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + PDFiumEngine::CreateDocumentLoaderFunction + g_create_document_loader_for_testing = nullptr; +@@ -663,7 +663,7 @@ bool InitializeSDK() { + config.m_v8EmbedderSlot = gin::kEmbedderPDFium; + FPDF_InitLibraryWithConfig(&config); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Font loading doesn't work in the renderer sandbox in Linux. + FPDF_SetSystemFontInfo(&g_font_info); + #else +@@ -688,7 +688,7 @@ bool InitializeSDK() { + + void ShutdownSDK() { + FPDF_DestroyLibrary(); +-#if !defined(OS_LINUX) ++#if !defined(OS_LINUX) && !defined(OS_BSD) + delete g_font_info; + #endif + TearDownV8(); +@@ -712,7 +712,7 @@ PDFiumEngine::PDFiumEngine(PDFEngine::Client* client, + IFSDK_PAUSE::user = nullptr; + IFSDK_PAUSE::NeedToPauseNow = Pause_NeedToPauseNow; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // PreviewModeClient does not know its pp::Instance. + pp::Instance* instance = client_->GetPluginInstance(); + if (instance) +@@ -1176,7 +1176,7 @@ pp::Buffer_Dev PDFiumEngine::PrintPagesAsRasterPdf( + + KillFormFocus(); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + g_last_instance_id = client_->GetPluginInstance()->pp_instance(); + #endif + +@@ -2973,7 +2973,7 @@ bool PDFiumEngine::ContinuePaint(int progressive_index + DCHECK(image_data); + + last_progressive_start_time_ = base::Time::Now(); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + g_last_instance_id = client_->GetPluginInstance()->pp_instance(); + #endif + +@@ -3448,7 +3448,7 @@ void PDFiumEngine::SetCurrentPage(int index) { + FORM_DoPageAAction(old_page, form(), FPDFPAGE_AACTION_CLOSE); + } + most_visible_page_ = index; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + g_last_instance_id = client_->GetPluginInstance()->pp_instance(); + #endif + if (most_visible_page_ != -1 && called_do_document_action_) { diff --git a/devel/electron5/files/patch-ppapi_proxy_file__io__resource.cc b/devel/electron5/files/patch-ppapi_proxy_file__io__resource.cc new file mode 100644 index 000000000000..c7239be8258d --- /dev/null +++ b/devel/electron5/files/patch-ppapi_proxy_file__io__resource.cc @@ -0,0 +1,48 @@ +--- ppapi/proxy/file_io_resource.cc.orig 2019-04-08 08:33:02 UTC ++++ ppapi/proxy/file_io_resource.cc +@@ -285,17 +285,19 @@ int32_t FileIOResource::Write(int64_t offset, + + if (check_quota_) { + int64_t increase = 0; +- uint64_t max_offset = 0; ++ uint64_t _max_offset = 0; ++ // (rene) avoid name collission with /usr/include/vm/vm_map.h on FreeBSD ++ // which also defines max_offset + bool append = (open_flags_ & PP_FILEOPENFLAG_APPEND) != 0; + if (append) { + increase = bytes_to_write; + } else { +- uint64_t max_offset = offset + bytes_to_write; +- if (max_offset > ++ uint64_t _max_offset = offset + bytes_to_write; ++ if (_max_offset > + static_cast<uint64_t>(std::numeric_limits<int64_t>::max())) { + return PP_ERROR_FAILED; // amount calculation would overflow. + } +- increase = static_cast<int64_t>(max_offset) - max_written_offset_; ++ increase = static_cast<int64_t>(_max_offset) - max_written_offset_; + } + + if (increase > 0) { +@@ -319,7 +321,7 @@ int32_t FileIOResource::Write(int64_t offset, + if (append) + append_mode_write_amount_ += bytes_to_write; + else +- max_written_offset_ = max_offset; ++ max_written_offset_ = _max_offset; + } + } + return WriteValidated(offset, buffer, bytes_to_write, callback); +@@ -597,9 +599,9 @@ void FileIOResource::OnRequestWriteQuotaComplete( + } else { + DCHECK_LE(offset + bytes_to_write - max_written_offset_, granted); + +- int64_t max_offset = offset + bytes_to_write; +- if (max_written_offset_ < max_offset) +- max_written_offset_ = max_offset; ++ int64_t _max_offset = offset + bytes_to_write; ++ if (max_written_offset_ < _max_offset) ++ max_written_offset_ = _max_offset; + } + + if (callback->is_blocking()) { diff --git a/devel/electron5/files/patch-printing_backend_print__backend__cups.h b/devel/electron5/files/patch-printing_backend_print__backend__cups.h new file mode 100644 index 000000000000..a4032c726618 --- /dev/null +++ b/devel/electron5/files/patch-printing_backend_print__backend__cups.h @@ -0,0 +1,11 @@ +--- printing/backend/print_backend_cups.h.orig 2019-04-08 08:18:26 UTC ++++ printing/backend/print_backend_cups.h +@@ -5,6 +5,8 @@ + #ifndef PRINTING_BACKEND_PRINT_BACKEND_CUPS_H_ + #define PRINTING_BACKEND_PRINT_BACKEND_CUPS_H_ + ++#include <cups/ppd.h> ++ + #include <string> + + #include "base/files/file_util.h" diff --git a/devel/electron5/files/patch-printing_cups__config__helper.py b/devel/electron5/files/patch-printing_cups__config__helper.py new file mode 100644 index 000000000000..352b4c1df48d --- /dev/null +++ b/devel/electron5/files/patch-printing_cups__config__helper.py @@ -0,0 +1,11 @@ +--- printing/cups_config_helper.py.orig 2019-04-08 08:18:26 UTC ++++ printing/cups_config_helper.py +@@ -65,7 +65,7 @@ def main(): + mode = sys.argv[1] + if len(sys.argv) > 2 and sys.argv[2]: + sysroot = sys.argv[2] +- cups_config = os.path.join(sysroot, 'usr', 'bin', 'cups-config') ++ cups_config = os.path.join(sysroot, 'bin', 'cups-config') + if not os.path.exists(cups_config): + print 'cups-config not found: %s' % cups_config + return 1 diff --git a/devel/electron5/files/patch-remoting_base_chromoting__event.cc b/devel/electron5/files/patch-remoting_base_chromoting__event.cc new file mode 100644 index 000000000000..d51901efb459 --- /dev/null +++ b/devel/electron5/files/patch-remoting_base_chromoting__event.cc @@ -0,0 +1,11 @@ +--- remoting/base/chromoting_event.cc.orig 2019-04-08 08:18:26 UTC ++++ remoting/base/chromoting_event.cc +@@ -189,7 +189,7 @@ void ChromotingEvent::AddSystemInfo() { + SetString(kCpuKey, base::SysInfo::OperatingSystemArchitecture()); + SetString(kOsVersionKey, GetOperatingSystemVersionString()); + SetString(kWebAppVersionKey, STRINGIZE(VERSION)); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + Os os = Os::CHROMOTING_LINUX; + #elif defined(OS_CHROMEOS) + Os os = Os::CHROMOTING_CHROMEOS; diff --git a/devel/electron5/files/patch-remoting_client_display_sys__opengl.h b/devel/electron5/files/patch-remoting_client_display_sys__opengl.h new file mode 100644 index 000000000000..bd53b213ca81 --- /dev/null +++ b/devel/electron5/files/patch-remoting_client_display_sys__opengl.h @@ -0,0 +1,11 @@ +--- remoting/client/display/sys_opengl.h.orig 2019-04-08 08:18:26 UTC ++++ remoting/client/display/sys_opengl.h +@@ -9,7 +9,7 @@ + + #if defined(OS_IOS) + #include <OpenGLES/ES3/gl.h> +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #define GL_GLEXT_PROTOTYPES + #include <GL/gl.h> + #include <GL/glext.h> diff --git a/devel/electron5/files/patch-remoting_host_evaluate__capability.cc b/devel/electron5/files/patch-remoting_host_evaluate__capability.cc new file mode 100644 index 000000000000..6878d19fb98e --- /dev/null +++ b/devel/electron5/files/patch-remoting_host_evaluate__capability.cc @@ -0,0 +1,11 @@ +--- remoting/host/evaluate_capability.cc.orig 2019-04-08 08:18:26 UTC ++++ remoting/host/evaluate_capability.cc +@@ -50,7 +50,7 @@ base::FilePath BuildHostBinaryPath() { + } + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + if (path.BaseName().value() == + FILE_PATH_LITERAL("chrome-remote-desktop-host")) { + return path; diff --git a/devel/electron5/files/patch-remoting_host_host__attributes.cc b/devel/electron5/files/patch-remoting_host_host__attributes.cc new file mode 100644 index 000000000000..edcdae7daafd --- /dev/null +++ b/devel/electron5/files/patch-remoting_host_host__attributes.cc @@ -0,0 +1,11 @@ +--- remoting/host/host_attributes.cc.orig 2019-04-08 08:18:26 UTC ++++ remoting/host/host_attributes.cc +@@ -123,7 +123,7 @@ std::string GetHostAttributes() { + media::InitializeMediaFoundation()) { + result.push_back("HWEncoder"); + } +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + result.push_back("HWEncoder"); + #endif + diff --git a/devel/electron5/files/patch-remoting_host_host__details.cc b/devel/electron5/files/patch-remoting_host_host__details.cc new file mode 100644 index 000000000000..3341edbfbcb4 --- /dev/null +++ b/devel/electron5/files/patch-remoting_host_host__details.cc @@ -0,0 +1,11 @@ +--- remoting/host/host_details.cc.orig 2019-04-08 08:18:26 UTC ++++ remoting/host/host_details.cc +@@ -24,7 +24,7 @@ std::string GetHostOperatingSystemName() { + return "Mac"; + #elif defined(OS_CHROMEOS) + return "ChromeOS"; +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + return "Linux"; + #elif defined(OS_ANDROID) + return "Android"; diff --git a/devel/electron5/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc b/devel/electron5/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc new file mode 100644 index 000000000000..954f9727f346 --- /dev/null +++ b/devel/electron5/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc @@ -0,0 +1,35 @@ +--- remoting/host/it2me/it2me_native_messaging_host_main.cc.orig 2019-04-08 08:18:26 UTC ++++ remoting/host/it2me/it2me_native_messaging_host_main.cc +@@ -27,12 +27,12 @@ + #include "remoting/host/resources.h" + #include "remoting/host/usage_stats_consent.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <gtk/gtk.h> + + #include "base/linux_util.h" + #include "ui/gfx/x/x11.h" +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + #if defined(OS_MACOSX) + #include "base/mac/scoped_nsautorelease_pool.h" +@@ -106,7 +106,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv + + remoting::LoadResources(""); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Required in order for us to run multiple X11 threads. + XInitThreads(); + +@@ -122,7 +122,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv + // Need to prime the host OS version value for linux to prevent IO on the + // network thread. base::GetLinuxDistro() caches the result. + base::GetLinuxDistro(); +-#endif // OS_LINUX ++#endif // OS_LINUX || OS_BSD + + base::File read_file; + base::File write_file; diff --git a/devel/electron5/files/patch-remoting_host_me2me__desktop__environment.cc b/devel/electron5/files/patch-remoting_host_me2me__desktop__environment.cc new file mode 100644 index 000000000000..4ca0f3a738f7 --- /dev/null +++ b/devel/electron5/files/patch-remoting_host_me2me__desktop__environment.cc @@ -0,0 +1,11 @@ +--- remoting/host/me2me_desktop_environment.cc.orig 2019-04-08 08:33:02 UTC ++++ remoting/host/me2me_desktop_environment.cc +@@ -129,7 +129,7 @@ bool Me2MeDesktopEnvironment::InitializeSecurity( + + // Otherwise, if the session is shared with the local user start monitoring + // the local input and create the in-session UI. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + bool want_user_interface = false; + #elif defined(OS_MACOSX) + // Don't try to display any UI on top of the system's login screen as this diff --git a/devel/electron5/files/patch-remoting_host_remoting__me2me__host.cc b/devel/electron5/files/patch-remoting_host_remoting__me2me__host.cc new file mode 100644 index 000000000000..5930a149e56c --- /dev/null +++ b/devel/electron5/files/patch-remoting_host_remoting__me2me__host.cc @@ -0,0 +1,108 @@ +--- remoting/host/remoting_me2me_host.cc.orig 2019-04-08 08:33:02 UTC ++++ remoting/host/remoting_me2me_host.cc +@@ -117,13 +117,13 @@ + #include "remoting/host/mac/permission_utils.h" + #endif // defined(OS_MACOSX) + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <gtk/gtk.h> + #include "base/linux_util.h" + #include "remoting/host/audio_capturer_linux.h" + #include "remoting/host/linux/certificate_watcher.h" + #include "ui/gfx/x/x11.h" +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + #if defined(OS_WIN) + #include <commctrl.h> +@@ -158,11 +158,11 @@ const char kApplicationName[] = "chromoting"; + const char kStdinConfigPath[] = "-"; + #endif // !defined(REMOTING_MULTI_PROCESS) + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // The command line switch used to pass name of the pipe to capture audio on + // linux. + const char kAudioPipeSwitchName[] = "audio-pipe-name"; +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + #if defined(OS_POSIX) + // The command line switch used to pass name of the unix domain socket used to +@@ -353,7 +353,7 @@ class HostProcess : public ConfigWatcher::Delegate, + + std::unique_ptr<ChromotingHostContext> context_; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Watch for certificate changes and kill the host when changes occur + std::unique_ptr<CertificateWatcher> cert_watcher_; + #endif +@@ -567,10 +567,10 @@ bool HostProcess::InitWithCommandLine(const base::Comm + enable_window_capture_ = cmd_line->HasSwitch(kWindowIdSwitchName); + if (enable_window_capture_) { + +-#if defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + LOG(WARNING) << "Window capturing is not fully supported on Linux or " + "Windows."; +-#endif // defined(OS_LINUX) || defined(OS_WIN) ++#endif // defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + + // uint32_t is large enough to hold window IDs on all platforms. + uint32_t window_id; +@@ -763,7 +763,7 @@ void HostProcess::CreateAuthenticatorFactory() { + DCHECK(third_party_auth_config_.token_url.is_valid()); + DCHECK(third_party_auth_config_.token_validation_url.is_valid()); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + if (!cert_watcher_) { + cert_watcher_.reset(new CertificateWatcher( + base::Bind(&HostProcess::ShutdownHost, this, kSuccessExitCode), +@@ -849,7 +849,7 @@ void HostProcess::StartOnUiThread() { + base::Bind(&HostProcess::OnPolicyUpdate, base::Unretained(this)), + base::Bind(&HostProcess::OnPolicyError, base::Unretained(this))); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // If an audio pipe is specific on the command-line then initialize + // AudioCapturerLinux to capture from it. + base::FilePath audio_pipe_name = base::CommandLine::ForCurrentProcess()-> +@@ -858,7 +858,7 @@ void HostProcess::StartOnUiThread() { + remoting::AudioCapturerLinux::InitializePipeReader( + context_->audio_task_runner(), audio_pipe_name); + } +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + #if defined(OS_POSIX) + base::FilePath security_key_socket_name = +@@ -916,7 +916,7 @@ void HostProcess::ShutdownOnUiThread() { + // It is now safe for the HostProcess to be deleted. + self_ = nullptr; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Cause the global AudioPipeReader to be freed, otherwise the audio + // thread will remain in-use and prevent the process from exiting. + // TODO(wez): DesktopEnvironmentFactory should own the pipe reader. +@@ -1547,7 +1547,7 @@ void HostProcess::StartHost() { + host_->AddExtension(std::make_unique<TestEchoExtension>()); + + // TODO(simonmorris): Get the maximum session duration from a policy. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + host_->SetMaximumSessionDuration(base::TimeDelta::FromHours(20)); + #endif + +@@ -1719,7 +1719,7 @@ void HostProcess::OnCrash(const std::string& function_ + int HostProcessMain() { + HOST_LOG << "Starting host process: version " << STRINGIZE(VERSION); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + if (!base::CommandLine::ForCurrentProcess()->HasSwitch( + kReportOfflineReasonSwitchName)) { + // Required in order for us to run multiple X11 threads. diff --git a/devel/electron5/files/patch-remoting_webapp_base_js_platform.js b/devel/electron5/files/patch-remoting_webapp_base_js_platform.js new file mode 100644 index 000000000000..7547e48f4090 --- /dev/null +++ b/devel/electron5/files/patch-remoting_webapp_base_js_platform.js @@ -0,0 +1,17 @@ +--- remoting/webapp/base/js/platform.js.orig 2019-04-08 08:18:26 UTC ++++ remoting/webapp/base/js/platform.js +@@ -107,6 +107,14 @@ remoting.getSystemInfo = function() { + return result; + } + ++ match = new RegExp('FreeBSD ([a-zA-Z0-9_]*)').exec(userAgent); ++ if (match && (match.length >= 2)) { ++ result.osName = remoting.Os.LINUX; ++ result.osVersion = ''; ++ result.cpu = match[1]; ++ return result; ++ } ++ + match = new RegExp('([a-zA-Z]*) Mac OS X ([0-9_]*)').exec(userAgent); + if (match && (match.length >= 3)) { + result.osName = remoting.Os.MAC; diff --git a/devel/electron5/files/patch-sandbox_features.gni b/devel/electron5/files/patch-sandbox_features.gni new file mode 100644 index 000000000000..98463e925bc5 --- /dev/null +++ b/devel/electron5/files/patch-sandbox_features.gni @@ -0,0 +1,10 @@ +--- sandbox/features.gni.orig 2019-04-08 08:18:26 UTC ++++ sandbox/features.gni +@@ -12,6 +12,6 @@ use_seccomp_bpf = + (is_linux || is_android) && + (current_cpu == "x86" || current_cpu == "x64" || current_cpu == "arm" || + current_cpu == "arm64" || current_cpu == "mipsel" || +- current_cpu == "mips64el") ++ current_cpu == "mips64el") && !is_bsd + + use_seccomp_bpf = use_seccomp_bpf || is_nacl_nonsfi diff --git a/devel/electron5/files/patch-sandbox_linux_BUILD.gn b/devel/electron5/files/patch-sandbox_linux_BUILD.gn new file mode 100644 index 000000000000..689e8c93fc41 --- /dev/null +++ b/devel/electron5/files/patch-sandbox_linux_BUILD.gn @@ -0,0 +1,47 @@ +--- sandbox/linux/BUILD.gn.orig 2019-04-08 08:18:26 UTC ++++ sandbox/linux/BUILD.gn +@@ -12,12 +12,12 @@ if (is_android) { + } + + declare_args() { +- compile_suid_client = is_linux ++ compile_suid_client = is_linux && !is_bsd + +- compile_credentials = is_linux ++ compile_credentials = is_linux && !is_bsd + + # On Android, use plain GTest. +- use_base_test_suite = is_linux ++ use_base_test_suite = is_linux && !is_bsd + } + + if (is_nacl_nonsfi) { +@@ -379,7 +379,7 @@ component("sandbox_services") { + public_deps += [ ":sandbox_services_headers" ] + } + +- if (is_nacl_nonsfi) { ++ if (is_nacl_nonsfi || is_bsd) { + cflags = [ "-fgnu-inline-asm" ] + + sources -= [ +@@ -387,6 +387,8 @@ component("sandbox_services") { + "services/init_process_reaper.h", + "services/scoped_process.cc", + "services/scoped_process.h", ++ "services/syscall_wrappers.cc", ++ "services/syscall_wrappers.h", + "services/yama.cc", + "services/yama.h", + "syscall_broker/broker_channel.cc", +@@ -405,6 +407,10 @@ component("sandbox_services") { + "syscall_broker/broker_process.h", + "syscall_broker/broker_simple_message.cc", + "syscall_broker/broker_simple_message.h", ++ ] ++ sources += [ ++ "services/libc_interceptor.cc", ++ "services/libc_interceptor.h", + ] + } else if (!is_android) { + sources += [ diff --git a/devel/electron5/files/patch-sandbox_linux_services_init__process__reaper.cc b/devel/electron5/files/patch-sandbox_linux_services_init__process__reaper.cc new file mode 100644 index 000000000000..ea79d823e6cc --- /dev/null +++ b/devel/electron5/files/patch-sandbox_linux_services_init__process__reaper.cc @@ -0,0 +1,15 @@ +--- sandbox/linux/services/init_process_reaper.cc.orig 2019-04-08 08:18:26 UTC ++++ sandbox/linux/services/init_process_reaper.cc +@@ -1,6 +1,7 @@ + // Copyright 2013 The Chromium Authors. All rights reserved. + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. ++#if 0 + + #include "sandbox/linux/services/init_process_reaper.h" + +@@ -100,3 +101,4 @@ bool CreateInitProcessReaper(base::OnceClosure post_fo + } + + } // namespace sandbox. ++#endif diff --git a/devel/electron5/files/patch-sandbox_linux_services_libc__interceptor.cc b/devel/electron5/files/patch-sandbox_linux_services_libc__interceptor.cc new file mode 100644 index 000000000000..f4182f3e0eb0 --- /dev/null +++ b/devel/electron5/files/patch-sandbox_linux_services_libc__interceptor.cc @@ -0,0 +1,21 @@ +--- sandbox/linux/services/libc_interceptor.cc.orig 2019-04-08 08:18:26 UTC ++++ sandbox/linux/services/libc_interceptor.cc +@@ -11,7 +11,9 @@ + #include <stddef.h> + #include <stdint.h> + #include <string.h> ++#if !defined(OS_BSD) + #include <sys/prctl.h> ++#endif + #include <sys/socket.h> + #include <sys/types.h> + #include <time.h> +@@ -94,7 +96,7 @@ bool ReadTimeStruct(base::PickleIterator* iter, + } else { + base::AutoLock lock(g_timezones_lock.Get()); + auto ret_pair = g_timezones.Get().insert(timezone); +- output->tm_zone = ret_pair.first->c_str(); ++ output->tm_zone = (char *)ret_pair.first->c_str(); + } + + return true; diff --git a/devel/electron5/files/patch-services_audio_BUILD.gn b/devel/electron5/files/patch-services_audio_BUILD.gn new file mode 100644 index 000000000000..9a10a6778acc --- /dev/null +++ b/devel/electron5/files/patch-services_audio_BUILD.gn @@ -0,0 +1,11 @@ +--- services/audio/BUILD.gn.orig 2019-04-08 08:33:02 UTC ++++ services/audio/BUILD.gn +@@ -106,7 +106,7 @@ source_set("lib") { + "//services/service_manager/sandbox:sandbox", + ] + +- if (is_linux) { ++ if ((is_linux) && (!is_bsd)) { + sources += [ + "audio_sandbox_hook_linux.cc", + "audio_sandbox_hook_linux.h", diff --git a/devel/electron5/files/patch-services_catalog_store.cc b/devel/electron5/files/patch-services_catalog_store.cc new file mode 100644 index 000000000000..dee83ba8a8f0 --- /dev/null +++ b/devel/electron5/files/patch-services_catalog_store.cc @@ -0,0 +1,10 @@ +--- services/catalog/store.cc.orig 2019-04-08 08:33:02 UTC ++++ services/catalog/store.cc +@@ -38,5 +38,7 @@ const char Store::kRequiredFilesKey_PlatformValue_MacO + const char Store::kRequiredFilesKey_PlatformValue_Android[] = "android"; + // static + const char Store::kRequiredFilesKey_PlatformValue_Fuchsia[] = "fuchsia"; ++// static ++const char Store::kRequiredFilesKey_PlatformValue_FreeBSD[] = "freebsd"; + + } // namespace catalog diff --git a/devel/electron5/files/patch-services_catalog_store.h b/devel/electron5/files/patch-services_catalog_store.h new file mode 100644 index 000000000000..bce9be21d3cd --- /dev/null +++ b/devel/electron5/files/patch-services_catalog_store.h @@ -0,0 +1,10 @@ +--- services/catalog/store.h.orig 2019-04-08 08:33:02 UTC ++++ services/catalog/store.h +@@ -38,6 +38,7 @@ class Store { + static const char kRequiredFilesKey_PlatformValue_MacOSX[]; + static const char kRequiredFilesKey_PlatformValue_Android[]; + static const char kRequiredFilesKey_PlatformValue_Fuchsia[]; ++ static const char kRequiredFilesKey_PlatformValue_FreeBSD[]; + }; + + } // namespace catalog diff --git a/devel/electron5/files/patch-services_content_simple__browser_simple__browser__service.h b/devel/electron5/files/patch-services_content_simple__browser_simple__browser__service.h new file mode 100644 index 000000000000..51f69d1e57a1 --- /dev/null +++ b/devel/electron5/files/patch-services_content_simple__browser_simple__browser__service.h @@ -0,0 +1,20 @@ +--- services/content/simple_browser/simple_browser_service.h.orig 2019-04-08 08:18:26 UTC ++++ services/content/simple_browser/simple_browser_service.h +@@ -16,7 +16,7 @@ + #include "services/service_manager/public/cpp/service_binding.h" + #include "services/service_manager/public/mojom/service.mojom.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "components/services/font/public/cpp/font_loader.h" // nogncheck + #endif + +@@ -50,7 +50,7 @@ class COMPONENT_EXPORT(SIMPLE_BROWSER) SimpleBrowserSe + // service_manager::Service: + void OnStart() override; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + sk_sp<font_service::FontLoader> font_loader_; + #endif + diff --git a/devel/electron5/files/patch-services_device_device__service.h b/devel/electron5/files/patch-services_device_device__service.h new file mode 100644 index 000000000000..1c8f733c0f2c --- /dev/null +++ b/devel/electron5/files/patch-services_device_device__service.h @@ -0,0 +1,11 @@ +--- services/device/device_service.h.orig 2019-04-08 08:33:02 UTC ++++ services/device/device_service.h +@@ -198,7 +198,7 @@ class DeviceService : public service_manager::Service + #endif + + #if (defined(OS_LINUX) && defined(USE_UDEV)) || defined(OS_WIN) || \ +- defined(OS_MACOSX) ++ defined(OS_MACOSX) || defined(OS_BSD) + // Requests for the SerialPortManager interface must be bound to + // |serial_port_manager_| on |serial_port_manager_task_runner_| and it will + // be destroyed on that sequence. diff --git a/devel/electron5/files/patch-services_device_geolocation_location__arbitrator.cc b/devel/electron5/files/patch-services_device_geolocation_location__arbitrator.cc new file mode 100644 index 000000000000..139eb9b94180 --- /dev/null +++ b/devel/electron5/files/patch-services_device_geolocation_location__arbitrator.cc @@ -0,0 +1,11 @@ +--- services/device/geolocation/location_arbitrator.cc.orig 2019-04-08 08:33:02 UTC ++++ services/device/geolocation/location_arbitrator.cc +@@ -164,7 +164,7 @@ LocationArbitrator::NewNetworkLocationProvider( + std::unique_ptr<LocationProvider> + LocationArbitrator::NewSystemLocationProvider() { + #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ +- defined(OS_FUCHSIA) ++ defined(OS_FUCHSIA) || defined(OS_BSD) + return nullptr; + #else + return device::NewSystemLocationProvider(); diff --git a/devel/electron5/files/patch-services_device_hid_BUILD.gn b/devel/electron5/files/patch-services_device_hid_BUILD.gn new file mode 100644 index 000000000000..68b3d4ed675a --- /dev/null +++ b/devel/electron5/files/patch-services_device_hid_BUILD.gn @@ -0,0 +1,22 @@ +--- services/device/hid/BUILD.gn.orig 2019-04-08 08:33:02 UTC ++++ services/device/hid/BUILD.gn +@@ -51,6 +51,19 @@ source_set("hid") { + deps += [ "//device/udev_linux" ] + } + ++ if (is_bsd) { ++ sources -= [ ++ "hid_connection_linux.cc", ++ "hid_connection_linux.h", ++ ] ++ sources += [ ++ "hid_connection_freebsd.cc", ++ "hid_connection_freebsd.h", ++ "hid_service_freebsd.cc", ++ "hid_service_freebsd.h", ++ ] ++ } ++ + if (is_chromeos) { + deps += [ "//chromeos/dbus" ] + } diff --git a/devel/electron5/files/patch-services_device_hid_hid__connection__freebsd.cc b/devel/electron5/files/patch-services_device_hid_hid__connection__freebsd.cc new file mode 100644 index 000000000000..053b6e4fa236 --- /dev/null +++ b/devel/electron5/files/patch-services_device_hid_hid__connection__freebsd.cc @@ -0,0 +1,243 @@ +--- services/device/hid/hid_connection_freebsd.cc.orig 2019-04-09 12:48:48 UTC ++++ services/device/hid/hid_connection_freebsd.cc +@@ -0,0 +1,240 @@ ++// Copyright (c) 2014 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "services/device/hid/hid_connection_freebsd.h" ++ ++#include <dev/usb/usbhid.h> ++#include <dev/usb/usb_ioctl.h> ++ ++#include "base/bind.h" ++#include "base/files/file_descriptor_watcher_posix.h" ++#include "base/location.h" ++#include "base/numerics/safe_math.h" ++#include "base/posix/eintr_wrapper.h" ++#include "base/single_thread_task_runner.h" ++#include "base/strings/stringprintf.h" ++#include "base/task/post_task.h" ++#include "base/threading/scoped_blocking_call.h" ++#include "base/threading/thread_restrictions.h" ++#include "base/threading/thread_task_runner_handle.h" ++#include "components/device_event_log/device_event_log.h" ++#include "services/device/hid/hid_service.h" ++ ++namespace device { ++ ++class HidConnectionFreeBSD::BlockingTaskHelper { ++ public: ++ BlockingTaskHelper(base::ScopedFD fd, ++ scoped_refptr<HidDeviceInfo> device_info, ++ base::WeakPtr<HidConnectionFreeBSD> connection) ++ : fd_(std::move(fd)), ++ connection_(connection), ++ origin_task_runner_(base::ThreadTaskRunnerHandle::Get()) { ++ DETACH_FROM_SEQUENCE(sequence_checker_); ++ // Report buffers must always have room for the report ID. ++ report_buffer_size_ = device_info->max_input_report_size() + 1; ++ has_report_id_ = device_info->has_report_id(); ++ } ++ ++ ~BlockingTaskHelper() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); } ++ ++ // Starts the FileDescriptorWatcher that reads input events from the device. ++ // Must be called on a thread that has a base::MessageLoopForIO. ++ void Start() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ base::internal::AssertBlockingAllowed(); ++ ++ file_watcher_ = base::FileDescriptorWatcher::WatchReadable( ++ fd_.get(), base::Bind(&BlockingTaskHelper::OnFileCanReadWithoutBlocking, ++ base::Unretained(this))); ++ } ++ ++ void Write(scoped_refptr<base::RefCountedBytes> buffer, ++ WriteCallback callback) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ base::ScopedBlockingCall scoped_blocking_call( ++ base::BlockingType::MAY_BLOCK); ++ ++ auto data = buffer->front(); ++ size_t size = buffer->size(); ++ // if report id is 0, it shouldn't be included ++ if (data[0] == 0) { ++ data++; ++ size--; ++ } ++ ++ ssize_t result = HANDLE_EINTR(write(fd_.get(), data, size)); ++ if (result < 0) { ++ HID_PLOG(EVENT) << "Write failed"; ++ origin_task_runner_->PostTask(FROM_HERE, base::BindOnce(std::move(callback), false)); ++ } else { ++ if (static_cast<size_t>(result) != size) ++ HID_LOG(EVENT) << "Incomplete HID write: " << result << " != " << size; ++ origin_task_runner_->PostTask(FROM_HERE, base::BindOnce(std::move(callback), true)); ++ } ++ } ++ ++ void GetFeatureReport(uint8_t report_id, ++ scoped_refptr<base::RefCountedBytes> buffer, ++ ReadCallback callback) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ base::ScopedBlockingCall scoped_blocking_call( ++ base::BlockingType::MAY_BLOCK); ++ struct usb_gen_descriptor ugd; ++ ugd.ugd_report_type = UHID_FEATURE_REPORT; ++ ugd.ugd_data = buffer->front(); ++ ugd.ugd_maxlen = buffer->size(); ++ int result = HANDLE_EINTR( ++ ioctl(fd_.get(), USB_GET_REPORT, &ugd)); ++ if (result < 0) { ++ HID_PLOG(EVENT) << "Failed to get feature report"; ++ origin_task_runner_->PostTask(FROM_HERE, ++ base::BindOnce(std::move(callback), false, nullptr, 0)); ++ } else if (result == 0) { ++ HID_LOG(EVENT) << "Get feature result too short."; ++ origin_task_runner_->PostTask(FROM_HERE, ++ base::BindOnce(std::move(callback), false, nullptr, 0)); ++ } else { ++ origin_task_runner_->PostTask(FROM_HERE, ++ base::BindOnce(std::move(callback), true, buffer, result)); ++ } ++ } ++ ++ void SendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer, ++ WriteCallback callback) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ struct usb_gen_descriptor ugd; ++ ugd.ugd_report_type = UHID_FEATURE_REPORT; ++ ugd.ugd_data = buffer->front(); ++ ugd.ugd_maxlen = buffer->size(); ++ // FreeBSD does not require report id if it's not used ++ if (buffer->front()[0] == 0) { ++ ugd.ugd_data = buffer->front() + 1; ++ ugd.ugd_maxlen = buffer->size() - 1; ++ } else { ++ ugd.ugd_data = buffer->front(); ++ ugd.ugd_maxlen = buffer->size(); ++ } ++ int result = HANDLE_EINTR( ++ ioctl(fd_.get(), USB_SET_REPORT, &ugd)); ++ if (result < 0) { ++ HID_PLOG(EVENT) << "Failed to send feature report"; ++ origin_task_runner_->PostTask(FROM_HERE, ++ base::BindOnce(std::move(callback), false)); ++ } else { ++ origin_task_runner_->PostTask(FROM_HERE, ++ base::BindOnce(std::move(callback), true)); ++ } ++ } ++ ++ private: ++ void OnFileCanReadWithoutBlocking() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ ++ scoped_refptr<base::RefCountedBytes> buffer(new base::RefCountedBytes(report_buffer_size_)); ++ unsigned char* data = buffer->front(); ++ size_t length = report_buffer_size_; ++ if (!has_report_id_) { ++ // FreeBSD will not prefix the buffer with a report ID if report IDs are not ++ // used by the device. Prefix the buffer with 0. ++ *data++ = 0; ++ length--; ++ } ++ ++ ssize_t bytes_read = HANDLE_EINTR(read(fd_.get(), data, length)); ++ if (bytes_read < 0) { ++ if (errno != EAGAIN) { ++ HID_PLOG(EVENT) << "Read failed"; ++ // This assumes that the error is unrecoverable and disables reading ++ // from the device until it has been re-opened. ++ // TODO(reillyg): Investigate starting and stopping the file descriptor ++ // watcher in response to pending read requests so that per-request ++ // errors can be returned to the client. ++ file_watcher_.reset(); ++ } ++ return; ++ } ++ if (!has_report_id_) { ++ // Behave as if the byte prefixed above as the the report ID was read. ++ bytes_read++; ++ } ++ ++ origin_task_runner_->PostTask( ++ FROM_HERE, base::BindOnce(&HidConnectionFreeBSD::ProcessInputReport, ++ connection_, buffer, bytes_read)); ++ } ++ ++ SEQUENCE_CHECKER(sequence_checker_); ++ base::ScopedFD fd_; ++ size_t report_buffer_size_; ++ bool has_report_id_; ++ base::WeakPtr<HidConnectionFreeBSD> connection_; ++ const scoped_refptr<base::SequencedTaskRunner> origin_task_runner_; ++ std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_; ++ ++ DISALLOW_COPY_AND_ASSIGN(BlockingTaskHelper); ++}; ++ ++HidConnectionFreeBSD::HidConnectionFreeBSD( ++ scoped_refptr<HidDeviceInfo> device_info, ++ base::ScopedFD fd, ++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner) ++ : HidConnection(device_info), ++ blocking_task_runner_(std::move(blocking_task_runner)), ++ weak_factory_(this) { ++ helper_ = std::make_unique<BlockingTaskHelper>(std::move(fd), device_info, ++ weak_factory_.GetWeakPtr()); ++ blocking_task_runner_->PostTask( ++ FROM_HERE, base::BindOnce(&BlockingTaskHelper::Start, ++ base::Unretained(helper_.get()))); ++} ++ ++HidConnectionFreeBSD::~HidConnectionFreeBSD() {} ++ ++void HidConnectionFreeBSD::PlatformClose() { ++ // By closing the device on the blocking task runner 1) the requirement that ++ // base::ScopedFD is destroyed on a thread where I/O is allowed is satisfied ++ // and 2) any tasks posted to this task runner that refer to this file will ++ // complete before it is closed. ++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release()); ++} ++ ++void HidConnectionFreeBSD::PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer, ++ WriteCallback callback) { ++ ++ blocking_task_runner_->PostTask( ++ FROM_HERE, ++ base::BindOnce(&BlockingTaskHelper::Write, base::Unretained(helper_.get()), ++ buffer, std::move(callback))); ++} ++ ++void HidConnectionFreeBSD::PlatformGetFeatureReport(uint8_t report_id, ++ ReadCallback callback) { ++ // The first byte of the destination buffer is the report ID being requested ++ // and is overwritten by the feature report. ++ DCHECK_GT(device_info()->max_feature_report_size(), 0u); ++ scoped_refptr<base::RefCountedBytes> buffer( ++ new base::RefCountedBytes(device_info()->max_feature_report_size() + 1)); ++ if (report_id != 0) ++ buffer->data()[0] = report_id; ++ ++ blocking_task_runner_->PostTask( ++ FROM_HERE, ++ base::BindOnce(&BlockingTaskHelper::GetFeatureReport, ++ base::Unretained(helper_.get()), report_id, ++ buffer, std::move(callback))); ++} ++ ++void HidConnectionFreeBSD::PlatformSendFeatureReport( ++ scoped_refptr<base::RefCountedBytes> buffer, ++ WriteCallback callback) { ++ base::ScopedBlockingCall scoped_blocking_call( ++ base::BlockingType::MAY_BLOCK); ++ blocking_task_runner_->PostTask( ++ FROM_HERE, ++ base::BindOnce(&BlockingTaskHelper::SendFeatureReport, ++ base::Unretained(helper_.get()), buffer, std::move(callback))); ++} ++ ++} // namespace device diff --git a/devel/electron5/files/patch-services_device_hid_hid__connection__freebsd.h b/devel/electron5/files/patch-services_device_hid_hid__connection__freebsd.h new file mode 100644 index 000000000000..00a0324b18c3 --- /dev/null +++ b/devel/electron5/files/patch-services_device_hid_hid__connection__freebsd.h @@ -0,0 +1,71 @@ +--- services/device/hid/hid_connection_freebsd.h.orig 2019-04-09 12:48:48 UTC ++++ services/device/hid/hid_connection_freebsd.h +@@ -0,0 +1,68 @@ ++// Copyright (c) 2014 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef DEVICE_HID_HID_CONNECTION_FREEBSD_H_ ++#define DEVICE_HID_HID_CONNECTION_FREEBSD_H_ ++ ++#include <stddef.h> ++#include <stdint.h> ++ ++#include "base/files/scoped_file.h" ++#include "base/macros.h" ++#include "base/memory/ptr_util.h" ++#include "base/memory/ref_counted_memory.h" ++#include "base/memory/weak_ptr.h" ++#include "base/sequence_checker.h" ++#include "services/device/hid/hid_connection.h" ++ ++namespace base { ++class SequencedTaskRunner; ++} ++ ++namespace net { ++class IOBuffer; ++} ++ ++namespace device { ++ ++class HidConnectionFreeBSD : public HidConnection { ++ public: ++ HidConnectionFreeBSD( ++ scoped_refptr<HidDeviceInfo> device_info, ++ base::ScopedFD fd, ++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner); ++ ++ private: ++ friend class base::RefCountedThreadSafe<HidConnectionFreeBSD>; ++ class BlockingTaskHelper; ++ ++ ~HidConnectionFreeBSD() override; ++ ++ // HidConnection implementation. ++ void PlatformClose() override; ++ void PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer, ++ WriteCallback callback) override; ++ void PlatformGetFeatureReport(uint8_t report_id, ++ ReadCallback callback) override; ++ void PlatformSendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer, ++ WriteCallback callback) override; ++ ++ // |helper_| lives on the sequence to which |blocking_task_runner_| posts ++ // tasks so all calls must be posted there including this object's ++ // destruction. ++ std::unique_ptr<BlockingTaskHelper> helper_; ++ ++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_; ++ const scoped_refptr<base::SequencedTaskRunner> task_runner_; ++ ++ SEQUENCE_CHECKER(sequence_checker_); ++ ++ base::WeakPtrFactory<HidConnectionFreeBSD> weak_factory_; ++ ++ DISALLOW_COPY_AND_ASSIGN(HidConnectionFreeBSD); ++}; ++ ++} // namespace device ++ ++#endif // DEVICE_HID_HID_CONNECTION_FREEBSD_H_ diff --git a/devel/electron5/files/patch-services_device_hid_hid__service.cc b/devel/electron5/files/patch-services_device_hid_hid__service.cc new file mode 100644 index 000000000000..ee529eee0d39 --- /dev/null +++ b/devel/electron5/files/patch-services_device_hid_hid__service.cc @@ -0,0 +1,20 @@ +--- services/device/hid/hid_service.cc.orig 2019-04-08 08:18:26 UTC ++++ services/device/hid/hid_service.cc +@@ -16,6 +16,8 @@ + + #if defined(OS_LINUX) && defined(USE_UDEV) + #include "services/device/hid/hid_service_linux.h" ++#elif defined(OS_BSD) ++#include "services/device/hid/hid_service_freebsd.h" + #elif defined(OS_MACOSX) + #include "services/device/hid/hid_service_mac.h" + #elif defined(OS_WIN) +@@ -36,6 +38,8 @@ constexpr base::TaskTraits HidService::kBlockingTaskTr + std::unique_ptr<HidService> HidService::Create() { + #if defined(OS_LINUX) && defined(USE_UDEV) + return base::WrapUnique(new HidServiceLinux()); ++#elif defined(OS_BSD) ++ return base::WrapUnique(new HidServiceFreeBSD()); + #elif defined(OS_MACOSX) + return base::WrapUnique(new HidServiceMac()); + #elif defined(OS_WIN) diff --git a/devel/electron5/files/patch-services_device_hid_hid__service__freebsd.cc b/devel/electron5/files/patch-services_device_hid_hid__service__freebsd.cc new file mode 100644 index 000000000000..6cc08096cb33 --- /dev/null +++ b/devel/electron5/files/patch-services_device_hid_hid__service__freebsd.cc @@ -0,0 +1,376 @@ +--- services/device/hid/hid_service_freebsd.cc.orig 2019-04-09 12:48:48 UTC ++++ services/device/hid/hid_service_freebsd.cc +@@ -0,0 +1,373 @@ ++// Copyright 2014 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "services/device/hid/hid_service_freebsd.h" ++ ++#include <dev/usb/usb_ioctl.h> ++#include <stdint.h> ++#include <sys/socket.h> ++#include <sys/un.h> ++ ++#include <set> ++#include <string> ++#include <vector> ++ ++#include "base/bind.h" ++#include "base/files/file_descriptor_watcher_posix.h" ++#include "base/files/file_enumerator.h" ++#include "base/location.h" ++#include "base/logging.h" ++#include "base/posix/eintr_wrapper.h" ++#include "base/single_thread_task_runner.h" ++#include "base/stl_util.h" ++#include "base/strings/pattern.h" ++#include "base/strings/stringprintf.h" ++#include "base/strings/sys_string_conversions.h" ++#include "base/strings/string_util.h" ++#include "base/strings/string_split.h" ++#include "base/task/post_task.h" ++#include "base/threading/scoped_blocking_call.h" ++#include "base/threading/thread_task_runner_handle.h" ++#include "components/device_event_log/device_event_log.h" ++#include "services/device/hid/hid_connection_freebsd.h" ++ ++const int kMaxPermissionChecks = 5; ++ ++namespace device { ++ ++struct HidServiceFreeBSD::ConnectParams { ++ ConnectParams(scoped_refptr<HidDeviceInfo> device_info, ++ const ConnectCallback& callback) ++ : device_info(std::move(device_info)), ++ callback(callback), ++ task_runner(base::ThreadTaskRunnerHandle::Get()), ++ blocking_task_runner( ++ base::CreateSequencedTaskRunnerWithTraits(kBlockingTaskTraits)) {} ++ ~ConnectParams() {} ++ ++ scoped_refptr<HidDeviceInfo> device_info; ++ ConnectCallback callback; ++ scoped_refptr<base::SequencedTaskRunner> task_runner; ++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner; ++ base::ScopedFD fd; ++}; ++ ++class HidServiceFreeBSD::BlockingTaskHelper { ++ public: ++ BlockingTaskHelper(base::WeakPtr<HidServiceFreeBSD> service) ++ : service_(std::move(service)), ++ task_runner_(base::ThreadTaskRunnerHandle::Get()) { ++ DETACH_FROM_SEQUENCE(sequence_checker_); ++ ++ timer_.reset(new base::RepeatingTimer()); ++ devd_buffer_ = new net::IOBufferWithSize(1024); ++ } ++ ++ ~BlockingTaskHelper() { ++ } ++ ++ void Start() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ ++ const base::FilePath kDevRoot("/dev"); ++ const std::string kUHIDPattern("/dev/uhid*"); ++ ++ base::FileEnumerator enumerator(kDevRoot, false, base::FileEnumerator::FILES); ++ do { ++ const base::FilePath next_device_path(enumerator.Next()); ++ const std::string next_device = next_device_path.value(); ++ if (next_device.empty()) ++ break; ++ ++ if (base::MatchPattern(next_device, kUHIDPattern)) ++ OnDeviceAdded(next_device.substr(5)); ++ } while (true); ++ ++ SetupDevdMonitor(); ++ ++ task_runner_->PostTask( ++ FROM_HERE, ++ base::Bind(&HidServiceFreeBSD::FirstEnumerationComplete, service_)); ++ } ++ ++ bool HaveReadWritePermissions(std::string device_id) { ++ std::string device_node = "/dev/" + device_id; ++ base::internal::AssertBlockingAllowed(); ++ ++ base::FilePath device_path(device_node); ++ base::File device_file; ++ int flags = ++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE; ++ device_file.Initialize(device_path, flags); ++ if (!device_file.IsValid()) ++ return false; ++ ++ return true; ++ } ++ ++ void OnDeviceAdded(std::string device_id) { ++ base::ScopedBlockingCall scoped_blocking_call( ++ base::BlockingType::MAY_BLOCK); ++ std::string device_node = "/dev/" + device_id; ++ uint16_t vendor_id = 0xffff; ++ uint16_t product_id = 0xffff; ++ std::string product_name = ""; ++ std::string serial_number = ""; ++ ++ std::vector<uint8_t> report_descriptor; ++ ++ base::internal::AssertBlockingAllowed(); ++ ++ base::FilePath device_path(device_node); ++ base::File device_file; ++ int flags = ++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE; ++ device_file.Initialize(device_path, flags); ++ if (!device_file.IsValid()) { ++ HID_LOG(ERROR) << "Failed to open '" << device_node ++ << "': " ++ << base::File::ErrorToString(device_file.error_details()); ++ return; ++ } ++ ++ base::ScopedFD fd; ++ fd.reset(device_file.TakePlatformFile()); ++ ++ struct usb_gen_descriptor ugd; ++ ugd.ugd_data = NULL; ++ ugd.ugd_maxlen = 0xffff; ++ int result = HANDLE_EINTR( ++ ioctl(fd.get(), USB_GET_REPORT_DESC, &ugd)); ++ ++ if (result < 0) { ++ HID_LOG(ERROR) << "Failed to get report descriptor size"; ++ return; ++ } ++ ++ report_descriptor.resize(ugd.ugd_actlen); ++ ++ ugd.ugd_data = report_descriptor.data(); ++ ugd.ugd_maxlen = ugd.ugd_actlen; ++ result = HANDLE_EINTR( ++ ioctl(fd.get(), USB_GET_REPORT_DESC, &ugd)); ++ ++ if (result < 0) { ++ HID_LOG(ERROR) << "Failed to get report descriptor"; ++ return; ++ } ++ ++ scoped_refptr<HidDeviceInfo> device_info(new HidDeviceInfo( ++ device_id, vendor_id, product_id, product_name, serial_number, ++ device::mojom::HidBusType::kHIDBusTypeUSB, ++ report_descriptor, device_node)); ++ ++ task_runner_->PostTask(FROM_HERE, base::Bind(&HidServiceFreeBSD::AddDevice, ++ service_, device_info)); ++ } ++ ++ void OnDeviceRemoved(std::string device_id) { ++ base::ScopedBlockingCall scoped_blocking_call( ++ base::BlockingType::MAY_BLOCK); ++ task_runner_->PostTask( ++ FROM_HERE, base::Bind(&HidServiceFreeBSD::RemoveDevice, service_, ++ device_id)); ++ } ++ ++ private: ++ ++ void CheckPendingPermissionChange() { ++ base::internal::AssertBlockingAllowed(); ++ std::map<std::string, int>::iterator it; ++ for (it = permissions_checks_attempts_.begin(); it != permissions_checks_attempts_.end();) { ++ std::string device_name = it->first; ++ bool keep = true; ++ if (HaveReadWritePermissions(device_name)) { ++ OnDeviceAdded(device_name); ++ keep = false; ++ } ++ else if (it->second-- <= 0) { ++ HID_LOG(ERROR) << "Still don't have write permissions to '" << device_name ++ << "' after " << kMaxPermissionChecks << " attempts"; ++ keep = false; ++ } ++ ++ if (keep) ++ ++it; ++ else ++ permissions_checks_attempts_.erase(it++); ++ } ++ ++ if (permissions_checks_attempts_.empty()) ++ timer_->Stop(); ++ } ++ ++ void SetupDevdMonitor() { ++ base::internal::AssertBlockingAllowed(); ++ ++ int devd_fd = socket(AF_UNIX, SOCK_SEQPACKET, 0); ++ if (devd_fd < 0) ++ return; ++ ++ struct sockaddr_un sa; ++ ++ sa.sun_family = AF_UNIX; ++ strlcpy(sa.sun_path, "/var/run/devd.seqpacket.pipe", sizeof(sa.sun_path)); ++ if (connect(devd_fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) { ++ close(devd_fd); ++ return; ++ } ++ ++ devd_fd_.reset(devd_fd); ++ file_watcher_ = base::FileDescriptorWatcher::WatchReadable( ++ devd_fd_.get(), base::Bind(&BlockingTaskHelper::OnDevdMessageCanBeRead, ++ base::Unretained(this))); ++ } ++ ++ void OnDevdMessageCanBeRead() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ ssize_t bytes_read = HANDLE_EINTR(recv(devd_fd_.get(), devd_buffer_->data(), ++ devd_buffer_->size() - 1, MSG_WAITALL)); ++ if (bytes_read < 0) { ++ if (errno != EAGAIN) { ++ HID_LOG(ERROR) << "Read failed"; ++ file_watcher_.reset(); ++ } ++ return; ++ } ++ ++ devd_buffer_->data()[bytes_read] = 0; ++ char *data = devd_buffer_->data(); ++ // It may take some time for devd to change permissions ++ // on /dev/uhidX node. So do not fail immediately if ++ // open fail. Retry each second for kMaxPermissionChecks ++ // times before giving up entirely ++ if (base::StartsWith(data, "+uhid", base::CompareCase::SENSITIVE)) { ++ std::vector<std::string> parts = base::SplitString( ++ data, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); ++ if (!parts.empty()) { ++ std::string device_name = parts[0].substr(1); // skip '+' ++ if (HaveReadWritePermissions(device_name)) ++ OnDeviceAdded(parts[0].substr(1)); ++ else { ++ // Do not re-add to checks ++ if (permissions_checks_attempts_.find(device_name) == permissions_checks_attempts_.end()) { ++ permissions_checks_attempts_.insert(std::pair<std::string, int>(device_name, kMaxPermissionChecks)); ++ timer_->Start(FROM_HERE, base::TimeDelta::FromSeconds(1), ++ this, &BlockingTaskHelper::CheckPendingPermissionChange); ++ } ++ } ++ } ++ } ++ ++ if (base::StartsWith(data, "-uhid", base::CompareCase::SENSITIVE)) { ++ std::vector<std::string> parts = base::SplitString( ++ data, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); ++ if (!parts.empty()) { ++ std::string device_name = parts[0].substr(1); // skip '-' ++ auto it = permissions_checks_attempts_.find(device_name); ++ if (it != permissions_checks_attempts_.end()) { ++ permissions_checks_attempts_.erase(it); ++ if (permissions_checks_attempts_.empty()) ++ timer_->Stop(); ++ } ++ OnDeviceRemoved(parts[0].substr(1)); ++ } ++ } ++ } ++ ++ SEQUENCE_CHECKER(sequence_checker_); ++ ++ // This weak pointer is only valid when checked on this task runner. ++ base::WeakPtr<HidServiceFreeBSD> service_; ++ scoped_refptr<base::SequencedTaskRunner> task_runner_; ++ std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_; ++ std::unique_ptr<base::RepeatingTimer> timer_; ++ base::ScopedFD devd_fd_; ++ scoped_refptr<net::IOBufferWithSize> devd_buffer_; ++ std::map<std::string, int> permissions_checks_attempts_; ++ ++ DISALLOW_COPY_AND_ASSIGN(BlockingTaskHelper); ++}; ++ ++HidServiceFreeBSD::HidServiceFreeBSD() ++ : task_runner_(base::ThreadTaskRunnerHandle::Get()), ++ blocking_task_runner_( ++ base::CreateSequencedTaskRunnerWithTraits(kBlockingTaskTraits)), ++ weak_factory_(this) { ++ helper_ = std::make_unique<BlockingTaskHelper>(weak_factory_.GetWeakPtr()); ++ blocking_task_runner_->PostTask( ++ FROM_HERE, ++ base::Bind(&BlockingTaskHelper::Start, base::Unretained(helper_.get()))); ++} ++ ++HidServiceFreeBSD::~HidServiceFreeBSD() { ++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release()); ++} ++ ++base::WeakPtr<HidService> HidServiceFreeBSD::GetWeakPtr() { ++ return weak_factory_.GetWeakPtr(); ++} ++ ++// static ++void HidServiceFreeBSD::OpenOnBlockingThread( ++ std::unique_ptr<ConnectParams> params) { ++ base::ScopedBlockingCall scoped_blocking_call(base::BlockingType::MAY_BLOCK); ++ scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner; ++ ++ base::FilePath device_path(params->device_info->device_node()); ++ base::File device_file; ++ int flags = ++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE; ++ device_file.Initialize(device_path, flags); ++ if (!device_file.IsValid()) { ++ HID_LOG(EVENT) << "Failed to open '" << params->device_info->device_node() ++ << "': " ++ << base::File::ErrorToString(device_file.error_details()); ++ task_runner->PostTask(FROM_HERE, base::Bind(params->callback, nullptr)); ++ return; ++ } ++ params->fd.reset(device_file.TakePlatformFile()); ++ FinishOpen(std::move(params)); ++} ++ ++void HidServiceFreeBSD::Connect(const std::string& device_guid, ++ const ConnectCallback& callback) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ ++ const auto& map_entry = devices().find(device_guid); ++ if (map_entry == devices().end()) { ++ base::ThreadTaskRunnerHandle::Get()->PostTask( ++ FROM_HERE, base::Bind(callback, nullptr)); ++ return; ++ } ++ ++ scoped_refptr<HidDeviceInfo> device_info = map_entry->second; ++ ++ auto params = std::make_unique<ConnectParams>(device_info, callback); ++ ++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner = ++ params->blocking_task_runner; ++ blocking_task_runner->PostTask( ++ FROM_HERE, base::Bind(&HidServiceFreeBSD::OpenOnBlockingThread, ++ base::Passed(¶ms))); ++} ++ ++// static ++void HidServiceFreeBSD::FinishOpen(std::unique_ptr<ConnectParams> params) { ++ scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner; ++ ++ task_runner->PostTask( ++ FROM_HERE, ++ base::Bind(&HidServiceFreeBSD::CreateConnection, base::Passed(¶ms))); ++} ++ ++// static ++void HidServiceFreeBSD::CreateConnection(std::unique_ptr<ConnectParams> params) { ++ DCHECK(params->fd.is_valid()); ++ params->callback.Run(base::MakeRefCounted<HidConnectionFreeBSD>( ++ std::move(params->device_info), std::move(params->fd), ++ std::move(params->blocking_task_runner))); ++} ++ ++} // namespace device diff --git a/devel/electron5/files/patch-services_device_hid_hid__service__freebsd.h b/devel/electron5/files/patch-services_device_hid_hid__service__freebsd.h new file mode 100644 index 000000000000..74113a6fec3e --- /dev/null +++ b/devel/electron5/files/patch-services_device_hid_hid__service__freebsd.h @@ -0,0 +1,51 @@ +--- services/device/hid/hid_service_freebsd.h.orig 2019-04-09 12:48:48 UTC ++++ services/device/hid/hid_service_freebsd.h +@@ -0,0 +1,48 @@ ++// Copyright 2014 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef DEVICE_HID_HID_SERVICE_FREEBSD_H_ ++#define DEVICE_HID_HID_SERVICE_FREEBSD_H_ ++ ++#include <string> ++ ++#include "base/macros.h" ++#include "base/memory/ref_counted.h" ++#include "base/memory/weak_ptr.h" ++#include "base/timer/timer.h" ++#include "services/device/hid/hid_service.h" ++#include "net/base/io_buffer.h" ++ ++namespace device { ++ ++class HidServiceFreeBSD : public HidService { ++ public: ++ HidServiceFreeBSD(); ++ ~HidServiceFreeBSD() override; ++ ++ void Connect(const std::string& device_guid, ++ const ConnectCallback& connect) override; ++ base::WeakPtr<HidService> GetWeakPtr() override; ++ ++ private: ++ struct ConnectParams; ++ class BlockingTaskHelper; ++ ++ static void OpenOnBlockingThread(std::unique_ptr<ConnectParams> params); ++ static void FinishOpen(std::unique_ptr<ConnectParams> params); ++ static void CreateConnection(std::unique_ptr<ConnectParams> params); ++ ++ const scoped_refptr<base::SequencedTaskRunner> task_runner_; ++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_; ++ // |helper_| lives on the sequence |blocking_task_runner_| posts to and holds ++ // a weak reference back to the service that owns it. ++ std::unique_ptr<BlockingTaskHelper> helper_; ++ base::WeakPtrFactory<HidServiceFreeBSD> weak_factory_; ++ ++ DISALLOW_COPY_AND_ASSIGN(HidServiceFreeBSD); ++}; ++ ++} // namespace device ++ ++#endif // DEVICE_HID_HID_SERVICE_FREEBSD_H_ diff --git a/devel/electron5/files/patch-services_device_serial_BUILD.gn b/devel/electron5/files/patch-services_device_serial_BUILD.gn new file mode 100644 index 000000000000..5c0d7ebd3a7f --- /dev/null +++ b/devel/electron5/files/patch-services_device_serial_BUILD.gn @@ -0,0 +1,11 @@ +--- services/device/serial/BUILD.gn.orig 2019-04-08 08:33:02 UTC ++++ services/device/serial/BUILD.gn +@@ -4,7 +4,7 @@ + + import("//build/config/features.gni") + +-if (is_win || (is_linux && use_udev) || is_mac) { ++if (is_win || (is_linux && use_udev) || is_mac || is_bsd) { + config("platform_support") { + visibility = [ ":serial" ] + if (is_win) { diff --git a/devel/electron5/files/patch-services_device_serial_serial__io__handler__posix.cc b/devel/electron5/files/patch-services_device_serial_serial__io__handler__posix.cc new file mode 100644 index 000000000000..8c06b77ca7f7 --- /dev/null +++ b/devel/electron5/files/patch-services_device_serial_serial__io__handler__posix.cc @@ -0,0 +1,11 @@ +--- services/device/serial/serial_io_handler_posix.cc.orig 2019-04-08 08:33:02 UTC ++++ services/device/serial/serial_io_handler_posix.cc +@@ -65,7 +65,7 @@ bool BitrateToSpeedConstant(int bitrate, speed_t* spee + BITRATE_TO_SPEED_CASE(9600) + BITRATE_TO_SPEED_CASE(19200) + BITRATE_TO_SPEED_CASE(38400) +-#if !defined(OS_MACOSX) ++#if !defined(OS_MACOSX) && !defined(OS_BSD) + BITRATE_TO_SPEED_CASE(57600) + BITRATE_TO_SPEED_CASE(115200) + BITRATE_TO_SPEED_CASE(230400) diff --git a/devel/electron5/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc b/devel/electron5/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc new file mode 100644 index 000000000000..85f64b960194 --- /dev/null +++ b/devel/electron5/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc @@ -0,0 +1,20 @@ +--- services/device/time_zone_monitor/time_zone_monitor.cc.orig 2019-04-08 08:18:26 UTC ++++ services/device/time_zone_monitor/time_zone_monitor.cc +@@ -29,7 +29,7 @@ void TimeZoneMonitor::Bind(device::mojom::TimeZoneMoni + + void TimeZoneMonitor::NotifyClients() { + DCHECK(thread_checker_.CalledOnValidThread()); +-#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(IS_CHROMECAST)) ++#if defined(OS_CHROMEOS) || ((defined(OS_BSD) || defined(OS_LINUX)) && defined(IS_CHROMECAST)) + // On CrOS (and Chromecast), ICU's default tz is already set to a new zone. No + // need to redetect it with detectHostTimeZone(). + std::unique_ptr<icu::TimeZone> new_zone(icu::TimeZone::createDefault()); +@@ -41,7 +41,7 @@ void TimeZoneMonitor::NotifyClients() { + #else + std::unique_ptr<icu::TimeZone> new_zone(icu::TimeZone::detectHostTimeZone()); + #endif +-#if defined(OS_LINUX) && !defined(IS_CHROMECAST) ++#if (defined(OS_LINUX) && !defined(IS_CHROMECAST)) || defined(OS_BSD) + // We get here multiple times on Linux per a single tz change, but + // want to update the ICU default zone and notify renderer only once. + std::unique_ptr<icu::TimeZone> current_zone(icu::TimeZone::createDefault()); diff --git a/devel/electron5/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc b/devel/electron5/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc new file mode 100644 index 000000000000..e24de2d95c5c --- /dev/null +++ b/devel/electron5/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc @@ -0,0 +1,14 @@ +--- services/device/time_zone_monitor/time_zone_monitor_linux.cc.orig 2019-04-08 08:33:02 UTC ++++ services/device/time_zone_monitor/time_zone_monitor_linux.cc +@@ -104,7 +104,11 @@ class TimeZoneMonitorLinuxImpl + // false positives are harmless, assuming the false positive rate is + // reasonable. + const char* const kFilesToWatch[] = { ++#if defined(OS_BSD) ++ "/etc/localtime", ++#else + "/etc/localtime", "/etc/timezone", "/etc/TZ", ++#endif + }; + for (size_t index = 0; index < base::size(kFilesToWatch); ++index) { + file_path_watchers_.push_back(std::make_unique<base::FilePathWatcher>()); diff --git a/devel/electron5/files/patch-services_network_BUILD.gn b/devel/electron5/files/patch-services_network_BUILD.gn new file mode 100644 index 000000000000..81fdc4b77154 --- /dev/null +++ b/devel/electron5/files/patch-services_network_BUILD.gn @@ -0,0 +1,10 @@ +--- services/network/BUILD.gn.orig 2019-04-08 08:33:02 UTC ++++ services/network/BUILD.gn +@@ -248,7 +248,6 @@ jumbo_component("network_service") { + + if (is_linux) { + deps += [ +- "//sandbox/linux:sandbox_services", + "//services/service_manager/sandbox:sandbox", + ] + } diff --git a/devel/electron5/files/patch-services_network_network__context.cc b/devel/electron5/files/patch-services_network_network__context.cc new file mode 100644 index 000000000000..de3dfcd32138 --- /dev/null +++ b/devel/electron5/files/patch-services_network_network__context.cc @@ -0,0 +1,38 @@ +--- services/network/network_context.cc.orig 2019-04-08 08:33:02 UTC ++++ services/network/network_context.cc +@@ -132,7 +132,7 @@ + #endif // defined(USE_NSS_CERTS) + + #if defined(OS_ANDROID) || defined(OS_FUCHSIA) || \ +- (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) ++ ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) + #include "net/cert/cert_net_fetcher.h" + #include "net/cert_net/cert_net_fetcher_impl.h" + #endif +@@ -610,7 +610,7 @@ NetworkContext::~NetworkContext() { + #endif + + #if defined(OS_ANDROID) || defined(OS_FUCHSIA) || \ +- (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) ++ ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) + net::ShutdownGlobalCertNetFetcher(); + #endif + } +@@ -1700,7 +1700,7 @@ URLRequestContextOwner NetworkContext::ApplyContextPar + + net::CookieCryptoDelegate* crypto_delegate = nullptr; + if (params_->enable_encrypted_cookies) { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST) + DCHECK(network_service_->os_crypt_config_set()) + << "NetworkService::SetCryptConfig must be called before creating a " + "NetworkContext with encrypted cookies."; +@@ -2015,7 +2015,7 @@ URLRequestContextOwner NetworkContext::ApplyContextPar + net::SetURLRequestContextForNSSHttpIO(result.url_request_context.get()); + #endif + #if defined(OS_ANDROID) || defined(OS_FUCHSIA) || \ +- (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) ++ ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) + net::SetGlobalCertNetFetcher( + net::CreateCertNetFetcher(result.url_request_context.get())); + #endif diff --git a/devel/electron5/files/patch-services_network_network__sandbox__hook__linux.cc b/devel/electron5/files/patch-services_network_network__sandbox__hook__linux.cc new file mode 100644 index 000000000000..4ad9e94f2116 --- /dev/null +++ b/devel/electron5/files/patch-services_network_network__sandbox__hook__linux.cc @@ -0,0 +1,18 @@ +--- services/network/network_sandbox_hook_linux.cc.orig 2019-04-08 08:18:26 UTC ++++ services/network/network_sandbox_hook_linux.cc +@@ -14,6 +14,7 @@ using sandbox::syscall_broker::MakeBrokerCommandSet; + namespace network { + + bool NetworkPreSandboxHook(service_manager::SandboxLinux::Options options) { ++#if !defined(OS_BSD) + auto* instance = service_manager::SandboxLinux::GetInstance(); + + // TODO(tsepez): remove universal permission under filesytem root. +@@ -32,6 +33,7 @@ bool NetworkPreSandboxHook(service_manager::SandboxLin + service_manager::SandboxLinux::PreSandboxHook(), options); + + instance->EngageNamespaceSandboxIfPossible(); ++#endif // defined(OS_BSD) + return true; + } + diff --git a/devel/electron5/files/patch-services_network_network__service.cc b/devel/electron5/files/patch-services_network_network__service.cc new file mode 100644 index 000000000000..411722a98c1c --- /dev/null +++ b/devel/electron5/files/patch-services_network_network__service.cc @@ -0,0 +1,20 @@ +--- services/network/network_service.cc.orig 2019-04-08 08:33:02 UTC ++++ services/network/network_service.cc +@@ -61,7 +61,7 @@ + #include "third_party/boringssl/src/include/openssl/cpu.h" + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)) || defined(OS_BSD) + #include "components/os_crypt/key_storage_config_linux.h" + #endif + +@@ -605,7 +605,7 @@ void NetworkService::OnCertDBChanged() { + net::CertDatabase::GetInstance()->NotifyObserversCertDBChanged(); + } + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + void NetworkService::SetCryptConfig(mojom::CryptConfigPtr crypt_config) { + #if !defined(IS_CHROMECAST) + DCHECK(!os_crypt_config_set_); diff --git a/devel/electron5/files/patch-services_network_network__service.h b/devel/electron5/files/patch-services_network_network__service.h new file mode 100644 index 000000000000..5307f12a689f --- /dev/null +++ b/devel/electron5/files/patch-services_network_network__service.h @@ -0,0 +1,11 @@ +--- services/network/network_service.h.orig 2019-04-08 08:33:02 UTC ++++ services/network/network_service.h +@@ -186,7 +186,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkService + #endif // !BUILDFLAG(IS_CT_SUPPORTED) + void UpdateCRLSet(base::span<const uint8_t> crl_set) override; + void OnCertDBChanged() override; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + void SetCryptConfig(mojom::CryptConfigPtr crypt_config) override; + #endif + #if defined(OS_MACOSX) && !defined(OS_IOS) diff --git a/devel/electron5/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h b/devel/electron5/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h new file mode 100644 index 000000000000..d66877b139bc --- /dev/null +++ b/devel/electron5/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h @@ -0,0 +1,14 @@ +--- services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h.orig 2019-04-08 08:33:03 UTC ++++ services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h +@@ -26,9 +26,9 @@ class COMPONENT_EXPORT( + mojom::RawOSMemDump*); + static std::vector<mojom::VmRegionPtr> GetProcessMemoryMaps(base::ProcessId); + +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + static void SetProcSmapsForTesting(FILE*); +-#endif // defined(OS_LINUX) || defined(OS_ANDROID) ++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + + private: + FRIEND_TEST_ALL_PREFIXES(OSMetricsTest, ParseProcSmaps); diff --git a/devel/electron5/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc b/devel/electron5/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc new file mode 100644 index 000000000000..4aef77c49f4b --- /dev/null +++ b/devel/electron5/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc @@ -0,0 +1,80 @@ +--- services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_linux.cc.orig 2019-04-08 08:33:03 UTC ++++ services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_linux.cc +@@ -17,8 +17,10 @@ + #include "build/build_config.h" + #include "services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h" + ++#if !defined(OS_BSD) + // Symbol with virtual address of the start of ELF header of the current binary. + extern char __ehdr_start; ++#endif + + namespace memory_instrumentation { + +@@ -67,6 +69,7 @@ struct ModuleData { + + ModuleData GetMainModuleData() { + ModuleData module_data; ++#if !defined(OS_BSD) + Dl_info dl_info; + if (dladdr(&__ehdr_start, &dl_info)) { + base::Optional<std::string> build_id = +@@ -76,6 +79,7 @@ ModuleData GetMainModuleData() { + module_data.build_id = *build_id; + } + } ++#endif + return module_data; + } + +@@ -123,14 +127,14 @@ bool ParseSmapsHeader(const char* header_line, + // Build ID is needed to symbolize heap profiles, and is generated only on + // official builds. Build ID is only added for the current library (chrome) + // since it is racy to read other libraries which can be unmapped any time. +-#if defined(OFFICIAL_BUILD) ++#if defined(OFFICIAL_BUILD) && !defined(OS_BSD) + if (!region->mapped_file.empty() && + base::StartsWith(main_module_data.path, region->mapped_file, + base::CompareCase::SENSITIVE) && + !main_module_data.build_id.empty()) { + region->module_debugid = main_module_data.build_id; + } +-#endif // defined(OFFICIAL_BUILD) ++#endif // defined(OFFICIAL_BUILD) && !defined(OS_BSD) + + return res; + } +@@ -217,6 +221,9 @@ void OSMetrics::SetProcSmapsForTesting(FILE* f) { + // static + bool OSMetrics::FillOSMemoryDump(base::ProcessId pid, + mojom::RawOSMemDump* dump) { ++#if defined(OS_BSD) ++ return false; ++#else + base::ScopedFD autoclose = OpenStatm(pid); + int statm_fd = autoclose.get(); + +@@ -242,10 +249,12 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid, + dump->resident_set_kb = process_metrics->GetResidentSetSize() / 1024; + + return true; ++#endif + } + + // static + std::vector<VmRegionPtr> OSMetrics::GetProcessMemoryMaps(base::ProcessId pid) { ++#if defined(OS_BSD) + std::vector<VmRegionPtr> maps; + uint32_t res = 0; + if (g_proc_smaps_for_testing) { +@@ -263,6 +272,10 @@ std::vector<VmRegionPtr> OSMetrics::GetProcessMemoryMa + return std::vector<VmRegionPtr>(); + + return maps; ++#else ++ NOTIMPLEMENTED(); ++ return std::vector<VmRegionPtr>(); ++#endif + } + + } // namespace memory_instrumentation diff --git a/devel/electron5/files/patch-services_service__manager_embedder_main.cc b/devel/electron5/files/patch-services_service__manager_embedder_main.cc new file mode 100644 index 000000000000..00d4deb34b71 --- /dev/null +++ b/devel/electron5/files/patch-services_service__manager_embedder_main.cc @@ -0,0 +1,11 @@ +--- services/service_manager/embedder/main.cc.orig 2019-04-08 08:33:03 UTC ++++ services/service_manager/embedder/main.cc +@@ -320,7 +320,7 @@ int Main(const MainParams& params) { + #endif + base::EnableTerminationOnOutOfMemory(); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // The various desktop environments set this environment variable that + // allows the dbus client library to connect directly to the bus. When this + // variable is not set (test environments like xvfb-run), the dbus client diff --git a/devel/electron5/files/patch-services_service__manager_embedder_set__process__title__linux.cc b/devel/electron5/files/patch-services_service__manager_embedder_set__process__title__linux.cc new file mode 100644 index 000000000000..804e4a124e26 --- /dev/null +++ b/devel/electron5/files/patch-services_service__manager_embedder_set__process__title__linux.cc @@ -0,0 +1,19 @@ +--- services/service_manager/embedder/set_process_title_linux.cc.orig 2019-04-08 08:18:26 UTC ++++ services/service_manager/embedder/set_process_title_linux.cc +@@ -49,6 +49,8 @@ + extern char** environ; + + static char** g_main_argv = NULL; ++ ++#if !defined(OS_FREEBSD) + static char* g_orig_argv0 = NULL; + + void setproctitle(const char* fmt, ...) { +@@ -101,6 +103,7 @@ void setproctitle(const char* fmt, ...) { + va_end(ap); + g_main_argv[1] = NULL; + } ++#endif + + // A version of this built into glibc would not need this function, since + // it could stash the argv pointer in __libc_start_main(). But we need it. diff --git a/devel/electron5/files/patch-services_service__manager_embedder_set__process__title__linux.h b/devel/electron5/files/patch-services_service__manager_embedder_set__process__title__linux.h new file mode 100644 index 000000000000..e3c7708c7be5 --- /dev/null +++ b/devel/electron5/files/patch-services_service__manager_embedder_set__process__title__linux.h @@ -0,0 +1,20 @@ +--- services/service_manager/embedder/set_process_title_linux.h.orig 2019-04-08 08:18:26 UTC ++++ services/service_manager/embedder/set_process_title_linux.h +@@ -5,6 +5,9 @@ + #ifndef SERVICES_SERVICE_MANAGER_EMBEDDER_SET_PROCESS_TITLE_LINUX_H_ + #define SERVICES_SERVICE_MANAGER_EMBEDDER_SET_PROCESS_TITLE_LINUX_H_ + ++#include "build/build_config.h" ++ ++#if !defined(OS_FREEBSD) + // Set the process title that will show in "ps" and similar tools. Takes + // printf-style format string and arguments. After calling setproctitle() + // the original main() argv[] array should not be used. By default, the +@@ -14,6 +17,7 @@ + // This signature and naming is to be compatible with most other Unix + // implementations of setproctitle(). + void setproctitle(const char* fmt, ...); ++#endif + + // Initialize state needed for setproctitle() on Linux. Pass the argv pointer + // from main() to setproctitle_init() before calling setproctitle(). diff --git a/devel/electron5/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn b/devel/electron5/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn new file mode 100644 index 000000000000..30bd68867a08 --- /dev/null +++ b/devel/electron5/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn @@ -0,0 +1,14 @@ +--- services/service_manager/public/cpp/service_executable/BUILD.gn.orig 2019-04-08 08:33:03 UTC ++++ services/service_manager/public/cpp/service_executable/BUILD.gn +@@ -30,6 +30,11 @@ source_set("support") { + "//sandbox/linux:seccomp_bpf", + ] + } ++ if (is_bsd) { ++ deps -= [ ++ "//sandbox/linux:seccomp_bpf" ++ ] ++ } + } + + # Service executable targets should link against this to get a boilerplate entry diff --git a/devel/electron5/files/patch-services_service__manager_runner_host_BUILD.gn b/devel/electron5/files/patch-services_service__manager_runner_host_BUILD.gn new file mode 100644 index 000000000000..7d72747dadb8 --- /dev/null +++ b/devel/electron5/files/patch-services_service__manager_runner_host_BUILD.gn @@ -0,0 +1,11 @@ +--- services/service_manager/runner/host/BUILD.gn.orig 2019-04-08 08:33:03 UTC ++++ services/service_manager/runner/host/BUILD.gn +@@ -30,7 +30,7 @@ source_set("lib") { + "//mojo/public/cpp/system", + ] + +- if (is_linux) { ++ if (is_linux && !is_bsd) { + deps += [ "//sandbox/linux:sandbox_services" ] + } + diff --git a/devel/electron5/files/patch-services_service__manager_sandbox_BUILD.gn b/devel/electron5/files/patch-services_service__manager_sandbox_BUILD.gn new file mode 100644 index 000000000000..9d157b9e22e7 --- /dev/null +++ b/devel/electron5/files/patch-services_service__manager_sandbox_BUILD.gn @@ -0,0 +1,11 @@ +--- services/service_manager/sandbox/BUILD.gn.orig 2019-04-08 08:18:26 UTC ++++ services/service_manager/sandbox/BUILD.gn +@@ -28,7 +28,7 @@ component("sandbox") { + "//base", + "//sandbox:common", + ] +- if (is_linux) { ++ if (is_linux && !is_bsd) { + sources += [ + "linux/bpf_audio_policy_linux.cc", + "linux/bpf_audio_policy_linux.h", diff --git a/devel/electron5/files/patch-services_service__manager_sandbox_sandbox__type.cc b/devel/electron5/files/patch-services_service__manager_sandbox_sandbox__type.cc new file mode 100644 index 000000000000..dedc7c871451 --- /dev/null +++ b/devel/electron5/files/patch-services_service__manager_sandbox_sandbox__type.cc @@ -0,0 +1,11 @@ +--- services/service_manager/sandbox/sandbox_type.cc.orig 2019-04-08 08:18:26 UTC ++++ services/service_manager/sandbox/sandbox_type.cc +@@ -25,7 +25,7 @@ bool IsUnsandboxedSandboxType(SandboxType sandbox_type + service_manager::features::kXRSandbox); + #endif + case SANDBOX_TYPE_AUDIO: +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + return !base::FeatureList::IsEnabled( + service_manager::features::kAudioServiceSandbox); + #else diff --git a/devel/electron5/files/patch-services_service__manager_zygote_common_zygote__features.gni b/devel/electron5/files/patch-services_service__manager_zygote_common_zygote__features.gni new file mode 100644 index 000000000000..2f9368bc966e --- /dev/null +++ b/devel/electron5/files/patch-services_service__manager_zygote_common_zygote__features.gni @@ -0,0 +1,8 @@ +--- services/service_manager/zygote/common/zygote_features.gni.orig 2019-04-08 08:18:26 UTC ++++ services/service_manager/zygote/common/zygote_features.gni +@@ -2,4 +2,4 @@ + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. + +-use_zygote_handle = is_posix && !is_android && !is_mac ++use_zygote_handle = is_posix && !is_android && !is_mac && !is_bsd diff --git a/devel/electron5/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc b/devel/electron5/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc new file mode 100644 index 000000000000..b699a32d8001 --- /dev/null +++ b/devel/electron5/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc @@ -0,0 +1,40 @@ +--- services/service_manager/zygote/host/zygote_host_impl_linux.cc.orig 2019-04-08 08:33:03 UTC ++++ services/service_manager/zygote/host/zygote_host_impl_linux.cc +@@ -72,6 +72,7 @@ ZygoteHostImpl* ZygoteHostImpl::GetInstance() { + } + + void ZygoteHostImpl::Init(const base::CommandLine& command_line) { ++#if !defined(OS_BSD) + if (command_line.HasSwitch(service_manager::switches::kNoSandbox)) { + return; + } +@@ -122,6 +123,7 @@ void ZygoteHostImpl::Init(const base::CommandLine& com + "you can try using --" + << service_manager::switches::kNoSandbox << "."; + } ++#endif + } + + void ZygoteHostImpl::AddZygotePid(pid_t pid) { +@@ -146,6 +148,7 @@ pid_t ZygoteHostImpl::LaunchZygote( + base::CommandLine* cmd_line, + base::ScopedFD* control_fd, + base::FileHandleMappingVector additional_remapped_fds) { ++#if !defined(OS_BSD) + int fds[2]; + CHECK_EQ(0, socketpair(AF_UNIX, SOCK_SEQPACKET, 0, fds)); + CHECK(base::UnixDomainSocket::EnableReceiveProcessId(fds[0])); +@@ -210,9 +213,12 @@ pid_t ZygoteHostImpl::LaunchZygote( + + AddZygotePid(pid); + return pid; ++#else ++ return 0; ++#endif + } + +-#if !defined(OS_OPENBSD) ++#if !defined(OS_BSD) + void ZygoteHostImpl::AdjustRendererOOMScore(base::ProcessHandle pid, + int score) { + // 1) You can't change the oom_score_adj of a non-dumpable process diff --git a/devel/electron5/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h b/devel/electron5/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h new file mode 100644 index 000000000000..1e9b6ea59d20 --- /dev/null +++ b/devel/electron5/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h @@ -0,0 +1,13 @@ +--- services/service_manager/zygote/host/zygote_host_impl_linux.h.orig 2019-04-08 08:18:26 UTC ++++ services/service_manager/zygote/host/zygote_host_impl_linux.h +@@ -44,8 +44,10 @@ class COMPONENT_EXPORT(SERVICE_MANAGER_ZYGOTE) ZygoteH + base::ScopedFD* control_fd, + base::FileHandleMappingVector additional_remapped_fds); + ++#if !defined(OS_BSD) + void AdjustRendererOOMScore(base::ProcessHandle process_handle, + int score) override; ++#endif + bool HasZygote() { return !zygote_pids_.empty(); } + + private: diff --git a/devel/electron5/files/patch-services_service__manager_zygote_zygote__host__linux.h b/devel/electron5/files/patch-services_service__manager_zygote_zygote__host__linux.h new file mode 100644 index 000000000000..66040b07548b --- /dev/null +++ b/devel/electron5/files/patch-services_service__manager_zygote_zygote__host__linux.h @@ -0,0 +1,16 @@ +--- services/service_manager/zygote/zygote_host_linux.h.orig 2019-04-08 08:18:26 UTC ++++ services/service_manager/zygote/zygote_host_linux.h +@@ -30,11 +30,13 @@ class ZygoteHost { + // after the first render has been forked. + virtual int GetRendererSandboxStatus() const = 0; + ++#if !defined(OS_BSD) + // Adjust the OOM score of the given renderer's PID. The allowed + // range for the score is [0, 1000], where higher values are more + // likely to be killed by the OOM killer. + virtual void AdjustRendererOOMScore(base::ProcessHandle process_handle, + int score) = 0; ++#endif + }; + + } // namespace service_manager diff --git a/devel/electron5/files/patch-services_service__manager_zygote_zygote__linux.cc b/devel/electron5/files/patch-services_service__manager_zygote_zygote__linux.cc new file mode 100644 index 000000000000..929073a78dbb --- /dev/null +++ b/devel/electron5/files/patch-services_service__manager_zygote_zygote__linux.cc @@ -0,0 +1,15 @@ +--- services/service_manager/zygote/zygote_linux.cc.orig 2019-04-08 08:33:03 UTC ++++ services/service_manager/zygote/zygote_linux.cc +@@ -1,6 +1,7 @@ + // Copyright (c) 2012 The Chromium Authors. All rights reserved. + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. ++#if 0 + + #include "services/service_manager/zygote/zygote_linux.h" + +@@ -664,3 +665,4 @@ bool Zygote::HandleGetSandboxStatus(int fd, base::Pick + } + + } // namespace service_manager ++#endif diff --git a/devel/electron5/files/patch-services_service__manager_zygote_zygote__main__linux.cc b/devel/electron5/files/patch-services_service__manager_zygote_zygote__main__linux.cc new file mode 100644 index 000000000000..eaef4b039d37 --- /dev/null +++ b/devel/electron5/files/patch-services_service__manager_zygote_zygote__main__linux.cc @@ -0,0 +1,48 @@ +--- services/service_manager/zygote/zygote_main_linux.cc.orig 2019-04-08 08:18:26 UTC ++++ services/service_manager/zygote/zygote_main_linux.cc +@@ -11,7 +11,9 @@ + #include <stddef.h> + #include <stdint.h> + #include <string.h> ++#if !defined(OS_BSD) + #include <sys/prctl.h> ++#endif + #include <sys/socket.h> + #include <sys/types.h> + #include <unistd.h> +@@ -101,6 +103,7 @@ static bool CreateInitProcessReaper( + // created through the setuid sandbox. + static bool EnterSuidSandbox(sandbox::SetuidSandboxClient* setuid_sandbox, + base::OnceClosure post_fork_parent_callback) { ++#if !defined(OS_BSD) + DCHECK(setuid_sandbox); + DCHECK(setuid_sandbox->IsSuidSandboxChild()); + +@@ -133,6 +136,9 @@ static bool EnterSuidSandbox(sandbox::SetuidSandboxCli + + CHECK(service_manager::SandboxDebugHandling::SetDumpableStatusAndHandlers()); + return true; ++#else ++ return false; ++#endif + } + + static void DropAllCapabilities(int proc_fd) { +@@ -178,6 +184,7 @@ static void EnterLayerOneSandbox(service_manager::Sand + + bool ZygoteMain( + std::vector<std::unique_ptr<ZygoteForkDelegate>> fork_delegates) { ++#if !defined(OS_BSD) + sandbox::SetAmZygoteOrRenderer(true, GetSandboxFD()); + + auto* linux_sandbox = service_manager::SandboxLinux::GetInstance(); +@@ -240,6 +247,9 @@ bool ZygoteMain( + + // This function call can return multiple times, once per fork(). + return zygote.ProcessRequests(); ++#else ++ return false; ++#endif + } + + } // namespace service_manager diff --git a/devel/electron5/files/patch-skia_ext_SkMemory__new__handler.cpp b/devel/electron5/files/patch-skia_ext_SkMemory__new__handler.cpp new file mode 100644 index 000000000000..5e5b3bfb755a --- /dev/null +++ b/devel/electron5/files/patch-skia_ext_SkMemory__new__handler.cpp @@ -0,0 +1,20 @@ +--- skia/ext/SkMemory_new_handler.cpp.orig 2019-04-08 08:18:26 UTC ++++ skia/ext/SkMemory_new_handler.cpp +@@ -77,7 +77,7 @@ static void* malloc_nothrow(size_t size) { + // TODO(b.kelemen): we should always use UncheckedMalloc but currently it + // doesn't work as intended everywhere. + void* result; +-#if defined(OS_IOS) ++#if defined(OS_IOS) || defined(OS_BSD) + result = malloc(size); + #else + // It's the responsibility of the caller to check the return value. +@@ -97,7 +97,7 @@ static void* calloc_nothrow(size_t size) { + // TODO(b.kelemen): we should always use UncheckedCalloc but currently it + // doesn't work as intended everywhere. + void* result; +-#if defined(OS_IOS) ++#if defined(OS_IOS) || defined(OS_BSD) + result = calloc(1, size); + #else + // It's the responsibility of the caller to check the return value. diff --git a/devel/electron5/files/patch-third__party_angle_BUILD.gn b/devel/electron5/files/patch-third__party_angle_BUILD.gn new file mode 100644 index 000000000000..79678f044552 --- /dev/null +++ b/devel/electron5/files/patch-third__party_angle_BUILD.gn @@ -0,0 +1,21 @@ +--- third_party/angle/BUILD.gn.orig 2019-04-08 08:33:52 UTC ++++ third_party/angle/BUILD.gn +@@ -276,6 +276,7 @@ angle_static_library("angle_gpu_info_util") { + "X11", + "Xi", + "Xext", ++ "GL", + ] + } + } +@@ -842,10 +843,6 @@ foreach(is_shared_library, + libs = [] + if (is_linux) { + sources += util_linux_sources +- libs += [ +- "rt", +- "dl", +- ] + } + + if (is_mac) { diff --git a/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h b/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h new file mode 100644 index 000000000000..d2f83501b635 --- /dev/null +++ b/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h @@ -0,0 +1,16 @@ +--- third_party/angle/src/gpu_info_util/SystemInfo_internal.h.orig 2019-04-08 08:20:00 UTC ++++ third_party/angle/src/gpu_info_util/SystemInfo_internal.h +@@ -14,8 +14,13 @@ + namespace angle + { + ++bool CollectMesaCardInfo(std::vector<GPUDeviceInfo> *devices); ++ + // Defined in SystemInfo_libpci when GPU_INFO_USE_LIBPCI is defined. + bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices); ++#if defined(__FreeBSD__) ++bool GetPCIDevicesFreeBSD(std::vector<GPUDeviceInfo> *devices); ++#endif + // Defined in SystemInfo_x11 when GPU_INFO_USE_X11 is defined. + bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version); + diff --git a/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp b/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp new file mode 100644 index 000000000000..32ad0de9e1d0 --- /dev/null +++ b/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp @@ -0,0 +1,90 @@ +--- third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp.orig 2019-04-08 08:20:00 UTC ++++ third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp +@@ -12,6 +12,11 @@ + #include <pci/pci.h> + #include <unistd.h> + ++#if defined(__FreeBSD__) ++#include <fcntl.h> ++#include <sys/pciio.h> ++#endif ++ + #include "common/angleutils.h" + #include "common/debug.h" + +@@ -82,6 +87,75 @@ struct LibPCI : private angle::NonCopyable + }; + + } // anonymous namespace ++ ++#if defined(__FreeBSD__) ++// Adds an entry per PCI GPU found and fills the device and vendor ID. ++bool GetPCIDevicesFreeBSD(std::vector<GPUDeviceInfo> *devices) ++{ ++ int fd; ++ struct pci_conf_io conf; ++ struct pci_conf *matches; ++ uint32_t offset = 0; ++ ++ fd = open("/dev/pci", O_RDONLY); ++ if (fd < 0) ++ return false; ++ ++ matches = new struct pci_conf[32]; ++ conf.generation = 0; ++ do { ++ conf.pat_buf_len = 0; ++ conf.num_patterns = 0; ++ conf.patterns = NULL; ++ conf.match_buf_len = 32 * sizeof(struct pci_conf); ++ conf.num_matches = 32; ++ conf.matches = matches; ++ conf.offset = offset; ++ conf.status = PCI_GETCONF_ERROR; ++ if (ioctl(fd, PCIOCGETCONF, &conf) < 0) { ++ if (errno == ENODEV) ++ break; ++ } ++ /* PCI_GETCONF_LIST_CHANGED would require us to start over. */ ++ if (conf.status == PCI_GETCONF_ERROR || conf.status == PCI_GETCONF_LIST_CHANGED) { ++ break; ++ } ++ ++ for (unsigned int i = 0; i < conf.num_matches; i++) { ++ uint16_t device_class = (matches[i].pc_class << 8) | matches[i].pc_subclass; ++ ++ // Skip non-GPU devices ++ switch (device_class) ++ { ++ case PCI_CLASS_DISPLAY_VGA: ++ case PCI_CLASS_DISPLAY_XGA: ++ case PCI_CLASS_DISPLAY_3D: ++ break; ++ default: ++ continue; ++ } ++ ++ // Skip unknown devices ++ if (matches[i].pc_vendor == 0 || matches[i].pc_device == 0) { ++ continue; ++ } ++ ++ GPUDeviceInfo info; ++ info.vendorId = matches[i].pc_vendor; ++ info.deviceId = matches[i].pc_device; ++ ++ devices->push_back(info); ++ } ++ offset += conf.num_matches; ++ } while (conf.status == PCI_GETCONF_MORE_DEVS); ++ ++ delete[] matches; ++ ++ close(fd); ++ ++ return true; ++} ++#endif + + // Adds an entry per PCI GPU found and fills the device and vendor ID. + bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices) diff --git a/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp b/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp new file mode 100644 index 000000000000..ffaa86d8fd39 --- /dev/null +++ b/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp @@ -0,0 +1,21 @@ +--- third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp.orig 2019-04-08 08:33:53 UTC ++++ third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp +@@ -71,10 +71,18 @@ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo + + bool GetSystemInfo(SystemInfo *info) + { ++#if defined(__FreeBSD__) ++ if (!CollectMesaCardInfo(&(info->gpus))) ++ { ++ if (!GetPCIDevicesFreeBSD(&(info->gpus))) ++ return false; ++ } ++#else + if (!GetPCIDevicesWithLibPCI(&(info->gpus))) + { + return false; + } ++#endif + + if (info->gpus.size() == 0) + { diff --git a/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp b/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp new file mode 100644 index 000000000000..41da10ee0178 --- /dev/null +++ b/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp @@ -0,0 +1,55 @@ +--- third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp.orig 2019-04-08 08:20:00 UTC ++++ third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp +@@ -8,6 +8,8 @@ + + #include "gpu_info_util/SystemInfo_internal.h" + ++#include <GL/glx.h> ++#include <GL/glxext.h> + #include <X11/Xlib.h> + + #include "common/debug.h" +@@ -18,8 +20,43 @@ + # error SystemInfo_x11.cpp compiled without GPU_INFO_USE_X11 + #endif + ++#define GLX_RENDERER_VENDOR_ID_MESA 0x8183 ++#define GLX_RENDERER_DEVICE_ID_MESA 0x8184 ++ + namespace angle + { ++ ++bool CollectMesaCardInfo(std::vector<GPUDeviceInfo> *devices) ++{ ++ ++ unsigned int vid[3], did[3]; ++ ++ Display *display = XOpenDisplay(NULL); ++ if (!display) { ++ return false; ++ } ++ ++ PFNGLXQUERYRENDERERINTEGERMESAPROC queryInteger = ++ (PFNGLXQUERYRENDERERINTEGERMESAPROC) glXGetProcAddressARB((const GLubyte *) ++ "glXQueryRendererIntegerMESA"); ++ ++ if (!queryInteger) ++ return false; ++ ++ bool vendor_ret = ++ queryInteger(display, 0, 0, GLX_RENDERER_VENDOR_ID_MESA, vid); ++ bool device_ret = ++ queryInteger(display, 0, 0, GLX_RENDERER_DEVICE_ID_MESA, did); ++ ++ if (vendor_ret && device_ret) { ++ GPUDeviceInfo info; ++ info.vendorId = vid[0]; ++ info.deviceId = did[0]; ++ devices->push_back(info); ++ } ++ ++ return true; ++} + + bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version) + { diff --git a/devel/electron5/files/patch-third__party_angle_src_libANGLE_Display.cpp b/devel/electron5/files/patch-third__party_angle_src_libANGLE_Display.cpp new file mode 100644 index 000000000000..37c505eb161d --- /dev/null +++ b/devel/electron5/files/patch-third__party_angle_src_libANGLE_Display.cpp @@ -0,0 +1,20 @@ +--- third_party/angle/src/libANGLE/Display.cpp.orig 2019-04-08 08:33:54 UTC ++++ third_party/angle/src/libANGLE/Display.cpp +@@ -64,7 +64,7 @@ + #if defined(ANGLE_ENABLE_VULKAN) + # if defined(ANGLE_PLATFORM_WINDOWS) + # include "libANGLE/renderer/vulkan/win32/DisplayVkWin32.h" +-# elif defined(ANGLE_PLATFORM_LINUX) ++# elif defined(ANGLE_PLATFORM_POSIX) + # include "libANGLE/renderer/vulkan/xcb/DisplayVkXcb.h" + # elif defined(ANGLE_PLATFORM_ANDROID) + # include "libANGLE/renderer/vulkan/android/DisplayVkAndroid.h" +@@ -216,7 +216,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(const Attrib + #if defined(ANGLE_ENABLE_VULKAN) + # if defined(ANGLE_PLATFORM_WINDOWS) + impl = new rx::DisplayVkWin32(state); +-# elif defined(ANGLE_PLATFORM_LINUX) ++# elif defined(ANGLE_PLATFORM_POSIX) + impl = new rx::DisplayVkXcb(state); + # elif defined(ANGLE_PLATFORM_ANDROID) + impl = new rx::DisplayVkAndroid(state); diff --git a/devel/electron5/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h b/devel/electron5/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h new file mode 100644 index 000000000000..a3b134d5b6dd --- /dev/null +++ b/devel/electron5/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h @@ -0,0 +1,11 @@ +--- third_party/angle/src/libANGLE/renderer/driver_utils.h.orig 2019-04-08 08:20:00 UTC ++++ third_party/angle/src/libANGLE/renderer/driver_utils.h +@@ -107,7 +107,7 @@ inline bool IsWindows() + + inline bool IsLinux() + { +-#if defined(ANGLE_PLATFORM_LINUX) ++#if defined(ANGLE_PLATFORM_POSIX) + return true; + #else + return false; diff --git a/devel/electron5/files/patch-third__party_angle_third__party_glslang_src_glslang_Include_PoolAlloc.h b/devel/electron5/files/patch-third__party_angle_third__party_glslang_src_glslang_Include_PoolAlloc.h new file mode 100644 index 000000000000..f18a21e78616 --- /dev/null +++ b/devel/electron5/files/patch-third__party_angle_third__party_glslang_src_glslang_Include_PoolAlloc.h @@ -0,0 +1,10 @@ +--- third_party/angle/third_party/glslang/src/glslang/Include/PoolAlloc.h.orig 2020-03-15 13:45:58 UTC ++++ third_party/angle/third_party/glslang/src/glslang/Include/PoolAlloc.h +@@ -304,7 +304,6 @@ class pool_allocator { (public) + size_type max_size() const { return static_cast<size_type>(-1) / sizeof(T); } + size_type max_size(int size) const { return static_cast<size_type>(-1) / size; } + +- void setAllocator(TPoolAllocator* a) { allocator = *a; } + TPoolAllocator& getAllocator() const { return allocator; } + + protected: diff --git a/devel/electron5/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c b/devel/electron5/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c new file mode 100644 index 000000000000..3cc5adee15d2 --- /dev/null +++ b/devel/electron5/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c @@ -0,0 +1,11 @@ +--- third_party/angle/third_party/vulkan-loader/src/loader/loader.c.orig 2019-04-08 08:34:43 UTC ++++ third_party/angle/third_party/vulkan-loader/src/loader/loader.c +@@ -215,7 +215,7 @@ void *loader_device_heap_realloc(const struct loader_d + } + + // Environment variables +-#if defined(__linux__) || defined(__APPLE__) ++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) + + static inline char *loader_getenv(const char *name, const struct loader_instance *inst) { + // No allocation of memory necessary for Linux, but we should at least touch diff --git a/devel/electron5/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h b/devel/electron5/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h new file mode 100644 index 000000000000..4a5a8d7c7000 --- /dev/null +++ b/devel/electron5/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h @@ -0,0 +1,11 @@ +--- third_party/angle/third_party/vulkan-loader/src/loader/vk_loader_platform.h.orig 2019-04-08 08:34:43 UTC ++++ third_party/angle/third_party/vulkan-loader/src/loader/vk_loader_platform.h +@@ -31,7 +31,7 @@ + #include "vulkan/vk_platform.h" + #include "vulkan/vk_sdk_platform.h" + +-#if defined(__linux__) || defined(__APPLE__) ++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) + /* Linux-specific common code: */ + + // Headers: diff --git a/devel/electron5/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h b/devel/electron5/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h new file mode 100644 index 000000000000..22f7728f2e6f --- /dev/null +++ b/devel/electron5/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h @@ -0,0 +1,11 @@ +--- third_party/angle/third_party/vulkan-validation-layers/src/layers/vk_loader_platform.h.orig 2019-04-08 08:23:49 UTC ++++ third_party/angle/third_party/vulkan-validation-layers/src/layers/vk_loader_platform.h +@@ -31,7 +31,7 @@ + #include "vulkan/vk_platform.h" + #include "vulkan/vk_sdk_platform.h" + +-#if defined(__linux__) || defined(__APPLE__) ++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) + /* Linux-specific common code: */ + + // Headers: diff --git a/devel/electron5/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc b/devel/electron5/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc new file mode 100644 index 000000000000..b3e5c5fa9c4d --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc @@ -0,0 +1,11 @@ +--- third_party/blink/renderer/core/editing/editing_behavior.cc.orig 2019-04-08 08:18:45 UTC ++++ third_party/blink/renderer/core/editing/editing_behavior.cc +@@ -270,7 +270,7 @@ bool EditingBehavior::ShouldInsertCharacter(const Keyb + // unexpected behaviour + if (ch < ' ') + return false; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // According to XKB map no keyboard combinations with ctrl key are mapped to + // printable characters, however we need the filter as the DomKey/text could + // contain printable characters. diff --git a/devel/electron5/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc b/devel/electron5/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc new file mode 100644 index 000000000000..937666b67090 --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc @@ -0,0 +1,11 @@ +--- third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc.orig 2019-04-08 08:33:04 UTC ++++ third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc +@@ -39,7 +39,7 @@ constexpr TimeDelta kEncodeRowSlackBeforeDeadline = + TimeDelta::FromMicroseconds(100); + + /* The value is based on user statistics on Nov 2017. */ +-#if (defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)) ++#if (defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)) || defined(OS_BSD) + const double kIdleTaskStartTimeoutDelayMs = 1000.0; + #else + const double kIdleTaskStartTimeoutDelayMs = 4000.0; // For ChromeOS, Mobile diff --git a/devel/electron5/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc b/devel/electron5/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc new file mode 100644 index 000000000000..52c3d5bf3c55 --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc @@ -0,0 +1,11 @@ +--- third_party/blink/renderer/core/html/forms/internal_popup_menu.cc.orig 2019-04-08 08:33:04 UTC ++++ third_party/blink/renderer/core/html/forms/internal_popup_menu.cc +@@ -127,7 +127,7 @@ class InternalPopupMenu::ItemIterationContext { + is_in_group_(false), + buffer_(buffer) { + DCHECK(buffer_); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // On other platforms, the <option> background color is the same as the + // <select> background color. On Linux, that makes the <option> + // background color very dark, so by default, try to use a lighter diff --git a/devel/electron5/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc b/devel/electron5/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc new file mode 100644 index 000000000000..89b7f6ecaa0c --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc @@ -0,0 +1,11 @@ +--- third_party/blink/renderer/core/inspector/inspector_memory_agent.cc.orig 2019-04-08 08:33:05 UTC ++++ third_party/blink/renderer/core/inspector/inspector_memory_agent.cc +@@ -171,7 +171,7 @@ InspectorMemoryAgent::GetSamplingProfileById(uint32_t + + std::vector<std::string> InspectorMemoryAgent::Symbolize( + const std::vector<void*>& addresses) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // TODO(alph): Move symbolization to the client. + std::vector<void*> addresses_to_symbolize; + for (void* address : addresses) { diff --git a/devel/electron5/files/patch-third__party_blink_renderer_core_layout_layout__view.cc b/devel/electron5/files/patch-third__party_blink_renderer_core_layout_layout__view.cc new file mode 100644 index 000000000000..1e42711f77c1 --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_core_layout_layout__view.cc @@ -0,0 +1,20 @@ +--- third_party/blink/renderer/core/layout/layout_view.cc.orig 2019-04-08 08:33:05 UTC ++++ third_party/blink/renderer/core/layout/layout_view.cc +@@ -58,7 +58,7 @@ + #include "third_party/blink/renderer/platform/runtime_enabled_features.h" + #include "third_party/blink/renderer/platform/transforms/transform_state.h" + +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + #include "third_party/blink/renderer/platform/fonts/font_cache.h" + #endif + +@@ -321,7 +321,7 @@ void LayoutView::UpdateLayout() { + DCHECK(!layout_state_); + LayoutState root_layout_state(*this); + +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + // The font code in FontPlatformData does not have a direct connection to the + // document, the frame or anything from which we could retrieve the device + // scale factor. After using zoom for DSF, the GraphicsContext does only ever diff --git a/devel/electron5/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc b/devel/electron5/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc new file mode 100644 index 000000000000..172fffdf91cd --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc @@ -0,0 +1,11 @@ +--- third_party/blink/renderer/core/paint/paint_layer.cc.orig 2019-04-08 08:33:05 UTC ++++ third_party/blink/renderer/core/paint/paint_layer.cc +@@ -104,7 +104,7 @@ namespace { + static CompositingQueryMode g_compositing_query_mode = + kCompositingQueriesAreOnlyAllowedInCertainDocumentLifecyclePhases; + +-#ifdef OS_LINUX ++#if defined(OS_LINUX) || defined(OS_BSD) + struct SameSizeAsPaintLayer : DisplayItemClient { + // The bit fields may fit into the machine word of DisplayItemClient which + // has only 8-bit data. diff --git a/devel/electron5/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc b/devel/electron5/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc new file mode 100644 index 000000000000..0df5cdde6338 --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc @@ -0,0 +1,11 @@ +--- third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc.orig 2019-04-08 08:33:05 UTC ++++ third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc +@@ -332,7 +332,7 @@ ScrollbarPart ScrollbarThemeAura::InvalidateOnThumbPos + + bool ScrollbarThemeAura::ShouldCenterOnThumb(const Scrollbar& scrollbar, + const WebMouseEvent& event) { +-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++#if ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)) + if (event.button == WebPointerProperties::Button::kMiddle) + return true; + #endif diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_BUILD.gn b/devel/electron5/files/patch-third__party_blink_renderer_platform_BUILD.gn new file mode 100644 index 000000000000..e0ac59a88c46 --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_BUILD.gn @@ -0,0 +1,10 @@ +--- third_party/blink/renderer/platform/BUILD.gn.orig 2019-04-09 12:48:19 UTC ++++ third_party/blink/renderer/platform/BUILD.gn +@@ -129,6 +129,7 @@ executable("character_data_generator") { + "//build/win:default_exe_manifest", + "//third_party/icu", + ] ++ libs = [ "cxxrt" ] + } + + # This isn't strictly necessary since we can just add the deps to "platform", diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc new file mode 100644 index 000000000000..e772a18de3e6 --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc @@ -0,0 +1,20 @@ +--- third_party/blink/renderer/platform/fonts/font_cache.cc.orig 2019-04-08 08:33:06 UTC ++++ third_party/blink/renderer/platform/fonts/font_cache.cc +@@ -66,7 +66,7 @@ namespace blink { + + SkFontMgr* FontCache::static_font_manager_ = nullptr; + +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + float FontCache::device_scale_factor_ = 1.0; + #endif + +@@ -89,7 +89,7 @@ FontCache::FontCache() + FontPlatformData* FontCache::SystemFontPlatformData( + const FontDescription& font_description) { + const AtomicString& family = FontCache::SystemFontFamily(); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + if (family.IsEmpty() || family == font_family_names::kSystemUi) + return nullptr; + #else diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h new file mode 100644 index 000000000000..bb2412e7d453 --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h @@ -0,0 +1,53 @@ +--- third_party/blink/renderer/platform/fonts/font_cache.h.orig 2019-04-08 08:33:06 UTC ++++ third_party/blink/renderer/platform/fonts/font_cache.h +@@ -157,7 +157,7 @@ class PLATFORM_EXPORT FontCache { + sk_sp<SkFontMgr> FontManager() { return font_manager_; } + static void SetFontManager(sk_sp<SkFontMgr>); + +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + // These are needed for calling QueryRenderStyleForStrike, since + // gfx::GetFontRenderParams makes distinctions based on DSF. + static float DeviceScaleFactor() { return device_scale_factor_; } +@@ -218,7 +218,7 @@ class PLATFORM_EXPORT FontCache { + const FontDescription&); + #endif // defined(OS_ANDROID) + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + struct PlatformFallbackFont { + String name; + CString filename; +@@ -230,7 +230,7 @@ class PLATFORM_EXPORT FontCache { + static void GetFontForCharacter(UChar32, + const char* preferred_locale, + PlatformFallbackFont*); +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + scoped_refptr<SimpleFontData> FontDataFromFontPlatformData( + const FontPlatformData*, +@@ -294,12 +294,12 @@ class PLATFORM_EXPORT FontCache { + const FontFaceCreationParams&, + CString& name); + +-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA) ++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) + static AtomicString GetFamilyNameForCharacter(SkFontMgr*, + UChar32, + const FontDescription&, + FontFallbackPriority); +-#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA) ++#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) + + scoped_refptr<SimpleFontData> FallbackOnStandardFontStyle(const FontDescription&, + UChar32); +@@ -330,7 +330,7 @@ class PLATFORM_EXPORT FontCache { + bool is_test_font_mgr_ = false; + #endif // defined(OS_WIN) + +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + static float device_scale_factor_; + #endif + diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc new file mode 100644 index 000000000000..a61452b04d27 --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc @@ -0,0 +1,20 @@ +--- third_party/blink/renderer/platform/fonts/font_description.cc.orig 2019-04-08 08:33:06 UTC ++++ third_party/blink/renderer/platform/fonts/font_description.cc +@@ -38,7 +38,7 @@ + #include "third_party/blink/renderer/platform/wtf/text/atomic_string_hash.h" + #include "third_party/blink/renderer/platform/wtf/text/string_hash.h" + +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + #include "third_party/blink/renderer/platform/fonts/font_cache.h" + #endif + +@@ -223,7 +223,7 @@ FontCacheKey FontDescription::CacheKey( + static_cast<unsigned>(fields_.orientation_) << 1 | // bit 2-3 + static_cast<unsigned>(fields_.subpixel_text_position_); // bit 1 + +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + float device_scale_factor_for_key = FontCache::DeviceScaleFactor(); + #else + float device_scale_factor_for_key = 1.0f; diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc new file mode 100644 index 000000000000..80dc79a8edc5 --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc @@ -0,0 +1,29 @@ +--- third_party/blink/renderer/platform/fonts/font_metrics.cc.orig 2019-04-08 08:18:48 UTC ++++ third_party/blink/renderer/platform/fonts/font_metrics.cc +@@ -39,7 +39,7 @@ + + namespace blink { + +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) + // This is the largest VDMX table which we'll try to load and parse. + static const size_t kMaxVDMXTableSize = 1024 * 1024; // 1 MB + #endif +@@ -61,7 +61,7 @@ void FontMetrics::AscentDescentWithHacks( + int vdmx_ascent = 0, vdmx_descent = 0; + bool is_vdmx_valid = false; + +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) + // Manually digging up VDMX metrics is only applicable when bytecode hinting + // using FreeType. With DirectWrite or CoreText, no bytecode hinting is ever + // done. This code should be pushed into FreeType (hinted font metrics). +@@ -107,7 +107,7 @@ void FontMetrics::AscentDescentWithHacks( + visual_overflow_inflation_for_ascent = 1; + if (descent < metrics.fDescent) { + visual_overflow_inflation_for_descent = 1; +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) + // When subpixel positioning is enabled, if the descent is rounded down, + // the descent part of the glyph may be truncated when displayed in a + // 'overflow: hidden' container. To avoid that, borrow 1 unit from the diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc new file mode 100644 index 000000000000..21c331e6dcf9 --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc @@ -0,0 +1,20 @@ +--- third_party/blink/renderer/platform/fonts/font_unique_name_lookup.cc.orig 2019-04-08 08:33:06 UTC ++++ third_party/blink/renderer/platform/fonts/font_unique_name_lookup.cc +@@ -10,7 +10,7 @@ + #if defined(OS_ANDROID) + #include "third_party/blink/public/platform/modules/font_unique_name_lookup/font_unique_name_lookup.mojom-blink.h" + #include "third_party/blink/renderer/platform/fonts/android/font_unique_name_lookup_android.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "third_party/blink/renderer/platform/fonts/linux/font_unique_name_lookup_linux.h" + #elif defined(OS_WIN) + #include "third_party/blink/public/mojom/dwrite_font_proxy/dwrite_font_proxy.mojom-blink.h" +@@ -26,7 +26,7 @@ std::unique_ptr<FontUniqueNameLookup> + FontUniqueNameLookup::GetPlatformUniqueNameLookup() { + #if defined(OS_ANDROID) + return std::make_unique<FontUniqueNameLookupAndroid>(); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + return std::make_unique<FontUniqueNameLookupLinux>(); + #elif defined(OS_WIN) + return std::make_unique<FontUniqueNameLookupWin>(); diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc new file mode 100644 index 000000000000..43ba1b65967a --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc @@ -0,0 +1,38 @@ +--- third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc.orig 2019-04-08 08:18:48 UTC ++++ third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc +@@ -60,7 +60,7 @@ AtomicString ToAtomicString(const SkString& str) { + return AtomicString::FromUTF8(str.c_str(), str.size()); + } + +-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA) ++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) + // Android special locale for retrieving the color emoji font + // based on the proposed changes in UTR #51 for introducing + // an Emoji script code: +@@ -104,7 +104,7 @@ AtomicString FontCache::GetFamilyNameForCharacter( + typeface->getFamilyName(&skia_family_name); + return ToAtomicString(skia_family_name); + } +-#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA) ++#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) + + void FontCache::PlatformInit() {} + +@@ -249,7 +249,7 @@ sk_sp<SkTypeface> FontCache::CreateTypeface( + } + #endif + +-#if defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + // On linux if the fontManager has been overridden then we should be calling + // the embedder provided font Manager rather than calling + // SkTypeface::CreateFromName which may redirect the call to the default font +@@ -276,7 +276,7 @@ std::unique_ptr<FontPlatformData> FontCache::CreateFon + CString name; + + sk_sp<SkTypeface> typeface; +-#if defined(OS_ANDROID) || defined(OS_LINUX) ++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD) + if (alternate_name == AlternateFontName::kLocalUniqueFace && + RuntimeEnabledFeatures::FontSrcLocalMatchingEnabled()) { + typeface = CreateTypefaceFromUniqueName(creation_params, name); diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_heap_stack__frame__depth.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_heap_stack__frame__depth.cc new file mode 100644 index 000000000000..d8e75613913d --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_heap_stack__frame__depth.cc @@ -0,0 +1,14 @@ +--- third_party/blink/renderer/platform/heap/stack_frame_depth.cc.orig 2019-04-08 08:33:06 UTC ++++ third_party/blink/renderer/platform/heap/stack_frame_depth.cc +@@ -15,6 +15,11 @@ + extern "C" void* __libc_stack_end; // NOLINT + #endif + ++#if defined(OS_FREEBSD) ++#include <sys/signal.h> ++#include <pthread_np.h> ++#endif ++ + namespace blink { + + static const char* g_avoid_optimization = nullptr; diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_BUILD.gn b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_BUILD.gn new file mode 100644 index 000000000000..cdfd30da8b9b --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_BUILD.gn @@ -0,0 +1,16 @@ +--- third_party/blink/renderer/platform/wtf/BUILD.gn.orig 2019-04-08 08:33:06 UTC ++++ third_party/blink/renderer/platform/wtf/BUILD.gn +@@ -267,8 +267,12 @@ jumbo_component("wtf") { + if (is_android) { + libs = [ "log" ] + } +- if (is_linux) { ++ if (is_linux && !is_bsd) { + libs = [ "dl" ] ++ } ++ ++ if (is_bsd) { ++ libs = [ "execinfo" ] + } + + if (is_mac) { diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_assertions.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_assertions.cc new file mode 100644 index 000000000000..fc15d052b5e4 --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_assertions.cc @@ -0,0 +1,11 @@ +--- third_party/blink/renderer/platform/wtf/assertions.cc.orig 2019-04-08 08:33:06 UTC ++++ third_party/blink/renderer/platform/wtf/assertions.cc +@@ -48,7 +48,7 @@ + #include <windows.h> + #endif + +-#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(__UCLIBC__)) ++#if defined(OS_MACOSX) || ((defined(OS_LINUX) || defined(OS_BSD)) && !defined(__UCLIBC__)) + #include <cxxabi.h> + #include <dlfcn.h> + #include <execinfo.h> diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h new file mode 100644 index 000000000000..a074c8a3bd98 --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h @@ -0,0 +1,11 @@ +--- third_party/blink/renderer/platform/wtf/container_annotations.h.orig 2019-04-08 08:33:06 UTC ++++ third_party/blink/renderer/platform/wtf/container_annotations.h +@@ -10,7 +10,7 @@ + + // TODO(ochang): Remove the ARCH_CPU_X86_64 condition to enable this for X86 + // once the crashes there have been fixed: http://crbug.com/461406 +-#if defined(ADDRESS_SANITIZER) && defined(OS_LINUX) && defined(ARCH_CPU_X86_64) ++#if defined(ADDRESS_SANITIZER) && (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64) + #define ANNOTATE_CONTIGUOUS_CONTAINER + #define ANNOTATE_NEW_BUFFER(buffer, capacity, newSize) \ + if (buffer) { \ diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc new file mode 100644 index 000000000000..1ea1169b786c --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc @@ -0,0 +1,14 @@ +--- third_party/blink/renderer/platform/wtf/stack_util.cc.orig 2019-04-08 08:33:06 UTC ++++ third_party/blink/renderer/platform/wtf/stack_util.cc +@@ -18,6 +18,11 @@ + extern "C" void* __libc_stack_end; // NOLINT + #endif + ++#if defined(OS_FREEBSD) ++#include <sys/signal.h> ++#include <pthread_np.h> ++#endif ++ + namespace WTF { + + size_t GetUnderestimatedStackSize() { diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_threading.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_threading.cc new file mode 100644 index 000000000000..ce944b84e3f4 --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_threading.cc @@ -0,0 +1,29 @@ +--- third_party/blink/renderer/platform/wtf/threading.cc.orig 2019-04-08 08:33:06 UTC ++++ third_party/blink/renderer/platform/wtf/threading.cc +@@ -17,12 +17,16 @@ + #error Blink does not support threading on your platform. + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <sys/syscall.h> + #elif defined(OS_ANDROID) + #include <sys/types.h> + #endif + ++#if defined(OS_BSD) ++#include <pthread_np.h> ++#endif ++ + namespace WTF { + + // Current thread identity +@@ -38,6 +42,8 @@ ThreadIdentifier CurrentThreadSyscall() { + return syscall(__NR_gettid); + #elif defined(OS_ANDROID) + return gettid(); ++#elif defined(OS_BSD) ++ return pthread_getthreadid_np(); + #else + return reinterpret_cast<uintptr_t>(pthread_self()); + #endif diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc new file mode 100644 index 000000000000..941137bdc6b3 --- /dev/null +++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc @@ -0,0 +1,22 @@ +--- third_party/blink/renderer/platform/wtf/threading_pthreads.cc.orig 2019-04-08 08:33:06 UTC ++++ third_party/blink/renderer/platform/wtf/threading_pthreads.cc +@@ -52,12 +52,17 @@ + #include <objc/objc-auto.h> + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <sys/syscall.h> + #endif + +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + #include <unistd.h> ++#endif ++ ++#if defined(OS_BSD) ++#include <sys/signal.h> ++#include <pthread_np.h> + #endif + + namespace WTF { diff --git a/devel/electron5/files/patch-third__party_boringssl_BUILD.gn b/devel/electron5/files/patch-third__party_boringssl_BUILD.gn new file mode 100644 index 000000000000..9f542ecdcd1e --- /dev/null +++ b/devel/electron5/files/patch-third__party_boringssl_BUILD.gn @@ -0,0 +1,36 @@ +--- third_party/boringssl/BUILD.gn.orig 2019-04-09 12:48:19 UTC ++++ third_party/boringssl/BUILD.gn +@@ -84,7 +84,7 @@ if (is_win && !is_msan && current_cpu != "arm64") { + } else if (current_cpu == "x64") { + if (is_mac) { + sources += crypto_sources_mac_x86_64 +- } else if (is_linux || is_android) { ++ } else if (is_linux || is_bsd || is_android) { + sources += crypto_sources_linux_x86_64 + } else { + public_configs = [ ":no_asm_config" ] +@@ -92,13 +92,13 @@ if (is_win && !is_msan && current_cpu != "arm64") { + } else if (current_cpu == "x86") { + if (is_mac) { + sources += crypto_sources_mac_x86 +- } else if (is_linux || is_android) { ++ } else if (is_linux || is_bsd || is_android) { + sources += crypto_sources_linux_x86 + } else { + public_configs = [ ":no_asm_config" ] + } + } else if (current_cpu == "arm") { +- if (is_linux || is_android) { ++ if (is_linux || is_bsd || is_android) { + sources += crypto_sources_linux_arm + } else if (is_ios) { + sources += crypto_sources_ios_arm +@@ -106,7 +106,7 @@ if (is_win && !is_msan && current_cpu != "arm64") { + public_configs = [ ":no_asm_config" ] + } + } else if (current_cpu == "arm64") { +- if (is_linux || is_android) { ++ if (is_linux || is_bsd || is_android) { + sources += crypto_sources_linux_aarch64 + } else if (is_ios) { + sources += crypto_sources_ios_aarch64 diff --git a/devel/electron5/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c b/devel/electron5/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c new file mode 100644 index 000000000000..301402403373 --- /dev/null +++ b/devel/electron5/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c @@ -0,0 +1,63 @@ +--- third_party/boringssl/src/crypto/cpu-aarch64-linux.c.orig 2019-04-20 10:47:08 UTC ++++ third_party/boringssl/src/crypto/cpu-aarch64-linux.c +@@ -14,49 +14,35 @@ + + #include <openssl/cpu.h> + +-#if defined(OPENSSL_AARCH64) && defined(OPENSSL_LINUX) && \ +- !defined(OPENSSL_STATIC_ARMCAP) ++#if defined(OPENSSL_AARCH64) + +-#include <sys/auxv.h> +- + #include <openssl/arm_arch.h> + + #include "internal.h" + +- + extern uint32_t OPENSSL_armcap_P; + ++#include <sys/types.h> ++#include <machine/armreg.h> ++ + void OPENSSL_cpuid_setup(void) { +- unsigned long hwcap = getauxval(AT_HWCAP); ++ uint64_t id_aa64isar0; + +- // See /usr/include/asm/hwcap.h on an aarch64 installation for the source of +- // these values. +- static const unsigned long kNEON = 1 << 1; +- static const unsigned long kAES = 1 << 3; +- static const unsigned long kPMULL = 1 << 4; +- static const unsigned long kSHA1 = 1 << 5; +- static const unsigned long kSHA256 = 1 << 6; ++ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1); + +- if ((hwcap & kNEON) == 0) { +- // Matching OpenSSL, if NEON is missing, don't report other features +- // either. +- return; +- } +- + OPENSSL_armcap_P |= ARMV7_NEON; + +- if (hwcap & kAES) { ++ if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_BASE) { + OPENSSL_armcap_P |= ARMV8_AES; + } +- if (hwcap & kPMULL) { ++ if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) { + OPENSSL_armcap_P |= ARMV8_PMULL; + } +- if (hwcap & kSHA1) { ++ if (ID_AA64ISAR0_SHA1(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE) { + OPENSSL_armcap_P |= ARMV8_SHA1; + } +- if (hwcap & kSHA256) { ++ if(ID_AA64ISAR0_SHA2(id_aa64isar0) == ID_AA64ISAR0_SHA2_BASE) { + OPENSSL_armcap_P |= ARMV8_SHA256; + } + } +- +-#endif // OPENSSL_AARCH64 && !OPENSSL_STATIC_ARMCAP ++#endif // OPENSSL_AARCH64 diff --git a/devel/electron5/files/patch-third__party_boringssl_src_crypto_ex__data.c b/devel/electron5/files/patch-third__party_boringssl_src_crypto_ex__data.c new file mode 100644 index 000000000000..2311dfba1b64 --- /dev/null +++ b/devel/electron5/files/patch-third__party_boringssl_src_crypto_ex__data.c @@ -0,0 +1,13 @@ +--- third_party/boringssl/src/crypto/ex_data.c.orig 2019-04-08 08:20:18 UTC ++++ third_party/boringssl/src/crypto/ex_data.c +@@ -186,7 +186,9 @@ int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int index, + } + } + +- sk_void_set(ad->sk, index, val); ++ // expression result unused; should this cast be to 'void'? ++ // seems it should, feel free to investigate those #def ++ (void) sk_void_set(ad->sk, index, val); + return 1; + } + diff --git a/devel/electron5/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h b/devel/electron5/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h new file mode 100644 index 000000000000..747642a65399 --- /dev/null +++ b/devel/electron5/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h @@ -0,0 +1,11 @@ +--- third_party/breakpad/breakpad/src/common/simple_string_dictionary.h.orig 2019-04-08 08:19:57 UTC ++++ third_party/breakpad/breakpad/src/common/simple_string_dictionary.h +@@ -33,7 +33,7 @@ + #include <assert.h> + #include <string.h> + +-#include "common/basictypes.h" ++#include "third_party/breakpad/breakpad/src/common/basictypes.h" + + namespace google_breakpad { + diff --git a/devel/electron5/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h b/devel/electron5/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h new file mode 100644 index 000000000000..6082c62aa021 --- /dev/null +++ b/devel/electron5/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h @@ -0,0 +1,11 @@ +--- third_party/cacheinvalidation/src/google/cacheinvalidation/include/types.h.orig 2019-04-08 08:19:06 UTC ++++ third_party/cacheinvalidation/src/google/cacheinvalidation/include/types.h +@@ -334,6 +334,8 @@ class Status { + */ + PERMANENT_FAILURE + }; ++ ++ Status() : code_(SUCCESS), message_() {} + + /* Creates a new Status object given the code and message. */ + Status(Code code, const string& message) : code_(code), message_(message) {} diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni b/devel/electron5/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni new file mode 100644 index 000000000000..1610687b2c8e --- /dev/null +++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni @@ -0,0 +1,11 @@ +--- third_party/crashpad/crashpad/build/crashpad_buildconfig.gni.orig 2019-04-08 08:19:06 UTC ++++ third_party/crashpad/crashpad/build/crashpad_buildconfig.gni +@@ -38,7 +38,7 @@ crashpad_is_standalone = crashpad_dependencies == "sta + if (crashpad_is_in_chromium) { + crashpad_is_mac = is_mac + crashpad_is_win = is_win +- crashpad_is_linux = is_linux ++ crashpad_is_linux = is_linux && !is_bsd + crashpad_is_android = is_android + crashpad_is_fuchsia = is_fuchsia + diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_client_BUILD.gn b/devel/electron5/files/patch-third__party_crashpad_crashpad_client_BUILD.gn new file mode 100644 index 000000000000..4fb6b49e546b --- /dev/null +++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_client_BUILD.gn @@ -0,0 +1,15 @@ +--- third_party/crashpad/crashpad/client/BUILD.gn.orig 2019-04-08 08:19:06 UTC ++++ third_party/crashpad/crashpad/client/BUILD.gn +@@ -71,6 +71,12 @@ static_library("client") { + sources += [ "crashpad_client_fuchsia.cc" ] + } + ++ if (crashpad_is_posix) { ++ sources += [ ++ "crashpad_client_posix.cc", ++ ] ++ } ++ + if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) { + sources += [ "crash_report_database_generic.cc" ] + } diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc b/devel/electron5/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc new file mode 100644 index 000000000000..deae8fe68399 --- /dev/null +++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc @@ -0,0 +1,41 @@ +--- third_party/crashpad/crashpad/client/crashpad_client_posix.cc.orig 2019-04-09 12:48:49 UTC ++++ third_party/crashpad/crashpad/client/crashpad_client_posix.cc +@@ -0,0 +1,38 @@ ++// Copyright 2017 The Crashpad Authors. All rights reserved. ++// ++// Licensed under the Apache License, Version 2.0 (the "License"); ++// you may not use this file except in compliance with the License. ++// You may obtain a copy of the License at ++// ++// http://www.apache.org/licenses/LICENSE-2.0 ++// ++// Unless required by applicable law or agreed to in writing, software ++// distributed under the License is distributed on an "AS IS" BASIS, ++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++// See the License for the specific language governing permissions and ++// limitations under the License. ++ ++#include "client/crashpad_client.h" ++ ++#include "base/logging.h" ++ ++namespace crashpad { ++ ++CrashpadClient::CrashpadClient() {} ++ ++CrashpadClient::~CrashpadClient() {} ++ ++bool CrashpadClient::StartHandler( ++ const base::FilePath& handler, ++ const base::FilePath& database, ++ const base::FilePath& metrics_dir, ++ const std::string& url, ++ const std::map<std::string, std::string>& annotations, ++ const std::vector<std::string>& arguments, ++ bool restartable, ++ bool asynchronous_start) { ++ NOTREACHED(); // TODO(scottmg): https://crashpad.chromium.org/bug/196 ++ return false; ++} ++ ++} // namespace crashpad diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h new file mode 100644 index 000000000000..87dc1a47e85b --- /dev/null +++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h @@ -0,0 +1,20 @@ +--- third_party/crashpad/crashpad/util/misc/address_types.h.orig 2019-04-08 08:19:06 UTC ++++ third_party/crashpad/crashpad/util/misc/address_types.h +@@ -25,7 +25,7 @@ + #include <mach/mach_types.h> + #elif defined(OS_WIN) + #include "util/win/address_types.h" +-#elif defined(OS_LINUX) || defined(OS_ANDROID) ++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + #include "util/linux/address_types.h" + #elif defined(OS_FUCHSIA) + #include <zircon/types.h> +@@ -55,7 +55,7 @@ using VMSize = mach_vm_size_t; + using VMAddress = WinVMAddress; + using VMSize = WinVMSize; + +-#elif defined(OS_LINUX) || defined(OS_ANDROID) ++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + + using VMAddress = LinuxVMAddress; + using VMSize = LinuxVMSize; diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h new file mode 100644 index 000000000000..92cc4b47decc --- /dev/null +++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h @@ -0,0 +1,20 @@ +--- third_party/crashpad/crashpad/util/misc/capture_context.h.orig 2019-04-08 08:19:06 UTC ++++ third_party/crashpad/crashpad/util/misc/capture_context.h +@@ -21,7 +21,7 @@ + #include <mach/mach.h> + #elif defined(OS_WIN) + #include <windows.h> +-#elif defined(OS_LINUX) || defined(OS_ANDROID) ++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + #include <ucontext.h> + #elif defined(OS_FUCHSIA) + #include <signal.h> +@@ -35,7 +35,7 @@ using NativeCPUContext = x86_thread_state; + #endif + #elif defined(OS_WIN) + using NativeCPUContext = CONTEXT; +-#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) ++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) + using NativeCPUContext = ucontext_t; + #endif // OS_MACOSX + diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc new file mode 100644 index 000000000000..74cc0a55ae5e --- /dev/null +++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc @@ -0,0 +1,11 @@ +--- third_party/crashpad/crashpad/util/misc/metrics.cc.orig 2019-04-08 08:19:06 UTC ++++ third_party/crashpad/crashpad/util/misc/metrics.cc +@@ -25,7 +25,7 @@ + #define METRICS_OS_NAME "Win" + #elif defined(OS_ANDROID) + #define METRICS_OS_NAME "Android" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #define METRICS_OS_NAME "Linux" + #elif defined(OS_FUCHSIA) + #define METRICS_OS_NAME "Fuchsia" diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc new file mode 100644 index 000000000000..832c99d5cf4e --- /dev/null +++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc @@ -0,0 +1,11 @@ +--- third_party/crashpad/crashpad/util/misc/uuid.cc.orig 2019-04-08 08:19:06 UTC ++++ third_party/crashpad/crashpad/util/misc/uuid.cc +@@ -95,7 +95,7 @@ bool UUID::InitializeWithNew() { + InitializeFromBytes(uuid); + return true; + #elif defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || \ +- defined(OS_FUCHSIA) ++ defined(OS_FUCHSIA) || defined(OS_BSD) + // Linux, Android, and Fuchsia do not provide a UUID generator in a + // widely-available system library. On Linux and Android, uuid_generate() + // from libuuid is not available everywhere. diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc new file mode 100644 index 000000000000..7eeddd3fef9c --- /dev/null +++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc @@ -0,0 +1,29 @@ +--- third_party/crashpad/crashpad/util/posix/close_multiple.cc.orig 2019-04-08 08:19:07 UTC ++++ third_party/crashpad/crashpad/util/posix/close_multiple.cc +@@ -31,7 +31,7 @@ + #include "util/file/directory_reader.h" + #include "util/misc/implicit_cast.h" + +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) + #include <sys/sysctl.h> + #endif + +@@ -72,7 +72,7 @@ void CloseNowOrOnExec(int fd, bool ebadf_ok) { + // This is an advantage over looping over all possible file descriptors, because + // no attempt needs to be made to close file descriptors that are not open. + bool CloseMultipleNowOrOnExecUsingFDDir(int min_fd, int preserve_fd) { +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) + static constexpr char kFDDir[] = "/dev/fd"; + #elif defined(OS_LINUX) || defined(OS_ANDROID) + static constexpr char kFDDir[] = "/proc/self/fd"; +@@ -146,7 +146,7 @@ void CloseMultipleNowOrOnExec(int fd, int preserve_fd) + // while the system is running, but it’s still a better upper bound than the + // current RLIMIT_NOFILE value. + +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) + // See 10.11.6 xnu-3248.60.10/bsd/kern/kern_resource.c maxfilesperproc, + // referenced by dosetrlimit(). + int oid[] = {CTL_KERN, KERN_MAXFILESPERPROC}; diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc new file mode 100644 index 000000000000..e448d8c90254 --- /dev/null +++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc @@ -0,0 +1,11 @@ +--- third_party/crashpad/crashpad/util/posix/drop_privileges.cc.orig 2019-04-08 08:19:07 UTC ++++ third_party/crashpad/crashpad/util/posix/drop_privileges.cc +@@ -23,7 +23,7 @@ void DropPrivileges() { + gid_t gid = getgid(); + uid_t uid = getuid(); + +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) + // Based on the POSIX.1-2008 2013 edition documentation for setreuid() and + // setregid(), setreuid() and setregid() alone should be sufficient to drop + // privileges. The standard specifies that the saved ID should be set to the diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc new file mode 100644 index 000000000000..c24f14bbdd7e --- /dev/null +++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc @@ -0,0 +1,40 @@ +--- third_party/crashpad/crashpad/util/posix/signals.cc.orig 2019-04-08 08:19:07 UTC ++++ third_party/crashpad/crashpad/util/posix/signals.cc +@@ -45,10 +45,10 @@ constexpr int kCrashSignals[] = { + #if defined(SIGEMT) + SIGEMT, + #endif // defined(SIGEMT) +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + SIGXCPU, + SIGXFSZ, +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + }; + + // These are the non-core-generating but terminating signals. +@@ -85,9 +85,9 @@ constexpr int kTerminateSignals[] = { + SIGXCPU, + SIGXFSZ, + #endif // defined(OS_MACOSX) +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + SIGIO, +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + }; + + bool InstallHandlers(const std::vector<int>& signals, +@@ -216,8 +216,12 @@ bool Signals::WillSignalReraiseAutonomously(const sigi + // remains. See 10.12.3 xnu-3789.41.3/bsd/kern/kern_sig.c + // psignal_internal(). + (code > 0 && ++#if defined(SI_ASYNCIO) + code != SI_ASYNCIO && ++#endif ++#if defined(SI_MESGQ) + code != SI_MESGQ && ++#endif + code != SI_QUEUE && + code != SI_TIMER && + code != SI_USER && diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc new file mode 100644 index 000000000000..f1602bf0fefb --- /dev/null +++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc @@ -0,0 +1,20 @@ +--- third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc.orig 2019-04-08 08:19:07 UTC ++++ third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc +@@ -64,7 +64,7 @@ constexpr const char* kSignalNames[] = { + "INFO", + "USR1", + "USR2", +-#elif defined(OS_LINUX) || defined(OS_ANDROID) ++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + #if defined(ARCH_CPU_MIPS_FAMILY) + "HUP", + "INT", +@@ -135,7 +135,7 @@ constexpr const char* kSignalNames[] = { + #endif // defined(ARCH_CPU_MIPS_FAMILY) + #endif + }; +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + // NSIG is 64 to account for real-time signals. + static_assert(base::size(kSignalNames) == 32, "kSignalNames length"); + #else diff --git a/devel/electron5/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h b/devel/electron5/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h new file mode 100644 index 000000000000..55f002d1bd79 --- /dev/null +++ b/devel/electron5/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h @@ -0,0 +1,53 @@ +--- third_party/crc32c/src/src/crc32c_arm64_linux_check.h.orig 2019-04-20 10:46:48 UTC ++++ third_party/crc32c/src/src/crc32c_arm64_linux_check.h +@@ -7,8 +7,6 @@ + #ifndef CRC32C_CRC32C_ARM_LINUX_CHECK_H_ + #define CRC32C_CRC32C_ARM_LINUX_CHECK_H_ + +-// X86-specific code checking for the availability of SSE4.2 instructions. +- + #include <cstddef> + #include <cstdint> + +@@ -16,30 +14,19 @@ + + #if HAVE_ARM64_CRC32C + +-#if HAVE_STRONG_GETAUXVAL +-#include <sys/auxv.h> +-#elif HAVE_WEAK_GETAUXVAL +-// getauxval() is not available on Android until API level 20. Link it as a weak +-// symbol. +-extern "C" unsigned long getauxval(unsigned long type) __attribute__((weak)); +- +-#define AT_HWCAP 16 +-#endif // HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL +- ++#include <machine/armreg.h> ++#include <sys/types.h> + namespace crc32c { + +-inline bool CanUseArm64Linux() { +-#if HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL +- // From 'arch/arm64/include/uapi/asm/hwcap.h' in Linux kernel source code. +- constexpr unsigned long kHWCAP_PMULL = 1 << 4; +- constexpr unsigned long kHWCAP_CRC32 = 1 << 7; +- unsigned long hwcap = (&getauxval != nullptr) ? getauxval(AT_HWCAP) : 0; +- return (hwcap & (kHWCAP_PMULL | kHWCAP_CRC32)) == +- (kHWCAP_PMULL | kHWCAP_CRC32); +-#else +- return false; +-#endif // HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL +-} ++ inline bool CanUseArm64Linux() { ++ uint64_t id_aa64isar0; ++ ++ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1); ++ if ((ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) && \ ++ (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE)) ++ return true; ++ return false; ++ } + + } // namespace crc32c + diff --git a/devel/electron5/files/patch-third__party_electron__node_deps_uv_BUILD.gn b/devel/electron5/files/patch-third__party_electron__node_deps_uv_BUILD.gn new file mode 100644 index 000000000000..d83be9372341 --- /dev/null +++ b/devel/electron5/files/patch-third__party_electron__node_deps_uv_BUILD.gn @@ -0,0 +1,45 @@ +--- third_party/electron_node/deps/uv/BUILD.gn.orig 2019-03-05 17:17:42 UTC ++++ third_party/electron_node/deps/uv/BUILD.gn +@@ -3,7 +3,7 @@ config("libuv_config") { + + defines = [] + +- if (is_linux) { ++ if (is_linux && !is_bsd) { + defines += [ "_POSIX_C_SOURCE=200112" ] + } + if (!is_win) { +@@ -147,7 +147,7 @@ static_library("uv") { + libs += [ "m" ] + ldflags += [ "-pthread" ] + } +- if (is_mac || is_linux) { ++ if (is_mac || (is_linux && !is_bsd)) { + sources += [ "src/unix/proctitle.c" ] + } + if (is_mac) { +@@ -161,7 +161,7 @@ static_library("uv") { + "_DARWIN_UNLIMITED_SELECT=1", + ] + } +- if (is_linux) { ++ if (is_linux && !is_bsd) { + defines += [ "_GNU_SOURCE" ] + sources += [ + "src/unix/linux-core.c", +@@ -181,6 +181,15 @@ static_library("uv") { + sources += [ + "src/unix/bsd-ifaddrs.c", + "src/unix/kqueue.c", ++ ] ++ } ++ if (is_bsd) { ++ sources += [ ++ "src/unix/bsd-ifaddrs.c", ++ "src/unix/bsd-proctitle.c", ++ "src/unix/freebsd.c", ++ "src/unix/kqueue.c", ++ "src/unix/posix-hrtime.c", + ] + } + } diff --git a/devel/electron5/files/patch-third__party_ffmpeg_libavutil_mem.c b/devel/electron5/files/patch-third__party_ffmpeg_libavutil_mem.c new file mode 100644 index 000000000000..7304d1869b3f --- /dev/null +++ b/devel/electron5/files/patch-third__party_ffmpeg_libavutil_mem.c @@ -0,0 +1,12 @@ +--- third_party/ffmpeg/libavutil/mem.c.orig 2019-04-08 08:34:04 UTC ++++ third_party/ffmpeg/libavutil/mem.c +@@ -32,9 +32,6 @@ + #include <stdint.h> + #include <stdlib.h> + #include <string.h> +-#if HAVE_MALLOC_H +-#include <malloc.h> +-#endif + + #include "avassert.h" + #include "avutil.h" diff --git a/devel/electron5/files/patch-third__party_googletest_src_googletest_include_gtest_internal_gtest-port.h b/devel/electron5/files/patch-third__party_googletest_src_googletest_include_gtest_internal_gtest-port.h new file mode 100644 index 000000000000..3a14afec3e86 --- /dev/null +++ b/devel/electron5/files/patch-third__party_googletest_src_googletest_include_gtest_internal_gtest-port.h @@ -0,0 +1,11 @@ +--- third_party/googletest/src/googletest/include/gtest/internal/gtest-port.h.orig 2019-04-08 08:34:16 UTC ++++ third_party/googletest/src/googletest/include/gtest/internal/gtest-port.h +@@ -623,7 +623,7 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SE + (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_AIX || GTEST_OS_OS2) + + // Determines whether test results can be streamed to a socket. +-#if GTEST_OS_LINUX ++#if GTEST_OS_LINUX || GTEST_OS_FREEBSD + # define GTEST_CAN_STREAM_RESULTS_ 1 + #endif + diff --git a/devel/electron5/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc b/devel/electron5/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc new file mode 100644 index 000000000000..975546cfb897 --- /dev/null +++ b/devel/electron5/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc @@ -0,0 +1,43 @@ +--- third_party/googletest/src/googletest/src/gtest-port.cc.orig 2019-04-08 08:34:16 UTC ++++ third_party/googletest/src/googletest/src/gtest-port.cc +@@ -55,6 +55,11 @@ + # include <mach/vm_map.h> + #endif // GTEST_OS_MAC + ++#if GTEST_OS_FREEBSD ++#include <sys/sysctl.h> ++#include <sys/user.h> ++#endif ++ + #if GTEST_OS_QNX + # include <devctl.h> + # include <fcntl.h> +@@ -129,6 +134,28 @@ size_t GetThreadCount() { + } else { + return 0; + } ++} ++ ++#elif GTEST_OS_FREEBSD ++ ++#define KP_NLWP(kp) (kp.ki_numthreads) ++ ++// Return the number of threads running in the process, or 0 to indicate that ++// we cannot detect it. ++size_t GetThreadCount() { ++ int mib[] = { ++ CTL_KERN, ++ KERN_PROC, ++ KERN_PROC_PID, ++ getpid(), ++ }; ++ u_int miblen = sizeof(mib) / sizeof(mib[0]); ++ struct kinfo_proc(info); ++ size_t size = sizeof(info); ++ if (sysctl(mib, miblen, &info, &size, NULL, 0)) { ++ return 0; ++ } ++ return KP_NLWP(info); + } + + #elif GTEST_OS_QNX diff --git a/devel/electron5/files/patch-third__party_googletest_src_googletest_src_gtest.cc b/devel/electron5/files/patch-third__party_googletest_src_googletest_src_gtest.cc new file mode 100644 index 000000000000..8965b5c8a4f6 --- /dev/null +++ b/devel/electron5/files/patch-third__party_googletest_src_googletest_src_gtest.cc @@ -0,0 +1,10 @@ +--- third_party/googletest/src/googletest/src/gtest.cc.orig 2019-04-08 08:34:16 UTC ++++ third_party/googletest/src/googletest/src/gtest.cc +@@ -114,6 +114,7 @@ + + #if GTEST_CAN_STREAM_RESULTS_ + # include <arpa/inet.h> // NOLINT ++# include <sys/socket.h> // NOLINT + # include <netdb.h> // NOLINT + # include <sys/socket.h> // NOLINT + # include <sys/types.h> // NOLINT diff --git a/devel/electron5/files/patch-third__party_googletest_src_googletest_test_googletest-port-test.cc b/devel/electron5/files/patch-third__party_googletest_src_googletest_test_googletest-port-test.cc new file mode 100644 index 000000000000..9b63ca59ceac --- /dev/null +++ b/devel/electron5/files/patch-third__party_googletest_src_googletest_test_googletest-port-test.cc @@ -0,0 +1,11 @@ +--- third_party/googletest/src/googletest/test/googletest-port-test.cc.orig 2019-04-08 08:34:16 UTC ++++ third_party/googletest/src/googletest/test/googletest-port-test.cc +@@ -286,7 +286,7 @@ TEST(FormatCompilerIndependentFileLocationTest, Format + EXPECT_EQ("unknown file", FormatCompilerIndependentFileLocation(nullptr, -1)); + } + +-#if GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_QNX || GTEST_OS_FUCHSIA ++#if GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_QNX || GTEST_OS_FUCHSIA || GTEST_OS_FREEBSD + void* ThreadFunc(void* data) { + internal::Mutex* mutex = static_cast<internal::Mutex*>(data); + mutex->Lock(); diff --git a/devel/electron5/files/patch-third__party_leveldatabase_env__chromium.cc b/devel/electron5/files/patch-third__party_leveldatabase_env__chromium.cc new file mode 100644 index 000000000000..e6c2135d1aa1 --- /dev/null +++ b/devel/electron5/files/patch-third__party_leveldatabase_env__chromium.cc @@ -0,0 +1,14 @@ +--- third_party/leveldatabase/env_chromium.cc.orig 2019-04-08 08:33:17 UTC ++++ third_party/leveldatabase/env_chromium.cc +@@ -39,7 +39,11 @@ + #include "third_party/leveldatabase/leveldb_chrome.h" + #include "third_party/leveldatabase/leveldb_features.h" + #include "third_party/leveldatabase/src/include/leveldb/options.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + + using base::FilePath; + using base::trace_event::MemoryAllocatorDump; diff --git a/devel/electron5/files/patch-third__party_libXNVCtrl_NVCtrl.c b/devel/electron5/files/patch-third__party_libXNVCtrl_NVCtrl.c new file mode 100644 index 000000000000..a8e1b30f7938 --- /dev/null +++ b/devel/electron5/files/patch-third__party_libXNVCtrl_NVCtrl.c @@ -0,0 +1,25 @@ +--- third_party/libXNVCtrl/NVCtrl.c.orig 2019-04-08 08:19:07 UTC ++++ third_party/libXNVCtrl/NVCtrl.c +@@ -27,10 +27,6 @@ + * libXNVCtrl library properly protects the Display connection. + */ + +-#if !defined(XTHREADS) +-#define XTHREADS +-#endif /* XTHREADS */ +- + #define NEED_EVENTS + #define NEED_REPLIES + #include <stdint.h> +@@ -39,6 +35,11 @@ + #include <X11/Xutil.h> + #include <X11/extensions/Xext.h> + #include <X11/extensions/extutil.h> ++ ++#if !defined(XTHREADS) ++#define XTHREADS ++#endif /* XTHREADS */ ++ + #include "NVCtrlLib.h" + #include "nv_control.h" + diff --git a/devel/electron5/files/patch-third__party_libjingle__xmpp_task__runner_taskrunner.cc b/devel/electron5/files/patch-third__party_libjingle__xmpp_task__runner_taskrunner.cc new file mode 100644 index 000000000000..b0cec81984e5 --- /dev/null +++ b/devel/electron5/files/patch-third__party_libjingle__xmpp_task__runner_taskrunner.cc @@ -0,0 +1,11 @@ +--- third_party/libjingle_xmpp/task_runner/taskrunner.cc.orig 2019-04-08 08:33:17 UTC ++++ third_party/libjingle_xmpp/task_runner/taskrunner.cc +@@ -80,7 +80,7 @@ void TaskRunner::InternalRunTasks(bool in_destructor) + std::vector<Task *>::iterator it; + it = std::remove(tasks_.begin(), + tasks_.end(), +- reinterpret_cast<Task *>(NULL)); ++ static_cast<Task *>(NULL)); + + tasks_.erase(it, tasks_.end()); + tasks_running_ = false; diff --git a/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h b/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h new file mode 100644 index 000000000000..a51c272ab418 --- /dev/null +++ b/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h @@ -0,0 +1,11 @@ +--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/memory/singleton.h.orig 2019-04-08 08:21:36 UTC ++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/memory/singleton.h +@@ -56,7 +56,7 @@ template <class T> boost::once_flag Singleton<T>::flag + #include "phonenumbers/base/logging.h" + #include "phonenumbers/base/thread_checker.h" + +-#if !defined(__linux__) && !defined(__APPLE__) ++#if !defined(__linux__) && !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__OpenBSD__) + + namespace i18n { + namespace phonenumbers { diff --git a/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h b/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h new file mode 100644 index 000000000000..8dd61badaf0b --- /dev/null +++ b/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h @@ -0,0 +1,11 @@ +--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/synchronization/lock.h.orig 2019-04-08 08:21:36 UTC ++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/synchronization/lock.h +@@ -37,7 +37,7 @@ typedef boost::mutex::scoped_lock AutoLock; + // Dummy lock implementation on non-POSIX platforms. If you are running on a + // different platform and care about thread-safety, please compile with + // -DI18N_PHONENUMBERS_USE_BOOST. +-#if !defined(__linux__) && !defined(__APPLE__) ++#if !defined(__linux__) && !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__OpenBSD__) + + namespace i18n { + namespace phonenumbers { diff --git a/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h b/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h new file mode 100644 index 000000000000..aedc6260ca23 --- /dev/null +++ b/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h @@ -0,0 +1,19 @@ +--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/thread_checker.h.orig 2019-04-08 08:21:36 UTC ++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/thread_checker.h +@@ -23,6 +23,7 @@ + // user of the library know that it can't be used in a thread-safe manner when + // it is not depending on Boost. + #if !defined(__linux__) && !defined(__APPLE__) && \ ++ !defined(__FreeBSD__) && !defined(__OpenBSD__) && \ + !defined(I18N_PHONENUMBERS_NO_THREAD_SAFETY) + #error Building without Boost, please provide \ + -DI18N_PHONENUMBERS_NO_THREAD_SAFETY +@@ -31,7 +32,7 @@ + #endif + + #if !defined(NDEBUG) && !defined(I18N_PHONENUMBERS_USE_BOOST) && \ +- (defined(__linux__) || defined(__apple__)) ++ (defined(__linux__) || defined(__apple__)) || defined(__FreeBSD__) || defined(__OpenBSD__) + + #include <pthread.h> + diff --git a/devel/electron5/files/patch-third__party_libyuv_include_libyuv_row.h b/devel/electron5/files/patch-third__party_libyuv_include_libyuv_row.h new file mode 100644 index 000000000000..28476ef11186 --- /dev/null +++ b/devel/electron5/files/patch-third__party_libyuv_include_libyuv_row.h @@ -0,0 +1,37 @@ +--- third_party/libyuv/include/libyuv/row.h.orig 2019-04-08 08:21:44 UTC ++++ third_party/libyuv/include/libyuv/row.h +@@ -157,10 +157,14 @@ extern "C" { + #define HAS_ARGBSHADEROW_SSE2 + #define HAS_ARGBSUBTRACTROW_SSE2 + #define HAS_ARGBUNATTENUATEROW_SSE2 ++#if !(defined(__i386__) && defined(__GNUC__)) + #define HAS_BLENDPLANEROW_SSSE3 ++#endif + #define HAS_COMPUTECUMULATIVESUMROW_SSE2 + #define HAS_CUMULATIVESUMTOAVERAGEROW_SSE2 ++#if !(defined(__i386__) && defined(__GNUC__)) + #define HAS_INTERPOLATEROW_SSSE3 ++#endif + #define HAS_RGBCOLORTABLEROW_X86 + #define HAS_SOBELROW_SSE2 + #define HAS_SOBELTOPLANEROW_SSE2 +@@ -206,7 +210,9 @@ extern "C" { + #define HAS_I422TORGB565ROW_AVX2 + #define HAS_I422TORGBAROW_AVX2 + #define HAS_I444TOARGBROW_AVX2 ++#if !(defined(__i386__) && defined(__GNUC__)) + #define HAS_INTERPOLATEROW_AVX2 ++#endif + #define HAS_J422TOARGBROW_AVX2 + #define HAS_MERGEUVROW_AVX2 + #define HAS_MIRRORROW_AVX2 +@@ -231,7 +237,9 @@ extern "C" { + #define HAS_ARGBMULTIPLYROW_AVX2 + #define HAS_ARGBSUBTRACTROW_AVX2 + #define HAS_ARGBUNATTENUATEROW_AVX2 ++#if !(defined(__i386__) && defined(__GNUC__)) + #define HAS_BLENDPLANEROW_AVX2 ++#endif + + #if defined(__x86_64__) || !defined(__pic__) || defined(__clang__) || \ + defined(_MSC_VER) diff --git a/devel/electron5/files/patch-third__party_node_node.py b/devel/electron5/files/patch-third__party_node_node.py new file mode 100644 index 000000000000..2774d7caba08 --- /dev/null +++ b/devel/electron5/files/patch-third__party_node_node.py @@ -0,0 +1,10 @@ +--- third_party/node/node.py.orig 2019-04-08 08:19:08 UTC ++++ third_party/node/node.py +@@ -12,6 +12,7 @@ import sys + def GetBinaryPath(): + return os_path.join(os_path.dirname(__file__), *{ + 'Darwin': ('mac', 'node-darwin-x64', 'bin', 'node'), ++ 'FreeBSD': ('freebsd', 'node-freebsd-x64', 'bin', 'node'), + 'Linux': ('linux', 'node-linux-x64', 'bin', 'node'), + 'Windows': ('win', 'node.exe'), + }[platform.system()]) diff --git a/devel/electron5/files/patch-third__party_pdfium_core_fxcrt_fx__system.h b/devel/electron5/files/patch-third__party_pdfium_core_fxcrt_fx__system.h new file mode 100644 index 000000000000..b260cf1f371b --- /dev/null +++ b/devel/electron5/files/patch-third__party_pdfium_core_fxcrt_fx__system.h @@ -0,0 +1,11 @@ +--- third_party/pdfium/core/fxcrt/fx_system.h.orig 2019-04-08 08:34:28 UTC ++++ third_party/pdfium/core/fxcrt/fx_system.h +@@ -41,7 +41,7 @@ + #elif defined(_WIN64) + #define _FX_OS_ _FX_OS_WIN64_ + #define _FX_PLATFORM_ _FX_PLATFORM_WINDOWS_ +-#elif defined(__linux__) ++#elif defined(__linux__) || defined(__FreeBSD__) + #define _FX_OS_ _FX_OS_LINUX_ + #define _FX_PLATFORM_ _FX_PLATFORM_LINUX_ + #elif defined(__APPLE__) diff --git a/devel/electron5/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp b/devel/electron5/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp new file mode 100644 index 000000000000..28feaf5b8e6d --- /dev/null +++ b/devel/electron5/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp @@ -0,0 +1,14 @@ +--- third_party/pdfium/core/fxge/fx_ge_linux.cpp.orig 2019-04-08 08:34:28 UTC ++++ third_party/pdfium/core/fxge/fx_ge_linux.cpp +@@ -146,9 +146,8 @@ std::unique_ptr<SystemFontInfoIface> SystemFontInfoIfa + const char** pUserPaths) { + auto pInfo = pdfium::MakeUnique<CFX_LinuxFontInfo>(); + if (!pInfo->ParseFontCfg(pUserPaths)) { +- pInfo->AddPath("/usr/share/fonts"); +- pInfo->AddPath("/usr/share/X11/fonts/Type1"); +- pInfo->AddPath("/usr/share/X11/fonts/TTF"); ++ pInfo->AddPath("/usr/local/share/fonts/Type1"); ++ pInfo->AddPath("/usr/local/share/fonts/TTF"); + pInfo->AddPath("/usr/local/share/fonts"); + } + return std::move(pInfo); diff --git a/devel/electron5/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp b/devel/electron5/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp new file mode 100644 index 000000000000..673106a701da --- /dev/null +++ b/devel/electron5/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp @@ -0,0 +1,106 @@ +--- third_party/pdfium/fxjs/cjs_publicmethods.cpp.orig 2019-04-08 08:34:28 UTC ++++ third_party/pdfium/fxjs/cjs_publicmethods.cpp +@@ -85,6 +85,103 @@ constexpr const wchar_t* kDateFormats[] = {L"m/d", + constexpr const wchar_t* kTimeFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss", + L"h:MM:ss tt"}; + ++#if defined(__FreeBSD__) ++/* ++ * cvt.c - IEEE floating point formatting routines for FreeBSD ++ * from GNU libc-4.6.27 ++ */ ++ ++/* ++ * ap_ecvt converts to decimal ++ * the number of digits is specified by ndigit ++ * decpt is set to the position of the decimal point ++ * sign is set to 0 for positive, 1 for negative ++ */ ++ ++#define NDIG 80 ++ ++static char * ++ ap_cvt(double arg, int ndigits, int *decpt, int *sign, int eflag) ++{ ++ register int r2; ++ double fi, fj; ++ register char *p, *p1; ++ static char buf[NDIG]; ++ ++ if (ndigits >= NDIG - 1) ++ ndigits = NDIG - 2; ++ r2 = 0; ++ *sign = 0; ++ p = &buf[0]; ++ if (arg < 0) { ++ *sign = 1; ++ arg = -arg; ++ } ++ arg = modf(arg, &fi); ++ p1 = &buf[NDIG]; ++ /* ++ * Do integer part ++ */ ++ if (fi != 0) { ++ p1 = &buf[NDIG]; ++ while (fi != 0) { ++ fj = modf(fi / 10, &fi); ++ *--p1 = (int) ((fj + .03) * 10) + '0'; ++ r2++; ++ } ++ while (p1 < &buf[NDIG]) ++ *p++ = *p1++; ++ } ++ else if (arg > 0) { ++ while ((fj = arg * 10) < 1) { ++ arg = fj; ++ r2--; ++ } ++ } ++ p1 = &buf[ndigits]; ++ if (eflag == 0) ++ p1 += r2; ++ *decpt = r2; ++ if (p1 < &buf[0]) { ++ buf[0] = '\0'; ++ return (buf); ++ } ++ while (p <= p1 && p < &buf[NDIG]) { ++ arg *= 10; ++ arg = modf(arg, &fj); ++ *p++ = (int) fj + '0'; ++ } ++ if (p1 >= &buf[NDIG]) { ++ buf[NDIG - 1] = '\0'; ++ return (buf); ++ } ++ p = p1; ++ *p1 += 5; ++ while (*p1 > '9') { ++ *p1 = '0'; ++ if (p1 > buf) ++ ++ * --p1; ++ else { ++ *p1 = '1'; ++ (*decpt)++; ++ if (eflag == 0) { ++ if (p > buf) ++ *p = '0'; ++ p++; ++ } ++ } ++ } ++ *p = '\0'; ++ return (buf); ++} ++ ++static char * ++ fcvt(double arg, int ndigits, int *decpt, int *sign) ++{ ++ return (ap_cvt(arg, ndigits, decpt, sign, 0)); ++} ++#endif // defined(__FreeBSD__) ++ + template <typename T> + T StrTrim(const T& str) { + T result = str; diff --git a/devel/electron5/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp b/devel/electron5/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp new file mode 100644 index 000000000000..b4c0a7c66579 --- /dev/null +++ b/devel/electron5/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp @@ -0,0 +1,22 @@ +--- third_party/pdfium/fxjs/fx_date_helpers.cpp.orig 2019-04-08 08:34:28 UTC ++++ third_party/pdfium/fxjs/fx_date_helpers.cpp +@@ -34,6 +34,11 @@ double GetLocalTZA() { + return 0; + time_t t = 0; + FXSYS_time(&t); ++#ifdef __FreeBSD__ ++ struct tm lt; ++ localtime_r(&t, <); ++ return (double)(-(lt.tm_gmtoff * 1000)); ++#else + FXSYS_localtime(&t); + #if _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_ + // In gcc 'timezone' is a global variable declared in time.h. In VC++, that +@@ -42,6 +47,7 @@ double GetLocalTZA() { + _get_timezone(&timezone); + #endif // _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_ + return (double)(-(timezone * 1000)); ++#endif // __FreeBSD__ + } + + int GetDaylightSavingTA(double d) { diff --git a/devel/electron5/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp b/devel/electron5/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp new file mode 100644 index 000000000000..53c6f880525a --- /dev/null +++ b/devel/electron5/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp @@ -0,0 +1,14 @@ +--- third_party/pdfium/xfa/fgas/font/cfx_fontsourceenum_file.cpp.orig 2019-04-08 08:34:28 UTC ++++ third_party/pdfium/xfa/fgas/font/cfx_fontsourceenum_file.cpp +@@ -14,8 +14,9 @@ constexpr char kFolderSeparator = '/'; + + constexpr const char* g_FontFolders[] = { + #if _FX_PLATFORM_ == _FX_PLATFORM_LINUX_ +- "/usr/share/fonts", "/usr/share/X11/fonts/Type1", +- "/usr/share/X11/fonts/TTF", "/usr/local/share/fonts", ++ "/usr/local/share/fonts/Type1", ++ "/usr/local/share/fonts/TTF", ++ "/usr/local/share/fonts", + #elif _FX_PLATFORM_ == _FX_PLATFORM_APPLE_ + "~/Library/Fonts", "/Library/Fonts", "/System/Library/Fonts", + #elif _FX_PLATFORM_ == _FX_PLATFORM_ANDROID_ diff --git a/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_build__config.h b/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_build__config.h new file mode 100644 index 000000000000..6fd1c8c35c5e --- /dev/null +++ b/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_build__config.h @@ -0,0 +1,51 @@ +--- third_party/perfetto/include/perfetto/base/build_config.h.orig 2019-04-08 08:34:47 UTC ++++ third_party/perfetto/include/perfetto/base/build_config.h +@@ -28,6 +28,7 @@ + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 1 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0 ++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0 +@@ -35,13 +36,15 @@ + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 1 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0 ++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0 +-#elif defined(__linux__) ++#elif defined(__linux__) || defined(__FreeBSD__) + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 1 ++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 1 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0 +@@ -49,6 +52,7 @@ + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0 ++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 1 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0 +@@ -56,6 +60,7 @@ + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0 ++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 1 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0 +@@ -63,6 +68,7 @@ + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0 ++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 1 diff --git a/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_event.h b/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_event.h new file mode 100644 index 000000000000..7257341b171e --- /dev/null +++ b/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_event.h @@ -0,0 +1,14 @@ +--- third_party/perfetto/include/perfetto/base/event.h.orig 2019-04-08 08:22:17 UTC ++++ third_party/perfetto/include/perfetto/base/event.h +@@ -20,8 +20,9 @@ + #include "perfetto/base/build_config.h" + #include "perfetto/base/scoped_file.h" + +-#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \ +- PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) ++#if (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \ ++ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)) && \ ++ !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) + #define PERFETTO_USE_EVENTFD() 1 + #else + #define PERFETTO_USE_EVENTFD() 0 diff --git a/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_time.h b/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_time.h new file mode 100644 index 000000000000..32654ee09276 --- /dev/null +++ b/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_time.h @@ -0,0 +1,20 @@ +--- third_party/perfetto/include/perfetto/base/time.h.orig 2019-04-08 08:22:17 UTC ++++ third_party/perfetto/include/perfetto/base/time.h +@@ -123,6 +123,9 @@ inline TimeNanos GetTimeInternalNs(clockid_t clk_id) { + // Return ns from boot. Conversely to GetWallTimeNs, this clock counts also time + // during suspend (when supported). + inline TimeNanos GetBootTimeNs() { ++#if PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) ++ return GetTimeInternalNs(kWallTimeClockSource); ++#else + // Determine if CLOCK_BOOTTIME is available on the first call. + static const clockid_t kBootTimeClockSource = [] { + struct timespec ts = {}; +@@ -130,6 +133,7 @@ inline TimeNanos GetBootTimeNs() { + return res == 0 ? CLOCK_BOOTTIME : kWallTimeClockSource; + }(); + return GetTimeInternalNs(kBootTimeClockSource); ++#endif + } + + inline TimeNanos GetWallTimeNs() { diff --git a/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h b/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h new file mode 100644 index 000000000000..11a9e6542618 --- /dev/null +++ b/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h @@ -0,0 +1,11 @@ +--- third_party/perfetto/include/perfetto/base/watchdog_posix.h.orig 2019-04-08 08:22:17 UTC ++++ third_party/perfetto/include/perfetto/base/watchdog_posix.h +@@ -46,7 +46,7 @@ class Watchdog { + Timer(const Timer&) = delete; + Timer& operator=(const Timer&) = delete; + +- timer_t timerid_ = nullptr; ++ timer_t timerid_ = 0; + }; + virtual ~Watchdog(); + diff --git a/devel/electron5/files/patch-third__party_perfetto_src_base_unix__socket.cc b/devel/electron5/files/patch-third__party_perfetto_src_base_unix__socket.cc new file mode 100644 index 000000000000..9a4029449558 --- /dev/null +++ b/devel/electron5/files/patch-third__party_perfetto_src_base_unix__socket.cc @@ -0,0 +1,12 @@ +--- third_party/perfetto/src/base/unix_socket.cc.orig 2019-04-08 08:34:47 UTC ++++ third_party/perfetto/src/base/unix_socket.cc +@@ -502,7 +502,8 @@ void UnixSocket::DoConnect(const std::string& socket_n + + void UnixSocket::ReadPeerCredentials() { + #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \ +- PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) ++ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \ ++ PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) + struct ucred user_cred; + socklen_t len = sizeof(user_cred); + int fd = sock_raw_.fd(); diff --git a/devel/electron5/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc b/devel/electron5/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc new file mode 100644 index 000000000000..c56d0895324a --- /dev/null +++ b/devel/electron5/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc @@ -0,0 +1,22 @@ +--- third_party/perfetto/src/tracing/core/tracing_service_impl.cc.orig 2019-04-08 08:34:47 UTC ++++ third_party/perfetto/src/tracing/core/tracing_service_impl.cc +@@ -1494,7 +1494,8 @@ TraceBuffer* TracingServiceImpl::GetBufferByID(BufferI + + void TracingServiceImpl::UpdateMemoryGuardrail() { + #if !PERFETTO_BUILDFLAG(PERFETTO_EMBEDDER_BUILD) && \ +- !PERFETTO_BUILDFLAG(PERFETTO_OS_MACOSX) ++ !PERFETTO_BUILDFLAG(PERFETTO_OS_MACOSX) && \ ++ !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) + uint64_t total_buffer_bytes = 0; + + // Sum up all the shared memory buffers. +@@ -1545,7 +1546,8 @@ void TracingServiceImpl::SnapshotClocks(std::vector<Tr + protos::ClockSnapshot* clock_snapshot = packet.mutable_clock_snapshot(); + + #if !PERFETTO_BUILDFLAG(PERFETTO_OS_MACOSX) && \ +- !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) ++ !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) && \ ++ !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) + struct { + clockid_t id; + protos::ClockSnapshot::Clock::Type type; diff --git a/devel/electron5/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h b/devel/electron5/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h new file mode 100644 index 000000000000..8a3ebc80977d --- /dev/null +++ b/devel/electron5/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h @@ -0,0 +1,11 @@ +--- third_party/protobuf/src/google/protobuf/stubs/platform_macros.h.orig 2019-04-08 08:19:09 UTC ++++ third_party/protobuf/src/google/protobuf/stubs/platform_macros.h +@@ -117,7 +117,7 @@ GOOGLE_PROTOBUF_PLATFORM_ERROR + + #undef GOOGLE_PROTOBUF_PLATFORM_ERROR + +-#if defined(GOOGLE_PROTOBUF_OS_ANDROID) || defined(GOOGLE_PROTOBUF_OS_IPHONE) || defined(__OpenBSD__) ++#if defined(GOOGLE_PROTOBUF_OS_ANDROID) || defined(GOOGLE_PROTOBUF_OS_IPHONE) || defined(__FreeBSD__) + // Android ndk does not support the __thread keyword very well yet. Here + // we use pthread_key_create()/pthread_getspecific()/... methods for + // TLS support on android. diff --git a/devel/electron5/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc b/devel/electron5/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc new file mode 100644 index 000000000000..eae95fe49404 --- /dev/null +++ b/devel/electron5/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc @@ -0,0 +1,47 @@ +--- third_party/sfntly/src/cpp/src/sfntly/table/core/cmap_table.cc.orig 2019-04-08 08:22:32 UTC ++++ third_party/sfntly/src/cpp/src/sfntly/table/core/cmap_table.cc +@@ -439,7 +439,7 @@ CMapTable::CMapFormat0::Builder::Builder( + } + + CMapTable::CMapFormat0::Builder::Builder(const CMapId& cmap_id) +- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL), ++ : CMap::Builder(static_cast<ReadableFontData*>(NULL), + CMapFormat::kFormat0, + cmap_id) { + } +@@ -563,7 +563,7 @@ CMapTable::CMapFormat2::Builder::Builder(WritableFontD + : CMapTable::CMap::Builder(data ? down_cast<WritableFontData*>( + data->Slice(offset, data->ReadUShort( + offset + Offset::kFormat0Length))) +- : reinterpret_cast<WritableFontData*>(NULL), ++ : static_cast<WritableFontData*>(NULL), + CMapFormat::kFormat2, cmap_id) { + // TODO(arthurhsu): FIXIT: heavy lifting and leak, need fix. + } +@@ -574,7 +574,7 @@ CMapTable::CMapFormat2::Builder::Builder(ReadableFontD + : CMapTable::CMap::Builder(data ? down_cast<ReadableFontData*>( + data->Slice(offset, data->ReadUShort( + offset + Offset::kFormat0Length))) +- : reinterpret_cast<ReadableFontData*>(NULL), ++ : static_cast<ReadableFontData*>(NULL), + CMapFormat::kFormat2, cmap_id) { + // TODO(arthurhsu): FIXIT: heavy lifting and leak, need fix. + } +@@ -958,7 +958,7 @@ CMapTable::CMapFormat4::Builder::Builder(WritableFontD + CMapTable::CMapFormat4::Builder::Builder(SegmentList* segments, + std::vector<int32_t>* glyph_id_array, + const CMapId& cmap_id) +- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL), ++ : CMap::Builder(static_cast<ReadableFontData*>(NULL), + CMapFormat::kFormat4, cmap_id), + segments_(segments->begin(), segments->end()), + glyph_id_array_(glyph_id_array->begin(), glyph_id_array->end()) { +@@ -966,7 +966,7 @@ CMapTable::CMapFormat4::Builder::Builder(SegmentList* + } + + CMapTable::CMapFormat4::Builder::Builder(const CMapId& cmap_id) +- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL), ++ : CMap::Builder(static_cast<ReadableFontData*>(NULL), + CMapFormat::kFormat4, cmap_id) { + } + diff --git a/devel/electron5/files/patch-third__party_skia_src_core_SkCpu.cpp b/devel/electron5/files/patch-third__party_skia_src_core_SkCpu.cpp new file mode 100644 index 000000000000..a66fb7466947 --- /dev/null +++ b/devel/electron5/files/patch-third__party_skia_src_core_SkCpu.cpp @@ -0,0 +1,19 @@ +--- third_party/skia/src/core/SkCpu.cpp.orig 2019-04-08 08:24:20 UTC ++++ third_party/skia/src/core/SkCpu.cpp +@@ -74,6 +74,8 @@ + #include <sys/auxv.h> + + static uint32_t read_cpu_features() { ++return 0; ++#if 0 + const uint32_t kHWCAP_CRC32 = (1<< 7), + kHWCAP_ASIMDHP = (1<<10); + +@@ -82,6 +84,7 @@ + if (hwcaps & kHWCAP_CRC32 ) { features |= SkCpu::CRC32; } + if (hwcaps & kHWCAP_ASIMDHP) { features |= SkCpu::ASIMDHP; } + return features; ++#endif + } + + #elif defined(SK_CPU_ARM32) && __has_include(<sys/auxv.h>) && \ diff --git a/devel/electron5/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h b/devel/electron5/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h new file mode 100644 index 000000000000..0934db382469 --- /dev/null +++ b/devel/electron5/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h @@ -0,0 +1,11 @@ +--- third_party/skia/src/gpu/GrAutoLocaleSetter.h.orig 2019-04-08 08:24:20 UTC ++++ third_party/skia/src/gpu/GrAutoLocaleSetter.h +@@ -27,7 +27,7 @@ + #define HAVE_XLOCALE 0 + #endif + +-#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION) ++#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION) || defined(__FreeBSD__) + #define HAVE_LOCALE_T 0 + #else + #define HAVE_LOCALE_T 1 diff --git a/devel/electron5/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp b/devel/electron5/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp new file mode 100644 index 000000000000..0f9ed1001591 --- /dev/null +++ b/devel/electron5/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp @@ -0,0 +1,41 @@ +--- third_party/skia/src/images/SkJpegEncoder.cpp.orig 2019-04-08 08:24:20 UTC ++++ third_party/skia/src/images/SkJpegEncoder.cpp +@@ -75,9 +75,14 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr + return (transform_scanline_proc) nullptr; + }; + ++#ifdef JCS_EXTENSIONS + J_COLOR_SPACE jpegColorType = JCS_EXT_RGBA; ++#else ++ J_COLOR_SPACE jpegColorType = JCS_RGB; ++#endif + int numComponents = 0; + switch (srcInfo.colorType()) { ++#ifdef JCS_EXTENSIONS + case kRGBA_8888_SkColorType: + fProc = chooseProc8888(); + jpegColorType = JCS_EXT_RGBA; +@@ -88,6 +93,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr + jpegColorType = JCS_EXT_BGRA; + numComponents = 4; + break; ++#endif + case kRGB_565_SkColorType: + fProc = transform_scanline_565; + jpegColorType = JCS_RGB; +@@ -107,6 +113,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr + jpegColorType = JCS_GRAYSCALE; + numComponents = 1; + break; ++#ifdef JCS_EXTENSIONS + case kRGBA_F16_SkColorType: + if (kUnpremul_SkAlphaType == srcInfo.alphaType() && + options.fAlphaOption == SkJpegEncoder::AlphaOption::kBlendOnBlack) { +@@ -117,6 +124,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr + jpegColorType = JCS_EXT_RGBA; + numComponents = 4; + break; ++#endif + default: + return false; + } diff --git a/devel/electron5/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h b/devel/electron5/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h new file mode 100644 index 000000000000..73e5f6bb9315 --- /dev/null +++ b/devel/electron5/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h @@ -0,0 +1,20 @@ +--- third_party/skia/src/opts/SkRasterPipeline_opts.h.orig 2019-04-08 08:34:33 UTC ++++ third_party/skia/src/opts/SkRasterPipeline_opts.h +@@ -729,7 +729,7 @@ SI F approx_powf(F x, F y) { + } + + SI F from_half(U16 h) { +-#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. ++#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. + return vcvt_f32_f16(h); + + #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512) +@@ -749,7 +749,7 @@ SI F from_half(U16 h) { + } + + SI U16 to_half(F f) { +-#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. ++#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. + return vcvt_f16_f32(f); + + #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512) diff --git a/devel/electron5/files/patch-third__party_skia_src_ports_SkFontHost__FreeType.cpp b/devel/electron5/files/patch-third__party_skia_src_ports_SkFontHost__FreeType.cpp new file mode 100644 index 000000000000..f941b52961c5 --- /dev/null +++ b/devel/electron5/files/patch-third__party_skia_src_ports_SkFontHost__FreeType.cpp @@ -0,0 +1,77 @@ +--- third_party/skia/src/ports/SkFontHost_FreeType.cpp.orig 2019-04-08 08:34:33 UTC ++++ third_party/skia/src/ports/SkFontHost_FreeType.cpp +@@ -122,8 +122,6 @@ class FreeTypeLibrary : SkNoncopyable { (public) + : fGetVarDesignCoordinates(nullptr) + , fGetVarAxisFlags(nullptr) + , fLibrary(nullptr) +- , fIsLCDSupported(false) +- , fLCDExtra(0) + { + if (FT_New_Library(&gFTMemory, &fLibrary)) { + return; +@@ -183,12 +181,7 @@ class FreeTypeLibrary : SkNoncopyable { (public) + } + #endif + +- // Setup LCD filtering. This reduces color fringes for LCD smoothed glyphs. +- // The default has changed over time, so this doesn't mean the same thing to all users. +- if (FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT) == 0) { +- fIsLCDSupported = true; +- fLCDExtra = 2; //Using a filter adds one full pixel to each side. +- } ++ FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT); + } + ~FreeTypeLibrary() { + if (fLibrary) { +@@ -197,8 +190,6 @@ class FreeTypeLibrary : SkNoncopyable { (public) + } + + FT_Library library() { return fLibrary; } +- bool isLCDSupported() { return fIsLCDSupported; } +- int lcdExtra() { return fLCDExtra; } + + // FT_Get_{MM,Var}_{Blend,Design}_Coordinates were added in FreeType 2.7.1. + // Prior to this there was no way to get the coordinates out of the FT_Face. +@@ -215,8 +206,6 @@ class FreeTypeLibrary : SkNoncopyable { (public) + + private: + FT_Library fLibrary; +- bool fIsLCDSupported; +- int fLCDExtra; + + // FT_Library_SetLcdFilterWeights was introduced in FreeType 2.4.0. + // The following platforms provide FreeType of at least 2.4.0. +@@ -713,17 +702,6 @@ void SkTypeface_FreeType::onFilterRec(SkScalerContextR + rec->fTextSize = SkIntToScalar(1 << 14); + } + +- if (isLCD(*rec)) { +- // TODO: re-work so that FreeType is set-up and selected by the SkFontMgr. +- SkAutoMutexAcquire ama(gFTMutex); +- ref_ft_library(); +- if (!gFTLibrary->isLCDSupported()) { +- // If the runtime Freetype library doesn't support LCD, disable it here. +- rec->fMaskFormat = SkMask::kA8_Format; +- } +- unref_ft_library(); +- } +- + SkFontHinting h = rec->getHinting(); + if (kFull_SkFontHinting == h && !isLCD(*rec)) { + // collapse full->normal hinting if we're not doing LCD +@@ -1121,11 +1099,11 @@ bool SkScalerContext_FreeType::getCBoxForLetter(char l + void SkScalerContext_FreeType::updateGlyphIfLCD(SkGlyph* glyph) { + if (glyph->fMaskFormat == SkMask::kLCD16_Format) { + if (fLCDIsVert) { +- glyph->fHeight += gFTLibrary->lcdExtra(); +- glyph->fTop -= gFTLibrary->lcdExtra() >> 1; ++ glyph->fHeight += 2; ++ glyph->fTop -= 1; + } else { +- glyph->fWidth += gFTLibrary->lcdExtra(); +- glyph->fLeft -= gFTLibrary->lcdExtra() >> 1; ++ glyph->fWidth += 2; ++ glyph->fLeft -= 1; + } + } + } diff --git a/devel/electron5/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp b/devel/electron5/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp new file mode 100644 index 000000000000..3b6ecd162363 --- /dev/null +++ b/devel/electron5/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp @@ -0,0 +1,11 @@ +--- third_party/skia/src/ports/SkOSFile_stdio.cpp.orig 2019-04-08 08:24:21 UTC ++++ third_party/skia/src/ports/SkOSFile_stdio.cpp +@@ -129,7 +129,7 @@ void sk_fflush(FILE* f) { + + void sk_fsync(FILE* f) { + #if !defined(_WIN32) && !defined(SK_BUILD_FOR_ANDROID) && !defined(__UCLIBC__) \ +- && !defined(_NEWLIB_VERSION) ++ && !defined(_NEWLIB_VERSION) && !defined(__FreeBSD__) + int fd = fileno(f); + fsync(fd); + #endif diff --git a/devel/electron5/files/patch-third__party_skia_src_sksl_SkSLString.h b/devel/electron5/files/patch-third__party_skia_src_sksl_SkSLString.h new file mode 100644 index 000000000000..9d4eef0772db --- /dev/null +++ b/devel/electron5/files/patch-third__party_skia_src_sksl_SkSLString.h @@ -0,0 +1,11 @@ +--- third_party/skia/src/sksl/SkSLString.h.orig 2019-04-08 08:24:21 UTC ++++ third_party/skia/src/sksl/SkSLString.h +@@ -22,6 +22,8 @@ + #include "SkString.h" + #endif + ++#include <stdarg.h> ++ + namespace SkSL { + + // Represents a (not necessarily null-terminated) slice of a string. diff --git a/devel/electron5/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h b/devel/electron5/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h new file mode 100644 index 000000000000..b0764d404b47 --- /dev/null +++ b/devel/electron5/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h @@ -0,0 +1,11 @@ +--- third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h.orig 2019-04-09 12:48:19 UTC ++++ third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h +@@ -2232,7 +2232,7 @@ remove them if not needed. + #include <mutex> // for std::mutex + #include <atomic> // for std::atomic + +-#if !defined(_WIN32) && !defined(__APPLE__) ++#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__FreeBSD__) + #include <malloc.h> // for aligned_alloc() + #endif + diff --git a/devel/electron5/files/patch-third__party_snappy_src_snappy.h b/devel/electron5/files/patch-third__party_snappy_src_snappy.h new file mode 100644 index 000000000000..0720557b3dad --- /dev/null +++ b/devel/electron5/files/patch-third__party_snappy_src_snappy.h @@ -0,0 +1,20 @@ +--- third_party/snappy/src/snappy.h.orig 2019-05-05 07:27:10 UTC ++++ third_party/snappy/src/snappy.h +@@ -73,7 +73,7 @@ namespace snappy { + // Original contents of *output are lost. + // + // REQUIRES: "input[]" is not an alias of "*output". +- size_t Compress(const char* input, size_t input_length, string* output); ++ size_t Compress(const char* input, size_t input_length, std::string* output); + + // Decompresses "compressed[0,compressed_length-1]" to "*uncompressed". + // Original contents of "*uncompressed" are lost. +@@ -82,7 +82,7 @@ namespace snappy { + // + // returns false if the message is corrupted and could not be decompressed + bool Uncompress(const char* compressed, size_t compressed_length, +- string* uncompressed); ++ std::string* uncompressed); + + // Decompresses "compressed" to "*uncompressed". + // diff --git a/devel/electron5/files/patch-third__party_sqlite_BUILD.gn b/devel/electron5/files/patch-third__party_sqlite_BUILD.gn new file mode 100644 index 000000000000..edf714137bd6 --- /dev/null +++ b/devel/electron5/files/patch-third__party_sqlite_BUILD.gn @@ -0,0 +1,11 @@ +--- third_party/sqlite/BUILD.gn.orig 2019-04-08 08:33:18 UTC ++++ third_party/sqlite/BUILD.gn +@@ -251,7 +251,7 @@ config("sqlite_warnings") { + ] + } + } +- if (is_linux) { ++ if (is_linux && !is_bsd) { + cflags += [ + # SQLite doesn't believe in compiler warnings, preferring testing. + # http://www.sqlite.org/faq.html#q17 diff --git a/devel/electron5/files/patch-third__party_swiftshader_BUILD.gn b/devel/electron5/files/patch-third__party_swiftshader_BUILD.gn new file mode 100644 index 000000000000..83c8ea6ed84b --- /dev/null +++ b/devel/electron5/files/patch-third__party_swiftshader_BUILD.gn @@ -0,0 +1,24 @@ +--- third_party/swiftshader/BUILD.gn.orig 2019-04-08 08:23:02 UTC ++++ third_party/swiftshader/BUILD.gn +@@ -126,9 +126,6 @@ config("swiftshader_config") { + ldflags = [ "-Wl,--gc-sections" ] + + if (target_cpu == "mipsel") { +- ldflags += [ +- "-Wl,--hash-style=sysv", +- ] + if (mips_arch_variant == "r1") { + ldflags += [ + "-mips32", +@@ -140,11 +137,8 @@ config("swiftshader_config") { + } + } else if (target_cpu == "mips64el") { + ldflags += [ +- "-Wl,--hash-style=sysv", + "-mips64r2", + ] +- } else { +- ldflags += [ "-Wl,--hash-style=both" ] + } + + # A bug in the gold linker prevents using ICF on 32-bit (crbug.com/729532) diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_Common_Configurator.cpp b/devel/electron5/files/patch-third__party_swiftshader_src_Common_Configurator.cpp new file mode 100644 index 000000000000..dd0ef4d02a8a --- /dev/null +++ b/devel/electron5/files/patch-third__party_swiftshader_src_Common_Configurator.cpp @@ -0,0 +1,12 @@ +--- third_party/swiftshader/src/Common/Configurator.cpp.orig 2019-04-08 08:23:02 UTC ++++ third_party/swiftshader/src/Common/Configurator.cpp +@@ -42,6 +42,9 @@ namespace sw + + bool Configurator::readFile() + { ++#if defined(__FreeBSD__) ++ return false; ++#endif + #if defined(__unix__) + if(access(path.c_str(), R_OK) != 0) + { diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp b/devel/electron5/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp new file mode 100644 index 000000000000..2b16263ea211 --- /dev/null +++ b/devel/electron5/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp @@ -0,0 +1,11 @@ +--- third_party/swiftshader/src/Common/MutexLock.hpp.orig 2019-04-08 08:23:02 UTC ++++ third_party/swiftshader/src/Common/MutexLock.hpp +@@ -17,7 +17,7 @@ + + #include "Thread.hpp" + +-#if defined(__linux__) ++#if defined(__linux__) || defined(__FreeBSD__) + // Use a pthread mutex on Linux. Since many processes may use SwiftShader + // at the same time it's best to just have the scheduler overhead. + #include <pthread.h> diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp b/devel/electron5/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp new file mode 100644 index 000000000000..7439cd3efffd --- /dev/null +++ b/devel/electron5/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp @@ -0,0 +1,11 @@ +--- third_party/swiftshader/src/Common/SharedLibrary.hpp.orig 2019-04-08 08:23:02 UTC ++++ third_party/swiftshader/src/Common/SharedLibrary.hpp +@@ -97,7 +97,7 @@ void *loadLibrary(const std::string &libraryDirectory, + + inline void *getLibraryHandle(const char *path) + { +- #ifdef __ANDROID__ ++ #if defined( __ANDROID__) || defined(__FreeBSD__) + // bionic doesn't support RTLD_NOLOAD before L + return dlopen(path, RTLD_NOW | RTLD_LOCAL); + #else diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp b/devel/electron5/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp new file mode 100644 index 000000000000..dfa0a43ac45e --- /dev/null +++ b/devel/electron5/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp @@ -0,0 +1,14 @@ +--- third_party/swiftshader/src/Main/SwiftConfig.cpp.orig 2019-04-08 08:23:02 UTC ++++ third_party/swiftshader/src/Main/SwiftConfig.cpp +@@ -762,7 +762,11 @@ namespace sw + struct stat status; + int lastModified = ini.getInteger("LastModified", "Time", 0); + ++#if !defined(__FreeBSD__) + bool noConfig = stat("SwiftShader.ini", &status) != 0; ++#else ++ bool noConfig = false; ++#endif + newConfig = !noConfig && abs((int)status.st_mtime - lastModified) > 1; + + if(disableServerOverride) diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp new file mode 100644 index 000000000000..6fba1579182e --- /dev/null +++ b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp @@ -0,0 +1,20 @@ +--- third_party/swiftshader/src/OpenGL/libEGL/Display.cpp.orig 2019-04-08 08:34:34 UTC ++++ third_party/swiftshader/src/OpenGL/libEGL/Display.cpp +@@ -686,7 +686,7 @@ bool Display::isValidWindow(EGLNativeWindowType window + return status != 0; + } + return false; +- #elif defined(__linux__) ++ #elif defined(__linux__) || defined(__FreeBSD__) + return false; // Non X11 linux is headless only + #elif defined(__APPLE__) + return sw::OSX::IsValidWindow(window); +@@ -862,7 +862,7 @@ sw::Format Display::getDisplayFormat() const + { + return sw::FORMAT_X8R8G8B8; + } +- #elif defined(__linux__) // Non X11 linux is headless only ++ #elif defined(__linux__) || defined(__FreeBSD__) // Non X11 linux is headless only + return sw::FORMAT_A8B8G8R8; + #elif defined(__APPLE__) + return sw::FORMAT_A8B8G8R8; diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp new file mode 100644 index 000000000000..e11e8a0c9078 --- /dev/null +++ b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp @@ -0,0 +1,11 @@ +--- third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp.orig 2019-04-08 08:34:34 UTC ++++ third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp +@@ -352,7 +352,7 @@ bool WindowSurface::checkForResize() + + int windowWidth = windowAttributes.width; + int windowHeight = windowAttributes.height; +- #elif defined(__linux__) ++ #elif defined(__linux__) || defined(__FreeBSD__) + // Non X11 linux is headless only + int windowWidth = 100; + int windowHeight = 100; diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp new file mode 100644 index 000000000000..8e06c35f05f2 --- /dev/null +++ b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp @@ -0,0 +1,29 @@ +--- third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp.orig 2019-04-08 08:34:34 UTC ++++ third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp +@@ -148,7 +148,7 @@ EGLDisplay GetDisplay(EGLNativeDisplayType display_id) + // FIXME: Check if display_id is the default display + } + +- #if defined(__linux__) && !defined(__ANDROID__) ++ #if (defined(__linux__) || defined(__FreeBSD)) && !defined(__ANDROID__) + #if defined(USE_X11) + if(!libX11) + #endif // Non X11 linux is headless only +@@ -207,7 +207,7 @@ const char *QueryString(EGLDisplay dpy, EGLint name) + { + return success( + "EGL_KHR_client_get_all_proc_addresses " +-#if defined(__linux__) && !defined(__ANDROID__) ++#if (defined(__linux__) || defined(__FreeBSD__)) && !defined(__ANDROID__) + "EGL_KHR_platform_gbm " + #endif + #if defined(USE_X11) +@@ -1248,7 +1248,7 @@ EGLDisplay GetPlatformDisplay(EGLenum platform, void * + { + TRACE("(EGLenum platform = 0x%X, void *native_display = %p, const EGLAttrib *attrib_list = %p)", platform, native_display, attrib_list); + +- #if defined(__linux__) && !defined(__ANDROID__) ++ #if (defined(__linux__) || defined(__FreeBSD__)) && !defined(__ANDROID__) + switch(platform) + { + #if defined(USE_X11) diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp new file mode 100644 index 000000000000..8f29f2b58604 --- /dev/null +++ b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp @@ -0,0 +1,11 @@ +--- third_party/swiftshader/src/OpenGL/libEGL/libEGL.hpp.orig 2019-04-08 08:23:02 UTC ++++ third_party/swiftshader/src/OpenGL/libEGL/libEGL.hpp +@@ -100,7 +100,7 @@ class LibEGL (private) + #endif + #elif defined(__ANDROID__) + const char *libEGL_lib[] = {"libEGL_swiftshader.so", "libEGL_swiftshader.so"}; +- #elif defined(__linux__) ++ #elif defined(__linux__) || defined(__FreeBSD__) + #if defined(__LP64__) + const char *libEGL_lib[] = {"lib64EGL_translator.so", "libEGL.so.1", "libEGL.so"}; + #else diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp new file mode 100644 index 000000000000..ceaf4f1c8f65 --- /dev/null +++ b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp @@ -0,0 +1,11 @@ +--- third_party/swiftshader/src/OpenGL/libGLES_CM/libGLES_CM.hpp.orig 2019-04-08 08:23:02 UTC ++++ third_party/swiftshader/src/OpenGL/libGLES_CM/libGLES_CM.hpp +@@ -261,7 +261,7 @@ class LibGLES_CM (private) + #endif + #elif defined(__ANDROID__) + const char *libGLES_CM_lib[] = {"libGLESv1_CM_swiftshader.so", "libGLESv1_CM_swiftshader.so"}; +- #elif defined(__linux__) ++ #elif defined(__linux__) || defined(__FreeBSD__) + #if defined(__LP64__) + const char *libGLES_CM_lib[] = {"lib64GLES_CM_translator.so", "libGLES_CM.so.1", "libGLES_CM.so"}; + #else diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp new file mode 100644 index 000000000000..14832c8a7c80 --- /dev/null +++ b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp @@ -0,0 +1,11 @@ +--- third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.hpp.orig 2019-04-08 08:23:02 UTC ++++ third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.hpp +@@ -286,7 +286,7 @@ class LibGLESv2 (private) + #endif + #elif defined(__ANDROID__) + const char *libGLESv2_lib[] = {"libGLESv2_swiftshader.so", "libGLESv2_swiftshader.so"}; +- #elif defined(__linux__) ++ #elif defined(__linux__) || defined(__FreeBSD__) + #if defined(__LP64__) + const char *libGLESv2_lib[] = {"lib64GLES_V2_translator.so", "libGLESv2.so.2", "libGLESv2.so"}; + #else diff --git a/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h b/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h new file mode 100644 index 000000000000..aee312637a97 --- /dev/null +++ b/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h @@ -0,0 +1,152 @@ +--- third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/config.h.orig 2019-04-20 12:09:44 UTC ++++ third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/config.h +@@ -8,15 +8,15 @@ + #define BUG_REPORT_URL "https://bugs.llvm.org/" + + /* Define to 1 to enable backtraces, and to 0 otherwise. */ +-/* #undef ENABLE_BACKTRACES */ ++#define ENABLE_BACKTRACES 1 + + /* Define to 1 to enable crash overrides, and to 0 otherwise. */ +-/* #undef ENABLE_CRASH_OVERRIDES */ ++#define ENABLE_CRASH_OVERRIDES 1 + + /* Define to 1 if you have the `backtrace' function. */ +-/* #undef HAVE_BACKTRACE */ ++#define HAVE_BACKTRACE TRUE + +-/* #undef BACKTRACE_HEADER */ ++#define BACKTRACE_HEADER <execinfo.h> + + /* Define to 1 if you have the <CrashReporterClient.h> header file. */ + /* #undef HAVE_CRASHREPORTERCLIENT_H */ +@@ -26,7 +26,7 @@ + + /* Define to 1 if you have the declaration of `arc4random', and to 0 if you + don't. */ +-#define HAVE_DECL_ARC4RANDOM 0 ++#define HAVE_DECL_ARC4RANDOM 1 + + /* Define to 1 if you have the declaration of `FE_ALL_EXCEPT', and to 0 if you + don't. */ +@@ -50,7 +50,7 @@ + #define HAVE_DLOPEN 1 + + /* Define if dladdr() is available on this platform. */ +-/* #undef HAVE_DLADDR */ ++#define HAVE_DLADDR 1 + + /* Define to 1 if you have the <errno.h> header file. */ + #define HAVE_ERRNO_H 1 +@@ -89,7 +89,7 @@ + #define HAVE_ISATTY 1 + + /* Define to 1 if you have the `edit' library (-ledit). */ +-/* #undef HAVE_LIBEDIT */ ++#define HAVE_LIBEDIT 1 + + /* Define to 1 if you have the `pfm' library (-lpfm). */ + /* #undef HAVE_LIBPFM */ +@@ -107,25 +107,25 @@ + /* #undef HAVE_PTHREAD_SETNAME_NP */ + + /* Define to 1 if you have the `z' library (-lz). */ +-/* #undef HAVE_LIBZ */ ++#define HAVE_LIBZ 1 + + /* Define to 1 if you have the <link.h> header file. */ + #define HAVE_LINK_H 1 + + /* Define to 1 if you have the `lseek64' function. */ +-#define HAVE_LSEEK64 1 ++/* #undef HAVE_LSEEK64 */ + + /* Define to 1 if you have the <mach/mach.h> header file. */ + /* #undef HAVE_MACH_MACH_H */ + + /* Define to 1 if you have the `mallctl' function. */ +-/* #undef HAVE_MALLCTL */ ++#define HAVE_MALLCTL 1 + + /* Define to 1 if you have the `mallinfo' function. */ +-#define HAVE_MALLINFO 1 ++/* #undef HAVE_MALLINFO */ + + /* Define to 1 if you have the <malloc.h> header file. */ +-#define HAVE_MALLOC_H 1 ++/* #undef HAVE_MALLOC_H */ + + /* Define to 1 if you have the <malloc/malloc.h> header file. */ + /* #undef HAVE_MALLOC_MALLOC_H */ +@@ -137,7 +137,7 @@ + #define HAVE_POSIX_FALLOCATE 1 + + /* Define to 1 if you have the `posix_spawn' function. */ +-/* #undef HAVE_POSIX_SPAWN */ ++#define HAVE_POSIX_SPAWN 1 + + /* Define to 1 if you have the `pread' function. */ + #define HAVE_PREAD 1 +@@ -158,16 +158,16 @@ + #define HAVE_REALPATH 1 + + /* Define to 1 if you have the `sbrk' function. */ +-#define HAVE_SBRK 1 ++/* #undef HAVE_SBRK */ + + /* Define to 1 if you have the `setenv' function. */ + #define HAVE_SETENV 1 + + /* Define to 1 if you have the `sched_getaffinity' function. */ +-#define HAVE_SCHED_GETAFFINITY 1 ++/* #undef HAVE_SCHED_GETAFFINITY */ + + /* Define to 1 if you have the `CPU_COUNT' macro. */ +-#define HAVE_CPU_COUNT 1 ++/* #undef HAVE_CPU_COUNT */ + + /* Define to 1 if you have the `setrlimit' function. */ + #define HAVE_SETRLIMIT 1 +@@ -209,13 +209,13 @@ + #define HAVE_SYS_TYPES_H 1 + + /* Define if the setupterm() function is supported this platform. */ +-/* #undef HAVE_TERMINFO */ ++#define HAVE_TERMINFO 1 + + /* Define if the xar_open() function is supported this platform. */ + /* #undef HAVE_LIBXAR */ + + /* Define to 1 if you have the <termios.h> header file. */ +-/* #undef HAVE_TERMIOS_H */ ++#define HAVE_TERMIOS_H 1 + + /* Define to 1 if you have the <unistd.h> header file. */ + #define HAVE_UNISTD_H 1 +@@ -224,7 +224,7 @@ + /* #undef HAVE_VALGRIND_VALGRIND_H */ + + /* Define to 1 if you have the <zlib.h> header file. */ +-/* #undef HAVE_ZLIB_H */ ++#define HAVE_ZLIB_H 1 + + /* Have host's _alloca */ + /* #undef HAVE__ALLOCA */ +@@ -298,7 +298,7 @@ + #elif defined(__arm__) + #define LLVM_DEFAULT_TARGET_TRIPLE "armv7-linux-gnueabihf" + #elif defined(__aarch64__) +-#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-linux-gnu" ++#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-portbld-freebsd" + #elif defined(__mips__) + #define LLVM_DEFAULT_TARGET_TRIPLE "mipsel-linux-gnu" + #elif defined(__mips64) +@@ -308,7 +308,7 @@ + #endif + + /* Define if zlib compression is available */ +-#define LLVM_ENABLE_ZLIB 0 ++#define LLVM_ENABLE_ZLIB 1 + + /* Define if overriding target triple is enabled */ + /* #undef LLVM_TARGET_TRIPLE_ENV */ diff --git a/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h b/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h new file mode 100644 index 000000000000..6f38970074b7 --- /dev/null +++ b/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h @@ -0,0 +1,20 @@ +--- third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/llvm-config.h.orig 2019-04-20 12:09:44 UTC ++++ third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/llvm-config.h +@@ -28,7 +28,7 @@ + #elif defined(__arm__) + #define LLVM_DEFAULT_TARGET_TRIPLE "armv7-linux-gnueabihf" + #elif defined(__aarch64__) +-#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-linux-gnu" ++#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-portbld-freebsd" + #elif defined(__mips__) + #define LLVM_DEFAULT_TARGET_TRIPLE "mipsel-linux-gnu" + #elif defined(__mips64) +@@ -51,7 +51,7 @@ + #elif defined(__arm__) + #define LLVM_HOST_TRIPLE "armv7-linux-gnueabihf" + #elif defined(__aarch64__) +-#define LLVM_HOST_TRIPLE "aarch64-linux-gnu" ++#define LLVM_HOST_TRIPLE "aarch64-portbld-freebsd" + #elif defined(__mips__) + #define LLVM_HOST_TRIPLE "mipsel-linux-gnu" + #elif defined(__mips64) diff --git a/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h b/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h new file mode 100644 index 000000000000..052a60d5ba96 --- /dev/null +++ b/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h @@ -0,0 +1,29 @@ +--- third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h.orig 2019-04-08 08:34:34 UTC ++++ third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h +@@ -121,7 +121,7 @@ + #define HAVE_LINK_H 1 + + /* Define to 1 if you have the `lseek64' function. */ +-#define HAVE_LSEEK64 1 ++/* #undef HAVE_LSEEK64 */ + + /* Define to 1 if you have the <mach/mach.h> header file. */ + /* #undef HAVE_MACH_MACH_H */ +@@ -130,7 +130,7 @@ + /* #undef HAVE_MALLCTL */ + + /* Define to 1 if you have the `mallinfo' function. */ +-#define HAVE_MALLINFO 1 ++/* #undef HAVE_MALLINFO */ + + /* Define to 1 if you have the <malloc.h> header file. */ + #define HAVE_MALLOC_H 1 +@@ -154,7 +154,7 @@ + /* #undef HAVE_NDIR_H */ + + /* Define to 1 if you have the `posix_fallocate' function. */ +-#define HAVE_POSIX_FALLOCATE 1 ++/* #undef HAVE_POSIX_FALLOCATE */ + + /* Define to 1 if you have the `posix_spawn' function. */ + #define HAVE_POSIX_SPAWN 1 diff --git a/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc b/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc new file mode 100644 index 000000000000..bab9e6bf6efd --- /dev/null +++ b/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc @@ -0,0 +1,11 @@ +--- third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc.orig 2019-04-08 08:23:16 UTC ++++ third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc +@@ -35,7 +35,7 @@ + // DragonFlyBSD, OpenBSD, and Bitrig have deprecated <malloc.h> for + // <stdlib.h> instead. Unix.h includes this for us already. + #if defined(HAVE_MALLOC_H) && !defined(__DragonFly__) && \ +- !defined(__OpenBSD__) && !defined(__Bitrig__) ++ !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__Bitrig__) + #include <malloc.h> + #endif + #if defined(HAVE_MALLCTL) diff --git a/devel/electron5/files/patch-third__party_usrsctp_BUILD.gn b/devel/electron5/files/patch-third__party_usrsctp_BUILD.gn new file mode 100644 index 000000000000..cc9ff01dff6b --- /dev/null +++ b/devel/electron5/files/patch-third__party_usrsctp_BUILD.gn @@ -0,0 +1,20 @@ +--- third_party/usrsctp/BUILD.gn.orig 2019-04-08 08:19:10 UTC ++++ third_party/usrsctp/BUILD.gn +@@ -116,11 +116,16 @@ static_library("usrsctp") { + "-UINET6", + ] + +- if (is_linux || is_android) { ++ if ((is_linux && !is_bsd) || is_android ) { + defines += [ + "__Userspace_os_Linux", + "_GNU_SOURCE", + ] ++ } else if (is_bsd) { ++ defines += [ ++ "__Userspace_os_FreeBSD", ++ ] ++ cflags += [ "-U__FreeBSD__" ] + } else if (is_mac || is_ios) { + defines += [ + "HAVE_SA_LEN", diff --git a/devel/electron5/files/patch-third__party_webrtc_BUILD.gn b/devel/electron5/files/patch-third__party_webrtc_BUILD.gn new file mode 100644 index 000000000000..df6d07394993 --- /dev/null +++ b/devel/electron5/files/patch-third__party_webrtc_BUILD.gn @@ -0,0 +1,12 @@ +--- third_party/webrtc/BUILD.gn.orig 2019-04-08 08:34:47 UTC ++++ third_party/webrtc/BUILD.gn +@@ -153,6 +153,9 @@ config("common_inherited_config") { + if (is_linux) { + defines += [ "WEBRTC_LINUX" ] + } ++ if (is_bsd) { ++ defines += [ "WEBRTC_BSD" ] ++ } + if (is_mac) { + defines += [ "WEBRTC_MAC" ] + } diff --git a/devel/electron5/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn b/devel/electron5/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn new file mode 100644 index 000000000000..1bdc699cee40 --- /dev/null +++ b/devel/electron5/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn @@ -0,0 +1,11 @@ +--- third_party/webrtc/modules/audio_device/BUILD.gn.orig 2019-04-08 08:34:47 UTC ++++ third_party/webrtc/modules/audio_device/BUILD.gn +@@ -312,7 +312,7 @@ rtc_source_set("audio_device_impl") { + if (rtc_use_dummy_audio_file_devices) { + defines += [ "WEBRTC_DUMMY_FILE_DEVICES" ] + } else { +- if (is_linux) { ++ if (is_linux && !is_bsd) { + sources += [ + "linux/alsasymboltable_linux.cc", + "linux/alsasymboltable_linux.h", diff --git a/devel/electron5/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc b/devel/electron5/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc new file mode 100644 index 000000000000..0d7f4c30f924 --- /dev/null +++ b/devel/electron5/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc @@ -0,0 +1,10 @@ +--- third_party/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc.orig 2019-04-08 08:34:47 UTC ++++ third_party/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc +@@ -12,6 +12,7 @@ + + #include <string.h> + #include <algorithm> ++#include <cstdlib> + #include <utility> + + #include "modules/include/module_common_types_public.h" diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_BUILD.gn b/devel/electron5/files/patch-third__party_webrtc_rtc__base_BUILD.gn new file mode 100644 index 000000000000..286ae9aaa2d9 --- /dev/null +++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_BUILD.gn @@ -0,0 +1,20 @@ +--- third_party/webrtc/rtc_base/BUILD.gn.orig 2019-04-08 08:34:47 UTC ++++ third_party/webrtc/rtc_base/BUILD.gn +@@ -1088,8 +1088,6 @@ rtc_static_library("rtc_base") { + + if (rtc_use_x11) { + libs += [ +- "dl", +- "rt", + "Xext", + "X11", + "Xcomposite", +@@ -1097,7 +1095,7 @@ rtc_static_library("rtc_base") { + ] + } + +- if (is_linux) { ++ if (is_linux && !is_bsd) { + libs += [ + "dl", + "rt", diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_byte__order.h b/devel/electron5/files/patch-third__party_webrtc_rtc__base_byte__order.h new file mode 100644 index 000000000000..7b3df0bef5a4 --- /dev/null +++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_byte__order.h @@ -0,0 +1,11 @@ +--- third_party/webrtc/rtc_base/byte_order.h.orig 2019-04-08 08:34:47 UTC ++++ third_party/webrtc/rtc_base/byte_order.h +@@ -79,7 +79,7 @@ + #error WEBRTC_ARCH_BIG_ENDIAN or WEBRTC_ARCH_LITTLE_ENDIAN must be defined. + #endif // defined(WEBRTC_ARCH_LITTLE_ENDIAN) + #elif defined(WEBRTC_POSIX) +-#include <endian.h> ++#include <sys/endian.h> + #endif + + namespace rtc { diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h b/devel/electron5/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h new file mode 100644 index 000000000000..b39ab2dbb609 --- /dev/null +++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h @@ -0,0 +1,11 @@ +--- third_party/webrtc/rtc_base/ifaddrs_converter.h.orig 2019-04-08 08:23:51 UTC ++++ third_party/webrtc/rtc_base/ifaddrs_converter.h +@@ -14,6 +14,8 @@ + #if defined(WEBRTC_ANDROID) + #include "rtc_base/ifaddrs_android.h" + #else ++#include <sys/types.h> ++#include <sys/socket.h> + #include <ifaddrs.h> + #endif // WEBRTC_ANDROID + diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_ip__address.cc b/devel/electron5/files/patch-third__party_webrtc_rtc__base_ip__address.cc new file mode 100644 index 000000000000..95878be40f5f --- /dev/null +++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_ip__address.cc @@ -0,0 +1,12 @@ +--- third_party/webrtc/rtc_base/ip_address.cc.orig 2019-04-08 08:23:51 UTC ++++ third_party/webrtc/rtc_base/ip_address.cc +@@ -11,6 +11,9 @@ + #if defined(WEBRTC_POSIX) + #include <netinet/in.h> + #include <sys/socket.h> ++#if defined(WEBRTC_BSD) ++#include <sys/types.h> ++#endif + #ifdef OPENBSD + #include <netinet/in_systm.h> + #endif diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_ip__address.h b/devel/electron5/files/patch-third__party_webrtc_rtc__base_ip__address.h new file mode 100644 index 000000000000..8ef9855678a4 --- /dev/null +++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_ip__address.h @@ -0,0 +1,13 @@ +--- third_party/webrtc/rtc_base/ip_address.h.orig 2019-04-08 08:23:51 UTC ++++ third_party/webrtc/rtc_base/ip_address.h +@@ -17,6 +17,10 @@ + #include <netinet/in.h> + #include <sys/socket.h> + #endif ++#if defined(WEBRTC_BSD) ++#include <sys/types.h> ++#include <sys/socket.h> ++#endif + #if defined(WEBRTC_WIN) + #include <winsock2.h> + #include <ws2tcpip.h> diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_network.cc b/devel/electron5/files/patch-third__party_webrtc_rtc__base_network.cc new file mode 100644 index 000000000000..239c5f0c46b2 --- /dev/null +++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_network.cc @@ -0,0 +1,29 @@ +--- third_party/webrtc/rtc_base/network.cc.orig 2019-04-08 08:34:47 UTC ++++ third_party/webrtc/rtc_base/network.cc +@@ -14,7 +14,7 @@ + // linux/if.h can't be included at the same time as the posix sys/if.h, and + // it's transitively required by linux/route.h, so include that version on + // linux instead of the standard posix one. +-#if defined(WEBRTC_LINUX) ++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD) + #include <linux/if.h> + #include <linux/route.h> + #elif !defined(__native_client__) +@@ -762,7 +762,7 @@ bool BasicNetworkManager::CreateNetworks(bool include_ + } + #endif // WEBRTC_WIN + +-#if defined(WEBRTC_LINUX) ++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD) + bool IsDefaultRoute(const std::string& network_name) { + FILE* f = fopen("/proc/net/route", "r"); + if (!f) { +@@ -805,7 +805,7 @@ bool BasicNetworkManager::IsIgnoredNetwork(const Netwo + strncmp(network.name().c_str(), "vboxnet", 7) == 0) { + return true; + } +-#if defined(WEBRTC_LINUX) ++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD) + // Make sure this is a default route, if we're ignoring non-defaults. + if (ignore_non_default_routes_ && !IsDefaultRoute(network.name())) { + return true; diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_network.h b/devel/electron5/files/patch-third__party_webrtc_rtc__base_network.h new file mode 100644 index 000000000000..723b73e68139 --- /dev/null +++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_network.h @@ -0,0 +1,13 @@ +--- third_party/webrtc/rtc_base/network.h.orig 2019-04-08 08:23:51 UTC ++++ third_party/webrtc/rtc_base/network.h +@@ -25,6 +25,10 @@ + #include "rtc_base/network_monitor.h" + #include "rtc_base/third_party/sigslot/sigslot.h" + ++#if defined(WEBRTC_BSD) ++#include <sys/types.h> ++#endif ++ + #if defined(WEBRTC_POSIX) + struct ifaddrs; + #endif // defined(WEBRTC_POSIX) diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc b/devel/electron5/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc new file mode 100644 index 000000000000..e3c0b18f4ec0 --- /dev/null +++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc @@ -0,0 +1,56 @@ +--- third_party/webrtc/rtc_base/physical_socket_server.cc.orig 2019-04-08 08:23:51 UTC ++++ third_party/webrtc/rtc_base/physical_socket_server.cc +@@ -66,7 +66,7 @@ typedef void* SockOptArg; + + #endif // WEBRTC_POSIX + +-#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(__native_client__) ++#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(WEBRTC_BSD) && !defined(__native_client__) + + int64_t GetSocketRecvTimestamp(int socket) { + struct timeval tv_ioctl; +@@ -286,7 +286,7 @@ int PhysicalSocket::GetOption(Option opt, int* value) + socklen_t optlen = sizeof(*value); + int ret = ::getsockopt(s_, slevel, sopt, (SockOptArg)value, &optlen); + if (ret != -1 && opt == OPT_DONTFRAGMENT) { +-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) ++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD) + *value = (*value != IP_PMTUDISC_DONT) ? 1 : 0; + #endif + } +@@ -299,7 +299,7 @@ int PhysicalSocket::SetOption(Option opt, int value) { + if (TranslateOption(opt, &slevel, &sopt) == -1) + return -1; + if (opt == OPT_DONTFRAGMENT) { +-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) ++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD) + value = (value) ? IP_PMTUDISC_DO : IP_PMTUDISC_DONT; + #endif + } +@@ -309,7 +309,7 @@ int PhysicalSocket::SetOption(Option opt, int value) { + int PhysicalSocket::Send(const void* pv, size_t cb) { + int sent = DoSend( + s_, reinterpret_cast<const char*>(pv), static_cast<int>(cb), +-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) ++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD) + // Suppress SIGPIPE. Without this, attempting to send on a socket whose + // other end is closed will result in a SIGPIPE signal being raised to + // our process, which by default will terminate the process, which we +@@ -338,7 +338,7 @@ int PhysicalSocket::SendTo(const void* buffer, + size_t len = addr.ToSockAddrStorage(&saddr); + int sent = + DoSendTo(s_, static_cast<const char*>(buffer), static_cast<int>(length), +-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) ++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD) + // Suppress SIGPIPE. See above for explanation. + MSG_NOSIGNAL, + #else +@@ -529,7 +529,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* s + *slevel = IPPROTO_IP; + *sopt = IP_DONTFRAGMENT; + break; +-#elif defined(WEBRTC_MAC) || defined(BSD) || defined(__native_client__) ++#elif defined(WEBRTC_MAC) || defined(WEBRTC_BSD) || defined(__native_client__) + RTC_LOG(LS_WARNING) << "Socket::OPT_DONTFRAGMENT not supported."; + return -1; + #elif defined(WEBRTC_POSIX) diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h b/devel/electron5/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h new file mode 100644 index 000000000000..16161d71b201 --- /dev/null +++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h @@ -0,0 +1,11 @@ +--- third_party/webrtc/rtc_base/physical_socket_server.h.orig 2019-04-08 08:23:51 UTC ++++ third_party/webrtc/rtc_base/physical_socket_server.h +@@ -11,7 +11,7 @@ + #ifndef RTC_BASE_PHYSICAL_SOCKET_SERVER_H_ + #define RTC_BASE_PHYSICAL_SOCKET_SERVER_H_ + +-#if defined(WEBRTC_POSIX) && defined(WEBRTC_LINUX) ++#if defined(WEBRTC_POSIX) && defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD) + #include <sys/epoll.h> + #define WEBRTC_USE_EPOLL 1 + #endif diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc b/devel/electron5/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc new file mode 100644 index 000000000000..15dbd9b9a753 --- /dev/null +++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc @@ -0,0 +1,40 @@ +--- third_party/webrtc/rtc_base/platform_thread_types.cc.orig 2019-04-08 08:23:51 UTC ++++ third_party/webrtc/rtc_base/platform_thread_types.cc +@@ -11,7 +11,9 @@ + #include "rtc_base/platform_thread_types.h" + + #if defined(WEBRTC_LINUX) ++#if !defined(__FreeBSD__) + #include <sys/prctl.h> ++#endif + #include <sys/syscall.h> + #endif + +@@ -27,8 +29,10 @@ PlatformThreadId CurrentThreadId() { + return gettid(); + #elif defined(WEBRTC_FUCHSIA) + return zx_thread_self(); +-#elif defined(WEBRTC_LINUX) ++#elif defined(WEBRTC_LINUX) && !defined(__FreeBSD__) + return syscall(__NR_gettid); ++#elif defined(__FreeBSD__) ++ return reinterpret_cast<uint64_t>(pthread_self()); + #else + // Default implementation for nacl and solaris. + return reinterpret_cast<pid_t>(pthread_self()); +@@ -55,6 +59,7 @@ bool IsThreadRefEqual(const PlatformThreadRef& a, cons + } + + void SetCurrentThreadName(const char* name) { ++#if !defined(__FreeBSD__) + #if defined(WEBRTC_WIN) + struct { + DWORD dwType; +@@ -72,6 +77,7 @@ void SetCurrentThreadName(const char* name) { + prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(name)); // NOLINT + #elif defined(WEBRTC_MAC) || defined(WEBRTC_IOS) + pthread_setname_np(name); ++#endif + #endif + } + diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_string__utils.h b/devel/electron5/files/patch-third__party_webrtc_rtc__base_string__utils.h new file mode 100644 index 000000000000..5cf060732450 --- /dev/null +++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_string__utils.h @@ -0,0 +1,17 @@ +--- third_party/webrtc/rtc_base/string_utils.h.orig 2019-04-08 08:34:47 UTC ++++ third_party/webrtc/rtc_base/string_utils.h +@@ -25,11 +25,11 @@ + #endif // WEBRTC_WIN + + #if defined(WEBRTC_POSIX) +-#ifdef BSD ++#if defined(WEBRTC_BSD) || defined(BSD) + #include <stdlib.h> +-#else // BSD ++#else // WEBRTC_BSD + #include <alloca.h> +-#endif // !BSD ++#endif // !WEBRTC_BSD + #include <strings.h> + #endif // WEBRTC_POSIX + diff --git a/devel/electron5/files/patch-third__party_webrtc_system__wrappers_BUILD.gn b/devel/electron5/files/patch-third__party_webrtc_system__wrappers_BUILD.gn new file mode 100644 index 000000000000..210ad8eba53a --- /dev/null +++ b/devel/electron5/files/patch-third__party_webrtc_system__wrappers_BUILD.gn @@ -0,0 +1,11 @@ +--- third_party/webrtc/system_wrappers/BUILD.gn.orig 2019-04-08 08:34:48 UTC ++++ third_party/webrtc/system_wrappers/BUILD.gn +@@ -59,8 +59,6 @@ rtc_static_library("system_wrappers") { + if (!build_with_chromium) { + deps += [ ":cpu_features_linux" ] + } +- +- libs += [ "rt" ] + } + + if (is_win) { diff --git a/devel/electron5/files/patch-third__party_yasm_yasm__assemble.gni b/devel/electron5/files/patch-third__party_yasm_yasm__assemble.gni new file mode 100644 index 000000000000..9b4a433a44d9 --- /dev/null +++ b/devel/electron5/files/patch-third__party_yasm_yasm__assemble.gni @@ -0,0 +1,159 @@ +--- third_party/yasm/yasm_assemble.gni.orig 2019-04-08 08:19:10 UTC ++++ third_party/yasm/yasm_assemble.gni +@@ -1,105 +1,23 @@ +-# Copyright 2014 The Chromium Authors. All rights reserved. ++# Copyright 2016 The Chromium Authors. All rights reserved. + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. + +-# This provides the yasm_assemble() template which uses YASM to assemble +-# assembly files. +-# +-# Files to be assembled with YASM should have an extension of .asm. +-# +-# Parameters +-# +-# yasm_flags (optional) +-# [list of strings] Pass additional flags into YASM. These are appended +-# to the command line. Note that the target machine type and system is +-# already set up based on the current toolchain so you don't need to +-# specify these things (see below). +-# +-# Example: yasm_flags = [ "--force-strict" ] +-# +-# include_dirs (optional) +-# [list of dir names] List of additional include dirs. Note that the +-# source root and the root generated file dir is always added, just like +-# our C++ build sets up. +-# +-# Example: include_dirs = [ "//some/other/path", target_gen_dir ] +-# +-# defines (optional) +-# [list of strings] List of defines, as with the native code defines. +-# +-# Example: defines = [ "FOO", "BAR=1" ] +-# +-# inputs, deps, visibility (optional) +-# These have the same meaning as in an action. +-# +-# Example +-# +-# yasm_assemble("my_yasm_target") { +-# sources = [ +-# "ultra_optimized_awesome.asm", +-# ] +-# include_dirs = [ "assembly_include" ] +-# } +- +-if (is_mac || is_ios) { +- if (current_cpu == "x86") { +- _yasm_flags = [ +- "-fmacho32", +- "-m", +- "x86", +- ] +- } else if (current_cpu == "x64") { +- _yasm_flags = [ +- "-fmacho64", +- "-m", +- "amd64", +- ] +- } +-} else if (is_posix || is_fuchsia) { +- if (current_cpu == "x86") { +- _yasm_flags = [ +- "-felf32", +- "-m", +- "x86", +- ] +- } else if (current_cpu == "x64") { +- _yasm_flags = [ +- "-DPIC", +- "-felf64", +- "-m", +- "amd64", +- ] +- } +-} else if (is_win) { +- if (current_cpu == "x86") { +- _yasm_flags = [ +- "-DPREFIX", +- "-fwin32", +- "-m", +- "x86", +- ] +- } else if (current_cpu == "x64") { +- _yasm_flags = [ +- "-fwin64", +- "-m", +- "amd64", +- ] +- } ++if (current_cpu == "x86") { ++ _yasm_flags = [ ++ "-felf32", ++ "-m", ++ "x86", ++ ] ++} else if (current_cpu == "x64") { ++ _yasm_flags = [ ++ "-DPIC", ++ "-felf64", ++ "-m", ++ "amd64", ++ ] + } + +-if (is_win) { +- asm_obj_extension = "obj" +-} else { +- asm_obj_extension = "o" +-} +- + template("yasm_assemble") { +- assert(defined(invoker.sources), "Need sources defined for $target_name") +- +- # Only depend on YASM on x86 systems. Force compilation of .asm files for +- # ARM to fail. +- assert(current_cpu == "x86" || current_cpu == "x64") +- + action_name = "${target_name}_action" + source_set_name = target_name + +@@ -114,24 +32,12 @@ template("yasm_assemble") { + inputs = invoker.inputs + } + +- # Executable (first in the args). The binary might be in the root build dir +- # (no cross-compiling) or in a toolchain-specific subdirectory of that +- # (when cross-compiling). +- yasm_label = "//third_party/yasm($host_toolchain)" +- args = [ "./" + # Force current dir. +- rebase_path(get_label_info(yasm_label, "root_out_dir") + "/yasm", +- root_build_dir) ] +- +- # Deps. +- deps = [ +- yasm_label, +- ] ++ deps = [] + if (defined(invoker.deps)) { + deps += invoker.deps + } + +- # Flags. +- args += _yasm_flags ++ args = [ "yasm" ] + _yasm_flags + if (defined(invoker.yasm_flags)) { + args += invoker.yasm_flags + } +@@ -188,9 +94,6 @@ template("yasm_assemble") { + } + + sources = get_target_outputs(":$action_name") +- +- # Do not publicize any header to remove build dependency. +- public = [] + + deps = [ + ":$action_name", diff --git a/devel/electron5/files/patch-third__party_zlib_arm__features.c b/devel/electron5/files/patch-third__party_zlib_arm__features.c new file mode 100644 index 000000000000..3710c3fd1a5f --- /dev/null +++ b/devel/electron5/files/patch-third__party_zlib_arm__features.c @@ -0,0 +1,97 @@ +--- third_party/zlib/arm_features.c.orig 2019-04-20 12:09:23 UTC ++++ third_party/zlib/arm_features.c +@@ -8,83 +8,30 @@ + + #include "zutil.h" + +-int ZLIB_INTERNAL arm_cpu_enable_crc32 = 0; +-int ZLIB_INTERNAL arm_cpu_enable_pmull = 0; +- +-#if !defined(_MSC_VER) + #include <pthread.h> + #include <stdint.h> ++#include <machine/armreg.h> ++#include <sys/types.h> + +-#if defined(ARMV8_OS_ANDROID) +-#include <cpu-features.h> +-#elif defined(ARMV8_OS_LINUX) +-#include <asm/hwcap.h> +-#include <sys/auxv.h> +-#else +-#error ### No ARM CPU features detection in your platform/OS +-#endif ++int ZLIB_INTERNAL arm_cpu_enable_crc32 = 0; ++int ZLIB_INTERNAL arm_cpu_enable_pmull = 0; + + static pthread_once_t cpu_check_inited_once = PTHREAD_ONCE_INIT; + + static void init_arm_features(void) + { +- uint64_t flag_crc32 = 0, flag_pmull = 0, capabilities = 0; ++#if defined (__aarch64__) ++ uint64_t id_aa64isar0; + +-#if defined(ARMV8_OS_ANDROID) +- flag_crc32 = ANDROID_CPU_ARM_FEATURE_CRC32; +- flag_pmull = ANDROID_CPU_ARM_FEATURE_PMULL; +- capabilities = android_getCpuFeatures(); +-#elif defined(ARMV8_OS_LINUX) +- #if defined(__aarch64__) +- flag_crc32 = HWCAP_CRC32; +- flag_pmull = HWCAP_PMULL; +- capabilities = getauxval(AT_HWCAP); +- #elif defined(__ARM_NEON) || defined(__ARM_NEON__) +- /* The use of HWCAP2 is for getting features of newer ARMv8-A SoCs +- * while running in 32bits mode (i.e. aarch32). +- */ +- flag_crc32 = HWCAP2_CRC32; +- flag_pmull = HWCAP2_PMULL; +- capabilities = getauxval(AT_HWCAP2); +- #endif +-#endif +- +- if (capabilities & flag_crc32) +- arm_cpu_enable_crc32 = 1; +- +- if (capabilities & flag_pmull) ++ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1); ++ if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) + arm_cpu_enable_pmull = 1; ++ if (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) ++ arm_cpu_enable_crc32 = 1; ++#endif + } + + void ZLIB_INTERNAL arm_check_features(void) + { + pthread_once(&cpu_check_inited_once, init_arm_features); + } +-#else +-#include <windows.h> +- +-static BOOL CALLBACK _arm_check_features(PINIT_ONCE once, +- PVOID param, +- PVOID *context); +-static INIT_ONCE cpu_check_inited_once = INIT_ONCE_STATIC_INIT; +- +- +-void ZLIB_INTERNAL arm_check_features(void) +-{ +- InitOnceExecuteOnce(&cpu_check_inited_once, _arm_check_features, +- NULL, NULL); +-} +- +-static BOOL CALLBACK _arm_check_features(PINIT_ONCE once, +- PVOID param, +- PVOID *context) +-{ +- if (IsProcessorFeaturePresent(PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE)) +- arm_cpu_enable_crc32 = 1; +- +- if (IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE)) +- arm_cpu_enable_pmull = 1; +- +- return TRUE; +-} +-#endif /* _MSC_VER */ diff --git a/devel/electron5/files/patch-tools_gn_base_files_file__posix.cc b/devel/electron5/files/patch-tools_gn_base_files_file__posix.cc new file mode 100644 index 000000000000..b96ca30305db --- /dev/null +++ b/devel/electron5/files/patch-tools_gn_base_files_file__posix.cc @@ -0,0 +1,11 @@ +--- tools/gn/base/files/file_posix.cc.orig 2019-03-11 22:12:13 UTC ++++ tools/gn/base/files/file_posix.cc +@@ -414,7 +414,7 @@ void File::DoInitialize(const FilePath& path, uint32_t + bool File::Flush() { + DCHECK(IsValid()); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + return !HANDLE_EINTR(fdatasync(file_.get())); + #else + return !HANDLE_EINTR(fsync(file_.get())); diff --git a/devel/electron5/files/patch-tools_gn_base_files_file__util.h b/devel/electron5/files/patch-tools_gn_base_files_file__util.h new file mode 100644 index 000000000000..142ec10db26a --- /dev/null +++ b/devel/electron5/files/patch-tools_gn_base_files_file__util.h @@ -0,0 +1,11 @@ +--- tools/gn/base/files/file_util.h.orig 2019-06-04 19:02:25 UTC ++++ tools/gn/base/files/file_util.h +@@ -361,7 +361,7 @@ bool VerifyPathControlledByAdmin(const base::FilePath& + // the directory |path|, in the number of FilePath::CharType, or -1 on failure. + int GetMaximumPathComponentLength(const base::FilePath& path); + +-#if defined(OS_LINUX) || defined(OS_AIX) ++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) + // Broad categories of file systems as returned by statfs() on Linux. + enum FileSystemType { + FILE_SYSTEM_UNKNOWN, // statfs failed. diff --git a/devel/electron5/files/patch-tools_gn_base_files_file__util__posix.cc b/devel/electron5/files/patch-tools_gn_base_files_file__util__posix.cc new file mode 100644 index 000000000000..32498b74dcef --- /dev/null +++ b/devel/electron5/files/patch-tools_gn_base_files_file__util__posix.cc @@ -0,0 +1,11 @@ +--- tools/gn/base/files/file_util_posix.cc.orig 2019-06-04 19:02:25 UTC ++++ tools/gn/base/files/file_util_posix.cc +@@ -254,7 +254,7 @@ bool ReplaceFile(const FilePath& from_path, + #endif // !defined(OS_NACL_NONSFI) + + bool CreateLocalNonBlockingPipe(int fds[2]) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + return pipe2(fds, O_CLOEXEC | O_NONBLOCK) == 0; + #else + int raw_fds[2]; diff --git a/devel/electron5/files/patch-tools_gn_base_files_scoped__file.cc b/devel/electron5/files/patch-tools_gn_base_files_scoped__file.cc new file mode 100644 index 000000000000..8364317cad57 --- /dev/null +++ b/devel/electron5/files/patch-tools_gn_base_files_scoped__file.cc @@ -0,0 +1,11 @@ +--- tools/gn/base/files/scoped_file.cc.orig 2019-06-04 19:02:25 UTC ++++ tools/gn/base/files/scoped_file.cc +@@ -30,7 +30,7 @@ void ScopedFDCloseTraits::Free(int fd) { + // a single open directory would bypass the entire security model. + int ret = IGNORE_EINTR(close(fd)); + +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || \ ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD) || \ + defined(OS_ANDROID) + // NB: Some file descriptors can return errors from close() e.g. network + // filesystems such as NFS and Linux input devices. On Linux, macOS, and diff --git a/devel/electron5/files/patch-tools_gn_build_gen.py b/devel/electron5/files/patch-tools_gn_build_gen.py new file mode 100644 index 000000000000..34b612046ca9 --- /dev/null +++ b/devel/electron5/files/patch-tools_gn_build_gen.py @@ -0,0 +1,33 @@ +--- tools/gn/build/gen.py.orig 2019-07-24 19:05:33 UTC ++++ tools/gn/build/gen.py +@@ -46,7 +46,7 @@ class Platform(object): + + @staticmethod + def known_platforms(): +- return ['linux', 'darwin', 'msvc', 'aix', 'fuchsia', 'openbsd'] ++ return ['linux', 'darwin', 'msvc', 'aix', 'fuchsia', 'openbsd', 'freebsd'] + + def platform(self): + return self._platform +@@ -69,6 +69,9 @@ class Platform(object): + def is_aix(self): + return self._platform == 'aix' + ++ def is_freebsd(self): ++ return self._platform == 'freebsd' ++ + def is_posix(self): + return self._platform in ['linux', 'freebsd', 'darwin', 'aix', 'openbsd'] + +@@ -335,6 +338,11 @@ def WriteGNNinja(path, platform, host, options): + elif platform.is_aix(): + cflags_cc.append('-maix64') + ldflags.append('-maix64') ++ elif platform.is_freebsd(): ++ cflags.extend(['-Wno-deprecated-register', '-Wno-parentheses-equality']) ++ ldflags.extend(['-pthread']) ++ libs.extend(['-lexecinfo', '-lkvm', '-lutil']) ++ include_dirs += ['/usr/local/include'] + + if platform.is_posix(): + ldflags.append('-pthread') diff --git a/devel/electron5/files/patch-tools_gn_tools_gn_exec__process.cc b/devel/electron5/files/patch-tools_gn_tools_gn_exec__process.cc new file mode 100644 index 000000000000..bd6d48b4274e --- /dev/null +++ b/devel/electron5/files/patch-tools_gn_tools_gn_exec__process.cc @@ -0,0 +1,13 @@ +--- tools/gn/tools/gn/exec_process.cc.orig 2019-03-11 22:12:13 UTC ++++ tools/gn/tools/gn/exec_process.cc +@@ -29,6 +29,10 @@ + #include "base/posix/file_descriptor_shuffle.h" + #endif + ++#if defined(OS_BSD) ++#include <signal.h> ++#endif ++ + namespace internal { + + #if defined(OS_WIN) diff --git a/devel/electron5/files/patch-tools_gn_util_sys__info.cc b/devel/electron5/files/patch-tools_gn_util_sys__info.cc new file mode 100644 index 000000000000..fdc4849fc8da --- /dev/null +++ b/devel/electron5/files/patch-tools_gn_util_sys__info.cc @@ -0,0 +1,11 @@ +--- tools/gn/util/sys_info.cc.orig 2019-04-30 22:29:37 UTC ++++ tools/gn/util/sys_info.cc +@@ -28,6 +28,8 @@ std::string OperatingSystemArchitecture() { + arch = "x86"; + } else if (arch == "amd64") { + arch = "x86_64"; ++ } else if (arch == "arm64") { ++ arch = "aarch64"; + } else if (std::string(info.sysname) == "AIX") { + arch = "ppc64"; + } diff --git a/devel/electron5/files/patch-tools_json__schema__compiler_feature__compiler.py b/devel/electron5/files/patch-tools_json__schema__compiler_feature__compiler.py new file mode 100644 index 000000000000..488bccb0394e --- /dev/null +++ b/devel/electron5/files/patch-tools_json__schema__compiler_feature__compiler.py @@ -0,0 +1,10 @@ +--- tools/json_schema_compiler/feature_compiler.py.orig 2019-04-08 08:19:10 UTC ++++ tools/json_schema_compiler/feature_compiler.py +@@ -205,6 +205,7 @@ FEATURE_GRAMMAR = ( + 'enum_map': { + 'chromeos': 'Feature::CHROMEOS_PLATFORM', + 'linux': 'Feature::LINUX_PLATFORM', ++ 'bsd': 'Feature::LINUX_PLATFORM', + 'mac': 'Feature::MACOSX_PLATFORM', + 'win': 'Feature::WIN_PLATFORM', + } diff --git a/devel/electron5/files/patch-tools_json__schema__compiler_model.py b/devel/electron5/files/patch-tools_json__schema__compiler_model.py new file mode 100644 index 000000000000..848fee403a4e --- /dev/null +++ b/devel/electron5/files/patch-tools_json__schema__compiler_model.py @@ -0,0 +1,11 @@ +--- tools/json_schema_compiler/model.py.orig 2019-04-08 08:19:10 UTC ++++ tools/json_schema_compiler/model.py +@@ -602,7 +602,7 @@ class Platforms(object): + """ + CHROMEOS = _PlatformInfo("chromeos") + CHROMEOS_TOUCH = _PlatformInfo("chromeos_touch") +- LINUX = _PlatformInfo("linux") ++ LINUX = _PlatformInfo("bsd") + MAC = _PlatformInfo("mac") + WIN = _PlatformInfo("win") + diff --git a/devel/electron5/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn b/devel/electron5/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn new file mode 100644 index 000000000000..88722ef311f7 --- /dev/null +++ b/devel/electron5/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn @@ -0,0 +1,11 @@ +--- tools/perf/chrome_telemetry_build/BUILD.gn.orig 2019-04-08 08:33:22 UTC ++++ tools/perf/chrome_telemetry_build/BUILD.gn +@@ -40,7 +40,7 @@ group("telemetry_chrome_test") { + data_deps += [ "//chrome:reorder_imports" ] + } + +- if (is_linux) { ++ if (is_linux && !is_bsd) { + data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ] + } + diff --git a/devel/electron5/files/patch-tools_variations_fieldtrial__to__struct.py b/devel/electron5/files/patch-tools_variations_fieldtrial__to__struct.py new file mode 100644 index 000000000000..706ffac6183f --- /dev/null +++ b/devel/electron5/files/patch-tools_variations_fieldtrial__to__struct.py @@ -0,0 +1,10 @@ +--- tools/variations/fieldtrial_to_struct.py.orig 2019-04-08 08:33:22 UTC ++++ tools/variations/fieldtrial_to_struct.py +@@ -24,6 +24,7 @@ finally: + _platforms = [ + 'android', + 'android_webview', ++ 'freebsd', + 'chromeos', + 'fuchsia', + 'ios', diff --git a/devel/electron5/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc b/devel/electron5/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc new file mode 100644 index 000000000000..ff07767527fd --- /dev/null +++ b/devel/electron5/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc @@ -0,0 +1,20 @@ +--- ui/base/dragdrop/os_exchange_data_provider_factory.cc.orig 2019-04-08 08:19:15 UTC ++++ ui/base/dragdrop/os_exchange_data_provider_factory.cc +@@ -8,7 +8,7 @@ + + #if defined(USE_X11) + #include "ui/base/dragdrop/os_exchange_data_provider_aurax11.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "ui/base/dragdrop/os_exchange_data_provider_aura.h" + #elif defined(OS_MACOSX) + #include "ui/base/dragdrop/os_exchange_data_provider_builder_mac.h" +@@ -42,7 +42,7 @@ OSExchangeDataProviderFactory::CreateProvider() { + + #if defined(USE_X11) + return std::make_unique<OSExchangeDataProviderAuraX11>(); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + return std::make_unique<OSExchangeDataProviderAura>(); + #elif defined(OS_MACOSX) + return ui::BuildOSExchangeDataProviderMac(); diff --git a/devel/electron5/files/patch-ui_base_ime_ime__engine__handler__interface.h b/devel/electron5/files/patch-ui_base_ime_ime__engine__handler__interface.h new file mode 100644 index 000000000000..a4a7db01d0fd --- /dev/null +++ b/devel/electron5/files/patch-ui_base_ime_ime__engine__handler__interface.h @@ -0,0 +1,11 @@ +--- ui/base/ime/ime_engine_handler_interface.h.orig 2019-04-08 08:33:23 UTC ++++ ui/base/ime/ime_engine_handler_interface.h +@@ -166,7 +166,7 @@ class UI_BASE_IME_EXPORT IMEEngineHandlerInterface { + virtual void SetMirroringEnabled(bool mirroring_enabled) = 0; + virtual void SetCastingEnabled(bool casting_enabled) = 0; + +-#elif defined(OS_LINUX) || defined(OS_WIN) ++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + + // Get the id of the IME extension. + virtual std::string GetExtensionId() const = 0; diff --git a/devel/electron5/files/patch-ui_base_ime_input__method__initializer.cc b/devel/electron5/files/patch-ui_base_ime_input__method__initializer.cc new file mode 100644 index 000000000000..2903d4d49231 --- /dev/null +++ b/devel/electron5/files/patch-ui_base_ime_input__method__initializer.cc @@ -0,0 +1,38 @@ +--- ui/base/ime/input_method_initializer.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/base/ime/input_method_initializer.cc +@@ -8,7 +8,7 @@ + + #if defined(OS_CHROMEOS) + #include "ui/base/ime/ime_bridge.h" +-#elif defined(USE_AURA) && defined(OS_LINUX) ++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD)) + #include "base/logging.h" + #include "ui/base/ime/linux/fake_input_method_context_factory.h" + #elif defined(OS_WIN) +@@ -18,7 +18,7 @@ + + namespace { + +-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX) ++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD)) + const ui::LinuxInputMethodContextFactory* + g_linux_input_method_context_factory_for_testing; + #endif +@@ -46,7 +46,7 @@ void ShutdownInputMethod() { + void InitializeInputMethodForTesting() { + #if defined(OS_CHROMEOS) + IMEBridge::Initialize(); +-#elif defined(USE_AURA) && defined(OS_LINUX) ++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD)) + if (!g_linux_input_method_context_factory_for_testing) + g_linux_input_method_context_factory_for_testing = + new FakeInputMethodContextFactory(); +@@ -67,7 +67,7 @@ void InitializeInputMethodForTesting() { + void ShutdownInputMethodForTesting() { + #if defined(OS_CHROMEOS) + IMEBridge::Shutdown(); +-#elif defined(USE_AURA) && defined(OS_LINUX) ++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD)) + const LinuxInputMethodContextFactory* factory = + LinuxInputMethodContextFactory::instance(); + CHECK(!factory || factory == g_linux_input_method_context_factory_for_testing) diff --git a/devel/electron5/files/patch-ui_base_resource_resource__bundle.cc b/devel/electron5/files/patch-ui_base_resource_resource__bundle.cc new file mode 100644 index 000000000000..15d469a7d779 --- /dev/null +++ b/devel/electron5/files/patch-ui_base_resource_resource__bundle.cc @@ -0,0 +1,20 @@ +--- ui/base/resource/resource_bundle.cc.orig 2019-04-08 08:19:15 UTC ++++ ui/base/resource/resource_bundle.cc +@@ -692,7 +692,7 @@ void ResourceBundle::ReloadFonts() { + } + + ScaleFactor ResourceBundle::GetMaxScaleFactor() const { +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + return max_scale_factor_; + #else + return GetSupportedScaleFactors().back(); +@@ -745,7 +745,7 @@ void ResourceBundle::InitSharedInstance(Delegate* dele + // On platforms other than iOS, 100P is always a supported scale factor. + // For Windows we have a separate case in this function. + supported_scale_factors.push_back(SCALE_FACTOR_100P); +-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + supported_scale_factors.push_back(SCALE_FACTOR_200P); + #endif + #endif diff --git a/devel/electron5/files/patch-ui_base_resource_resource__bundle__freebsd.cc b/devel/electron5/files/patch-ui_base_resource_resource__bundle__freebsd.cc new file mode 100644 index 000000000000..ed169d7cecdd --- /dev/null +++ b/devel/electron5/files/patch-ui_base_resource_resource__bundle__freebsd.cc @@ -0,0 +1,24 @@ +--- ui/base/resource/resource_bundle_freebsd.cc.orig 2019-04-09 12:48:54 UTC ++++ ui/base/resource/resource_bundle_freebsd.cc +@@ -0,0 +1,21 @@ ++// Copyright 2017 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "ui/base/resource/resource_bundle.h" ++ ++#include "base/logging.h" ++#include "base/macros.h" ++#include "ui/gfx/image/image.h" ++ ++namespace ui { ++ ++void ResourceBundle::LoadCommonResources() { ++ LoadChromeResources(); ++} ++ ++gfx::Image& ResourceBundle::GetNativeImageNamed(int resource_id) { ++ return GetImageNamed(resource_id); ++} ++ ++} // namespace ui diff --git a/devel/electron5/files/patch-ui_base_ui__base__features.cc b/devel/electron5/files/patch-ui_base_ui__base__features.cc new file mode 100644 index 000000000000..10935e0e8e64 --- /dev/null +++ b/devel/electron5/files/patch-ui_base_ui__base__features.cc @@ -0,0 +1,20 @@ +--- ui/base/ui_base_features.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/base/ui_base_features.cc +@@ -111,7 +111,7 @@ const base::Feature kEnableAutomaticUiAdjustmentsForTo + "EnableAutomaticUiAdjustmentsForTouch", base::FEATURE_ENABLED_BY_DEFAULT}; + #endif // defined(OS_WIN) || defined(OS_CHROMEOS) + +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + // Enables stylus appearing as touch when in contact with digitizer. + const base::Feature kDirectManipulationStylus = { + "DirectManipulationStylus", +@@ -121,7 +121,7 @@ const base::Feature kDirectManipulationStylus = { + base::FEATURE_DISABLED_BY_DEFAULT + #endif + }; +-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + + const base::Feature kMash = {"Mash", base::FEATURE_DISABLED_BY_DEFAULT}; + diff --git a/devel/electron5/files/patch-ui_base_ui__base__features.h b/devel/electron5/files/patch-ui_base_ui__base__features.h new file mode 100644 index 000000000000..fd2100167607 --- /dev/null +++ b/devel/electron5/files/patch-ui_base_ui__base__features.h @@ -0,0 +1,14 @@ +--- ui/base/ui_base_features.h.orig 2019-04-08 08:33:23 UTC ++++ ui/base/ui_base_features.h +@@ -46,9 +46,9 @@ UI_BASE_EXPORT bool IsUsingWMPointerForTouch(); + UI_BASE_EXPORT extern const base::Feature kEnableAutomaticUiAdjustmentsForTouch; + #endif // defined(OS_WIN) || defined(OS_CHROMEOS) + +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + UI_BASE_EXPORT extern const base::Feature kDirectManipulationStylus; +-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + + // Used to have ash (Chrome OS system UI) run in its own process. + // TODO(jamescook): Make flag only available in Chrome OS. diff --git a/devel/electron5/files/patch-ui_base_webui_web__ui__util.cc b/devel/electron5/files/patch-ui_base_webui_web__ui__util.cc new file mode 100644 index 000000000000..6861df5eb46a --- /dev/null +++ b/devel/electron5/files/patch-ui_base_webui_web__ui__util.cc @@ -0,0 +1,11 @@ +--- ui/base/webui/web_ui_util.cc.orig 2019-04-08 08:19:15 UTC ++++ ui/base/webui/web_ui_util.cc +@@ -217,7 +217,7 @@ std::string GetFontFamily() { + + // TODO(dnicoara) Remove Ozone check when PlatformFont support is introduced + // into Ozone: crbug.com/320050 +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(USE_OZONE) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) && !defined(USE_OZONE) + font_family = ui::ResourceBundle::GetSharedInstance().GetFont( + ui::ResourceBundle::BaseFont).GetFontName() + ", " + font_family; + #endif diff --git a/devel/electron5/files/patch-ui_events_devices_x11_device__data__manager__x11.cc b/devel/electron5/files/patch-ui_events_devices_x11_device__data__manager__x11.cc new file mode 100644 index 000000000000..f9d8ee9e9c0e --- /dev/null +++ b/devel/electron5/files/patch-ui_events_devices_x11_device__data__manager__x11.cc @@ -0,0 +1,19 @@ +--- ui/events/devices/x11/device_data_manager_x11.cc.orig 2019-04-08 08:19:16 UTC ++++ ui/events/devices/x11/device_data_manager_x11.cc +@@ -828,6 +828,8 @@ void DeviceDataManagerX11::SetDisabledKeyboardAllowedK + } + + void DeviceDataManagerX11::DisableDevice(int deviceid) { ++ NOTIMPLEMENTED(); ++#if !defined(OS_BSD) + blocked_devices_.set(deviceid, true); + // TODO(rsadam@): Support blocking touchscreen devices. + std::vector<InputDevice> keyboards = GetKeyboardDevices(); +@@ -838,6 +840,7 @@ void DeviceDataManagerX11::DisableDevice(int deviceid) + keyboards.erase(it); + DeviceDataManager::OnKeyboardDevicesUpdated(keyboards); + } ++#endif + } + + void DeviceDataManagerX11::EnableDevice(int deviceid) { diff --git a/devel/electron5/files/patch-ui_events_event__switches.cc b/devel/electron5/files/patch-ui_events_event__switches.cc new file mode 100644 index 000000000000..3295c4f061d7 --- /dev/null +++ b/devel/electron5/files/patch-ui_events_event__switches.cc @@ -0,0 +1,11 @@ +--- ui/events/event_switches.cc.orig 2019-04-08 08:19:16 UTC ++++ ui/events/event_switches.cc +@@ -14,7 +14,7 @@ namespace switches { + const char kCompensateForUnstablePinchZoom[] = + "compensate-for-unstable-pinch-zoom"; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_FREEBSD) + // Tells chrome to interpret events from these devices as touch events. Only + // available with XInput 2 (i.e. X server 1.8 or above). The id's of the + // devices can be retrieved from 'xinput list'. diff --git a/devel/electron5/files/patch-ui_events_event__switches.h b/devel/electron5/files/patch-ui_events_event__switches.h new file mode 100644 index 000000000000..8e001da4f46e --- /dev/null +++ b/devel/electron5/files/patch-ui_events_event__switches.h @@ -0,0 +1,11 @@ +--- ui/events/event_switches.h.orig 2019-04-08 08:19:16 UTC ++++ ui/events/event_switches.h +@@ -13,7 +13,7 @@ namespace switches { + + EVENTS_BASE_EXPORT extern const char kCompensateForUnstablePinchZoom[]; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_FREEBSD) + EVENTS_BASE_EXPORT extern const char kTouchDevices[]; + EVENTS_BASE_EXPORT extern const char kPenDevices[]; + #endif diff --git a/devel/electron5/files/patch-ui_events_keycodes_dom_keycode__converter.cc b/devel/electron5/files/patch-ui_events_keycodes_dom_keycode__converter.cc new file mode 100644 index 000000000000..3b1ea5f38c7b --- /dev/null +++ b/devel/electron5/files/patch-ui_events_keycodes_dom_keycode__converter.cc @@ -0,0 +1,11 @@ +--- ui/events/keycodes/dom/keycode_converter.cc.orig 2019-04-08 08:19:16 UTC ++++ ui/events/keycodes/dom/keycode_converter.cc +@@ -19,7 +19,7 @@ namespace { + // and DOM Level 3 |code| strings. + #if defined(OS_WIN) + #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, win, code} +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, xkb, code} + #elif defined(OS_MACOSX) + #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, mac, code} diff --git a/devel/electron5/files/patch-ui_gfx_BUILD.gn b/devel/electron5/files/patch-ui_gfx_BUILD.gn new file mode 100644 index 000000000000..07f7379d0f1a --- /dev/null +++ b/devel/electron5/files/patch-ui_gfx_BUILD.gn @@ -0,0 +1,11 @@ +--- ui/gfx/BUILD.gn.orig 2019-04-08 08:33:23 UTC ++++ ui/gfx/BUILD.gn +@@ -532,7 +532,7 @@ jumbo_source_set("memory_buffer_sources") { + deps += [ "//build/config/linux/libdrm" ] + } + +- if (is_linux || is_android) { ++ if ((is_linux || is_android) && !is_bsd) { + deps += [ "//third_party/libsync" ] + } + diff --git a/devel/electron5/files/patch-ui_gfx_canvas__skia.cc b/devel/electron5/files/patch-ui_gfx_canvas__skia.cc new file mode 100644 index 000000000000..75513ccc572f --- /dev/null +++ b/devel/electron5/files/patch-ui_gfx_canvas__skia.cc @@ -0,0 +1,11 @@ +--- ui/gfx/canvas_skia.cc.orig 2019-04-08 08:19:17 UTC ++++ ui/gfx/canvas_skia.cc +@@ -209,7 +209,7 @@ void Canvas::DrawStringRectWithFlags(const base::strin + Range range = StripAcceleratorChars(flags, &adjusted_text); + bool elide_text = ((flags & NO_ELLIPSIS) == 0); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // On Linux, eliding really means fading the end of the string. But only + // for LTR text. RTL text is still elided (on the left) with "...". + if (elide_text) { diff --git a/devel/electron5/files/patch-ui_gfx_codec_jpeg__codec.cc b/devel/electron5/files/patch-ui_gfx_codec_jpeg__codec.cc new file mode 100644 index 000000000000..59e02aa35a05 --- /dev/null +++ b/devel/electron5/files/patch-ui_gfx_codec_jpeg__codec.cc @@ -0,0 +1,20 @@ +--- ui/gfx/codec/jpeg_codec.cc.orig 2019-04-08 08:19:17 UTC ++++ ui/gfx/codec/jpeg_codec.cc +@@ -207,6 +207,7 @@ bool JPEGCodec::Decode(const unsigned char* input, siz + case JCS_GRAYSCALE: + case JCS_RGB: + case JCS_YCbCr: ++#ifdef JCS_EXTENSIONS + // Choose an output colorspace and return if it is an unsupported one. + // Same as JPEGCodec::Encode(), libjpeg-turbo supports all input formats + // used by Chromium (i.e. RGBA and BGRA) and we just map the input +@@ -223,6 +224,9 @@ bool JPEGCodec::Decode(const unsigned char* input, siz + NOTREACHED() << "Invalid pixel format"; + return false; + } ++#else ++ cinfo.out_color_space = JCS_RGB; ++#endif + break; + case JCS_CMYK: + case JCS_YCCK: diff --git a/devel/electron5/files/patch-ui_gfx_font__fallback__linux.cc b/devel/electron5/files/patch-ui_gfx_font__fallback__linux.cc new file mode 100644 index 000000000000..e10e982002fe --- /dev/null +++ b/devel/electron5/files/patch-ui_gfx_font__fallback__linux.cc @@ -0,0 +1,13 @@ +--- ui/gfx/font_fallback_linux.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/gfx/font_fallback_linux.cc +@@ -15,6 +15,10 @@ + #include "base/memory/ptr_util.h" + #include "ui/gfx/font.h" + ++#if defined(OS_BSD) ++#include <unistd.h> ++#endif ++ + namespace gfx { + + namespace { diff --git a/devel/electron5/files/patch-ui_gfx_font__list.cc b/devel/electron5/files/patch-ui_gfx_font__list.cc new file mode 100644 index 000000000000..42bd4cb4e179 --- /dev/null +++ b/devel/electron5/files/patch-ui_gfx_font__list.cc @@ -0,0 +1,11 @@ +--- ui/gfx/font_list.cc.orig 2019-04-08 08:19:17 UTC ++++ ui/gfx/font_list.cc +@@ -24,7 +24,7 @@ base::LazyInstance<scoped_refptr<gfx::FontListImpl>>:: + bool g_default_impl_initialized = false; + + bool IsFontFamilyAvailable(const std::string& family, SkFontMgr* fontManager) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + return !!fontManager->legacyMakeTypeface(family.c_str(), SkFontStyle()); + #else + sk_sp<SkFontStyleSet> set(fontManager->matchFamily(family.c_str())); diff --git a/devel/electron5/files/patch-ui_gfx_font__render__params.h b/devel/electron5/files/patch-ui_gfx_font__render__params.h new file mode 100644 index 000000000000..3a783e6ab518 --- /dev/null +++ b/devel/electron5/files/patch-ui_gfx_font__render__params.h @@ -0,0 +1,18 @@ +--- ui/gfx/font_render_params.h.orig 2019-04-08 08:19:17 UTC ++++ ui/gfx/font_render_params.h +@@ -111,13 +111,13 @@ GFX_EXPORT FontRenderParams GetFontRenderParams( + const FontRenderParamsQuery& query, + std::string* family_out); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Clears GetFontRenderParams()'s cache. Intended to be called by tests that are + // changing Fontconfig's configuration. + GFX_EXPORT void ClearFontRenderParamsCacheForTest(); + #endif + +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) + // Gets the device scale factor to query the FontRenderParams. + GFX_EXPORT float GetFontRenderParamsDeviceScaleFactor(); + diff --git a/devel/electron5/files/patch-ui_gfx_gpu__memory__buffer.h b/devel/electron5/files/patch-ui_gfx_gpu__memory__buffer.h new file mode 100644 index 000000000000..eac3577d07b1 --- /dev/null +++ b/devel/electron5/files/patch-ui_gfx_gpu__memory__buffer.h @@ -0,0 +1,20 @@ +--- ui/gfx/gpu_memory_buffer.h.orig 2019-04-08 08:33:23 UTC ++++ ui/gfx/gpu_memory_buffer.h +@@ -16,7 +16,7 @@ + #include "ui/gfx/geometry/rect.h" + #include "ui/gfx/gfx_export.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "ui/gfx/native_pixmap_handle.h" + #elif defined(OS_MACOSX) && !defined(OS_IOS) + #include "ui/gfx/mac/io_surface.h" +@@ -65,7 +65,7 @@ struct GFX_EXPORT GpuMemoryBufferHandle { + base::UnsafeSharedMemoryRegion region; + uint32_t offset; + int32_t stride; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // TODO(crbug.com/863011): convert this to a scoped handle. + NativePixmapHandle native_pixmap_handle; + #elif defined(OS_MACOSX) && !defined(OS_IOS) diff --git a/devel/electron5/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h b/devel/electron5/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h new file mode 100644 index 000000000000..53d1475df00a --- /dev/null +++ b/devel/electron5/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h @@ -0,0 +1,29 @@ +--- ui/gfx/ipc/gfx_param_traits_macros.h.orig 2019-04-08 08:33:23 UTC ++++ ui/gfx/ipc/gfx_param_traits_macros.h +@@ -18,7 +18,7 @@ + #include "ui/gfx/selection_bound.h" + #include "ui/gfx/swap_result.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "ui/gfx/native_pixmap_handle.h" + #endif + +@@ -51,7 +51,7 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferHandle) + IPC_STRUCT_TRAITS_MEMBER(region) + IPC_STRUCT_TRAITS_MEMBER(offset) + IPC_STRUCT_TRAITS_MEMBER(stride) +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + IPC_STRUCT_TRAITS_MEMBER(native_pixmap_handle) + #elif defined(OS_MACOSX) + IPC_STRUCT_TRAITS_MEMBER(mach_port) +@@ -66,7 +66,7 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferId) + IPC_STRUCT_TRAITS_MEMBER(id) + IPC_STRUCT_TRAITS_END() + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + IPC_STRUCT_TRAITS_BEGIN(gfx::NativePixmapPlane) + IPC_STRUCT_TRAITS_MEMBER(stride) + IPC_STRUCT_TRAITS_MEMBER(offset) diff --git a/devel/electron5/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc b/devel/electron5/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc new file mode 100644 index 000000000000..835785882d88 --- /dev/null +++ b/devel/electron5/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc @@ -0,0 +1,25 @@ +--- ui/gfx/linux/client_native_pixmap_dmabuf.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/gfx/linux/client_native_pixmap_dmabuf.cc +@@ -5,7 +5,9 @@ + #include "ui/gfx/linux/client_native_pixmap_dmabuf.h" + + #include <fcntl.h> ++#if !defined(__FreeBSD__) + #include <linux/version.h> ++#endif + #include <stddef.h> + #include <sys/ioctl.h> + #include <sys/mman.h> +@@ -18,11 +20,7 @@ + #include "base/trace_event/trace_event.h" + #include "build/build_config.h" + +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) +-#include <linux/dma-buf.h> +-#else +-#include <linux/types.h> +- ++#if defined(__FreeBSD__) + struct dma_buf_sync { + __u64 flags; + }; diff --git a/devel/electron5/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc b/devel/electron5/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc new file mode 100644 index 000000000000..8a6e9d34ccbf --- /dev/null +++ b/devel/electron5/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc @@ -0,0 +1,38 @@ +--- ui/gfx/mojo/buffer_types_struct_traits.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/gfx/mojo/buffer_types_struct_traits.cc +@@ -28,7 +28,7 @@ bool StructTraits<gfx::mojom::BufferUsageAndFormatData + return data.ReadUsage(&out->usage) && data.ReadFormat(&out->format); + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + std::vector<mojo::ScopedHandle> + StructTraits<gfx::mojom::NativePixmapHandleDataView, gfx::NativePixmapHandle>:: + fds(const gfx::NativePixmapHandle& pixmap_handle) { +@@ -55,7 +55,7 @@ bool StructTraits< + } + return data.ReadPlanes(&out->planes); + } +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + gfx::mojom::GpuMemoryBufferPlatformHandlePtr StructTraits< + gfx::mojom::GpuMemoryBufferHandleDataView, +@@ -68,7 +68,7 @@ gfx::mojom::GpuMemoryBufferPlatformHandlePtr StructTra + return gfx::mojom::GpuMemoryBufferPlatformHandle::NewSharedMemoryHandle( + std::move(handle.region)); + case gfx::NATIVE_PIXMAP: +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + return gfx::mojom::GpuMemoryBufferPlatformHandle::NewNativePixmapHandle( + handle.native_pixmap_handle); + #else +@@ -144,7 +144,7 @@ bool StructTraits<gfx::mojom::GpuMemoryBufferHandleDat + out->type = gfx::SHARED_MEMORY_BUFFER; + out->region = std::move(platform_handle->get_shared_memory_handle()); + return true; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + case gfx::mojom::GpuMemoryBufferPlatformHandleDataView::Tag:: + NATIVE_PIXMAP_HANDLE: + out->type = gfx::NATIVE_PIXMAP; diff --git a/devel/electron5/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h b/devel/electron5/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h new file mode 100644 index 000000000000..b35531dad1b3 --- /dev/null +++ b/devel/electron5/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h @@ -0,0 +1,20 @@ +--- ui/gfx/mojo/buffer_types_struct_traits.h.orig 2019-04-08 08:33:23 UTC ++++ ui/gfx/mojo/buffer_types_struct_traits.h +@@ -189,7 +189,7 @@ struct StructTraits<gfx::mojom::GpuMemoryBufferIdDataV + } + }; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + template <> + struct StructTraits<gfx::mojom::NativePixmapPlaneDataView, + gfx::NativePixmapPlane> { +@@ -229,7 +229,7 @@ struct StructTraits<gfx::mojom::NativePixmapHandleData + static bool Read(gfx::mojom::NativePixmapHandleDataView data, + gfx::NativePixmapHandle* out); + }; +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + template <> + struct StructTraits<gfx::mojom::GpuMemoryBufferHandleDataView, diff --git a/devel/electron5/files/patch-ui_gfx_native__pixmap__handle.cc b/devel/electron5/files/patch-ui_gfx_native__pixmap__handle.cc new file mode 100644 index 000000000000..b106d01b1212 --- /dev/null +++ b/devel/electron5/files/patch-ui_gfx_native__pixmap__handle.cc @@ -0,0 +1,28 @@ +--- ui/gfx/native_pixmap_handle.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/gfx/native_pixmap_handle.cc +@@ -4,14 +4,14 @@ + + #include "ui/gfx/native_pixmap_handle.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <drm_fourcc.h> + #include "base/posix/eintr_wrapper.h" + #endif + + namespace gfx { + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + static_assert(NativePixmapPlane::kNoModifier == DRM_FORMAT_MOD_INVALID, + "gfx::NativePixmapPlane::kNoModifier should be an alias for" + "DRM_FORMAT_MOD_INVALID"); +@@ -36,7 +36,7 @@ NativePixmapHandle::NativePixmapHandle(const NativePix + + NativePixmapHandle::~NativePixmapHandle() {} + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + NativePixmapHandle CloneHandleForIPC(const NativePixmapHandle& handle) { + NativePixmapHandle clone; + std::vector<base::ScopedFD> scoped_fds; diff --git a/devel/electron5/files/patch-ui_gfx_native__pixmap__handle.h b/devel/electron5/files/patch-ui_gfx_native__pixmap__handle.h new file mode 100644 index 000000000000..9505cee94540 --- /dev/null +++ b/devel/electron5/files/patch-ui_gfx_native__pixmap__handle.h @@ -0,0 +1,28 @@ +--- ui/gfx/native_pixmap_handle.h.orig 2019-04-08 08:33:23 UTC ++++ ui/gfx/native_pixmap_handle.h +@@ -13,7 +13,7 @@ + #include "build/build_config.h" + #include "ui/gfx/gfx_export.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "base/file_descriptor_posix.h" + #endif + +@@ -54,14 +54,14 @@ struct GFX_EXPORT NativePixmapHandle { + + ~NativePixmapHandle(); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // File descriptors for the underlying memory objects (usually dmabufs). + std::vector<base::FileDescriptor> fds; + #endif + std::vector<NativePixmapPlane> planes; + }; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Returns an instance of |handle| which can be sent over IPC. This duplicates + // the file-handles, so that the IPC code take ownership of them, without + // invalidating |handle|. diff --git a/devel/electron5/files/patch-ui_gfx_render__text.cc b/devel/electron5/files/patch-ui_gfx_render__text.cc new file mode 100644 index 000000000000..14187cc4744e --- /dev/null +++ b/devel/electron5/files/patch-ui_gfx_render__text.cc @@ -0,0 +1,46 @@ +--- ui/gfx/render_text.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/gfx/render_text.cc +@@ -934,32 +934,33 @@ void RenderText::SetDisplayOffset(int horizontal_offse + const int extra_content = GetContentWidth() - display_rect_.width(); + const int cursor_width = cursor_enabled_ ? 1 : 0; + +- int min_offset = 0; +- int max_offset = 0; ++ // avoid collisions with vm_map.h on FreeBSD --cmt ++ int _min_offset = 0; ++ int _max_offset = 0; + if (extra_content > 0) { + switch (GetCurrentHorizontalAlignment()) { + case ALIGN_LEFT: +- min_offset = -extra_content; ++ _min_offset = -extra_content; + break; + case ALIGN_RIGHT: +- max_offset = extra_content; ++ _max_offset = extra_content; + break; + case ALIGN_CENTER: + // The extra space reserved for cursor at the end of the text is ignored + // when centering text. So, to calculate the valid range for offset, we + // exclude that extra space, calculate the range, and add it back to the + // range (if cursor is enabled). +- min_offset = -(extra_content - cursor_width + 1) / 2 - cursor_width; +- max_offset = (extra_content - cursor_width) / 2; ++ _min_offset = -(extra_content - cursor_width + 1) / 2 - cursor_width; ++ _max_offset = (extra_content - cursor_width) / 2; + break; + default: + break; + } + } +- if (horizontal_offset < min_offset) +- horizontal_offset = min_offset; +- else if (horizontal_offset > max_offset) +- horizontal_offset = max_offset; ++ if (horizontal_offset < _min_offset) ++ horizontal_offset = _min_offset; ++ else if (horizontal_offset > _max_offset) ++ horizontal_offset = _max_offset; + + cached_bounds_and_offset_valid_ = true; + display_offset_.set_x(horizontal_offset); diff --git a/devel/electron5/files/patch-ui_gl_BUILD.gn b/devel/electron5/files/patch-ui_gl_BUILD.gn new file mode 100644 index 000000000000..eb92bd407b50 --- /dev/null +++ b/devel/electron5/files/patch-ui_gl_BUILD.gn @@ -0,0 +1,11 @@ +--- ui/gl/BUILD.gn.orig 2019-04-09 12:48:20 UTC ++++ ui/gl/BUILD.gn +@@ -212,7 +212,7 @@ jumbo_component("gl") { + ] + } + +- if (is_posix && !is_fuchsia && !is_mac) { ++ if (is_posix && !is_fuchsia && !is_mac && !is_bsd) { + # Windows has USE_EGL but doesn't support base::FileDescriptor. + # libsync isn't supported or needed on MacOSX. + # Fuchsia is excluded due to a libsync dependency and because it's diff --git a/devel/electron5/files/patch-ui_gl_generate__bindings.py b/devel/electron5/files/patch-ui_gl_generate__bindings.py new file mode 100644 index 000000000000..fc0eadcba2a1 --- /dev/null +++ b/devel/electron5/files/patch-ui_gl_generate__bindings.py @@ -0,0 +1,12 @@ +--- ui/gl/generate_bindings.py.orig 2019-04-08 08:33:23 UTC ++++ ui/gl/generate_bindings.py +@@ -2624,6 +2624,9 @@ GLX_FUNCTIONS = [ + 'arguments': + 'Display* dpy, GLXDrawable drawable, int32_t* numerator, ' + 'int32_t* denominator' }, ++{ 'return_type': '__GLXextFuncPtr', ++ 'names': ['glXGetProcAddressARB'], ++ 'arguments': 'const GLubyte* procName', }, + { 'return_type': 'void', + 'names': ['glXGetSelectedEvent'], + 'arguments': 'Display* dpy, GLXDrawable drawable, unsigned long* mask', }, diff --git a/devel/electron5/files/patch-ui_gl_gl__bindings__api__autogen__glx.h b/devel/electron5/files/patch-ui_gl_gl__bindings__api__autogen__glx.h new file mode 100644 index 000000000000..785f1d44c419 --- /dev/null +++ b/devel/electron5/files/patch-ui_gl_gl__bindings__api__autogen__glx.h @@ -0,0 +1,10 @@ +--- ui/gl/gl_bindings_api_autogen_glx.h.orig 2019-04-08 08:33:23 UTC ++++ ui/gl/gl_bindings_api_autogen_glx.h +@@ -88,6 +88,7 @@ bool glXGetMscRateOMLFn(Display* dpy, + GLXDrawable drawable, + int32_t* numerator, + int32_t* denominator) override; ++__GLXextFuncPtr glXGetProcAddressARBFn(const GLubyte* procName) override; + void glXGetSelectedEventFn(Display* dpy, + GLXDrawable drawable, + unsigned long* mask) override; diff --git a/devel/electron5/files/patch-ui_gl_gl__bindings__autogen__glx.cc b/devel/electron5/files/patch-ui_gl_gl__bindings__autogen__glx.cc new file mode 100644 index 000000000000..14200bfd1d76 --- /dev/null +++ b/devel/electron5/files/patch-ui_gl_gl__bindings__autogen__glx.cc @@ -0,0 +1,61 @@ +--- ui/gl/gl_bindings_autogen_glx.cc.orig 2019-04-08 08:19:17 UTC ++++ ui/gl/gl_bindings_autogen_glx.cc +@@ -115,6 +115,8 @@ void DriverGLX::InitializeExtensionBindings() { + + ext.b_GLX_ARB_create_context = + gfx::HasExtension(extensions, "GLX_ARB_create_context"); ++ ext.b_GLX_ARB_get_proc_address = ++ gfx::HasExtension(extensions, "GLX_ARB_get_proc_address"); + ext.b_GLX_EXT_swap_control = + gfx::HasExtension(extensions, "GLX_EXT_swap_control"); + ext.b_GLX_EXT_texture_from_pixmap = +@@ -145,6 +147,11 @@ void DriverGLX::InitializeExtensionBindings() { + GetGLProcAddress("glXCreateContextAttribsARB")); + } + ++ if (ext.b_GLX_ARB_get_proc_address) { ++ fn.glXGetProcAddressARBFn = reinterpret_cast<glXGetProcAddressARBProc>( ++ GetGLProcAddress("glXGetProcAddressARB")); ++ } ++ + if (ext.b_GLX_SGIX_fbconfig) { + fn.glXGetFBConfigFromVisualSGIXFn = + reinterpret_cast<glXGetFBConfigFromVisualSGIXProc>( +@@ -346,6 +353,10 @@ bool GLXApiBase::glXGetMscRateOMLFn(Display* dpy, + return driver_->fn.glXGetMscRateOMLFn(dpy, drawable, numerator, denominator); + } + ++__GLXextFuncPtr GLXApiBase::glXGetProcAddressARBFn(const GLubyte* procName) { ++ return driver_->fn.glXGetProcAddressARBFn(procName); ++} ++ + void GLXApiBase::glXGetSelectedEventFn(Display* dpy, + GLXDrawable drawable, + unsigned long* mask) { +@@ -646,6 +657,11 @@ bool TraceGLXApi::glXGetMscRateOMLFn(Display* dpy, + return glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator); + } + ++__GLXextFuncPtr TraceGLXApi::glXGetProcAddressARBFn(const GLubyte* procName) { ++ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetProcAddressARB") ++ return glx_api_->glXGetProcAddressARBFn(procName); ++} ++ + void TraceGLXApi::glXGetSelectedEventFn(Display* dpy, + GLXDrawable drawable, + unsigned long* mask) { +@@ -1068,6 +1084,14 @@ bool DebugGLXApi::glXGetMscRateOMLFn(Display* dpy, + << static_cast<const void*>(denominator) << ")"); + bool result = + glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator); ++ GL_SERVICE_LOG("GL_RESULT: " << result); ++ return result; ++} ++ ++__GLXextFuncPtr DebugGLXApi::glXGetProcAddressARBFn(const GLubyte* procName) { ++ GL_SERVICE_LOG("glXGetProcAddressARB" ++ << "(" << static_cast<const void*>(procName) << ")"); ++ __GLXextFuncPtr result = glx_api_->glXGetProcAddressARBFn(procName); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; + } diff --git a/devel/electron5/files/patch-ui_gl_gl__bindings__autogen__glx.h b/devel/electron5/files/patch-ui_gl_gl__bindings__autogen__glx.h new file mode 100644 index 000000000000..f31d727ea5d0 --- /dev/null +++ b/devel/electron5/files/patch-ui_gl_gl__bindings__autogen__glx.h @@ -0,0 +1,43 @@ +--- ui/gl/gl_bindings_autogen_glx.h.orig 2019-04-08 08:19:17 UTC ++++ ui/gl/gl_bindings_autogen_glx.h +@@ -104,6 +104,8 @@ typedef bool(GL_BINDING_CALL* glXGetMscRateOMLProc)(Di + GLXDrawable drawable, + int32_t* numerator, + int32_t* denominator); ++typedef __GLXextFuncPtr(GL_BINDING_CALL* glXGetProcAddressARBProc)( ++ const GLubyte* procName); + typedef void(GL_BINDING_CALL* glXGetSelectedEventProc)(Display* dpy, + GLXDrawable drawable, + unsigned long* mask); +@@ -166,6 +168,7 @@ typedef void(GL_BINDING_CALL* glXWaitXProc)(void); + + struct ExtensionsGLX { + bool b_GLX_ARB_create_context; ++ bool b_GLX_ARB_get_proc_address; + bool b_GLX_EXT_swap_control; + bool b_GLX_EXT_texture_from_pixmap; + bool b_GLX_MESA_copy_sub_buffer; +@@ -203,6 +206,7 @@ struct ProcsGLX { + glXGetFBConfigFromVisualSGIXProc glXGetFBConfigFromVisualSGIXFn; + glXGetFBConfigsProc glXGetFBConfigsFn; + glXGetMscRateOMLProc glXGetMscRateOMLFn; ++ glXGetProcAddressARBProc glXGetProcAddressARBFn; + glXGetSelectedEventProc glXGetSelectedEventFn; + glXGetSyncValuesOMLProc glXGetSyncValuesOMLFn; + glXGetVisualFromFBConfigProc glXGetVisualFromFBConfigFn; +@@ -310,6 +314,7 @@ class GL_EXPORT GLXApi { + GLXDrawable drawable, + int32_t* numerator, + int32_t* denominator) = 0; ++ virtual __GLXextFuncPtr glXGetProcAddressARBFn(const GLubyte* procName) = 0; + virtual void glXGetSelectedEventFn(Display* dpy, + GLXDrawable drawable, + unsigned long* mask) = 0; +@@ -394,6 +399,7 @@ class GL_EXPORT GLXApi { + ::gl::g_current_glx_context->glXGetFBConfigFromVisualSGIXFn + #define glXGetFBConfigs ::gl::g_current_glx_context->glXGetFBConfigsFn + #define glXGetMscRateOML ::gl::g_current_glx_context->glXGetMscRateOMLFn ++#define glXGetProcAddressARB ::gl::g_current_glx_context->glXGetProcAddressARBFn + #define glXGetSelectedEvent ::gl::g_current_glx_context->glXGetSelectedEventFn + #define glXGetSyncValuesOML ::gl::g_current_glx_context->glXGetSyncValuesOMLFn + #define glXGetVisualFromFBConfig \ diff --git a/devel/electron5/files/patch-ui_gl_gl__fence.cc b/devel/electron5/files/patch-ui_gl_gl__fence.cc new file mode 100644 index 000000000000..e76adcbe9d77 --- /dev/null +++ b/devel/electron5/files/patch-ui_gl_gl__fence.cc @@ -0,0 +1,11 @@ +--- ui/gl/gl_fence.cc.orig 2019-04-08 08:19:17 UTC ++++ ui/gl/gl_fence.cc +@@ -18,7 +18,7 @@ + #include "ui/gl/gl_fence_apple.h" + #endif + +-#if defined(USE_EGL) && defined(OS_POSIX) && !defined(OS_MACOSX) ++#if defined(USE_EGL) && defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_FREEBSD) + #define USE_GL_FENCE_ANDROID_NATIVE_FENCE_SYNC + #include "ui/gl/gl_fence_android_native_fence_sync.h" + #include "ui/gl/gl_surface_egl.h" diff --git a/devel/electron5/files/patch-ui_gl_sync__control__vsync__provider.cc b/devel/electron5/files/patch-ui_gl_sync__control__vsync__provider.cc new file mode 100644 index 000000000000..039c8d485d00 --- /dev/null +++ b/devel/electron5/files/patch-ui_gl_sync__control__vsync__provider.cc @@ -0,0 +1,43 @@ +--- ui/gl/sync_control_vsync_provider.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/gl/sync_control_vsync_provider.cc +@@ -11,7 +11,7 @@ + #include "base/trace_event/trace_event.h" + #include "build/build_config.h" + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // These constants define a reasonable range for a calculated refresh interval. + // Calculating refreshes out of this range will be considered a fatal error. + const int64_t kMinVsyncIntervalUs = base::Time::kMicrosecondsPerSecond / 400; +@@ -26,7 +26,7 @@ const double kRelativeIntervalDifferenceThreshold = 0. + namespace gl { + + SyncControlVSyncProvider::SyncControlVSyncProvider() : gfx::VSyncProvider() { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // On platforms where we can't get an accurate reading on the refresh + // rate we fall back to the assumption that we're displaying 60 frames + // per second. +@@ -48,7 +48,7 @@ bool SyncControlVSyncProvider::GetVSyncParametersIfAva + base::TimeTicks* timebase_out, + base::TimeDelta* interval_out) { + TRACE_EVENT0("gpu", "SyncControlVSyncProvider::GetVSyncParameters"); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // The actual clock used for the system time returned by glXGetSyncValuesOML + // is unspecified. In practice, the clock used is likely to be either + // CLOCK_REALTIME or CLOCK_MONOTONIC, so we compare the returned time to the +@@ -157,11 +157,11 @@ bool SyncControlVSyncProvider::GetVSyncParametersIfAva + return true; + #else + return false; +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + } + + bool SyncControlVSyncProvider::SupportGetVSyncParametersIfAvailable() const { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + return true; + #else + return false; diff --git a/devel/electron5/files/patch-ui_gl_sync__control__vsync__provider.h b/devel/electron5/files/patch-ui_gl_sync__control__vsync__provider.h new file mode 100644 index 000000000000..e113b28ecf49 --- /dev/null +++ b/devel/electron5/files/patch-ui_gl_sync__control__vsync__provider.h @@ -0,0 +1,34 @@ +--- ui/gl/sync_control_vsync_provider.h.orig 2019-04-08 08:33:23 UTC ++++ ui/gl/sync_control_vsync_provider.h +@@ -26,11 +26,11 @@ class SyncControlVSyncProvider : public gfx::VSyncProv + bool SupportGetVSyncParametersIfAvailable() const override; + + static constexpr bool IsSupported() { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + return true; + #else + return false; +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + } + + protected: +@@ -41,7 +41,7 @@ class SyncControlVSyncProvider : public gfx::VSyncProv + virtual bool GetMscRate(int32_t* numerator, int32_t* denominator) = 0; + + private: +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + base::TimeTicks last_timebase_; + uint64_t last_media_stream_counter_ = 0; + base::TimeDelta last_good_interval_; +@@ -52,7 +52,7 @@ class SyncControlVSyncProvider : public gfx::VSyncProv + // from configuration change (monitor reconfiguration, moving windows + // between monitors, suspend and resume, etc.). + base::queue<base::TimeDelta> last_computed_intervals_; +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + DISALLOW_COPY_AND_ASSIGN(SyncControlVSyncProvider); + }; diff --git a/devel/electron5/files/patch-ui_message__center_public_cpp_message__center__constants.h b/devel/electron5/files/patch-ui_message__center_public_cpp_message__center__constants.h new file mode 100644 index 000000000000..0608ec2a2107 --- /dev/null +++ b/devel/electron5/files/patch-ui_message__center_public_cpp_message__center__constants.h @@ -0,0 +1,11 @@ +--- ui/message_center/public/cpp/message_center_constants.h.orig 2019-04-08 08:33:23 UTC ++++ ui/message_center/public/cpp/message_center_constants.h +@@ -101,7 +101,7 @@ const int kButtonHorizontalPadding = 16; // In DIPs. + const int kButtonIconTopPadding = 11; // In DIPs. + const int kButtonIconToTitlePadding = 16; // In DIPs. + +-#if !defined(OS_LINUX) || defined(USE_AURA) ++#if (!defined(OS_LINUX) && !defined(OS_BSD)) || defined(USE_AURA) + constexpr SkColor kButtonSeparatorColor = SkColorSetRGB(234, 234, 234); + constexpr SkColor kHoveredButtonBackgroundColor = SkColorSetRGB(243, 243, 243); + #endif diff --git a/devel/electron5/files/patch-ui_message__center_views_message__popup__view.cc b/devel/electron5/files/patch-ui_message__center_views_message__popup__view.cc new file mode 100644 index 000000000000..8028f1841d1f --- /dev/null +++ b/devel/electron5/files/patch-ui_message__center_views_message__popup__view.cc @@ -0,0 +1,11 @@ +--- ui/message_center/views/message_popup_view.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/message_center/views/message_popup_view.cc +@@ -114,7 +114,7 @@ void MessagePopupView::AutoCollapse() { + void MessagePopupView::Show() { + views::Widget::InitParams params(views::Widget::InitParams::TYPE_POPUP); + params.keep_on_top = true; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + params.opacity = views::Widget::InitParams::OPAQUE_WINDOW; + #else + params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW; diff --git a/devel/electron5/files/patch-ui_native__theme_native__theme.h b/devel/electron5/files/patch-ui_native__theme_native__theme.h new file mode 100644 index 000000000000..224a44acdce1 --- /dev/null +++ b/devel/electron5/files/patch-ui_native__theme_native__theme.h @@ -0,0 +1,11 @@ +--- ui/native_theme/native_theme.h.orig 2019-04-08 08:33:23 UTC ++++ ui/native_theme/native_theme.h +@@ -48,7 +48,7 @@ class NATIVE_THEME_EXPORT NativeTheme { + // The part to be painted / sized. + enum Part { + kCheckbox, +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + kFrameTopArea, + #endif + kInnerSpinButton, diff --git a/devel/electron5/files/patch-ui_native__theme_native__theme__base.cc b/devel/electron5/files/patch-ui_native__theme_native__theme__base.cc new file mode 100644 index 000000000000..5d4023386285 --- /dev/null +++ b/devel/electron5/files/patch-ui_native__theme_native__theme__base.cc @@ -0,0 +1,11 @@ +--- ui/native_theme/native_theme_base.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/native_theme/native_theme_base.cc +@@ -172,7 +172,7 @@ void NativeThemeBase::Paint(cc::PaintCanvas* canvas, + case kCheckbox: + PaintCheckbox(canvas, state, rect, extra.button); + break; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + case kFrameTopArea: + PaintFrameTopArea(canvas, state, rect, extra.frame_top_area); + break; diff --git a/devel/electron5/files/patch-ui_strings_app__locale__settings.grd b/devel/electron5/files/patch-ui_strings_app__locale__settings.grd new file mode 100644 index 000000000000..8cf98ec05f98 --- /dev/null +++ b/devel/electron5/files/patch-ui_strings_app__locale__settings.grd @@ -0,0 +1,11 @@ +--- ui/strings/app_locale_settings.grd.orig 2019-04-08 08:19:17 UTC ++++ ui/strings/app_locale_settings.grd +@@ -187,7 +187,7 @@ + 75% + </message> + </if> +- <if expr="(is_linux or is_android or is_bsd) and not chromeos"> ++ <if expr="is_posix and not chromeos"> + <!-- The font used in Web UI (e.g. History). Note that these are only + backups. We try to use the system font if possible. --> + <message name="IDS_WEB_FONT_FAMILY" use_name_for_id="true"> diff --git a/devel/electron5/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc b/devel/electron5/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc new file mode 100644 index 000000000000..2b7574f2be16 --- /dev/null +++ b/devel/electron5/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc @@ -0,0 +1,11 @@ +--- ui/views/bubble/bubble_dialog_delegate_view.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/views/bubble/bubble_dialog_delegate_view.cc +@@ -112,7 +112,7 @@ Widget* BubbleDialogDelegateView::CreateBubble( + bubble_delegate->SetAnchorView(bubble_delegate->GetAnchorView()); + Widget* bubble_widget = CreateBubbleWidget(bubble_delegate); + +-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD) + // Linux clips bubble windows that extend outside their parent window bounds. + // Mac never adjusts. + bubble_delegate->set_adjust_if_offscreen(false); diff --git a/devel/electron5/files/patch-ui_views_controls_label.cc b/devel/electron5/files/patch-ui_views_controls_label.cc new file mode 100644 index 000000000000..cd96a1096ab7 --- /dev/null +++ b/devel/electron5/files/patch-ui_views_controls_label.cc @@ -0,0 +1,20 @@ +--- ui/views/controls/label.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/views/controls/label.cc +@@ -542,7 +542,7 @@ bool Label::OnMousePressed(const ui::MouseEvent& event + GetFocusManager()->SetFocusedView(this); + } + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + if (event.IsOnlyMiddleMouseButton() && GetFocusManager() && !had_focus) + GetFocusManager()->SetFocusedView(this); + #endif +@@ -727,7 +727,7 @@ bool Label::PasteSelectionClipboard() { + } + + void Label::UpdateSelectionClipboard() { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + if (!obscured()) { + ui::ScopedClipboardWriter(ui::CLIPBOARD_TYPE_SELECTION) + .WriteText(GetSelectedText()); diff --git a/devel/electron5/files/patch-ui_views_controls_textfield_textfield.cc b/devel/electron5/files/patch-ui_views_controls_textfield_textfield.cc new file mode 100644 index 000000000000..21aa5d89b843 --- /dev/null +++ b/devel/electron5/files/patch-ui_views_controls_textfield_textfield.cc @@ -0,0 +1,73 @@ +--- ui/views/controls/textfield/textfield.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/views/controls/textfield/textfield.cc +@@ -59,7 +59,7 @@ + #include "base/win/win_util.h" + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + #include "base/strings/utf_string_conversions.h" + #include "ui/base/ime/linux/text_edit_command_auralinux.h" + #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h" +@@ -162,14 +162,14 @@ ui::TextEditCommand GetCommandForKeyEvent(const ui::Ke + case ui::VKEY_BACK: + if (!control) + return ui::TextEditCommand::DELETE_BACKWARD; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Only erase by line break on Linux and ChromeOS. + if (shift) + return ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE; + #endif + return ui::TextEditCommand::DELETE_WORD_BACKWARD; + case ui::VKEY_DELETE: +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Only erase by line break on Linux and ChromeOS. + if (shift && control) + return ui::TextEditCommand::DELETE_TO_END_OF_LINE; +@@ -228,7 +228,7 @@ bool IsControlKeyModifier(int flags) { + // Control-modified key combination, but we cannot extend it to other platforms + // as Control has different meanings and behaviors. + // https://crrev.com/2580483002/#msg46 +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + return flags & ui::EF_CONTROL_DOWN; + #else + return false; +@@ -682,7 +682,7 @@ bool Textfield::OnMousePressed(const ui::MouseEvent& e + #endif + } + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + if (!handled && !had_focus && event.IsOnlyMiddleMouseButton()) + RequestFocusWithPointer(ui::EventPointerType::POINTER_TYPE_MOUSE); + #endif +@@ -726,7 +726,7 @@ bool Textfield::OnKeyPressed(const ui::KeyEvent& event + if (!textfield) + return handled; + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + ui::TextEditKeyBindingsDelegateAuraLinux* delegate = + ui::GetTextEditKeyBindingsDelegate(); + std::vector<ui::TextEditCommandAuraLinux> commands; +@@ -894,7 +894,7 @@ void Textfield::AboutToRequestFocusFromTabTraversal(bo + } + + bool Textfield::SkipDefaultKeyEventProcessing(const ui::KeyEvent& event) { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + // Skip any accelerator handling that conflicts with custom keybindings. + ui::TextEditKeyBindingsDelegateAuraLinux* delegate = + ui::GetTextEditKeyBindingsDelegate(); +@@ -2076,7 +2076,7 @@ bool Textfield::PasteSelectionClipboard() { + } + + void Textfield::UpdateSelectionClipboard() { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + if (text_input_type_ != ui::TEXT_INPUT_TYPE_PASSWORD) { + ui::ScopedClipboardWriter(ui::CLIPBOARD_TYPE_SELECTION) + .WriteText(GetSelectedText()); diff --git a/devel/electron5/files/patch-ui_views_corewm_tooltip__aura.cc b/devel/electron5/files/patch-ui_views_corewm_tooltip__aura.cc new file mode 100644 index 000000000000..a79d1cf880df --- /dev/null +++ b/devel/electron5/files/patch-ui_views_corewm_tooltip__aura.cc @@ -0,0 +1,11 @@ +--- ui/views/corewm/tooltip_aura.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/views/corewm/tooltip_aura.cc +@@ -34,7 +34,7 @@ const int kCursorOffsetY = 15; + + // TODO(varkha): Update if native widget can be transparent on Linux. + bool CanUseTranslucentTooltipWidget() { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + return false; + #else + return true; diff --git a/devel/electron5/files/patch-ui_views_examples_widget__example.cc b/devel/electron5/files/patch-ui_views_examples_widget__example.cc new file mode 100644 index 000000000000..0535628576ce --- /dev/null +++ b/devel/electron5/files/patch-ui_views_examples_widget__example.cc @@ -0,0 +1,11 @@ +--- ui/views/examples/widget_example.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/views/examples/widget_example.cc +@@ -79,7 +79,7 @@ void WidgetExample::CreateExampleView(View* container) + BuildButton(container, "Popup widget", POPUP); + BuildButton(container, "Dialog widget", DIALOG); + BuildButton(container, "Modal Dialog", MODAL_DIALOG); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Windows does not support TYPE_CONTROL top-level widgets. + BuildButton(container, "Child widget", CHILD); + #endif diff --git a/devel/electron5/files/patch-ui_views_selection__controller.cc b/devel/electron5/files/patch-ui_views_selection__controller.cc new file mode 100644 index 000000000000..88c625fe68ba --- /dev/null +++ b/devel/electron5/files/patch-ui_views_selection__controller.cc @@ -0,0 +1,11 @@ +--- ui/views/selection_controller.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/views/selection_controller.cc +@@ -20,7 +20,7 @@ SelectionController::SelectionController(SelectionCont + delegate_(delegate), + handles_selection_clipboard_(false) { + // On Linux, update the selection clipboard on a text selection. +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + set_handles_selection_clipboard(true); + #endif + diff --git a/devel/electron5/files/patch-ui_views_style_platform__style.cc b/devel/electron5/files/patch-ui_views_style_platform__style.cc new file mode 100644 index 000000000000..bf650a418e06 --- /dev/null +++ b/devel/electron5/files/patch-ui_views_style_platform__style.cc @@ -0,0 +1,11 @@ +--- ui/views/style/platform_style.cc.orig 2019-04-08 08:19:19 UTC ++++ ui/views/style/platform_style.cc +@@ -18,7 +18,7 @@ + + #if defined(OS_CHROMEOS) + #include "ui/views/controls/scrollbar/overlay_scroll_bar.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #define DESKTOP_LINUX + #endif + diff --git a/devel/electron5/files/patch-ui_views_views__delegate.cc b/devel/electron5/files/patch-ui_views_views__delegate.cc new file mode 100644 index 000000000000..a608f985187b --- /dev/null +++ b/devel/electron5/files/patch-ui_views_views__delegate.cc @@ -0,0 +1,11 @@ +--- ui/views/views_delegate.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/views/views_delegate.cc +@@ -85,7 +85,7 @@ HICON ViewsDelegate::GetSmallWindowIcon() const { + bool ViewsDelegate::IsWindowInMetro(gfx::NativeWindow window) const { + return false; + } +-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD) + gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const { + return nullptr; + } diff --git a/devel/electron5/files/patch-ui_views_views__delegate.h b/devel/electron5/files/patch-ui_views_views__delegate.h new file mode 100644 index 000000000000..9b724836d4c8 --- /dev/null +++ b/devel/electron5/files/patch-ui_views_views__delegate.h @@ -0,0 +1,11 @@ +--- ui/views/views_delegate.h.orig 2019-04-08 08:33:23 UTC ++++ ui/views/views_delegate.h +@@ -146,7 +146,7 @@ class VIEWS_EXPORT ViewsDelegate { + // Returns true if the window passed in is in the Windows 8 metro + // environment. + virtual bool IsWindowInMetro(gfx::NativeWindow window) const; +-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_FREEBSD) + virtual gfx::ImageSkia* GetDefaultWindowIcon() const; + #endif + diff --git a/devel/electron5/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc b/devel/electron5/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc new file mode 100644 index 000000000000..eea463ebd9be --- /dev/null +++ b/devel/electron5/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc @@ -0,0 +1,20 @@ +--- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc +@@ -89,7 +89,7 @@ void DesktopWindowTreeHostPlatform::OnNativeWidgetCrea + const Widget::InitParams& params) { + native_widget_delegate_->OnNativeWidgetCreated(); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Setup a non_client_window_event_filter, which handles resize/move, double + // click and other events. + DCHECK(!non_client_window_event_filter_); +@@ -540,7 +540,7 @@ void DesktopWindowTreeHostPlatform::Relayout() { + } + + void DesktopWindowTreeHostPlatform::RemoveNonClientEventFilter() { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + if (!non_client_window_event_filter_) + return; + diff --git a/devel/electron5/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h b/devel/electron5/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h new file mode 100644 index 000000000000..c0bd14af5505 --- /dev/null +++ b/devel/electron5/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h @@ -0,0 +1,11 @@ +--- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h.orig 2019-04-08 08:19:19 UTC ++++ ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h +@@ -119,7 +119,7 @@ class VIEWS_EXPORT DesktopWindowTreeHostPlatform + + bool is_active_ = false; + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // A handler for events intended for non client area. + std::unique_ptr<WindowEventFilter> non_client_window_event_filter_; + #endif diff --git a/devel/electron5/files/patch-ui_views_window_custom__frame__view.cc b/devel/electron5/files/patch-ui_views_window_custom__frame__view.cc new file mode 100644 index 000000000000..6edd78d825db --- /dev/null +++ b/devel/electron5/files/patch-ui_views_window_custom__frame__view.cc @@ -0,0 +1,11 @@ +--- ui/views/window/custom_frame_view.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/views/window/custom_frame_view.cc +@@ -305,7 +305,7 @@ int CustomFrameView::NonClientTopBorderHeight() const + int CustomFrameView::CaptionButtonY() const { + // Maximized buttons start at window top so that even if their images aren't + // drawn flush with the screen edge, they still obey Fitts' Law. +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD) + return FrameBorderThickness(); + #else + return frame_->IsMaximized() ? FrameBorderThickness() : kFrameShadowThickness; diff --git a/devel/electron5/files/patch-ui_views_window_dialog__delegate.cc b/devel/electron5/files/patch-ui_views_window_dialog__delegate.cc new file mode 100644 index 000000000000..c5cdd41aa27c --- /dev/null +++ b/devel/electron5/files/patch-ui_views_window_dialog__delegate.cc @@ -0,0 +1,11 @@ +--- ui/views/window/dialog_delegate.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/views/window/dialog_delegate.cc +@@ -64,7 +64,7 @@ Widget::InitParams DialogDelegate::GetDialogWidgetInit + params.bounds = bounds; + DialogDelegate* dialog = delegate->AsDialogDelegate(); + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + // The new style doesn't support unparented dialogs on Linux desktop. + if (dialog) + dialog->supports_custom_frame_ &= parent != NULL; diff --git a/devel/electron5/files/patch-ui_views_window_frame__background.cc b/devel/electron5/files/patch-ui_views_window_frame__background.cc new file mode 100644 index 000000000000..e05c5cfbd54f --- /dev/null +++ b/devel/electron5/files/patch-ui_views_window_frame__background.cc @@ -0,0 +1,11 @@ +--- ui/views/window/frame_background.cc.orig 2019-04-08 08:33:23 UTC ++++ ui/views/window/frame_background.cc +@@ -122,7 +122,7 @@ void FrameBackground::PaintMaximized(gfx::Canvas* canv + const View* view) const { + // Fill the top with the frame color first so we have a constant background + // for areas not covered by the theme image. +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + auto* native_theme = view->GetNativeTheme(); + ui::NativeTheme::ExtraParams params; + params.frame_top_area.use_custom_frame = use_custom_frame_; diff --git a/devel/electron5/files/patch-ui_webui_resources_js_cr.js b/devel/electron5/files/patch-ui_webui_resources_js_cr.js new file mode 100644 index 000000000000..d40813627944 --- /dev/null +++ b/devel/electron5/files/patch-ui_webui_resources_js_cr.js @@ -0,0 +1,14 @@ +--- ui/webui/resources/js/cr.js.orig 2019-04-08 08:19:20 UTC ++++ ui/webui/resources/js/cr.js +@@ -463,6 +463,11 @@ var cr = cr || function(global) { + get doc() { + return document; + }, ++ ++ /** Whether this is on *BSD. */ ++ get isBSD() { ++ return /BSD/.test(navigator.userAgent); ++ }, + + /** Whether we are using a Mac or not. */ + get isMac() { diff --git a/devel/electron5/files/patch-ui_webui_resources_js_icon.js b/devel/electron5/files/patch-ui_webui_resources_js_icon.js new file mode 100644 index 000000000000..4572999d12ab --- /dev/null +++ b/devel/electron5/files/patch-ui_webui_resources_js_icon.js @@ -0,0 +1,11 @@ +--- ui/webui/resources/js/icon.js.orig 2019-04-08 08:19:20 UTC ++++ ui/webui/resources/js/icon.js +@@ -14,7 +14,7 @@ cr.define('cr.icon', function() { + // supports SCALE_FACTOR_100P on all non-iOS platforms. + supportedScaleFactors.push(1); + } +- if (cr.isMac || cr.isChromeOS || cr.isWindows || cr.isLinux) { ++ if (cr.isMac || cr.isChromeOS || cr.isWindows || cr.isLinux || cr.isBSD) { + // All desktop platforms support zooming which also updates the renderer's + // device scale factors (a.k.a devicePixelRatio), and these platforms have + // high DPI assets for 2x. Let the renderer pick the closest image for diff --git a/devel/electron5/files/patch-v8_BUILD.gn b/devel/electron5/files/patch-v8_BUILD.gn new file mode 100644 index 000000000000..0daa98351092 --- /dev/null +++ b/devel/electron5/files/patch-v8_BUILD.gn @@ -0,0 +1,32 @@ +--- v8/BUILD.gn.orig 2019-06-10 07:45:01 UTC ++++ v8/BUILD.gn +@@ -3177,7 +3177,7 @@ v8_component("v8_libbase") { + } + } + +- if (is_linux) { ++ if (is_linux && !is_bsd) { + sources += [ + "src/base/debug/stack_trace_posix.cc", + "src/base/platform/platform-linux.cc", +@@ -3197,6 +3197,12 @@ v8_component("v8_libbase") { + "dl", + "rt", + ] ++ } else if (is_bsd) { ++ sources += [ ++ "src/base/debug/stack_trace_posix.cc", ++ "src/base/platform/platform-freebsd.cc", ++ ] ++ libs = [ "rt", "execinfo" ] + } else if (is_android) { + if (current_toolchain == host_toolchain) { + libs = [ +@@ -3399,6 +3405,7 @@ if (v8_use_snapshot && current_toolchain == v8_snapsho + "src/snapshot/embedded-file-writer.h", + "src/snapshot/mksnapshot.cc", + ] ++ libs = ["execinfo"] + + configs = [ ":internal_config" ] + diff --git a/devel/electron5/files/patch-v8_src_api.cc b/devel/electron5/files/patch-v8_src_api.cc new file mode 100644 index 000000000000..ac092b1698aa --- /dev/null +++ b/devel/electron5/files/patch-v8_src_api.cc @@ -0,0 +1,20 @@ +--- v8/src/api.cc.orig 2019-04-09 12:48:20 UTC ++++ v8/src/api.cc +@@ -107,7 +107,7 @@ + #include "src/wasm/wasm-result.h" + #include "src/wasm/wasm-serialization.h" + +-#if V8_OS_LINUX || V8_OS_MACOSX ++#if V8_OS_LINUX || V8_OS_MACOSX || V8_OS_OPENBSD || V8_OS_FREEBSD + #include <signal.h> + #include "include/v8-wasm-trap-handler-posix.h" + #include "src/trap-handler/handler-inside-posix.h" +@@ -5835,7 +5835,7 @@ bool v8::V8::Initialize() { + return true; + } + +-#if V8_OS_LINUX || V8_OS_MACOSX ++#if V8_OS_LINUX || V8_OS_MACOSX || V8_OS_OPENBSD || V8_OS_FREEBSD + bool TryHandleWebAssemblyTrapPosix(int sig_code, siginfo_t* info, + void* context) { + #if V8_TARGET_ARCH_X64 && !V8_OS_ANDROID diff --git a/devel/electron5/files/patch-v8_src_base_cpu.cc b/devel/electron5/files/patch-v8_src_base_cpu.cc new file mode 100644 index 000000000000..7faa79f7ae34 --- /dev/null +++ b/devel/electron5/files/patch-v8_src_base_cpu.cc @@ -0,0 +1,18 @@ +--- v8/src/base/cpu.cc.orig 2019-04-08 08:26:55 UTC ++++ v8/src/base/cpu.cc +@@ -424,6 +424,7 @@ CPU::CPU() + + #if V8_OS_LINUX + ++#if V8_OS_LINUX + CPUInfo cpu_info; + + // Extract implementor from the "CPU implementer" field. +@@ -457,6 +458,7 @@ CPU::CPU() + } + delete[] part; + } ++#endif + + // Extract architecture from the "CPU Architecture" field. + // The list is well-known, unlike the the output of diff --git a/devel/electron5/files/patch-v8_src_base_platform_platform-posix.cc b/devel/electron5/files/patch-v8_src_base_platform_platform-posix.cc new file mode 100644 index 000000000000..b336d56e7650 --- /dev/null +++ b/devel/electron5/files/patch-v8_src_base_platform_platform-posix.cc @@ -0,0 +1,24 @@ +--- v8/src/base/platform/platform-posix.cc.orig 2019-04-08 08:34:40 UTC ++++ v8/src/base/platform/platform-posix.cc +@@ -376,7 +376,7 @@ bool OS::DiscardSystemPages(void* address, size_t size + + // static + bool OS::HasLazyCommits() { +-#if V8_OS_AIX || V8_OS_LINUX || V8_OS_MACOSX ++#if V8_OS_AIX || V8_OS_LINUX || V8_OS_MACOSX || V8_OS_FREEBSD + return true; + #else + // TODO(bbudge) Return true for all POSIX platforms. +@@ -501,6 +501,12 @@ int OS::GetCurrentThreadId() { + return static_cast<int>(syscall(__NR_gettid)); + #elif V8_OS_ANDROID + return static_cast<int>(gettid()); ++#elif V8_OS_DRAGONFLYBSD || defined(__DragonFly__) ++ return static_cast<int>(lwp_gettid()); ++#elif V8_OS_FREEBSD ++ return static_cast<int>(pthread_getthreadid_np()); ++#elif V8_OS_NETBSD ++ return static_cast<int>(_lwp_self()); + #elif V8_OS_AIX + return static_cast<int>(thread_self()); + #elif V8_OS_FUCHSIA diff --git a/devel/electron5/files/patch-v8_src_external-reference-table.cc b/devel/electron5/files/patch-v8_src_external-reference-table.cc new file mode 100644 index 000000000000..3badf885bec1 --- /dev/null +++ b/devel/electron5/files/patch-v8_src_external-reference-table.cc @@ -0,0 +1,11 @@ +--- v8/src/external-reference-table.cc.orig 2019-04-08 08:34:40 UTC ++++ v8/src/external-reference-table.cc +@@ -9,7 +9,7 @@ + #include "src/external-reference.h" + #include "src/ic/stub-cache.h" + +-#if defined(DEBUG) && defined(V8_OS_LINUX) && !defined(V8_OS_ANDROID) ++#if defined(DEBUG) && (defined(V8_OS_LINUX) || defined(V8_OS_FREEBSD)) && !defined(V8_OS_ANDROID) + #define SYMBOLIZE_FUNCTION + #include <execinfo.h> + #include <vector> diff --git a/devel/electron5/files/patch-v8_src_log-utils.h b/devel/electron5/files/patch-v8_src_log-utils.h new file mode 100644 index 000000000000..dc2ecb7eb5db --- /dev/null +++ b/devel/electron5/files/patch-v8_src_log-utils.h @@ -0,0 +1,11 @@ +--- v8/src/log-utils.h.orig 2019-04-08 08:34:40 UTC ++++ v8/src/log-utils.h +@@ -16,6 +16,8 @@ + #include "src/flags.h" + #include "src/ostreams.h" + ++#include <stdarg.h> ++ + namespace v8 { + namespace internal { + diff --git a/devel/electron5/files/patch-v8_src_trap-handler_handler-inside-posix.cc b/devel/electron5/files/patch-v8_src_trap-handler_handler-inside-posix.cc new file mode 100644 index 000000000000..d277319f093e --- /dev/null +++ b/devel/electron5/files/patch-v8_src_trap-handler_handler-inside-posix.cc @@ -0,0 +1,20 @@ +--- v8/src/trap-handler/handler-inside-posix.cc.orig 2019-04-08 08:26:55 UTC ++++ v8/src/trap-handler/handler-inside-posix.cc +@@ -27,7 +27,7 @@ + + #include <signal.h> + +-#ifdef V8_OS_LINUX ++#if defined(V8_OS_LINUX) || defined(V8_OS_FREEBSD) + #include <ucontext.h> + #elif V8_OS_MACOSX + #include <sys/ucontext.h> +@@ -112,6 +112,8 @@ bool TryHandleSignal(int signum, siginfo_t* info, void + auto* context_rip = &uc->uc_mcontext.gregs[REG_RIP]; + #elif V8_OS_MACOSX + auto* context_rip = &uc->uc_mcontext->__ss.__rip; ++#elif V8_OS_FREEBSD ++ auto* context_rip = &uc->uc_mcontext.mc_rip; + #else + #error Unsupported platform + #endif diff --git a/devel/electron5/files/patch-v8_src_trap-handler_handler-inside-posix.h b/devel/electron5/files/patch-v8_src_trap-handler_handler-inside-posix.h new file mode 100644 index 000000000000..9cd2bffa84a3 --- /dev/null +++ b/devel/electron5/files/patch-v8_src_trap-handler_handler-inside-posix.h @@ -0,0 +1,11 @@ +--- v8/src/trap-handler/handler-inside-posix.h.orig 2019-04-08 08:26:55 UTC ++++ v8/src/trap-handler/handler-inside-posix.h +@@ -12,7 +12,7 @@ namespace v8 { + namespace internal { + namespace trap_handler { + +-#if V8_OS_LINUX ++#if defined(V8_OS_LINUX) || defined(V8_OS_FREEBSD) + constexpr int kOobSignal = SIGSEGV; + #elif V8_OS_MACOSX + constexpr int kOobSignal = SIGBUS; diff --git a/devel/electron5/files/patch-v8_src_trap-handler_trap-handler.h b/devel/electron5/files/patch-v8_src_trap-handler_trap-handler.h new file mode 100644 index 000000000000..ed7aa9b98d2d --- /dev/null +++ b/devel/electron5/files/patch-v8_src_trap-handler_trap-handler.h @@ -0,0 +1,11 @@ +--- v8/src/trap-handler/trap-handler.h.orig 2019-04-08 08:26:55 UTC ++++ v8/src/trap-handler/trap-handler.h +@@ -23,6 +23,8 @@ namespace trap_handler { + #define V8_TRAP_HANDLER_SUPPORTED true + #elif V8_TARGET_ARCH_X64 && V8_OS_MACOSX + #define V8_TRAP_HANDLER_SUPPORTED true ++#elif V8_TARGET_ARCH_X64 && V8_OS_FREEBSD ++#define V8_TRAP_HANDLER_SUPPORTED true + #else + #define V8_TRAP_HANDLER_SUPPORTED false + #endif |