* build: cache the out directory for exact deps hash matches
* chore: generate a target based depshash discriminator
* fix: hash on gn args
* build: share logic on the mac builds
* build: ensure that the mksnapshot binary is built before stripping before zipping
* build: attach the workspace on macOS
* build: optimize the macOS checkout path for testing
* build: fix mksnapshot zip generation
* build: make the mac src cache restore work
* build: v2 out cache
* build: macOS cache restore is just stupidly slow
* build: strip more binaries
* build: attach the out cache to the workspace for macOS builds
* build: allow linux boxes to restore darwin out caches
* build: cat the deps hash target file
* build: ensure that the deps target hash matches on the linux box
* build: do not use host arch in target key
* build: force undefined in the target hash file
* build: only restore out cache when it isn't in the workspace
* build: fix the macOS cache workspace trick
* build: do not double restore
* build: remove the big stuff from the out dir
* build: workaround layer issue
* build: try it back on macOS again but with smaller thingy
* build: macOS needs the out cache now
* build: clean up for omptimal macOS path
* build: use old docker image
* build: idek at this point
* build: we need a deps hash
* build: yeah we need a checkout too
* chore: use testing env on save cache job
* chore: well that should fix the cache key thing
* chore: handle cross-OS path mismatch for src cache restore
* build: use a /portal directory to transfer the src cache appropriately
* build: use the correct docker image
* build: super perms for /portal
* build: increment out cache number
* build: ensure target hash is correct for args + disable pre-compiled headers on macOS
* build: wipe the cross-arch libffmpeg before building Electron
* build: delete unneeded files when running a release
Needed to free up disk space on MacOS.
* Delete all the .git directories
* Update comment
* Run gn gen after deleting .git dirs
* chore: add code required to use chromes spellchecker
* chore: fix linting
* chore: manifests needs buildflags now
* chore: add dictionarySuggestions to the context menu event when the spellchecker is active
* chore: enable by default for windows builds
* chore: add patch to remove incognito usage in the spellchecker
* chore: add dependencies on spellcheck common and flags
* chore: conditionally include spell check panel impl
* chore: fix deps for spellcheck feature flags
* chore: add patch for electron resources
* chore: add dependency on //components/language/core/browser
* chore: patches to make hunspell work on windows
* build: collect hunspell dictionaries into a zip file and publish
* chore: clean up patches
* chore: add docs and set spell checker url method
* chore: fix error handling
* chore: fix hash logic
* build: update hunspell filename generator
* fix: default spellchecker list to the current system locale if we can
* docs: document the language getter
* chore: patch IDS_ resources for linux builds
* feat: add spellcheck webpref flag to disable the builtin spellchecker
* chore: fix docs typo
* chore: clean up spellchecker impl as per feedback
* remove unneeded deps
* ci: skip build on doc only changes
* Try using exit codes on doc-only-change
* Fixup
* Fixup circleci doc-only check
* Update appveyor.yml
Co-Authored-By: Samuel Attard <sattard@slack-corp.com>
* Properly detect doc only change on Windows
* Flip exit code per review
* build: yolo a theoretical speed improvement
* chore: persist src/electron and friends for testing purposes
* build: do not generate dist.zip on debug builds
* chore: ensure licenses and version file exist for zip-symbols script
Currently the happy checkout takes 7 minutes and the sad checkout takes
30 minutes. This updates our CI to run checkout twice for every job to
make the sad checkout take nearer 10 minutes instead.
This allows us to have a workflow for release-builds that only runs when
we trigger it via API. This will be used to implement a /ci command to
allow folks to trigger release-style builds on their PRs.
* fix: use gn/clang-format from src
* fix: download clang-format in lint job
* chore: fix linting warning
* chore: get_path_in_buildtools => get_buildtools_executable
* chore: the clang-format npm package is not used
* fix: dump correct symbols on macOS
* refactor symbol dumping
* .exe/.dll on windows
* dump .exe.pdb/.dll.pdb; also add path for msdia140.dll
* undo breakpad_symbols.zip rename
* dump_syms.exe doesn't support -i on windows
* remove unused windows symbol generation script
* win fix 🤞🤞
* import errno
* use out_dir
* i tender my resignation
* chore: bump chromium in DEPS to 675d7dc9f3334b15c3ec28c27db3dc19b26bd12e
* chore: update patches
* chore: bump chromium in DEPS to dce3562696f165a324273fcb6893f0e1fef42ab1
* chore: const interfaces are being removed from //content
Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1631749
Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=908139
* chore: update patches
* chore: blink::MediaStreamType is now consistent and deduplicated
* chore: update patches and printing code for ref -> uniq
* chore: bridge_impl() --> GetInProcessNSWindowBridge
Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1642988
* fixme: TotalMarkedObjectSize has been removed
* chore: fix linting
* chore: bump chromium in DEPS to 9503e1a2fcbf17db08094d8caae3e1407e918af3
* chore: fix slightly broken printing patch
* chore: update patches for SiteInstanceImpl changes
Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1612025
* chore: update patches for SiteInstanceImpl changes
* chore: bump chromium in DEPS to 6801e6c1ddd1b7b73e594e97157ddd539ca335d7
* chore: update patches
* chore: bump chromium in DEPS to 27e198912d7c1767052ec785c22e2e88b2cb4d8b
* chore: remove system_request_context
Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1647172
* chore: creation of FtpProtocolHandler needs an auth cache
Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1639683
* fixme: disable marked spec
* chore: bump chromium in DEPS to 3dcd7fe453ad13a22b114b95f05590eba74c5471
* chore: bump chromium in DEPS to bdc24128b75008743d819e298557a53205706e7c
* chore: bump chromium in DEPS to 7da330b58fbe0ba94b9b94abbb8085bead220228
* update patches
* remove TotalMarkedObjectSize
https://chromium-review.googlesource.com/c/chromium/src/+/1631708
* add libvulkan.so to dist zip manifest on linux
* chore: bump chromium in DEPS to 1e85d0f45b52649efd0010cc9dab6d2804f24443
* update patches
* add angle features to gpuinfo
https://chromium-review.googlesource.com/c/chromium/src/+/1638658
* mark 'marked' property as deprecated
* disable webview resize test
* FIXME: disable vulkan on 32-bit arm
* chore: bump chromium in DEPS to cd0297c6a83fdd2b1f6bc312e7d5acca736a3c56
* Revert "FIXME: disable vulkan on 32-bit arm"
This reverts commit 5c1e0ef302a6db1e72231d4e823f91bb08e281af.
* backport from upstream: fix swiftshader build on arm
https://swiftshader-review.googlesource.com/c/SwiftShader/+/32768/
* update patches
* viz: update OutputDeviceWin to new shared memory api
https://chromium-review.googlesource.com/c/chromium/src/+/1649574
* base::Contains{Key,Value} => base::Contains
https://chromium-review.googlesource.com/c/chromium/src/+/1649478
* fixup! viz: update OutputDeviceWin to new shared memory api
* stub out StatusIconLinuxDbus-related delegate methods
https://chromium-review.googlesource.com/c/chromium/src/+/1638180
* chore: bump chromium in DEPS to 964ea3fd4bdc006d62533f5755043076220181f1
* Remove the BrowserContext methods to create URLRequestContexts for main/media partitions when a partition_domain is specified
https://chromium-review.googlesource.com/c/chromium/src/+/1655087
* fixup! stub out StatusIconLinuxDbus-related delegate methods
* add remote_cocoa to chromium_src deps
https://chromium-review.googlesource.com/c/chromium/src/+/1657068
* fixup! stub out StatusIconLinuxDbus-related delegate methods
* attempt at fix linux-debug build
* add swiftshader/libvulkan.so to arm manifest
* chore: bump chromium in DEPS to 28688f76afef27c36631aa274691e333ddecdc22
* update patches
* chore: bump chromium in DEPS to fe7450e1578a9584189f87d59d0d1a8548bf6b90
* chore: bump chromium in DEPS to f304dfd682dc86a755a6c49a16ee6876e0db45fb
* chore: bump chromium in DEPS to f0fd4d6c365aad9edd83bdfff9954c47d271b75c
* Update patches
* Remove no longer needed WOA patch
* Put back IOThread in BrowserProcess
We need this until we enable the network service.
* move atom.ico to inputs
* Update to latest LKGR to fix no template named 'bitset' in namespace 'std'
* fixup! Put back IOThread in BrowserProcess
* chore: bump chromium in DEPS to dcf9662dc9a896a175d791001350324167b1cad3
* Update patches
content_allow_embedder_to_prevent_locking_scheme_registry.patch is no longer necessary as it was upstreamed via https://chromium-review.googlesource.com/c/chromium/src/+/1637040
* Fix renamed enum
* Use newer docker container
Contains updated dependencies
* Try to track down arm test failures
* Fix arm tests
* chore: bump chromium in DEPS to 8cbceef57b37ee14b9c4c3405a3f7663922c5b5d
* Update patches
* Add needed dependencies for testing 32-bit linux
* Remove arm debugging.
* Remove additional debugging
* Fix compiler errors
* Handle new macOS helper
* Fix compile error on Linux
* chore: bump chromium in DEPS to 66a93991ddaff6a9f1b13d110959947cb03a1860
* Add new helper files to manifests
* fix BUILD.gn for macOS
* Fix compile errors
* Add patch to put back colors needed for autofill/datalist
* chore: bump chromium in DEPS to e89617079f11e33f33cdb3924f719a579c73704b
* Updated patches
* Remove no longer needed patch
* Remove no longer needed patch
* Fix compile error with patch
* Really fix the patch
* chore: bump chromium in DEPS to c70f12476a45840408f1d5ff5968e7f7ceaad9d4
* chore: bump chromium in DEPS to 06d2dd7a8933b41545a7c26349c802f570563fd5
* chore: bump chromium in DEPS to b0b9ff8f727deb519ccbec7cf1c8d9ed543d88ab
* Update patches
* Fix compiler errors
* Fix removed ChromeNetLog
* Revert "Fix removed ChromeNetLog"
This reverts commit 426dfd90b5ab0a9c1df415d71c88e8aed2bd5bbe.
* Remove ChromeNetLog.
https://chromium-review.googlesource.com/c/chromium/src/+/1663846
* chore: bump chromium in DEPS to fefcc4926d58dccd59ac95be65eab3a4ebfe2f29
* Update patches
* Update v8 patches
* Fix lint error
* Fix compile errors
* chore: bump chromium in DEPS to 4de815ef92ef2eef515506fe09bdc466526a8fd9
* Use custom protocol to test baseURLForDataURL
* Use newer SDK (10.0.18362) for Windows
* Update patches
* Update arm manifest since swiftshader reenabled.
* Don't delete dir that isn't ever there.
* Fix compile errors.
* Need src dir created
* Update for removed InspectorFrontendAPI.addExtensions
* Revert "Use newer SDK (10.0.18362) for Windows"
This reverts commit 68763a0c88cdc44b971462e49662aecc167d3d99.
* Revert "Need src dir created"
This reverts commit 7daedc29d0844316d4097648dde7f40f1a3848fb.
* Revert "Don't delete dir that isn't ever there."
This reverts commit bf424bc30ffcb23b1d9a634d4df410342536640e.
* chore: bump chromium in DEPS to 97dab6b0124ea53244caf123921b5d14893bcca7
* chore: bump chromium in DEPS to c87d16d49a85dc7122781f6c979d354c20f7f78b
* chore: bump chromium in DEPS to 004bcee2ea336687cedfda8f8a151806ac757d15
* chore: bump chromium in DEPS to 24428b26a9d15a013b2a253e1084ec3cb54b660b
* chore: bump chromium in DEPS to fd25914e875237df88035a6abf89a70bf1360b57
* Update patches
* Update node to fix build error
* Fix compile errors
* chore: bump chromium in DEPS to 3062b7cf090f1d9522c04ca8fa0a906f88ababe9
* chore: update node ref for pushed tags
* chore: update patches for new chromium
* chore: fix printing patches
* Use new (10.0.18362) Windows SDK
* roll node to fix v8 build issues in debug build
* Add support for plugin helper
* fix: add patch to fix gpu info enumeration
Can be removed once CL lands upstream.
Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1685993
* spec: navigator.requestMIDIAccess now requires a secure origin
This test requires a secure origin so we fake one.
Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1657952
* FIXME: temporarily disable SharedWorker tests
* use released version of node-abstractsocket
* fix abstract-socket
* build: move zip manifest logic in zip_manifests dir
* build: remove unused get-version.py script
* chore: move all release/sudowoodo related scripts into script/releases
* chore: update paths to zip manifests in CI configs
* build: fix path to ci release build script for arm tests
* build: show ninja stats for testing/debug builds
* Update .circleci/config.yml
Co-Authored-By: Jeremy Apthorp <nornagon@nornagon.net>
* Use regular depot tools instead of third party one
* I forget where depot tools lives
* Fix depot tools path
* build: unify YARN_VERSION variable usage and ensure CI uses yarn not npm
* chore: use a JS helper so that it can work on windows
* chore: make script/yarn without node_modules installed
* build: optimize the happy path when syncing on CI
This adds a new cache for the "src" directory that is only ever used if
the cache key matches exactly. If there is no exact match we fall back
to the old strategy of using the git cache.
On the happy path this can make the checkout on linux/macOS take around
5-6 minutes which is **significantly** faster than the original 15-18
minutes.
* build: sort readdir result to ensure stability
* build: increment cache key
* Update config.yml
* build: ensure that the cleanly checked out Electron has had hooks run on it
* build: do not remove deps/v8
* build: ensure clean git directory when generating deps hash
* chore: add comments to caching logic
* Update .circleci/config.yml
Co-Authored-By: MarshallOfSound <samuel.r.attard@gmail.com>
* refactor: use mojo for electron internal IPC
* add sender_id, drop MessageSync
* remove usages of AtomFrameMsg_Message
* iwyu
* first draft of renderer->browser direction
* refactor to reuse a single ipc interface
* implement TakeHeapSnapshot through mojo
* the rest of the owl^WtakeHeapSnapshot mojofication
* remove no-op overrides in AtomRendererClient
* delete renderer-side ElectronApiServiceImpl when its pipe is destroyed
* looks like we don't need to overlay the renderer manifest after all
* don't try to send 2 replies to a sync rpc
* undo changes to manifests.cc
* unify sandboxed + unsandboxed ipc events
* lint
* register ElectronBrowser mojo service on devtools WebContents
* fix takeHeapSnapshopt failure paths
* {electron_api => atom}::mojom
* add send_to_all to ElectronRenderer::Message
* keep interface alive until callback is called
* review comments
* use GetContext from RendererClientBase
* robustify a test that uses window.open
* MessageSync posts a task to put sync messages in the same queue as async ones
* add v8::MicrotasksScope and node::CallbackScope
* iwyu
* use weakptr to api::WebContents instead of Unretained
* make MessageSync an asynchronous message & use non-associated interface
* iwyu + comments
* remove unused WeakPtrFactory
* inline OnRendererMessage[Sync]
* cleanups & comments
* use helper methods instead of inline lambdas
* remove unneeded async in test
* add mojo to manifests deps
* add gn check for //electron/manifests and mojo
* don't register renderer side service until preload has been run
* update gn check targets list
* move interface registration back to RenderFrameCreated
* spec: add tests for the autoUpdater on macOS that actually test if it works
* spec: add express as dep
* spec: add logic to auto-trust self-signed certificate and not run autoupdate specs on MAS
* build: fix the step name for importing the codesign cert
* chore: update updater spec PR as per feedback
* fix: s/atomBinding/electronBinding
* build: use spawn instead of exec
* build: enable gn check for //electron:electron_lib
* ci: add gn check step
* ci: set depot_tools path
* chrome_key_systems_provider.h nogncheck
* chore: fix gn check errors on windows
* chore: gn check //electron:electron_app
* Update timeout for native_mksnapshot and use bigger machines
* Revert "build: temporarily disable arm to unblock nightlies (#16479)"
This reverts commit 51961fccfa.
* build: fix native_mksnapshot build
When we changed our electron_mksnapshot_zip target to include the v8_context_snapshot_generator, this dependency made the `run_mksnapshot` target run which was trying to run an arm/arm64 binary on x64 hardware.
Don't use custom build args for native_mksnapshot as they are not needed
* Added comment on why snapshot_blob.bin is skipped on arm/arm64
* test: add an option to native tests runner to run also disabled tests
* ci: run all native tests on clean Chromium
* ci: update the disabled tests list for native unittests
* ci: run unittests on clean Chromium
* test: add '--run-only-disabled-tests' flag to "script/native-tests.py"
* ci: add a job to run only disabled unittests
* test: use a different GN config for the native tests
* test: enable blink_common_unittests
* test: disable WeakPtrDeathTest*
- ci: don't send Slack notifications for the "linux-ia32-testing-tests" job
- ci: fix symbols collection job on VSTS
- ci: run tests on Windows for both "testing" and "release" builds
* ci: do not build ffmpeg for every PR on CircleCI
* ci: build and run unittests in a separate workflow on CircleCI
* ci: build chromedriver in a separate job
- explicitly mark jobs that should use sccache
- explicitly mark jobs that should send Slack notifications
- remove unnecessary env vars and checks
- build and verify ffmpeg, and build native mksnapshot nightly
- add "native" to the native mksnapshot jobs names
- minor changes
* ci: migrate libcc's Dockerfile to electron and update it
* Added nano and sudo
* Use new docker image in CircleCi
* installing nodejs needs curl
* Add needed dependencies
nacl contains dependencies needed for arm and ia32 builds
* chore: update mksnapshot and ffmpeg for GN
* fix typo
* add non-native builds to CI
* split mksnapshot build and store steps
* Fix config order
* Use different targets for mksnapshot and native_mksnapshot
mksnapshot gets built in electron_app as part of the v8 build, so copy it from there
* Revert "Use different targets for mksnapshot and native_mksnapshot"
This reverts commit 6a1a50aa690124626b4357751949397298aeac95.
* Try specifying v8_snapshot_toolchain
* Fix v8_snapshot_toolchain reference
* Fix artifact locations
* Test native mksnapshot
* Add support for multiple mocha reporters
Allows us to output to junit file and to console at the same time
* Cleanup VSTS file
Don't install depot_tools everytime as it is already installed.
Only run tests if "RUN_TESTS" environment variable is set
Only notify slack if "NOTIFY_SLACK" environment variable is set
Don't use sccache for release builds
Move CircleCI mac builds to VSTS
* Only build mac PRS from forks
Don't install depot_tools everytime as it is already installed.
Only run tests if "RUN_TESTS" environment variable is set
Only notify slack if "NOTIFY_SLACK" environment variable is set
Don't use sccache for release builds
Move CircleCI mac builds to VSTS
Use sccache helper script
* rename vsts-gn.yml to vsts.yml
Make sure Electron isn't running before starting tests
* build: update-external-binaries fetches sccache
* build: add util.add_exec_bit in scripts/
* build: use util.add_exec_bit in create-dist
* build: use util.add_exec_bit in update-external-binaries
this is needed to work around a bug in python's zipfile module that doesn't preserve the exec bit
https://bugs.python.org/issue18262
* fix: linting errors
* build: vsts, circleci use patched sccache
* build: always look for the x64 sccache
as it's the only arch we have it on
* fix: windows-specific errors in updaste-external-binaries
* fix: tyop
* fix: set SCCACHE_BUCKET, SCCACHE_TWO_TIER on circleci
* fix: syntax error in circleci yaml
* fix: keep churning
* chore: add tracer to file downloader
* docs: add sccache instructions for GN builds
* build: pull down the darwin sccache on mas builds
* build: use gn sync verbosely on circleci and vsts
* docs: copyediting
* build: remove unnecessary cache-dir arg
* docs: fix shell quoting in gn build instructions
* fix: invoke gclient without -verbose in circleci
* refactor: remove debug tracer
* fix: invoke gclient without -verbose in appveyor
* fix: invoke gclient without -verbose in vsts
* fix: pull add_exec_bit from correct source
* fix: remove 'SCCACHE_TWO_TIER' from CI scripts
* refactor: remove SCCACHE_BUCKET from ci scripts
this environment variable will be set via the CI UI instead
* refactor: clarify log message
* fix: set SCCACHE_PATH correctly for Windows CI
* build: [gn] add distributable zip target
* build: update the CircleCI config
- enable debug and testing builds on Mac
- run Mac release builds nightly
- run test for Mac release builds
- use shared build machines configs
* Add resources dir to zip on non mac platforms.
* build: add GIT_CACHE_PATH
The merge at https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1105473 was to specify git cache entirely from the environment variable [and] removal of the general --cache-dir option from gclient
* docs: document GIT_CACHE_PATH in GN build
* fix: try to fix appveyor-gn env syntax
* build: add config to build Electron for tests
* build: run nightly linux builds for the 3-0-x branch
* build: gn: update CI config for linux builds
- run GN debug and testing builds for PRs (as FYI)
- do not run tests for GN debug builds
- run GN release builds nightly
* build: gn: run testing builds on CI instead of release on Windows
Should save some time since release builds set 'official_build=true'
which make the builds take much more time.
* build: gn: use testing config to run CI jobs on Mac
Tests should run faster for testing builds.
Devs can still locally override or add settings by adding lines after
the `import` statement in args.gn.
This will help make sure that everyone has a common set of build args,
and will allow us to update everyone's build args in git.
* Bump electronbuilds/electron* versions
The linux-appname branch has been gathering dust for awhile.
Some of the versions in `master` are higher, and some of the
versions in `linux-appname` are higher to add libnotify.
This commit takes the higher of the two numbers in each case.
* Add libnotify to the Dockerfiles
It appears that the arm build failing with a core dump is a false positive. Testing the latest arm build from master on a raspberry pi 2, it does not core dump.
Note that our CI server is not ready for mips64el yet, so the binaries
of libcc are not available yet. Currently it is downloading the binaries
created by me manually, we should redirect to the official mirror before
merging this PR.