atom / flight-manual.atom.io

📖 Documentation for Atom, generated by nanoc, hosted by GitHub Pages
https://flight-manual.atom.io
Other
640 stars 1.54k forks source link

Hacking on Atom Core: Update build requirements to be accurate #630

Closed DeeDeeG closed 4 years ago

DeeDeeG commented 4 years ago

Requirements for Contributing Documentation

Description of the Change

Information on required Visual Studio versions and Python versions were out of date, considering that we use newer node-gyp now.

See: https://github.com/nodejs/node-gyp/tree/v5.x/#installation for a more up-to-date reference on the required Visual Studio and Python versions, and other miscellaneous requirements of node-gyp.

I updated "Hacking on Atom Core" to reflect that Python 3 now works (See: https://github.com/atom/atom/pull/20711). Visual Studio 2017 has also been supported by recent node-gyp for quite some time. Relatedly, on Windows 10 the Windows 10 SDK is available, not the Windows 8 SDK. Node v10.12+ is required, and NPM < 6 is no longer supported by the NPM authors, so I updated the documentation to reflect that as well.

Release Notes

N/A (Atom Flight Manual doesn't appear to compile or publish any release notes)

DeeDeeG commented 4 years ago

I was tempted to update the Node/NPM versions to supported versions (Node 10 or newer, NPM 6 or newer). I guess the older versions might work (it suggests Node 6 and NPM 3, which are very old by now and no-longer supported) but I haven't tested that yet.

(The norm in the Node ecosystem is to point people toward supported versions of Node, and to a lesser extent to point folks toward supported versions of modules such as npm. I think it would be resonable to update those to v10+ and v6+ respectively, and I'd be happy to do so in this PR if a reviewer here was alright with that.)

DeeDeeG commented 4 years ago

I found that Atom requires Node v10.12+ to build now. This comes with npm 6 bundled with it. So that should probably be updated as well.


Research:

Atom has an indirect dependency extract-zip@^2, which requires Node v10.12+ due to using recursive mkdir.

Atom indirectly requires extract-zip@2 as of this PR: https://github.com/atom/atom/pull/20879

DeeDeeG commented 4 years ago

One last thing to note, Python 3 only works with npm v6.12+ https://github.com/npm/cli/blob/latest/CHANGELOG.md#6120-2019-10-08, which was the first version of npm with node-gyp v5.0.5+ https://github.com/nodejs/node-gyp/blob/master/CHANGELOG.md#v505-2019-10-04 which is in turn the earliest version of node-gyp that works with Python 3 "out of the box" (no experimental flags required).

So maybe that npm version requirement for using Python 3 should be explained here in the docs, or to keep it simple, just say Atom requires npm 6.12+.

DeeDeeG commented 4 years ago

Travis test failure seems unrelated. It apparently timed out trying to visit https://bugs.chromium.org/p/gyp/issues/detail?id=393, which I can visit just fine. Just a temporary network issue I guess.

Edit: Somebody re-ran the CI and it passes now. Thanks!

DeeDeeG commented 4 years ago

@darangi, @lkashef:

we (@aminya and I) are trying to work on Atom and polish up all the rough edges for those who want to fork it. This important documentation explaining how to get started with Atom is one of the first things users read when trying to contribute. We would really appreciate if these updates could be reviewed and approved.

These suggested updates are based on our active contributions to Atom, including my work on updating some of Atom's build script Node dependencies, and both of our reading through/running the CI configs. I know them to be accurate. It would be great to get updated docs.

Thanks for considering.

- DeeDeeG

darangi commented 4 years ago

@DeeDeeG and @aminya Thanks for the contribution 🙇‍♂️

We can't provide an accurate timeline but we will definitely put this on our radar and act on it as soon as possible.

DeeDeeG commented 4 years ago

More research about which NPM versions are supported:

Briefly: Users with NPM 3.10.7 or newer can bootstrap and build Atom successfully.

(I personally still lean toward recommending folks should use the latest major version of NPM, that is currently NPM 6 (or newer), which is what I did in this PR, but I am open to feedback from the maintainers.)

Research details (click to expand): Tested on Ubuntu 20.04: Atom can be bootstrapped and built with older NPM all the way back to `npm@3.10.7`. This is a little alarming to do, in my opinion, because [`package-lock.json` was introduced in `npm@5`](https://github.com/npm/npm/releases/tag/v5.0.0). So the `script/node_modules` dependencies are installed with an older dependency tree algorithm without the benefit of the lockfile. Somehow this still works, at least for bootstrap/build. This doesn't affect the `apm/node_modules` install or the main/App dependencies in `[repo_root]/node_modules`. The first step of bootstrapping installs `script/` dependencies (including `npm@6`) with `npm@3.10.7`. Then the `script/node_modules/.bin/npm` (`npm@6` ) is used to install `apm`. Then `apm` (with its built-in Node@10 and NPM@6) installs the main Atom dependencies, including bundled packages such as `atom-dark-ui`. So overall the user's NPM isn't used for much, and apparently only needs to be v3.10.7 or greater. By the way, newer versions of NPM are supposedly much faster to complete an `npm install`, so users should want to benefit from that by using NPM 5 or newer. And besides: Node 10.12.0 (the oldest Node we support right now for bootstrap/build) already comes bundled with NPM 6.4.1... It's hard to picture someone running Node 10.12 or newer with an NPM older than that. Users will naturally be on NPM 6 or newer unless they go out of their way to install older NPM. I'm thinking we should still recommend users use NPM@6 or greater. Older versions aren't supported by the NPM team, for one reason. And for another reason, anything older than NPM@5 won't read the `package-lock.json` lockfile in `script/package-lock.json`.
DeeDeeG commented 4 years ago

Research about Visual Studio:

node-gyp 5.x supports Visual Studio 2015, 2017 and 2019, at least officially. (See the CHANGELOG.md. Visual Studio 2019 support was added in node-gyp 5.0.0.)


With the versions of Node we are using, Visual Studio 2013 is no longer supported. If you try to do node-gyp configure --verbose on Node >= 8, you see this message in the log:

not looking for VS2013 as it is only supported up to Node.js 8

aminya commented 4 years ago

I cannot build Atom using 2019 preview. I believe that's the same as 2019.

DeeDeeG commented 4 years ago

I cannot build Atom using 2019 preview. I believe that's the same as 2019.

I just built Atom with Visual Studio Build Tools 2019 to make sure it works.

Screenshots and text output showing Visual Studio 2019 usage (click to expand) ![The "About" screen of Atom 1.50.0-dev-110b05baf x64, on Windows](https://user-images.githubusercontent.com/20157115/87119778-f0b63f00-c24c-11ea-938c-74c3ccfa1d86.png) ![Visual Studio Build Tools 2019 Installer version 16.6.3, with VS 2019 C++ build tools and Windows 10 SDK components selected](https://user-images.githubusercontent.com/20157115/87119777-f01da880-c24c-11ea-9673-b30f02a32864.png) When I do [More] > [Export configuration], I get this: ```yaml # .vsconfig { "version": "1.0", "components": [ "Microsoft.VisualStudio.Component.Roslyn.Compiler", "Microsoft.Component.MSBuild", "Microsoft.VisualStudio.Component.CoreBuildTools", "Microsoft.VisualStudio.Workload.MSBuildTools", "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", "Microsoft.VisualStudio.Component.Windows10SDK.18362" ] } ``` Here is rebuilding the [dummy project "`native-module`" from `apm`](https://github.com/atom/apm/tree/master/native-module): ```console C:\Users\[User]\apm\native-module>npx node-gyp@5 rebuild --verbose [...] gyp info using node-gyp@5.1.1 gyp info using node@10.20.1 | win32 | x64 [...] gyp verb find VS msvs_version not set from command line or npm config gyp verb find VS VCINSTALLDIR not set, not running in VS Command Prompt gyp verb find VS checking VS2019 (16.6.30225.117) found at: gyp verb find VS "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools" gyp verb find VS - found "Visual Studio C++ core features" gyp verb find VS - found VC++ toolset: v142 gyp verb find VS - found Windows SDK: 10.0.18362.0 gyp info find VS using VS2019 (16.6.30225.117) found at: gyp info find VS "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools" gyp info find VS run with --verbose for detailed information [...] gyp verb using MSBuild: C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe gyp info spawn C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe [...] Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:04.48 gyp info ok ```
sadick254 commented 4 years ago

@DeeDeeG Thank you for your submission. :tada:

Have you considered all the possible combinations and ensured that all the them work? It would be really helpful for us to have a list of the combinations you have tried and the results.

DeeDeeG commented 4 years ago

@sadick254 yeah, I can do some testing on this.

There's definitely a lot of "moving parts" so to speak, considering these:

Research details for which versions of npm, Node, Python and Visual Studio are supported (click to expand): ### npm: Thankfully, the system `npm` is _only_ used to install the build scripts. The build scripts download a copy of exactly `npm 6.14.4`. Then that is used to install `apm`, which also includes an version of npm in the `6.14.x` series. ([6.14 is the latest `npm`](https://github.com/npm/cli/releases) at the moment, so that's all good.) **After the `script/node_modules` dependencies are installed, we are running modern `npm` and modern `node-gyp`.** Through testing, I have [found that npm 3.10.7 is the oldest `npm` that can install the build scripts](https://github.com/atom/flight-manual.atom.io/pull/630#issuecomment-656279220), after which the build scripts' own npm 6.14.4 is used. _(Note: Version 3.10 is a really old version of `npm`, so telling users to use something newer might be a good idea anyway. Only the latest release of `npm` receives any support or fixes, as far as I can tell.)_ #### in short: `npm` 3.10.7+ can be used. ### Node: The role of system Node in the bootstrap/build process is to: Run the build scripts and run `npm`, up to and including installing the `scripts/` dependencies, and then installing the `apm/` dependencies. I have found that Node 10.12.0 or newer is required, because two of our `script/` dependencies (`electron-mksnapshot` and `electron-chromedriver`) use [recursive `fs.mkdir`](https://nodejs.org/api/fs.html#fs_fs_mkdir_path_options_callback), which was [introduced in Node 10.12.0](https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V10.md#10.12.0). _(Note: As far as I can tell, any version of Node can successfully run any version of `npm`. But the test matrix to test every combination of Node 10.12.0+ and `npm` 3.10.7+ would be enormous, so sadly I cannot commit to investigating every combination of this.)_ **In short, Node 10.12.0+ can be used.** ### Python: This one is easy for me to confirm. `node-gyp` sets our Python requirements. And we get `node-gyp` as a dependency of `npm`.
Info and background about node-gyp (click to expand): `npm` comes with a native build system for C++ code, which is `node-gyp`. `node-gyp` uses [Google's `gyp` ("Generate Your Projects")](https://en.wikipedia.org/wiki/GYP_(software)) build system, which is written in python. So, `node-gyp` needs a python interpreter on the system in order to run. `node-gyp` sets our Python requirements. (_Note: Almost nowhere else in the Node_)
The first version of `node-gyp` to detect and use Python 3 (without having to set some "experimental Python 3" flag at runtime) is [`node-gyp` 5.0.5](https://github.com/nodejs/node-gyp/blob/master/CHANGELOG.md#v505-2019-10-04), as of this PR: https://github.com/nodejs/node-gyp/pull/1910. They don't allow Python 3 older than 3.5, or older than 2.6... _(Note: In upcoming versions of node-gyp, Python 2.6 is dropped and only Python 2.7 is supported in the Python 2 series. [This is tentatively expected for `npm` 7.0](https://github.com/npm/cli/issues/1281))._ `npm` 6.12.0 is the first version to include new enough `node-gyp` (`node-gyp` 5.0.5) to detect and support Python 3 out of the box. See the Changelog to confirm: https://github.com/npm/cli/blob/latest/CHANGELOG.md#6120-2019-10-08 (look under "DEPENDENCIES" subheading). Research findings: - The oldest `npm` that Atom developers can use is `npm` 3.10.7, see above. [In npm 3.10.7, node-gyp 3.4 is included](https://github.com/npm/cli/blob/v3.10.7/package.json#L65). [In node-gyp 3.4, Python 2.5+ (but not Python3) can be used](https://github.com/nodejs/node-gyp/blob/v3.4.0/lib/configure.js#L433) - Developers with `npm` 6.12.0+ can use Python 3.5+ or Python 2.6+. - Developers with modern `npm` less than 6.12 can use Python 2.6+ _(no Python 3)_ - Developers with `npm` 6.12.0+ can use Python 3.5+ or Python 2.6+ - In the future, when `npm` 7 is released, Python 2.6 support may be dropped. Developers with `npm` 7 will need Python 3.5+ or 2.**7**+ **In short: We can say Python 2.7 is supported, and that Python 3.5+ is supported if you have `npm` 6.12.0 or newer.** ### Visual Studio version: Again, this is tied to node-gyp. Timeline: - Oldest `node-gyp` we can use is 3.4.0 (from [`npm` 3.10.7](https://github.com/npm/cli/blob/v3.10.7/package.json#L65)) - Node-gyp 3.4 appears to support Visual Studio 2005 - 2015 - https://github.com/nodejs/node-gyp/blob/v3.4.0/gyp/pylib/gyp/MSVSVersion.py#L334-L350 - Node-gyp 3.6 (from [`npm` 4.5.0](https://github.com/npm/cli/blob/latest/changelogs/CHANGELOG-4.md#dependency-updates-1)) can find Visual Studio 2017 - https://github.com/nodejs/node-gyp/blob/master/CHANGELOG.md#v360-2017-03-16 - This PR: https://github.com/nodejs/node-gyp/pull/1130 - Node-gyp 5.x is used in all modern `npm` versions. - Node-gyp 5.0.0 (from [`npm` 6.10.1](https://github.com/npm/cli/blob/latest/CHANGELOG.md#v6101-2019-07-11)) added support for Visual Studio 2019 - Also greatly improved detection for all versions of Visual Studio - https://github.com/nodejs/node-gyp/blob/master/CHANGELOG.md#v500-2019-06-13 - In this PR: https://github.com/nodejs/node-gyp/pull/1762 - Files in this PR do not allow Using Visual Studio 2013 or older on Node greater than v8. - https://github.com/nodejs/node-gyp/blob/968c9067d7a25a80925b9f7a342b67a04c3f76d8/lib/find-visualstudio.js#L348-L352 - The files from this PR also don't attempt to look for anything older than Visual Studio 2013, so the minimum VS version is now VS 2013 - https://github.com/nodejs/node-gyp/blob/968c9067d7a25a80925b9f7a342b67a04c3f76d8/lib/find-visualstudio.js#L62-L77 - Node-gyp 5.0.5 (from [`npm` 6.12.0](https://github.com/npm/cli/blob/latest/CHANGELOG.md#6120-2019-10-08)) added support for a niche Visual Studio version, Visual Studio 2017 express - https://github.com/nodejs/node-gyp/blob/master/CHANGELOG.md#v505-2019-10-04 - In this PR: https://github.com/nodejs/node-gyp/pull/1902 _(Note: `npm` bumps their `node-gyp` dependency somewhat often, so pretty much all versions of `node-gyp` were picked up by `npm` at some point.)_ **In short: We can say Visual Studio 2015 is supported. And Visual Studio 2017 is supported if you have npm 4.5 or newer. And Visual Studio 2019 is supported if you have npm 6.10.1 or newer.**

Conclusion:

According to researching the documentation, these versions can be used: Node 10.12+, npm 3.10.7+, Python 2.6/2.7 (Python 3.5+ can be used with recent npm), Visual Studio 2015 (Visual Studio 2017 and 2019 can be used with recent npm).

(Note: Node 12.17 and newer are not usable due to this issue: https://github.com/atom/atom/issues/21091)

I can test some combinations within those ranges and let you know how it goes.

DeeDeeG commented 4 years ago

@sadick254 I've got a big testing "info dump" here. I did some testing with old Node, npm, Visual Studio, and Python.

Node.js tests:

Windows 10 x64

#### Node 10.11 ``` C:\Users\[User]\Downloads\atom>script\bootstrap --ci Node: v10.11.0 Npm: v6.4.1 Python: v3.8.5 Installing script dependencies (node:4884) ExperimentalWarning: The fs.promises API is experimental (node:4884) UnhandledPromiseRejectionWarning: Error: EEXIST: file already exists, mkdir 'C:\Users\[User]\Downloads\atom\script\node_modules\electron-mksnapshot\bin' (node:4884) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) (node:4884) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. (node:9840) ExperimentalWarning: The fs.promises API is experimental (node:9840) UnhandledPromiseRejectionWarning: Error: EEXIST: file already exists, mkdir 'C:\Users\[User]\Downloads\atom\script\node_modules\electron-chromedriver\bin' (node:9840) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) (node:9840) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. added 1324 packages in 554.842s ``` After: ``` C:\Users\[User]\Downloads\atom>dir script\node_modules\electron-chromedriver\bin Volume in drive C is Windows Volume Serial Number is 0E53-5840 Directory of C:\[User]\[User]\Downloads\atom\script\node_modules\electron-chromedriver\bin 08/19/2020 12:19 PM . 08/19/2020 12:19 PM .. 0 File(s) 0 bytes 2 Dir(s) 82,790,354,944 bytes free C:\Users\[User]\Downloads\atom>dir script\node_modules\electron-mksnapshot\bin Volume in drive C is Windows Volume Serial Number is 0E53-5840 Directory of C:\Users\[User]\Downloads\atom\script\node_modules\electron-mksnapshot\bin 08/19/2020 12:19 PM . 08/19/2020 12:19 PM .. 0 File(s) 0 bytes 2 Dir(s) 82,779,025,408 bytes free ``` Directories are empty. bootstrap script did **not** download chromedriver or mksnapshot binaries. #### Node 10.12 ``` C:\Users\[User]\Downloads\atom>script\bootstrap --ci Node: v10.12.0 Npm: v6.4.1 Python: v3.8.5 Installing script dependencies (node:1468) ExperimentalWarning: The fs.promises API is experimental (node:2740) ExperimentalWarning: The fs.promises API is experimental added 1324 packages in 496.171s ``` After: ``` ```

Ubuntu 20.04 x64

#### Node 10.11 ```console [user]@[host]:~/atom$ script/bootstrap --ci Node: v10.11.0 Npm: v6.4.1 Python: v2.7.18rc1 Cleaning /home/[user]/atom/apm/node_modules Cleaning /home/[user]/atom/node_modules Cleaning /home/[user]/atom/script/node_modules Installing script dependencies (node:135034) ExperimentalWarning: The fs.promises API is experimental (node:135034) UnhandledPromiseRejectionWarning: Error: EEXIST: file already exists, mkdir '/home/[user]/atom/script/node_modules/electron-mksnapshot/bin' (node:135034) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) (node:135034) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. (node:135068) ExperimentalWarning: The fs.promises API is experimental (node:135068) UnhandledPromiseRejectionWarning: Error: EEXIST: file already exists, mkdir '/home/[user]/atom/script/node_modules/electron-chromedriver/bin' (node:135068) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) (node:135068) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. added 1324 packages in 148.299s ``` After: ```console [user]@[host]:~/atom$ ls script/node_modules/electron-mksnapshot/bin/ [user]@[host]:~/atom$ ls script/node_modules/electron-chromedriver/bin/ ``` Result: No output. bootstrap script did **not** download chromedriver or mksnapshot binaries. #### Node 10.12 ```console [user]@[host]:~/atom$ script/bootstrap --ci Node: v10.12.0 Npm: v6.4.1 Python: v2.7.18rc1 Cleaning /home/[user]/atom/apm/node_modules Cleaning /home/[user]/atom/node_modules Cleaning /home/[user]/atom/script/node_modules Installing script dependencies (node:155074) ExperimentalWarning: The fs.promises API is experimental (node:155108) ExperimentalWarning: The fs.promises API is experimental added 1324 packages in 192.318s ``` After: ```console [user]@[host]:~/atom$ ls script/node_modules/electron-mksnapshot/bin/ icudtl.dat libffmpeg.so LICENSE mksnapshot snapshot_blob.bin v8_context_snapshot_generator libEGL.so libGLESv2.so LICENSES.chromium.html natives_blob.bin swiftshader [user]@[host]:~/atom$ ls script/node_modules/electron-chromedriver/bin/ chromedriver icudtl.dat LICENSE LICENSES.chromium.html ``` Result: chromedriver and mksnapshot binaries were downloaded! Success!

Conclusion: Node less than 10.12 can't build Atom.

npm tests:

Windows 10 x64

#### npm 3.10.6 ``` C:\Users\[User]\Downloads\atom>script\bootstrap Node: v10.12.0 Npm: v3.10.6 Python: v3.8.5 Installing script dependencies npm ERR! Windows_NT 10.0.18362 npm ERR! argv "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\bin\\npm-cli.js" "--loglevel=error" "install" npm ERR! node v10.12.0 npm ERR! npm v3.10.6 npm ERR! code EMISSINGARG npm ERR! typeerror Error: Missing required argument #1 npm ERR! typeerror at andLogAndFinish (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\lib\fetch-package-metadata.js:31:3) npm ERR! typeerror at fetchPackageMetadata (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\lib\fetch-package-metadata.js:51:22) npm ERR! typeerror at resolveWithNewModule (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\lib\install\deps.js:518:12) npm ERR! typeerror at C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\lib\install\deps.js:519:7 npm ERR! typeerror at C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\iferr\index.js:13:50 npm ERR! typeerror at C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\lib\fetch-package-metadata.js:37:12 npm ERR! typeerror at addRequestedAndFinish (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\lib\fetch-package-metadata.js:67:5) npm ERR! typeerror at returnAndAddMetadata (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\lib\fetch-package-metadata.js:121:7) npm ERR! typeerror at pickVersionFromRegistryDocument (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\lib\fetch-package-metadata.js:146:20) npm ERR! typeerror at C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\iferr\index.js:13:50 npm ERR! typeerror This is an error with npm itself. Please report this error at: npm ERR! typeerror npm ERR! Please include the following file with any support request: npm ERR! C:\Users\[User]\Downloads\atom\script\npm-debug.log child_process.js:632 throw err; ^ Error: Command failed: npm.cmd --loglevel=error install npm ERR! Windows_NT 10.0.18362 npm ERR! argv "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\bin\\npm-cli.js" "--loglevel=error" "install" npm ERR! node v10.12.0 npm ERR! npm v3.10.6 npm ERR! code EMISSINGARG npm ERR! typeerror Error: Missing required argument #1 npm ERR! typeerror at andLogAndFinish (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\lib\fetch-package-metadata.js:31:3) npm ERR! typeerror at fetchPackageMetadata (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\lib\fetch-package-metadata.js:51:22) npm ERR! typeerror at resolveWithNewModule (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\lib\install\deps.js:518:12) npm ERR! typeerror at C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\lib\install\deps.js:519:7 npm ERR! typeerror at C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\iferr\index.js:13:50 npm ERR! typeerror at C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\lib\fetch-package-metadata.js:37:12 npm ERR! typeerror at addRequestedAndFinish (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\lib\fetch-package-metadata.js:67:5) npm ERR! typeerror at returnAndAddMetadata (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\lib\fetch-package-metadata.js:121:7) npm ERR! typeerror at pickVersionFromRegistryDocument (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\lib\fetch-package-metadata.js:146:20) npm ERR! typeerror at C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\iferr\index.js:13:50 npm ERR! typeerror This is an error with npm itself. Please report this error at: npm ERR! typeerror npm ERR! Please include the following file with any support request: npm ERR! C:\Users\[User]\Downloads\atom\script\npm-debug.log at checkExecSyncError (child_process.js:611:11) at Object.execFileSync (child_process.js:629:13) at module.exports (C:\Users\[User]\Downloads\atom\script\lib\install-script-dependencies.js:11:16) at Object. (C:\Users\[User]\Downloads\atom\script\bootstrap:37:1) at Module._compile (internal/modules/cjs/loader.js:688:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10) at Module.load (internal/modules/cjs/loader.js:598:32) at tryModuleLoad (internal/modules/cjs/loader.js:537:12) at Function.Module._load (internal/modules/cjs/loader.js:529:3) at Function.Module.runMain (internal/modules/cjs/loader.js:741:12) ``` Results: Lots of errors #### npm 3.10.7 ``` ```

Ubuntu 20.04 x64

#### npm 3.10.6 ```console [user]@[host]:~/atom$ script/bootstrap Node: v10.22.0 Npm: v3.10.6 Python: v2.7.18rc1 Installing script dependencies npm ERR! Linux 5.4.0-42-generic npm ERR! argv "/home/[user]/n-prefix/bin/node" "/home/[user]/n-prefix/bin/npm" "--loglevel=error" "install" npm ERR! node v10.22.0 npm ERR! npm v3.10.6 npm ERR! code EMISSINGARG npm ERR! typeerror Error: Missing required argument #1 npm ERR! typeerror at andLogAndFinish (/home/[user]/n-prefix/lib/node_modules/npm/lib/fetch-package-metadata.js:31:3) npm ERR! typeerror at fetchPackageMetadata (/home/[user]/n-prefix/lib/node_modules/npm/lib/fetch-package-metadata.js:51:22) npm ERR! typeerror at resolveWithNewModule (/home/[user]/n-prefix/lib/node_modules/npm/lib/install/deps.js:518:12) npm ERR! typeerror at /home/[user]/n-prefix/lib/node_modules/npm/lib/install/deps.js:519:7 npm ERR! typeerror at /home/[user]/n-prefix/lib/node_modules/npm/node_modules/iferr/index.js:13:50 npm ERR! typeerror at /home/[user]/n-prefix/lib/node_modules/npm/lib/fetch-package-metadata.js:37:12 npm ERR! typeerror at addRequestedAndFinish (/home/[user]/n-prefix/lib/node_modules/npm/lib/fetch-package-metadata.js:67:5) npm ERR! typeerror at returnAndAddMetadata (/home/[user]/n-prefix/lib/node_modules/npm/lib/fetch-package-metadata.js:121:7) npm ERR! typeerror at pickVersionFromRegistryDocument (/home/[user]/n-prefix/lib/node_modules/npm/lib/fetch-package-metadata.js:146:20) npm ERR! typeerror at /home/[user]/n-prefix/lib/node_modules/npm/node_modules/iferr/index.js:13:50 npm ERR! typeerror This is an error with npm itself. Please report this error at: npm ERR! typeerror npm ERR! Please include the following file with any support request: npm ERR! /home/[user]/atom/script/npm-debug.log child_process.js:650 throw err; ^ Error: Command failed: npm --loglevel=error install npm ERR! Linux 5.4.0-42-generic npm ERR! argv "/home/[user]/n-prefix/bin/node" "/home/[user]/n-prefix/bin/npm" "--loglevel=error" "install" npm ERR! node v10.22.0 npm ERR! npm v3.10.6 npm ERR! code EMISSINGARG npm ERR! typeerror Error: Missing required argument #1 npm ERR! typeerror at andLogAndFinish (/home/[user]/n-prefix/lib/node_modules/npm/lib/fetch-package-metadata.js:31:3) npm ERR! typeerror at fetchPackageMetadata (/home/[user]/n-prefix/lib/node_modules/npm/lib/fetch-package-metadata.js:51:22) npm ERR! typeerror at resolveWithNewModule (/home/[user]/n-prefix/lib/node_modules/npm/lib/install/deps.js:518:12) npm ERR! typeerror at /home/[user]/n-prefix/lib/node_modules/npm/lib/install/deps.js:519:7 npm ERR! typeerror at /home/[user]/n-prefix/lib/node_modules/npm/node_modules/iferr/index.js:13:50 npm ERR! typeerror at /home/[user]/n-prefix/lib/node_modules/npm/lib/fetch-package-metadata.js:37:12 npm ERR! typeerror at addRequestedAndFinish (/home/[user]/n-prefix/lib/node_modules/npm/lib/fetch-package-metadata.js:67:5) npm ERR! typeerror at returnAndAddMetadata (/home/[user]/n-prefix/lib/node_modules/npm/lib/fetch-package-metadata.js:121:7) npm ERR! typeerror at pickVersionFromRegistryDocument (/home/[user]/n-prefix/lib/node_modules/npm/lib/fetch-package-metadata.js:146:20) npm ERR! typeerror at /home/[user]/n-prefix/lib/node_modules/npm/node_modules/iferr/index.js:13:50 npm ERR! typeerror This is an error with npm itself. Please report this error at: npm ERR! typeerror npm ERR! Please include the following file with any support request: npm ERR! /home/[user]/atom/script/npm-debug.log at checkExecSyncError (child_process.js:629:11) at Object.execFileSync (child_process.js:647:13) at module.exports (/home/[user]/atom/script/lib/install-script-dependencies.js:11:16) at Object. (/home/[user]/atom/script/bootstrap:37:1) at Module._compile (internal/modules/cjs/loader.js:778:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) at Module.load (internal/modules/cjs/loader.js:653:32) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) at Function.Module._load (internal/modules/cjs/loader.js:585:3) at Function.Module.runMain (internal/modules/cjs/loader.js:831:12) ``` Result: Lots of errors. #### npm 3.10.7 ```console [user]@[host]:~/atom$ script/bootstrap Node: v10.22.0 Npm: v3.10.7 Python: v2.7.18rc1 Installing script dependencies (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:194056) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit ``` Result: Lots of warnings, and very slow to install, but all needed dependencies are installed.

Conclusion: npm less than 3.10.7 can't build Atom.

Visual Studio tests:

Windows 10 x64

#### Visual Studio 2015 ##### npm 3.10.7 (after doing `npm config set --global msvs_version=2015`) Works.
Tested with: Node 10.12.0, npm 3.10.7, Visual Studio 2015. (Confirmed which Visual Studio was running by opening Task Manager (`Ctrl + Shift + Esc`), expanding the `cmd.exe` task running `script\bootstrap` and `script\build`, right clicking the "MSBuild.exe" or [some C++ compiler executable here] subprocesses, clicking "Open file location", and confirming that MSBuild from Visual Studio 14.0 or [C++ compiler executable] 14.0 was used. ([14.0 is the version number for Visual Studio 2015](https://en.wikipedia.org/wiki/Microsoft_Visual_Studio#2015)).
##### npm 3.10.7 (without doing `npm config set --global msvs_version=2015`) Errors.
``` PS C:\Users\[User]\Downloads\atom> .\script\bootstrapNode: v10.12.0 Npm: v4.4.4 Python: v2.7.15 Installing script dependencies Warning: unrecognized setting VCCLCompilerTool/MultiProcessorCompilation Warning: unrecognized setting VCCLCompilerTool/MultiProcessorCompilation gyp ERR! build error gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1 gyp ERR! stack at ChildProcess.onExit (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\build.js:276:23) gyp ERR! stack at ChildProcess.emit (events.js:182:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12) gyp ERR! System Windows_NT 10.0.18362 gyp ERR! command "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\[User]\Downloads\atom\script\node_modules\minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v3.5.0 gyp ERR! not ok npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script 'node-gyp rebuild'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the minidump package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs minidump npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls minidump npm ERR! There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\[User]\AppData\Roaming\npm-cache\_logs\2020-08-21T21_00_46_356Z-debug.log child_process.js:632 throw err; ^ Error: Command failed: npm.cmd --loglevel=error install Warning: unrecognized setting VCCLCompilerTool/MultiProcessorCompilation Warning: unrecognized setting VCCLCompilerTool/MultiProcessorCompilation gyp ERR! build error gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1 gyp ERR! stack at ChildProcess.onExit (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\build.js:276:23) gyp ERR! stack at ChildProcess.emit (events.js:182:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12) gyp ERR! System Windows_NT 10.0.18362 gyp ERR! command "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\[User]\Downloads\atom\script\node_modules\minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v3.5.0 gyp ERR! not ok npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script 'node-gyp rebuild'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the minidump package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs minidump npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls minidump npm ERR! There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\[User]\AppData\Roaming\npm-cache\_logs\2020-08-21T21_00_46_356Z-debug.log at checkExecSyncError (child_process.js:611:11) at Object.execFileSync (child_process.js:629:13) at module.exports (C:\Users\[User]\Downloads\atom\script\lib\install-script-dependencies.js:11:16) at Object. (C:\Users\[User]\Downloads\atom\script\bootstrap:37:1) at Module._compile (internal/modules/cjs/loader.js:688:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10) at Module.load (internal/modules/cjs/loader.js:598:32) at tryModuleLoad (internal/modules/cjs/loader.js:537:12) at Function.Module._load (internal/modules/cjs/loader.js:529:3) at Function.Module.runMain (internal/modules/cjs/loader.js:741:12) ```
##### npm 6.10.0 (without `npm config set msvs_version=2015`) Error.
``` PS C:\Users\[User]\atom> .\script\bootstrap Node: v10.12.0 Npm: v6.10.0 Python: v2.7.18 Installing script dependencies Warning: unrecognized setting VCCLCompilerTool/MultiProcessorCompilation Warning: unrecognized setting VCCLCompilerTool/MultiProcessorCompilation gyp ERR! build error gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1 gyp ERR! stack at ChildProcess.onExit (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\build.js:262:23) gyp ERR! stack at ChildProcess.emit (events.js:182:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12) gyp ERR! System Windows_NT 10.0.18363 gyp ERR! command "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\[User]\atom\script\node_modules\minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v3.8.0 gyp ERR! not ok npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\[User]\AppData\Roaming\npm-cache\_logs\2020-08-22T20_45_36_992Z-debug.log child_process.js:632 throw err; ^ Error: Command failed: npm.cmd --loglevel=error install Warning: unrecognized setting VCCLCompilerTool/MultiProcessorCompilation Warning: unrecognized setting VCCLCompilerTool/MultiProcessorCompilation gyp ERR! build error gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1 gyp ERR! stack at ChildProcess.onExit (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\build.js:262:23) gyp ERR! stack at ChildProcess.emit (events.js:182:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12) gyp ERR! System Windows_NT 10.0.18363 gyp ERR! command "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\[User]\atom\script\node_modules\minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v3.8.0 gyp ERR! not ok npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\[User]\AppData\Roaming\npm-cache\_logs\2020-08-22T20_45_36_992Z-debug.log at checkExecSyncError (child_process.js:611:11) at Object.execFileSync (child_process.js:629:13) at module.exports (C:\Users\[User]\atom\script\lib\install-script-dependencies.js:11:16) at Object. (C:\Users\[User]\atom\script\bootstrap:37:1) at Module._compile (internal/modules/cjs/loader.js:688:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10) at Module.load (internal/modules/cjs/loader.js:598:32) at tryModuleLoad (internal/modules/cjs/loader.js:537:12) at Function.Module._load (internal/modules/cjs/loader.js:529:3) at Function.Module.runMain (internal/modules/cjs/loader.js:741:12) ```
##### npm 6.10.0 (with `npm config set msvs_version=2015`) Works. No errors.
``` PS C:\Users\[User]\atom> .\script\bootstrap Node: v10.12.0 Npm: v6.10.0 Python: v2.7.18 Installing script dependencies Installing apm ```
##### npm 6.10.0 (with `$env:GYP_MSVS_VERSION=2015` (powershell env var setting)) Works. No errors.
``` PS C:\Users\[User]\atom> .\script\bootstrap Node: v10.12.0 Npm: v6.10.0 Python: v2.7.18 Installing script dependencies Installing apm ```
##### npm 6.10.1 No manual config or env vars needed. Just works.
``` PS C:\Users\[User]\atom> .\script\bootstrap Node: v10.12.0 Npm: v6.10.1 Python: v2.7.18 Installing script dependencies Installing apm ```
#### Visual Studio 2017 ##### npm 3.10.7 Does not work with really old npm. Regardless of doing set `GYP_MSVS_VERSION=` or `npm config set msvs_version=`. This is the error message:
``` PS C:\Users\[User]\Downloads\atom> .\script\bootstrap Node: v10.12.0 Npm: v3.10.7 Python: v2.7.15 Installing script dependencies (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:12236) ExperimentalWarning: The fs.promises API is experimental (node:29348) ExperimentalWarning: The fs.promises API is experimental Traceback (most recent call last): File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\gyp_main.py", line 16, in sys.exit(gyp.script_main()) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 545, in script_main return main(sys.argv[1:]) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 538, in main return gyp_main(args) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 514, in gyp_main options.duplicate_basename_check) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 98, in Load generator.CalculateVariables(default_variables, params) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\generator\msvs.py", line 1900, in CalculateVariables generator_flags.get('msvs_version', 'auto')) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\MSVSVersion.py", line 434, in SelectVisualStudioVersion versions = _DetectVisualStudioVersions(version_map[version], 'e' in version) KeyError: '2017' gyp ERR! configure error gyp ERR! stack Error: `gyp` failed with exit code: 1 gyp ERR! stack at ChildProcess.onCpExit (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\configure.js:305:16) gyp ERR! stack at ChildProcess.emit (events.js:182:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12) gyp ERR! System Windows_NT 10.0.18362 gyp ERR! command "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\[User]\Downloads\atom\script\node_modules\minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v3.4.0 gyp ERR! not ok npm ERR! Windows_NT 10.0.18362 npm ERR! argv "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\bin\\npm-cli.js" "--loglevel=error" "install" npm ERR! node v10.12.0 npm ERR! npm v3.10.7 npm ERR! code ELIFECYCLE npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script 'node-gyp rebuild'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the minidump package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs minidump npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls minidump npm ERR! There is likely additional logging output above. npm ERR! Please include the following file with any support request: npm ERR! C:\Users\[User]\Downloads\atom\script\npm-debug.log child_process.js:632 throw err; ^ Error: Command failed: npm.cmd --loglevel=error install (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:17540) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:12236) ExperimentalWarning: The fs.promises API is experimental (node:29348) ExperimentalWarning: The fs.promises API is experimental Traceback (most recent call last): File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\gyp_main.py", line 16, in sys.exit(gyp.script_main()) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 545, in script_main return main(sys.argv[1:]) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 538, in main return gyp_main(args) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 514, in gyp_main options.duplicate_basename_check) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 98, in Load generator.CalculateVariables(default_variables, params) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\generator\msvs.py", line 1900, in CalculateVariables generator_flags.get('msvs_version', 'auto')) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\MSVSVersion.py", line 434, in SelectVisualStudioVersion versions = _DetectVisualStudioVersions(version_map[version], 'e' in version) KeyError: '2017' gyp ERR! configure error gyp ERR! stack Error: `gyp` failed with exit code: 1 gyp ERR! stack at ChildProcess.onCpExit (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\configure.js:305:16) gyp ERR! stack at ChildProcess.emit (events.js:182:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12) gyp ERR! System Windows_NT 10.0.18362 gyp ERR! command "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\[User]\Downloads\atom\script\node_modules\minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v3.4.0 gyp ERR! not ok npm ERR! Windows_NT 10.0.18362 npm ERR! argv "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\bin\\npm-cli.js" "--loglevel=error" "install" npm ERR! node v10.12.0 npm ERR! npm v3.10.7 npm ERR! code ELIFECYCLE npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script 'node-gyp rebuild'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the minidump package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs minidump npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls minidump npm ERR! There is likely additional logging output above. npm ERR! Please include the following file with any support request: npm ERR! C:\Users\[User]\Downloads\atom\script\npm-debug.log at checkExecSyncError (child_process.js:611:11) at Object.execFileSync (child_process.js:629:13) at module.exports (C:\Users\[User]\Downloads\atom\script\lib\install-script-dependencies.js:11:16) at Object. (C:\Users\[User]\Downloads\atom\script\bootstrap:37:1) at Module._compile (internal/modules/cjs/loader.js:688:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10) at Module.load (internal/modules/cjs/loader.js:598:32) at tryModuleLoad (internal/modules/cjs/loader.js:537:12) at Function.Module._load (internal/modules/cjs/loader.js:529:3) at Function.Module.runMain (internal/modules/cjs/loader.js:741:12) ```
##### npm 4.4.4 Exact same error as above.
``` PS C:\Users\[User]\Downloads\atom> .\script\bootstrap Node: v10.12.0 Npm: v4.4.4 Python: v2.7.15 Installing script dependencies Traceback (most recent call last): File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\gyp_main.py", line 16, in sys.exit(gyp.script_main()) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 545, in script_main return main(sys.argv[1:]) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 538, in main return gyp_main(args) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 514, in gyp_main options.duplicate_basename_check) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 98, in Load generator.CalculateVariables(default_variables, params) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\generator\msvs.py", line 1900, in CalculateVariables generator_flags.get('msvs_version', 'auto')) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\MSVSVersion.py", line 434, in SelectVisualStudioVersion versions = _DetectVisualStudioVersions(version_map[version], 'e' in version) KeyError: '2017' gyp ERR! configure error gyp ERR! stack Error: `gyp` failed with exit code: 1 gyp ERR! stack at ChildProcess.onCpExit (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\configure.js:308:16) gyp ERR! stack at ChildProcess.emit (events.js:182:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12) gyp ERR! System Windows_NT 10.0.18362 gyp ERR! command "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\[User]\Downloads\atom\script\node_modules\minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v3.5.0 gyp ERR! not ok npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script 'node-gyp rebuild'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the minidump package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs minidump npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls minidump npm ERR! There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\[User]\AppData\Roaming\npm-cache\_logs\2020-08-21T20_27_09_842Z-debug.log child_process.js:632 throw err; ^ Error: Command failed: npm.cmd --loglevel=error install Traceback (most recent call last): File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\gyp_main.py", line 16, in sys.exit(gyp.script_main()) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 545, in script_main return main(sys.argv[1:]) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 538, in main return gyp_main(args) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 514, in gyp_main options.duplicate_basename_check) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 98, in Load generator.CalculateVariables(default_variables, params) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\generator\msvs.py", line 1900, in CalculateVariables generator_flags.get('msvs_version', 'auto')) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\MSVSVersion.py", line 434, in SelectVisualStudioVersion versions = _DetectVisualStudioVersions(version_map[version], 'e' in version) KeyError: '2017' gyp ERR! configure error gyp ERR! stack Error: `gyp` failed with exit code: 1 gyp ERR! stack at ChildProcess.onCpExit (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\configure.js:308:16) gyp ERR! stack at ChildProcess.emit (events.js:182:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12) gyp ERR! System Windows_NT 10.0.18362 gyp ERR! command "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\[User]\Downloads\atom\script\node_modules\minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v3.5.0 gyp ERR! not ok npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script 'node-gyp rebuild'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the minidump package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs minidump npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls minidump npm ERR! There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\[User]\AppData\Roaming\npm-cache\_logs\2020-08-21T20_27_09_842Z-debug.log at checkExecSyncError (child_process.js:611:11) at Object.execFileSync (child_process.js:629:13) at module.exports (C:\Users\[User]\Downloads\atom\script\lib\install-script-dependencies.js:11:16) at Object. (C:\Users\[User]\Downloads\atom\script\bootstrap:37:1) at Module._compile (internal/modules/cjs/loader.js:688:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10) at Module.load (internal/modules/cjs/loader.js:598:32) at tryModuleLoad (internal/modules/cjs/loader.js:537:12) at Function.Module._load (internal/modules/cjs/loader.js:529:3) at Function.Module.runMain (internal/modules/cjs/loader.js:741:12) ```
##### npm 4.5.0 Just works
``` PS C:\Users\[User]\Downloads\atom> .\script\bootstrap Node: v10.12.0 Npm: v4.5.0 Python: v2.7.15 Installing script dependencies (node:2852) ExperimentalWarning: The fs.promises API is experimental (node:21500) ExperimentalWarning: The fs.promises API is experimental Installing apm Installing modules done Wrote Dependencies Fingerprint: C:\Users\[User]\Downloads\atom\node_modules\.dependencies-fingerprint 32216db66d0973058ee687fd60173f7821d149b9 ```
#### Visual Studio 2019 ##### npm 6.10.0 Errors, regardless of config or env vars. Without `npm config set msvs_version 2019`:
``` PS C:\Users\[User]\atom> .\script\bootstrap Node: v10.12.0 Npm: v6.10.0 Python: v2.7.18 Installing script dependencies gyp ERR! UNCAUGHT EXCEPTION gyp ERR! stack Error: spawn C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\15.0\Bin\MSBuild.exe ENOENT gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:232:19) gyp ERR! stack at onErrorNT (internal/child_process.js:407:16) gyp ERR! stack at process._tickCallback (internal/process/next_tick.js:63:19) gyp ERR! System Windows_NT 10.0.18363 gyp ERR! command "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\[User]\atom\script\node_modules\minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v3.8.0 gyp ERR! This is a bug in `node-gyp`. gyp ERR! Try to update node-gyp and file an Issue if it does not help: gyp ERR! npm ERR! code ELIFECYCLE npm ERR! errno 7 npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 7 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\[User]\AppData\Roaming\npm-cache\_logs\2020-08-22T18_35_44_994Z-debug.log child_process.js:632 throw err; ^ Error: Command failed: npm.cmd --loglevel=error install gyp ERR! UNCAUGHT EXCEPTION gyp ERR! stack Error: spawn C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\15.0\Bin\MSBuild.exe ENOENT gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:232:19) gyp ERR! stack at onErrorNT (internal/child_process.js:407:16) gyp ERR! stack at process._tickCallback (internal/process/next_tick.js:63:19) gyp ERR! System Windows_NT 10.0.18363 gyp ERR! command "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\[User]\atom\script\node_modules\minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v3.8.0 gyp ERR! This is a bug in `node-gyp`. gyp ERR! Try to update node-gyp and file an Issue if it does not help: gyp ERR! npm ERR! code ELIFECYCLE npm ERR! errno 7 npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 7 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\[User]\AppData\Roaming\npm-cache\_logs\2020-08-22T18_35_44_994Z-debug.log at checkExecSyncError (child_process.js:611:11) at Object.execFileSync (child_process.js:629:13) at module.exports (C:\Users\[User]\atom\script\lib\install-script-dependencies.js:11:16) at Object. (C:\Users\[User]\atom\script\bootstrap:37:1) at Module._compile (internal/modules/cjs/loader.js:688:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10) at Module.load (internal/modules/cjs/loader.js:598:32) at tryModuleLoad (internal/modules/cjs/loader.js:537:12) at Function.Module._load (internal/modules/cjs/loader.js:529:3) at Function.Module.runMain (internal/modules/cjs/loader.js:741:12) ```
With `npm config set msvs_version 2019`:
``` PS C:\Users\[User]\atom> .\script\bootstrap Node: v10.12.0 Npm: v6.10.0 Python: v2.7.18 Installing script dependencies Traceback (most recent call last): File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\gyp_main.py", line 16, in sys.exit(gyp.script_main()) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 545, in script_main return main(sys.argv[1:]) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 538, in main return gyp_main(args) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 514, in gyp_main options.duplicate_basename_check) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 98, in Load generator.CalculateVariables(default_variables, params) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\generator\msvs.py", line 1916, in CalculateVariables generator_flags.get('msvs_version', 'auto')) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\MSVSVersion.py", line 434, in SelectVisualStudioVersion versions = _DetectVisualStudioVersions(version_map[version], 'e' in version) KeyError: '2019' gyp ERR! configure error gyp ERR! stack Error: `gyp` failed with exit code: 1 gyp ERR! stack at ChildProcess.onCpExit (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\configure.js:345:16) gyp ERR! stack at ChildProcess.emit (events.js:182:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12) gyp ERR! System Windows_NT 10.0.18363 gyp ERR! command "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\[User]\atom\script\node_modules\minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v3.8.0 gyp ERR! not ok npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\[User]\AppData\Roaming\npm-cache\_logs\2020-08-22T18_37_50_094Z-debug.log child_process.js:632 throw err; ^ Error: Command failed: npm.cmd --loglevel=error install Traceback (most recent call last): File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\gyp_main.py", line 16, in sys.exit(gyp.script_main()) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 545, in script_main return main(sys.argv[1:]) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 538, in main return gyp_main(args) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 514, in gyp_main options.duplicate_basename_check) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 98, in Load generator.CalculateVariables(default_variables, params) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\generator\msvs.py", line 1916, in CalculateVariables generator_flags.get('msvs_version', 'auto')) File "C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\MSVSVersion.py", line 434, in SelectVisualStudioVersion versions = _DetectVisualStudioVersions(version_map[version], 'e' in version) KeyError: '2019' gyp ERR! configure error gyp ERR! stack Error: `gyp` failed with exit code: 1 gyp ERR! stack at ChildProcess.onCpExit (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\configure.js:345:16) gyp ERR! stack at ChildProcess.emit (events.js:182:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12) gyp ERR! System Windows_NT 10.0.18363 gyp ERR! command "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\[User]\atom\script\node_modules\minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v3.8.0 gyp ERR! not ok npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\[User]\AppData\Roaming\npm-cache\_logs\2020-08-22T18_37_50_094Z-debug.log at checkExecSyncError (child_process.js:611:11) at Object.execFileSync (child_process.js:629:13) at module.exports (C:\Users\[User]\atom\script\lib\install-script-dependencies.js:11:16) at Object. (C:\Users\[User]\atom\script\bootstrap:37:1) at Module._compile (internal/modules/cjs/loader.js:688:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10) at Module.load (internal/modules/cjs/loader.js:598:32) at tryModuleLoad (internal/modules/cjs/loader.js:537:12) at Function.Module._load (internal/modules/cjs/loader.js:529:3) at Function.Module.runMain (internal/modules/cjs/loader.js:741:12) ```
##### npm 6.10.1 No problems. Just works. No manual config or env vars needed.
``` PS C:\Users\[User]\atom> .\script\bootstrap Node: v10.12.0 Npm: v6.10.1 Python: v2.7.18 Installing script dependencies Installing apm ```

Conclusions:

Python tests:

Ubuntu 20.04 x64

#### npm 3.10.7 ##### No Python 2, Python 3 available Doesn't work. Error about "Python" executable can't be found.
```console [user]@[host]:~/atom$ script/bootstrap Node: v10.12.0 Npm: v3.10.7 Python: v3.8.2 Installing script dependencies (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:5000) ExperimentalWarning: The fs.promises API is experimental (node:5012) ExperimentalWarning: The fs.promises API is experimental gyp ERR! configure error gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable. gyp ERR! stack at failNoPython (/home/[user]/n-prefix/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:449:14) gyp ERR! stack at /home/[user]/n-prefix/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:353:11 gyp ERR! stack at F (/home/[user]/n-prefix/lib/node_modules/npm/node_modules/which/which.js:69:16) gyp ERR! stack at E (/home/[user]/n-prefix/lib/node_modules/npm/node_modules/which/which.js:81:29) gyp ERR! stack at /home/[user]/n-prefix/lib/node_modules/npm/node_modules/which/which.js:90:16 gyp ERR! stack at /home/[user]/n-prefix/lib/node_modules/npm/node_modules/which/node_modules/isexe/index.js:44:5 gyp ERR! stack at /home/[user]/n-prefix/lib/node_modules/npm/node_modules/which/node_modules/isexe/access.js:8:5 gyp ERR! stack at FSReqWrap.oncomplete (fs.js:141:20) gyp ERR! System Linux 5.4.0-42-generic gyp ERR! command "/home/[user]/n-prefix/bin/node" "/home/[user]/n-prefix/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /home/[user]/atom/script/node_modules/minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v3.4.0 gyp ERR! not ok npm ERR! Linux 5.4.0-42-generic npm ERR! argv "/home/[user]/n-prefix/bin/node" "/home/[user]/n-prefix/bin/npm" "install" "--loglevel=error" npm ERR! node v10.12.0 npm ERR! npm v3.10.7 npm ERR! code ELIFECYCLE npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script 'node-gyp rebuild'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the minidump package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs minidump npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls minidump npm ERR! There is likely additional logging output above. npm ERR! Please include the following file with any support request: npm ERR! /home/[user]/atom/script/npm-debug.log child_process.js:632 throw err; ^ Error: Command failed: npm install --loglevel=error (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:4965) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:5000) ExperimentalWarning: The fs.promises API is experimental (node:5012) ExperimentalWarning: The fs.promises API is experimental gyp ERR! configure error gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable. gyp ERR! stack at failNoPython (/home/[user]/n-prefix/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:449:14) gyp ERR! stack at /home/[user]/n-prefix/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:353:11 gyp ERR! stack at F (/home/[user]/n-prefix/lib/node_modules/npm/node_modules/which/which.js:69:16) gyp ERR! stack at E (/home/[user]/n-prefix/lib/node_modules/npm/node_modules/which/which.js:81:29) gyp ERR! stack at /home/[user]/n-prefix/lib/node_modules/npm/node_modules/which/which.js:90:16 gyp ERR! stack at /home/[user]/n-prefix/lib/node_modules/npm/node_modules/which/node_modules/isexe/index.js:44:5 gyp ERR! stack at /home/[user]/n-prefix/lib/node_modules/npm/node_modules/which/node_modules/isexe/access.js:8:5 gyp ERR! stack at FSReqWrap.oncomplete (fs.js:141:20) gyp ERR! System Linux 5.4.0-42-generic gyp ERR! command "/home/[user]/n-prefix/bin/node" "/home/[user]/n-prefix/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /home/[user]/atom/script/node_modules/minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v3.4.0 gyp ERR! not ok npm ERR! Linux 5.4.0-42-generic npm ERR! argv "/home/[user]/n-prefix/bin/node" "/home/[user]/n-prefix/bin/npm" "install" "--loglevel=error" npm ERR! node v10.12.0 npm ERR! npm v3.10.7 npm ERR! code ELIFECYCLE npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script 'node-gyp rebuild'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the minidump package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs minidump npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls minidump npm ERR! There is likely additional logging output above. npm ERR! Please include the following file with any support request: npm ERR! /home/[user]/atom/script/npm-debug.log at checkExecSyncError (child_process.js:611:11) at Object.execFileSync (child_process.js:629:13) at module.exports (/home/[user]/atom/script/lib/install-script-dependencies.js:11:16) at Object. (/home/[user]/atom/script/bootstrap:37:1) at Module._compile (internal/modules/cjs/loader.js:688:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10) at Module.load (internal/modules/cjs/loader.js:598:32) at tryModuleLoad (internal/modules/cjs/loader.js:537:12) at Function.Module._load (internal/modules/cjs/loader.js:529:3) at Function.Module.runMain (internal/modules/cjs/loader.js:741:12) ```
##### Python 2 available Works, no errors.
```console [user]@[host]:~/atom$ script/bootstrap Node: v10.12.0 Npm: v3.10.7 Python: v2.7.18rc1 Installing script dependencies (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8110) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:8145) ExperimentalWarning: The fs.promises API is experimental (node:8157) ExperimentalWarning: The fs.promises API is experimental Installing apm ```
#### npm 6.11 ##### No Python 2, Python 3 is available Error, "python" and "python2" executables not found.
```console [user]@[host]:~/atom$ script/bootstrap Node: v10.12.0 Npm: v6.11.3 Python: v3.8.2 Installing script dependencies gyp ERR! find Python gyp ERR! find Python Python is not set from command line or npm configuration gyp ERR! find Python Python is not set from environment variable PYTHON gyp ERR! find Python checking if "python" can be used gyp ERR! find Python - "python" is not in PATH or produced an error gyp ERR! find Python checking if "python2" can be used gyp ERR! find Python - "python2" is not in PATH or produced an error gyp ERR! find Python gyp ERR! find Python ********************************************************** gyp ERR! find Python You need to install the latest version of Python 2.7. gyp ERR! find Python Node-gyp should be able to find and use Python. If not, gyp ERR! find Python you can try one of the following options: gyp ERR! find Python - Use the switch --python="/path/to/pythonexecutable" gyp ERR! find Python (accepted by both node-gyp and npm) gyp ERR! find Python - Set the environment variable PYTHON gyp ERR! find Python - Set the npm configuration variable python: gyp ERR! find Python npm config set python "/path/to/pythonexecutable" gyp ERR! find Python For more information consult the documentation at: gyp ERR! find Python https://github.com/nodejs/node-gyp#installation gyp ERR! find Python ********************************************************** gyp ERR! find Python gyp ERR! configure error gyp ERR! stack Error: Could not find any Python installation to use gyp ERR! stack at PythonFinder.fail (/home/[user]/n-prefix/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:303:47) gyp ERR! stack at PythonFinder.runChecks (/home/[user]/n-prefix/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:132:21) gyp ERR! stack at PythonFinder. (/home/[user]/n-prefix/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:175:16) gyp ERR! stack at PythonFinder.execFileCallback (/home/[user]/n-prefix/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:267:16) gyp ERR! stack at exithandler (child_process.js:296:5) gyp ERR! stack at ChildProcess.errorhandler (child_process.js:308:5) gyp ERR! stack at ChildProcess.emit (events.js:182:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:238:12) gyp ERR! stack at onErrorNT (internal/child_process.js:407:16) gyp ERR! stack at process._tickCallback (internal/process/next_tick.js:63:19) gyp ERR! System Linux 5.4.0-42-generic gyp ERR! command "/home/[user]/n-prefix/bin/node" "/home/[user]/n-prefix/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /home/[user]/atom/script/node_modules/minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v5.0.3 gyp ERR! not ok npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /home/[user]/.npm/_logs/2020-08-21T21_55_52_334Z-debug.log child_process.js:632 throw err; ^ Error: Command failed: npm install --loglevel=error gyp ERR! find Python gyp ERR! find Python Python is not set from command line or npm configuration gyp ERR! find Python Python is not set from environment variable PYTHON gyp ERR! find Python checking if "python" can be used gyp ERR! find Python - "python" is not in PATH or produced an error gyp ERR! find Python checking if "python2" can be used gyp ERR! find Python - "python2" is not in PATH or produced an error gyp ERR! find Python gyp ERR! find Python ********************************************************** gyp ERR! find Python You need to install the latest version of Python 2.7. gyp ERR! find Python Node-gyp should be able to find and use Python. If not, gyp ERR! find Python you can try one of the following options: gyp ERR! find Python - Use the switch --python="/path/to/pythonexecutable" gyp ERR! find Python (accepted by both node-gyp and npm) gyp ERR! find Python - Set the environment variable PYTHON gyp ERR! find Python - Set the npm configuration variable python: gyp ERR! find Python npm config set python "/path/to/pythonexecutable" gyp ERR! find Python For more information consult the documentation at: gyp ERR! find Python https://github.com/nodejs/node-gyp#installation gyp ERR! find Python ********************************************************** gyp ERR! find Python gyp ERR! configure error gyp ERR! stack Error: Could not find any Python installation to use gyp ERR! stack at PythonFinder.fail (/home/[user]/n-prefix/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:303:47) gyp ERR! stack at PythonFinder.runChecks (/home/[user]/n-prefix/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:132:21) gyp ERR! stack at PythonFinder. (/home/[user]/n-prefix/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:175:16) gyp ERR! stack at PythonFinder.execFileCallback (/home/[user]/n-prefix/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:267:16) gyp ERR! stack at exithandler (child_process.js:296:5) gyp ERR! stack at ChildProcess.errorhandler (child_process.js:308:5) gyp ERR! stack at ChildProcess.emit (events.js:182:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:238:12) gyp ERR! stack at onErrorNT (internal/child_process.js:407:16) gyp ERR! stack at process._tickCallback (internal/process/next_tick.js:63:19) gyp ERR! System Linux 5.4.0-42-generic gyp ERR! command "/home/[user]/n-prefix/bin/node" "/home/[user]/n-prefix/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /home/[user]/atom/script/node_modules/minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v5.0.3 gyp ERR! not ok npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /home/[user]/.npm/_logs/2020-08-21T21_55_52_334Z-debug.log at checkExecSyncError (child_process.js:611:11) at Object.execFileSync (child_process.js:629:13) at module.exports (/home/[user]/atom/script/lib/install-script-dependencies.js:11:16) at Object. (/home/[user]/atom/script/bootstrap:37:1) at Module._compile (internal/modules/cjs/loader.js:688:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10) at Module.load (internal/modules/cjs/loader.js:598:32) at tryModuleLoad (internal/modules/cjs/loader.js:537:12) at Function.Module._load (internal/modules/cjs/loader.js:529:3) at Function.Module.runMain (internal/modules/cjs/loader.js:741:12) ```
##### Python 2 available Works, no errors.
```console [user]@[host]:~/atom$ script/bootstrap Node: v10.12.0 Npm: v6.11.3 Python: v2.7.18rc1 Installing script dependencies (node:9900) ExperimentalWarning: The fs.promises API is experimental (node:9912) ExperimentalWarning: The fs.promises API is experimental Installing apm ```
#### npm 6.12 ##### No Python 2, Python 3 available Works. No errors.
```console [user]@[host]:~/atom$ script/bootstrap Node: v10.12.0 Npm: v6.12.0 Python: v3.8.2 Installing script dependencies (node:11548) ExperimentalWarning: The fs.promises API is experimental (node:11560) ExperimentalWarning: The fs.promises API is experimental Installing apm ```
##### Python 2 available Also works. No errors.
```console [user]@[host]:~/atom$ script/bootstrap Node: v10.12.0 Npm: v6.12.0 Python: v2.7.18rc1 Installing script dependencies (node:13096) ExperimentalWarning: The fs.promises API is experimental (node:13108) ExperimentalWarning: The fs.promises API is experimental Installing apm ```

Windows 10 x64

#### npm 6.11 ##### No Python 2, Python 3 is available Error. `THIS VERSION OF PYTHON IS NOT SUPPORTED`
``` PS C:\Users\[User]\atom> .\script\bootstrap Node: v10.12.0 Npm: v6.11.3 Python: v3.8.5 Installing script dependencies gyp ERR! find Python gyp ERR! find Python Python is not set from command line or npm configuration gyp ERR! find Python Python is not set from environment variable PYTHON gyp ERR! find Python checking if "python" can be used gyp ERR! find Python - executable path is "C:\Users\[User]\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\python.exe" gyp ERR! find Python - version is "3.8.5" gyp ERR! find Python - version is 3.8.5 - should be >=2.6.0 <3.0.0 gyp ERR! find Python - THIS VERSION OF PYTHON IS NOT SUPPORTED gyp ERR! find Python checking if "python2" can be used gyp ERR! find Python - "python2" is not in PATH or produced an error gyp ERR! find Python checking if the py launcher can be used to find Python 2 gyp ERR! find Python - "py.exe" is not in PATH or produced an error gyp ERR! find Python checking if Python is C:\Python27\python.exe gyp ERR! find Python - "C:\Python27\python.exe" could not be run gyp ERR! find Python checking if Python is C:\Python37\python.exe gyp ERR! find Python - "C:\Python37\python.exe" could not be run gyp ERR! find Python gyp ERR! find Python ********************************************************** gyp ERR! find Python You need to install the latest version of Python 2.7. gyp ERR! find Python Node-gyp should be able to find and use Python. If not, gyp ERR! find Python you can try one of the following options: gyp ERR! find Python - Use the switch --python="C:\Path\To\python.exe" gyp ERR! find Python (accepted by both node-gyp and npm) gyp ERR! find Python - Set the environment variable PYTHON gyp ERR! find Python - Set the npm configuration variable python: gyp ERR! find Python npm config set python "C:\Path\To\python.exe" gyp ERR! find Python For more information consult the documentation at: gyp ERR! find Python https://github.com/nodejs/node-gyp#installation gyp ERR! find Python ********************************************************** gyp ERR! find Python gyp ERR! configure error gyp ERR! stack Error: Could not find any Python installation to use gyp ERR! stack at PythonFinder.fail (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\find-python.js:303:47) gyp ERR! stack at PythonFinder.runChecks (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\find-python.js:132:21) gyp ERR! stack at PythonFinder. (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\find-python.js:221:16) gyp ERR! stack at PythonFinder.execFileCallback (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\find-python.js:267:16) gyp ERR! stack at exithandler (child_process.js:296:5) gyp ERR! stack at ChildProcess.errorhandler (child_process.js:308:5) gyp ERR! stack at ChildProcess.emit (events.js:182:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:238:12) gyp ERR! stack at onErrorNT (internal/child_process.js:407:16) gyp ERR! stack at process._tickCallback (internal/process/next_tick.js:63:19) gyp ERR! System Windows_NT 10.0.18363 gyp ERR! command "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\[User]\atom\script\node_modules\minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v5.0.3 gyp ERR! not ok npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\[User]\AppData\Roaming\npm-cache\_logs\2020-08-22T16_51_59_269Z-debug.log child_process.js:632 throw err; ^ Error: Command failed: npm.cmd --loglevel=error install gyp ERR! find Python gyp ERR! find Python Python is not set from command line or npm configuration gyp ERR! find Python Python is not set from environment variable PYTHON gyp ERR! find Python checking if "python" can be used gyp ERR! find Python - executable path is "C:\Users\[User]\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\python.exe" gyp ERR! find Python - version is "3.8.5" gyp ERR! find Python - version is 3.8.5 - should be >=2.6.0 <3.0.0 gyp ERR! find Python - THIS VERSION OF PYTHON IS NOT SUPPORTED gyp ERR! find Python checking if "python2" can be used gyp ERR! find Python - "python2" is not in PATH or produced an error gyp ERR! find Python checking if the py launcher can be used to find Python 2 gyp ERR! find Python - "py.exe" is not in PATH or produced an error gyp ERR! find Python checking if Python is C:\Python27\python.exe gyp ERR! find Python - "C:\Python27\python.exe" could not be run gyp ERR! find Python checking if Python is C:\Python37\python.exe gyp ERR! find Python - "C:\Python37\python.exe" could not be run gyp ERR! find Python gyp ERR! find Python ********************************************************** gyp ERR! find Python You need to install the latest version of Python 2.7. gyp ERR! find Python Node-gyp should be able to find and use Python. If not, gyp ERR! find Python you can try one of the following options: gyp ERR! find Python - Use the switch --python="C:\Path\To\python.exe" gyp ERR! find Python (accepted by both node-gyp and npm) gyp ERR! find Python - Set the environment variable PYTHON gyp ERR! find Python - Set the npm configuration variable python: gyp ERR! find Python npm config set python "C:\Path\To\python.exe" gyp ERR! find Python For more information consult the documentation at: gyp ERR! find Python https://github.com/nodejs/node-gyp#installation gyp ERR! find Python ********************************************************** gyp ERR! find Python gyp ERR! configure error gyp ERR! stack Error: Could not find any Python installation to use gyp ERR! stack at PythonFinder.fail (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\find-python.js:303:47) gyp ERR! stack at PythonFinder.runChecks (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\find-python.js:132:21) gyp ERR! stack at PythonFinder. (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\find-python.js:221:16) gyp ERR! stack at PythonFinder.execFileCallback (C:\Users\[User]\Downloads\node-v10.12.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\find-python.js:267:16) gyp ERR! stack at exithandler (child_process.js:296:5) gyp ERR! stack at ChildProcess.errorhandler (child_process.js:308:5) gyp ERR! stack at ChildProcess.emit (events.js:182:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:238:12) gyp ERR! stack at onErrorNT (internal/child_process.js:407:16) gyp ERR! stack at process._tickCallback (internal/process/next_tick.js:63:19) gyp ERR! System Windows_NT 10.0.18363 gyp ERR! command "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node.exe" "C:\\Users\\[User]\\Downloads\\node-v10.12.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\[User]\atom\script\node_modules\minidump gyp ERR! node -v v10.12.0 gyp ERR! node-gyp -v v5.0.3 gyp ERR! not ok npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! minidump@0.9.0 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the minidump@0.9.0 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\[User]\AppData\Roaming\npm-cache\_logs\2020-08-22T16_51_59_269Z-debug.log at checkExecSyncError (child_process.js:611:11) at Object.execFileSync (child_process.js:629:13) at module.exports (C:\Users\[User]\atom\script\lib\install-script-dependencies.js:11:16) at Object. (C:\Users\[User]\atom\script\bootstrap:37:1) at Module._compile (internal/modules/cjs/loader.js:688:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10) at Module.load (internal/modules/cjs/loader.js:598:32) at tryModuleLoad (internal/modules/cjs/loader.js:537:12) at Function.Module._load (internal/modules/cjs/loader.js:529:3) at Function.Module.runMain (internal/modules/cjs/loader.js:741:12) ```
##### Python 2 available No problems. Works.
``` PS C:\Users\[User]\Downloads\atom> .\script\bootstrap Node: v10.12.0 Npm: v6.11.3 Python: v2.7.15 Installing script dependencies Installing apm ```
#### npm 6.12 ##### No Python 2, Python 3 is available No problems. Works.
``` PS C:\Users\[User]\atom> .\script\bootstrap Node: v10.12.0 Npm: v6.12.0 Python: v3.8.5 Installing script dependencies Installing apm ```
##### Python 2 available No probems. Works.
``` PS C:\Users\[User]\atom> .\script\bootstrap Node: v10.12.0 Npm: v6.12.0 Python: v2.7.18 Installing script dependencies (node:12496) ExperimentalWarning: The fs.promises API is experimental (node:9448) ExperimentalWarning: The fs.promises API is experimental Installing apm ```

Conclusion: Python 2 works everywhere. Python 3 requires npm 6.12 or newer.

DeeDeeG commented 4 years ago

Some notes about Python on Windows:

If users have used the windows-build-tools package, that will have installed Python 2.7 for them.

Python 3 from Python.org doesn't install to a nice predictable location by default, nor does it put itself on the PATH by default. You have to configure it to a specific install location OR put it on the PATH. That's why the Microsoft Store version of Python 3 is recommended; It always puts itself on the PATH.) (Not an issue for Python 2.7; the default install location is very predictable for Python 2.7).

In my opinion we should say Python 2.7 is preferred over Python 2.6. (2.6 is not supported, and neither is 2.7, but 2.7 has the more recent bugfixes. And 2.7 will be supported in newer node-gyp going forward, whereas Python 2.6 support will be dropped.)

DeeDeeG commented 4 years ago

If we required npm 6.10.1 or newer, all currently supported (by Microsoft) versions of Visual Studio would be usable with no extra configuration.

If we required npm 6.12 or newer, Python 3 would be usable always, with the caveat that it has to be installed the right way on Windows, or it won't be detected.

I'm a bit inclined to do that so that developers are using the newest tech, and so the instructions in the flight manual can be simpler.

We could update the hard requirements here:

https://github.com/atom/atom/blob/c087fcfb490df22c858e98ade218ffaad5a94e71/script/lib/verify-machine-requirements.js#L31-L47


On another note, we should update the required Node in script/lib/verify-machine-requirements.js to be at least Node 10.12, if not something newer:

https://github.com/atom/atom/blob/c087fcfb490df22c858e98ade218ffaad5a94e71/script/lib/verify-machine-requirements.js#L14-L29

We could maybe set the max Node version at 12.16.x as well, until this issue can be solved: https://github.com/atom/atom/issues/21091

DeeDeeG commented 4 years ago

Visual Studio 2019 does not fully work as mentioned in: atom-ide-community/atom#117

I suppose we can hold back on recommending Visual Studio 2019 for now.

More thoughts on Visual Studio 2019 (click to expand): I don't fully know whether atom-ide-community/atom#117 is a CI-only issue. I could try to get passing tests locally after building with VisualStudio Build Tools 2019, but it takes quite a long time to run all the tests, and there are timeouts and intermittent failures... I honestly find it hard to ever get a clean passing test run under any circumstances. So I may skip verifying that Visual Studio 2019 works 100% and just not advertise Visual Studio 2019 compatibility. Eventually we will need to cross that bridge, but Visual Studio 2015 is supported into the year 2025, Visual Studio 2017 is supported into the year 2027. https://docs.microsoft.com/en-us/visualstudio/releases/2019/servicing#support-for-older-versions-of-visual-studio

The Node version should be fixed to 12.4.0 to prevent the issues mentioned in atom-ide-community/atom#111

My research suggests pinning the system Node version is not relevant to the errors reported there. I have passing CI runs (100% tests passing) with system Node 10.12.0 and with 12.16.3.

There is no point in widening the Node version that is supported.

Neither is there any point in artifically limiting our documented supported versions, when they are known working and well-tested and confirmed to work.

Electron and Node version bumping should not be considered in this document.

Users will use what they have on their system. This document is to tell them what will work and what won't.

This is just a document about the "supported build configuration".

Indeed, Node 10 (10.12+) and Node 12.0.0 through 12.16.x are working. We should support all current LTS versions of Node, minus the ones where we know we are incompatible (meaning, we do not support Node <= 10.11, or Node >= 12.17).

https://nodejs.org/en/about/releases/

I am sorry you and Jeff are running into errors in whatever scenarios that cause them, but you have no "steps to reproduce" and I can't reproduce those build failures. Please either narrow down what causes the errors happen, or do clean installs every time (run script/clean before attempting to build Atom). I think if you do script/clean you will find locked down Node versions aren't needed. If that's not the case, then unfortunately more troubleshooting is needed for your specific systems. In general, and following the cleanest install approach possible, with default system configuration, the build "just works" on Node 10 (10.12+) and Node 12 (<= 12.16).

We don't know what exactly causes the erros for you and Jeff, but I believe they are exceptions to the usual, rather than representative of the norm.

More thoughts (click to expand is you want): We can try to pin versions at our fork, particularly in CI. But this document is about developers at their home/work computers. Pinning the system Node will not help them, and I have seen no compelling evidence to substantiate that it would help, and plenty of evidence to the contrary. (The `NODE_MODULE_VERSION` error you and Jeff are reporting would not be solved by using Node 12.4.0, by the way. Node 12 and Electron 6 have different ABI versions, so if you build for Node 12.4.0 and run on Electron 6, you would still see the `NODE_MODULE_VERSION` mismatch error.) Until we have worked out what specifically is causing build failures for you and Jeff, it's an anomaly that should not be generalized out to the full population of potential Atom developers. As a practical matter: I have been using Node 10.22.0 for the past month or two or so, and it has been working fine. We can pursue whatever we want at our fork, but the documentation for the official project must be based on a higher standard of evidence and quality of research. I have been the only one doing publicly posted research into this, so until you and Jeff can explain what is going on, ruling out various possibilities and narrowing it down to a clean explanation, I have to treat it as just some unknown problem. Please participate in the troubleshooting. We need to provide specific, sound explanations (supported by some sort of empirical evidence) for the errors you and Jeff are seeing, or it will continue to distract from the project. Until then I will not support advising all developers to use a locked down version, when documentation and experimentation both show it is not needed, in general. Whatever problems you and Jeff are seeing in specific need to be explained first before we can try to address them. Arbitrary workarounds that seem relevant aren't actually useful if there's no solid logical reason why they should work. That should be reserved for if we were desperately in need of a workaround, but I do clean installs and I have had no need for this workaround at any point in time. I suggest you and Jeff track down the exact problem or get in the habit of doing clean bootstraps and clean installs (run `script/clean` first).
sadick254 commented 4 years ago

@DeeDeeG I see a lot has been done since I last visited this issue. I will go through the research you have done and read through everything. Thank you so much for all the hard work you have done so far. We really appreciate.

DeeDeeG commented 4 years ago

I'm pretty happy with the edits I've proposed to the documentation.

The main things I am considering changing are: