Can't install language package on windows


#1

I have ventured into the land of tree-sitter grammar building and Atom syntax highlighting. I am developing on Windows 10, and managed to create the grammar fine. It involved npm install --production --global windows-build-tools but besides having to figure that out, node-gyp has been behaving great. However, I am running into issues trying to install the language package that uses my grammar. It works fine on linux/Mac, but totally bombs out on Windows.

Here’s the npm error log that is spit out from the package installation error message:

0 info it worked if it ends with ok
1 verbose cli [ ‘C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\bin\node.exe’,
1 verbose cli ‘C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\node_modules\npm\bin\npm-cli.js’,
1 verbose cli ‘–globalconfig’,
1 verbose cli ‘C:\Users\jacob\.atom\.apm\.apmrc’,
1 verbose cli ‘–userconfig’,
1 verbose cli ‘C:\Users\jacob\.atom\.apmrc’,
1 verbose cli ‘install’,
1 verbose cli ‘https://www.atom.io/api/packages/language-tablatal/versions/1.0.2/tarball’,
1 verbose cli ‘–runtime=electron’,
1 verbose cli ‘–target=2.0.16’,
1 verbose cli ‘–dist-url=https://atom.io/download/electron’,
1 verbose cli ‘–arch=x64’,
1 verbose cli ‘–global-style’,
1 verbose cli ‘–msvs_version=2015’ ]
2 info using npm@6.2.0
3 info using node@v8.9.3
4 verbose npm-session 0150448f0e377939
5 silly install loadCurrentTree
6 silly install readLocalPackageData
7 http fetch GET 200 https://www.atom.io/api/packages/language-tablatal/versions/1.0.2/tarball 726ms
8 silly pacote remote manifest for undefined@https://www.atom.io/api/packages/language-tablatal/versions/1.0.2/tarball fetched in 752ms
9 timing stage:loadCurrentTree Completed in 898ms
10 silly install loadIdealTree
11 silly install cloneCurrentTreeToIdealTree
12 timing stage:loadIdealTree:cloneCurrentTree Completed in 0ms
13 silly install loadShrinkwrap
14 timing stage:loadIdealTree:loadShrinkwrap Completed in 1ms
15 silly install loadAllDepsIntoIdealTree
16 silly resolveWithNewModule language-tablatal@1.0.2 checking installable status
17 http fetch GET 200 https://registry.npmjs.org/tree-sitter-tablatal 6ms (from cache)
18 silly pacote range manifest for tree-sitter-tablatal@^1.2.0 fetched in 9ms
19 silly resolveWithNewModule tree-sitter-tablatal@1.2.0 checking installable status
20 http fetch GET 200 https://registry.npmjs.org/nan 2ms (from cache)
21 silly pacote range manifest for nan@^2.12.1 fetched in 3ms
22 silly resolveWithNewModule nan@2.12.1 checking installable status
23 timing stage:loadIdealTree:loadAllDepsIntoIdealTree Completed in 26ms
24 timing stage:loadIdealTree Completed in 29ms
25 silly currentTree apm-install-dir-11917-15780-1d2kgv7.0px5
26 silly idealTree apm-install-dir-11917-15780-1d2kgv7.0px5
26 silly idealTree -- language-tablatal@1.0.2 26 silly idealTree +-- nan@2.12.1 26 silly idealTree– tree-sitter-tablatal@1.2.0
27 silly install generateActionsToTake
28 silly diff-trees filtering actions: includeDev false includeProd true includeOpt true
29 timing stage:generateActionsToTake Completed in 3ms
30 silly diffTrees action count 3
31 silly diffTrees add nan@2.12.1
32 silly diffTrees add tree-sitter-tablatal@1.2.0
33 silly diffTrees add language-tablatal@1.0.2
34 silly decomposeActions action count 24
35 silly decomposeActions fetch nan@2.12.1
36 silly decomposeActions extract nan@2.12.1
37 silly decomposeActions preinstall nan@2.12.1
38 silly decomposeActions build nan@2.12.1
39 silly decomposeActions install nan@2.12.1
40 silly decomposeActions postinstall nan@2.12.1
41 silly decomposeActions finalize nan@2.12.1
42 silly decomposeActions refresh-package-json nan@2.12.1
43 silly decomposeActions fetch tree-sitter-tablatal@1.2.0
44 silly decomposeActions extract tree-sitter-tablatal@1.2.0
45 silly decomposeActions preinstall tree-sitter-tablatal@1.2.0
46 silly decomposeActions build tree-sitter-tablatal@1.2.0
47 silly decomposeActions install tree-sitter-tablatal@1.2.0
48 silly decomposeActions postinstall tree-sitter-tablatal@1.2.0
49 silly decomposeActions finalize tree-sitter-tablatal@1.2.0
50 silly decomposeActions refresh-package-json tree-sitter-tablatal@1.2.0
51 silly decomposeActions fetch language-tablatal@1.0.2
52 silly decomposeActions extract language-tablatal@1.0.2
53 silly decomposeActions preinstall language-tablatal@1.0.2
54 silly decomposeActions build language-tablatal@1.0.2
55 silly decomposeActions install language-tablatal@1.0.2
56 silly decomposeActions postinstall language-tablatal@1.0.2
57 silly decomposeActions finalize language-tablatal@1.0.2
58 silly decomposeActions refresh-package-json language-tablatal@1.0.2
59 silly install executeActions
60 silly doSerial global-install 24
61 verbose correctMkdir C:\Users\jacob.atom.apm_locks correctMkdir not in flight; initializing
62 timing audit compress Completed in 13ms
63 info audit Submitting payload of 563bytes
64 verbose lock using C:\Users\jacob.atom.apm_locks\staging-4ef983f9c1034674.lock for C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules.staging
65 silly doParallel extract 3
66 silly extract nan@2.12.1
67 silly extract tree-sitter-tablatal@1.2.0
68 silly extract language-tablatal@1.0.2
69 silly tarball trying nan@^2.12.1 by hash: sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==
70 silly tarball trying tree-sitter-tablatal@^1.2.0 by hash: sha512-xdIHJ3ZVYqSFDftB24mG0aaYTkJ4R9v/O8YD1Luou8bSVtMvmQ4he9Uy0lrE+3MTViOGprq+H5pyPB0BqoH82w==
71 silly tarball trying https://www.atom.io/api/packages/language-tablatal/versions/1.0.2/tarball by hash: sha512-ki03dByK45P7RPhDphyEaoZNort8u1XCmCiqi8ElvaR3I1gzzUATklBsYgNHY/7ns/eEzDmX1tCJxM4eNlbfAA==
72 silly extract https://www.atom.io/api/packages/language-tablatal/versions/1.0.2/tarball extracted to C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules.staging\language-tablatal-f580d202 (27ms)
73 silly extract tree-sitter-tablatal@^1.2.0 extracted to C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules.staging\tree-sitter-tablatal-5c225f2a (35ms)
74 silly extract nan@^2.12.1 extracted to C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules.staging\nan-c0c1728f (68ms)
75 timing action:extract Completed in 69ms
76 silly doReverseSerial unbuild 24
77 silly doSerial remove 24
78 silly doSerial move 24
79 silly doSerial finalize 24
80 silly finalize C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules\language-tablatal\node_modules\nan
81 silly finalize C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules\language-tablatal\node_modules\tree-sitter-tablatal
82 silly finalize C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules\language-tablatal
83 timing action:finalize Completed in 7ms
84 silly doParallel refresh-package-json 3
85 silly refresh-package-json C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules\language-tablatal\node_modules\nan
86 silly refresh-package-json C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules\language-tablatal\node_modules\tree-sitter-tablatal
87 silly refresh-package-json C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules\language-tablatal
88 timing action:refresh-package-json Completed in 19ms
89 silly doParallel preinstall 3
90 silly preinstall nan@2.12.1
91 info lifecycle nan@2.12.1~preinstall: nan@2.12.1
92 silly preinstall tree-sitter-tablatal@1.2.0
93 info lifecycle tree-sitter-tablatal@1.2.0~preinstall: tree-sitter-tablatal@1.2.0
94 silly preinstall language-tablatal@1.0.2
95 info lifecycle language-tablatal@1.0.2~preinstall: language-tablatal@1.0.2
96 timing action:preinstall Completed in 1ms
97 silly doSerial build 24
98 silly build nan@2.12.1
99 info linkStuff nan@2.12.1
100 silly linkStuff nan@2.12.1 has C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules\language-tablatal\node_modules as its parent node_modules
101 silly build tree-sitter-tablatal@1.2.0
102 info linkStuff tree-sitter-tablatal@1.2.0
103 silly linkStuff tree-sitter-tablatal@1.2.0 has C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules\language-tablatal\node_modules as its parent node_modules
104 silly build language-tablatal@1.0.2
105 info linkStuff language-tablatal@1.0.2
106 silly linkStuff language-tablatal@1.0.2 has C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules as its parent node_modules
107 timing action:build Completed in 1ms
108 silly doSerial global-link 24
109 silly doParallel update-linked 0
110 silly doSerial install 24
111 silly install nan@2.12.1
112 info lifecycle nan@2.12.1~install: nan@2.12.1
113 silly install tree-sitter-tablatal@1.2.0
114 info lifecycle tree-sitter-tablatal@1.2.0~install: tree-sitter-tablatal@1.2.0
115 verbose lifecycle tree-sitter-tablatal@1.2.0~install: unsafe-perm in lifecycle true
116 verbose lifecycle tree-sitter-tablatal@1.2.0~install: PATH: C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules\language-tablatal\node_modules\tree-sitter-tablatal\node_modules.bin;C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules\language-tablatal\node_modules.bin;C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules.bin;C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\bin;C:\Program Files (x86)\Intel\iCLS Client;C:\Program Files\Intel\iCLS Client;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\Intel® Management Engine Components\DAL;C:\Program Files\Intel\Intel® Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel® Management Engine Components\IPT;C:\Program Files\Intel\Intel® Management Engine Components\IPT;C:\Program Files (x86)\Yarn\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\nodejs;C:\Program Files\Git\cmd;C:\Program Files (x86)\IncrediBuild;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Users\jacob.windows-build-tools\python27;C:\Users\jacob\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;C:\Users\jacob\AppData\Roaming\npm\node_modules\windows-build-tools\node_modules.bin;C:\Users\jacob\AppData\Roaming\npm\node_modules.bin;C:\Users\jacob\AppData\Local\Programs\Python\Python37-32\Scripts;C:\Users\jacob\AppData\Local\Programs\Python\Python37-32;C:\Ruby24-x64\bin;C:\Users\jacob\AppData\Local\Microsoft\WindowsApps;C:\Users\jacob\AppData\Local\GitHubDesktop\bin;C:\Users\jacob\AppData\Local\atom\bin;C:\Users\jacob\AppData\Local\Yarn\bin;C:\Users\jacob\AppData\Local\Microsoft\WindowsApps;C:\Users\jacob\AppData\Roaming\npm;C:\Users\jacob\AppData\Local\hyper\app-2.1.2\resources\bin;C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\node_modules.bin;C:\Program Files\Git\cmd;C:\Program Files\Git\bin
117 verbose lifecycle tree-sitter-tablatal@1.2.0~install: CWD: C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules\language-tablatal\node_modules\tree-sitter-tablatal
118 silly lifecycle tree-sitter-tablatal@1.2.0~install: Args: [ ‘/d /s /c’, ‘node-gyp rebuild’ ]
119 timing audit submit Completed in 217ms
120 http fetch POST 200 https://registry.npmjs.org/-/npm/v1/security/audits/quick 217ms
121 timing audit body Completed in 0ms
122 silly lifecycle tree-sitter-tablatal@1.2.0~install: Returned: code: 1 signal: null
123 info lifecycle tree-sitter-tablatal@1.2.0~install: Failed to exec install script
124 timing action:install Completed in 1008ms
125 verbose unlock done using C:\Users\jacob.atom.apm_locks\staging-4ef983f9c1034674.lock for C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\node_modules.staging
126 timing stage:rollbackFailedOptional Completed in 13ms
127 timing stage:runTopLevelLifecycles Completed in 2096ms
128 silly saveTree apm-install-dir-11917-15780-1d2kgv7.0px5
128 silly saveTree -- language-tablatal@1.0.2 128 silly saveTree– tree-sitter-tablatal@1.2.0
128 silly saveTree -- nan@2.12.1 129 warn enoent ENOENT: no such file or directory, open 'C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5\package.json' 130 verbose enoent This is related to npm not being able to find a file. 131 warn apm-install-dir-11917-15780-1d2kgv7.0px5 No description 132 warn apm-install-dir-11917-15780-1d2kgv7.0px5 No repository field. 133 warn apm-install-dir-11917-15780-1d2kgv7.0px5 No README data 134 warn apm-install-dir-11917-15780-1d2kgv7.0px5 No license field. 135 verbose stack Error: tree-sitter-tablatal@1.2.0 install:node-gyp rebuild135 verbose stack Exit status 1 135 verbose stack at EventEmitter.<anonymous> (C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\node_modules\npm\node_modules\npm-lifecycle\index.js:304:16) 135 verbose stack at emitTwo (events.js:126:13) 135 verbose stack at EventEmitter.emit (events.js:214:7) 135 verbose stack at ChildProcess.<anonymous> (C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14) 135 verbose stack at emitTwo (events.js:126:13) 135 verbose stack at ChildProcess.emit (events.js:214:7) 135 verbose stack at maybeClose (internal/child_process.js:925:16) 135 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5) 136 verbose pkgid tree-sitter-tablatal@1.2.0 137 verbose cwd C:\Users\jacob\AppData\Local\Temp\apm-install-dir-11917-15780-1d2kgv7.0px5 138 verbose Windows_NT 10.0.17134 139 verbose argv "C:\\Users\\jacob\\AppData\\Local\\atom\\app-1.34.0\\resources\\app\\apm\\bin\\node.exe" "C:\\Users\\jacob\\AppData\\Local\\atom\\app-1.34.0\\resources\\app\\apm\\node_modules\\npm\\bin\\npm-cli.js" "--globalconfig" "C:\\Users\\jacob\\.atom\\.apm\\.apmrc" "--userconfig" "C:\\Users\\jacob\\.atom\\.apmrc" "install" "https://www.atom.io/api/packages/language-tablatal/versions/1.0.2/tarball" "--runtime=electron" "--target=2.0.16" "--dist-url=https://atom.io/download/electron" "--arch=x64" "--global-style" "--msvs_version=2015" 140 verbose node v8.9.3 141 verbose npm v6.2.0 142 error code ELIFECYCLE 143 error errno 1 144 error tree-sitter-tablatal@1.2.0 install:node-gyp rebuild`
144 error Exit status 1
145 error Failed at the tree-sitter-tablatal@1.2.0 install script.
145 error This is probably not a problem with npm. There is likely additional logging output above.
146 verbose exit [ 1, true ]

…halp. Any ideas? There seems to be a discrepancy between how the bundled version of npm/node-gyp is handling installing my grammar and how the actual version of node I’m using is doing it.

Here’s my grammar: https://github.com/jakofranko/tree-sitter-tablatal
And the name of my Atom package is “language-tablatal”, you can download it directly from Atom.

apm -v:
apm 2.1.3
npm 6.2.0
node 8.9.3 x64
atom 1.34.0
python 2.7.15
git 2.20.1.windows.1
visual studio 2015

node -v: v10.15.1
npm -v: 6.4.1


#2

FYI it installed without errors on my Ubuntu Atom. But I also have all the build tools needed to compile these grammars, so I’m not a typical end user.

What I suggest is removing whatever language-tablatal is in .atom/packages and doing it manually with git clone ... and then apm install in the root. Having mismatched Node versions may also be a problem, so if that doesn’t work I’d recommend downgrading the system Node to 8.9.3 (easy to do with nvm).

Please let me know whatever works, I want to make integrating these grammars as painless as possible for the end user. Another thing you can do is set up prebuild, which can use CI to upload binaries for a wide range of Node versions on common OS’, so the end user does not require build tools at all.


#3

Thanks so much for the quick reply @Aerijo ! I’ll try that as soon as I get back to my machine and put the results here, but I was seeing the same kind of thing when running apm install manually.

I’m intrigued by the prebuild route, since that seems potentially best for supporting my language package for the most people. Do you have any links to the examples of what you’re talking about?

Thanks again!!


#4

So I tried this, and I’m getting a similar error. This is what I get from apm install after manually cloning the git repo into .atom\packages:

apm install
Installing modules failed

tree-sitter-tablatal@1.2.0 install C:\Users\jacob.atom\packages\language-tablatal\node_modules\tree-sitter-tablatal
node-gyp rebuild

C:\Users\jacob.atom\packages\language-tablatal\node_modules\tree-sitter-tablatal>if not defined npm_config_node_gyp (node “C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\…\node_modules\node-gyp\bin\node-gyp.js” rebuild ) else (node “C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\bin\…\node_modules\node-gyp\bin\node-gyp.js” rebuild )
Building the projects in this solution one at a time. To enable parallel build, please add the “/m” switch.
C:\Users\jacob.atom\packages\language-tablatal\node_modules\tree-sitter-tablatal\build\tree_sitter_Tablatal_binding.vcxproj(20,3): error MSB4019: The imported project “C:\Microsoft.Cpp.Default.props” was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.

gyp info it worked if it ends with ok
gyp verb cli [ ‘C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\bin\node.exe’,
gyp verb cli ‘C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\node_modules\node-gyp\bin\node-gyp.js’,
gyp verb cli ‘rebuild’ ]
gyp info using node-gyp@3.4.0
gyp info using node@8.9.3 | win32 | x64
gyp verb command rebuild
gyp verb command clean
gyp verb clean removing “build” directory
gyp verb command configure
gyp verb check python checking for Python executable “C:\Users\jacob.windows-build-tools\python27\python” in the PATH
gyp verb which succeeded C:\Users\jacob.windows-build-tools\python27\python C:\Users\jacob.windows-build-tools\python27\python.EXE
gyp verb check python version C:\Users\jacob\.windows-build-tools\python27\python.EXE -c "import platform; print(platform.python_version());" returned: “2.7.15\r\n”
gyp verb get node dir compiling against --target node version: 2.0.16
gyp verb command install [ ‘2.0.16’ ]
gyp verb install input version string “2.0.16”
gyp verb install installing version: iojs-2.0.16
gyp verb install --ensure was passed, so won’t reinstall if already installed
gyp verb install version is already installed, need to check “installVersion”
gyp verb got “installVersion” 9
gyp verb needs “installVersion” 9
gyp verb install version is good
gyp verb get node dir target node version installed: iojs-2.0.16
gyp verb build dir attempting to create “build” dir: C:\Users\jacob.atom\packages\language-tablatal\node_modules\tree-sitter-tablatal\build
gyp verb build dir “build” dir needed to be created? C:\Users\jacob.atom\packages\language-tablatal\node_modules\tree-sitter-tablatal\build
gyp verb build/config.gypi creating config file
gyp sill build/config.gypi { target_defaults:
gyp sill build/config.gypi { cflags: ,
gyp sill build/config.gypi default_configuration: ‘Release’,
gyp sill build/config.gypi defines: ,
gyp sill build/config.gypi include_dirs: ,
gyp sill build/config.gypi libraries: },
gyp sill build/config.gypi variables:
gyp sill build/config.gypi { asan: 0,
gyp sill build/config.gypi coverage: false,
gyp sill build/config.gypi debug_devtools: ‘node’,
gyp sill build/config.gypi debug_http2: false,
gyp sill build/config.gypi debug_nghttp2: false,
gyp sill build/config.gypi force_dynamic_crt: 0,
gyp sill build/config.gypi host_arch: ‘x64’,
gyp sill build/config.gypi icu_data_file: ‘icudt59l.dat’,
gyp sill build/config.gypi icu_data_in: ‘…\…\deps/icu-small\source/data/in\icudt59l.dat’,
gyp sill build/config.gypi icu_endianness: ‘l’,
gyp sill build/config.gypi icu_gyp_path: ‘tools/icu/icu-generic.gyp’,
gyp sill build/config.gypi icu_locales: ‘en,root’,
gyp sill build/config.gypi icu_path: ‘deps/icu-small’,
gyp sill build/config.gypi icu_small: true,
gyp sill build/config.gypi icu_ver_major: ‘59’,
gyp sill build/config.gypi node_byteorder: ‘little’,
gyp sill build/config.gypi node_enable_d8: false,
gyp sill build/config.gypi node_enable_v8_vtunejit: false,
gyp sill build/config.gypi node_install_npm: true,
gyp sill build/config.gypi node_module_version: 57,
gyp sill build/config.gypi node_no_browser_globals: false,
gyp sill build/config.gypi node_prefix: ‘/usr/local’,
gyp sill build/config.gypi node_release_urlbase: ‘https://nodejs.org/download/release/’,
gyp sill build/config.gypi node_shared: false,
gyp sill build/config.gypi node_shared_cares: false,
gyp sill build/config.gypi node_shared_http_parser: false,
gyp sill build/config.gypi node_shared_libuv: false,
gyp sill build/config.gypi node_shared_openssl: false,
gyp sill build/config.gypi node_shared_zlib: false,
gyp sill build/config.gypi node_tag: ‘’,
gyp sill build/config.gypi node_use_bundled_v8: true,
gyp sill build/config.gypi node_use_dtrace: false,
gyp sill build/config.gypi node_use_etw: true,
gyp sill build/config.gypi node_use_lttng: false,
gyp sill build/config.gypi node_use_openssl: true,
gyp sill build/config.gypi node_use_perfctr: true,
gyp sill build/config.gypi node_use_v8_platform: true,
gyp sill build/config.gypi node_without_node_options: false,
gyp sill build/config.gypi openssl_fips: ‘’,
gyp sill build/config.gypi openssl_no_asm: 0,
gyp sill build/config.gypi shlib_suffix: ‘so.57’,
gyp sill build/config.gypi target_arch: ‘x64’,
gyp sill build/config.gypi v8_enable_gdbjit: 0,
gyp sill build/config.gypi v8_enable_i18n_support: 1,
gyp sill build/config.gypi v8_enable_inspector: 1,
gyp sill build/config.gypi v8_no_strict_aliasing: 1,
gyp sill build/config.gypi v8_optimized_debug: 0,
gyp sill build/config.gypi v8_promise_internal_field_count: 1,
gyp sill build/config.gypi v8_random_seed: 0,
gyp sill build/config.gypi v8_trace_maps: 0,
gyp sill build/config.gypi v8_use_snapshot: true,
gyp sill build/config.gypi want_separate_host_toolset: 0,
gyp sill build/config.gypi nodedir: ‘C:\Users\jacob\.atom\.node-gyp\.node-gyp\iojs-2.0.16’,
gyp sill build/config.gypi copy_dev_lib: true,
gyp sill build/config.gypi standalone_static_library: 1,
gyp sill build/config.gypi access: ‘’,
gyp sill build/config.gypi allow_same_version: ‘’,
gyp sill build/config.gypi also: ‘’,
gyp sill build/config.gypi always_auth: ‘’,
gyp sill build/config.gypi audit: ‘true’,
gyp sill build/config.gypi auth_type: ‘legacy’,
gyp sill build/config.gypi bin_links: ‘true’,
gyp sill build/config.gypi browser: ‘’,
gyp sill build/config.gypi ca: ‘’,
gyp sill build/config.gypi cache: ‘C:\Users\jacob\.atom\.apm’,
gyp sill build/config.gypi cache_lock_retries: ‘10’,
gyp sill build/config.gypi cache_lock_stale: ‘60000’,
gyp sill build/config.gypi cache_lock_wait: ‘10000’,
gyp sill build/config.gypi cache_max: ‘Infinity’,
gyp sill build/config.gypi cache_min: ‘10’,
gyp sill build/config.gypi cert: ‘’,
gyp sill build/config.gypi cidr: ‘’,
gyp sill build/config.gypi color: ‘true’,
gyp sill build/config.gypi commit_hooks: ‘true’,
gyp sill build/config.gypi depth: ‘Infinity’,
gyp sill build/config.gypi description: ‘true’,
gyp sill build/config.gypi dev: ‘’,
gyp sill build/config.gypi dist_url: ‘https://atom.io/download/electron’,
gyp sill build/config.gypi dry_run: ‘’,
gyp sill build/config.gypi editor: ‘notepad.exe’,
gyp sill build/config.gypi engine_strict: ‘’,
gyp sill build/config.gypi fetch_retries: ‘2’,
gyp sill build/config.gypi fetch_retry_factor: ‘10’,
gyp sill build/config.gypi fetch_retry_maxtimeout: ‘60000’,
gyp sill build/config.gypi fetch_retry_mintimeout: ‘10000’,
gyp sill build/config.gypi force: ‘’,
gyp sill build/config.gypi git: ‘git’,
gyp sill build/config.gypi git_tag_version: ‘true’,
gyp sill build/config.gypi global: ‘’,
gyp sill build/config.gypi globalconfig: ‘C:\Users\jacob\.atom\.apm\.apmrc’,
gyp sill build/config.gypi globalignorefile: ‘C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\bin\etc\npmignore’,
gyp sill build/config.gypi global_style: ‘’,
gyp sill build/config.gypi group: ‘’,
gyp sill build/config.gypi ham_it_up: ‘’,
gyp sill build/config.gypi heading: ‘npm’,
gyp sill build/config.gypi https_proxy: ‘’,
gyp sill build/config.gypi if_present: ‘’,
gyp sill build/config.gypi ignore_prepublish: ‘’,
gyp sill build/config.gypi ignore_scripts: ‘’,
gyp sill build/config.gypi init_author_email: ‘’,
gyp sill build/config.gypi init_author_name: ‘’,
gyp sill build/config.gypi init_author_url: ‘’,
gyp sill build/config.gypi init_license: ‘ISC’,
gyp sill build/config.gypi init_module: ‘C:\Users\jacob\.atom\.node-gyp\.npm-init.js’,
gyp sill build/config.gypi init_version: ‘1.0.0’,
gyp sill build/config.gypi json: ‘’,
gyp sill build/config.gypi key: ‘’,
gyp sill build/config.gypi legacy_bundling: ‘’,
gyp sill build/config.gypi link: ‘’,
gyp sill build/config.gypi local_address: ‘’,
gyp sill build/config.gypi logs_max: ‘10’,
gyp sill build/config.gypi long: ‘’,
gyp sill build/config.gypi maxsockets: ‘50’,
gyp sill build/config.gypi message: ‘%s’,
gyp sill build/config.gypi metrics_registry: ‘https://registry.npmjs.org/’,
gyp sill build/config.gypi node_gyp: ‘C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\bin\\…\node_modules\node-gyp\bin\node-gyp.js’,
gyp sill build/config.gypi node_options: ‘’,
gyp sill build/config.gypi node_version: ‘8.9.3’,
gyp sill build/config.gypi no_proxy: ‘’,
gyp sill build/config.gypi offline: ‘’,
gyp sill build/config.gypi onload_script: ‘’,
gyp sill build/config.gypi only: ‘’,
gyp sill build/config.gypi optional: ‘true’,
gyp sill build/config.gypi otp: ‘’,
gyp sill build/config.gypi package_lock: ‘true’,
gyp sill build/config.gypi package_lock_only: ‘’,
gyp sill build/config.gypi parseable: ‘’,
gyp sill build/config.gypi prefer_offline: ‘’,
gyp sill build/config.gypi prefer_online: ‘’,
gyp sill build/config.gypi prefix: ‘C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\bin’,
gyp sill build/config.gypi production: ‘’,
gyp sill build/config.gypi progress: ‘’,
gyp sill build/config.gypi read_only: ‘’,
gyp sill build/config.gypi rebuild_bundle: ‘true’,
gyp sill build/config.gypi registry: ‘https://registry.npmjs.org/’,
gyp sill build/config.gypi rollback: ‘true’,
gyp sill build/config.gypi runtime: ‘electron’,
gyp sill build/config.gypi save: ‘true’,
gyp sill build/config.gypi save_bundle: ‘’,
gyp sill build/config.gypi save_dev: ‘’,
gyp sill build/config.gypi save_exact: ‘’,
gyp sill build/config.gypi save_optional: ‘’,
gyp sill build/config.gypi save_prefix: ‘^’,
gyp sill build/config.gypi save_prod: ‘’,
gyp sill build/config.gypi scope: ‘’,
gyp sill build/config.gypi scripts_prepend_node_path: ‘warn-only’,
gyp sill build/config.gypi script_shell: ‘’,
gyp sill build/config.gypi searchexclude: ‘’,
gyp sill build/config.gypi searchlimit: ‘20’,
gyp sill build/config.gypi searchopts: ‘’,
gyp sill build/config.gypi searchstaleness: ‘900’,
gyp sill build/config.gypi send_metrics: ‘’,
gyp sill build/config.gypi shell: ‘C:\WINDOWS\system32\cmd.exe’,
gyp sill build/config.gypi shrinkwrap: ‘true’,
gyp sill build/config.gypi sign_git_commit: ‘’,
gyp sill build/config.gypi sign_git_tag: ‘’,
gyp sill build/config.gypi sso_poll_frequency: ‘500’,
gyp sill build/config.gypi sso_type: ‘oauth’,
gyp sill build/config.gypi strict_ssl: ‘true’,
gyp sill build/config.gypi tag: ‘latest’,
gyp sill build/config.gypi tag_version_prefix: ‘v’,
gyp sill build/config.gypi target: ‘2.0.16’,
gyp sill build/config.gypi timing: ‘’,
gyp sill build/config.gypi tmp: ‘C:\Users\jacob\AppData\Local\Temp’,
gyp sill build/config.gypi umask: ‘0000’,
gyp sill build/config.gypi unicode: ‘’,
gyp sill build/config.gypi unsafe_perm: ‘true’,
gyp sill build/config.gypi update_notifier: ‘true’,
gyp sill build/config.gypi usage: ‘’,
gyp sill build/config.gypi user: ‘’,
gyp sill build/config.gypi userconfig: ‘C:\Users\jacob\.atom\.apmrc’,
gyp sill build/config.gypi user_agent: ‘npm/6.2.0 node/v8.9.3 win32 x64’,
gyp sill build/config.gypi version: ‘’,
gyp sill build/config.gypi versions: ‘’,
gyp sill build/config.gypi viewer: ‘browser’ } }
gyp verb build/config.gypi writing out config file: C:\Users\jacob.atom\packages\language-tablatal\node_modules\tree-sitter-tablatal\build\config.gypi
gyp verb config.gypi checking for gypi file: C:\Users\jacob.atom\packages\language-tablatal\node_modules\tree-sitter-tablatal\config.gypi
gyp verb common.gypi checking for gypi file: C:\Users\jacob.atom\packages\language-tablatal\node_modules\tree-sitter-tablatal\common.gypi
gyp verb gyp gyp format was not specified; forcing “msvs”
gyp info spawn C:\Users\jacob.windows-build-tools\python27\python.EXE
gyp info spawn args [ ‘C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\node_modules\node-gyp\gyp\gyp_main.py’,
gyp info spawn args ‘binding.gyp’,
gyp info spawn args ‘-f’,
gyp info spawn args ‘msvs’,
gyp info spawn args ‘-G’,
gyp info spawn args ‘msvs_version=2015’,
gyp info spawn args ‘-I’,
gyp info spawn args ‘C:\Users\jacob\.atom\packages\language-tablatal\node_modules\tree-sitter-tablatal\build\config.gypi’,
gyp info spawn args ‘-I’,
gyp info spawn args ‘C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\node_modules\node-gyp\addon.gypi’,
gyp info spawn args ‘-I’,
gyp info spawn args ‘C:\Users\jacob\.atom\.node-gyp\.node-gyp\iojs-2.0.16\common.gypi’,
gyp info spawn args ‘-Dlibrary=shared_library’,
gyp info spawn args ‘-Dvisibility=default’,
gyp info spawn args ‘-Dnode_root_dir=C:\Users\jacob\.atom\.node-gyp\.node-gyp\iojs-2.0.16’,
gyp info spawn args ‘-Dnode_gyp_dir=C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\node_modules\node-gyp’,
gyp info spawn args ‘-Dnode_lib_file=iojs.lib’,
gyp info spawn args ‘-Dmodule_root_dir=C:\Users\jacob\.atom\packages\language-tablatal\node_modules\tree-sitter-tablatal’,
gyp info spawn args ‘–depth=.’,
gyp info spawn args ‘–no-parallel’,
gyp info spawn args ‘–generator-output’,
gyp info spawn args ‘C:\Users\jacob\.atom\packages\language-tablatal\node_modules\tree-sitter-tablatal\build’,
gyp info spawn args ‘-Goutput_dir=.’ ]
gyp verb command build
gyp verb build type Release
gyp verb architecture x64
gyp verb node dev dir C:\Users\jacob.atom.node-gyp.node-gyp\iojs-2.0.16
gyp verb found first Solution file build/binding.sln
gyp verb could not find “msbuild.exe” in PATH - finding location in registry
gyp verb “Release” dir needed to be created? null
gyp verb copying “iojs.lib” for x64 C:\Users\jacob.atom.node-gyp.node-gyp\iojs-2.0.16\Release\iojs.lib
gyp info spawn C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe
gyp info spawn args [ ‘build/binding.sln’,
gyp info spawn args ‘/clp:Verbosity=minimal’,
gyp info spawn args ‘/nologo’,
gyp info spawn args ‘/p:Configuration=Release;Platform=x64’ ]
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\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\node_modules\node-gyp\lib\build.js:276:23)
gyp ERR! stack at emitTwo (events.js:126:13)
gyp ERR! stack at ChildProcess.emit (events.js:214:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
gyp ERR! System Windows_NT 10.0.17134
gyp ERR! command “C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\bin\node.exe” “C:\Users\jacob\AppData\Local\atom\app-1.34.0\resources\app\apm\node_modules\node-gyp\bin\node-gyp.js” “rebuild”
gyp ERR! cwd C:\Users\jacob.atom\packages\language-tablatal\node_modules\tree-sitter-tablatal
gyp ERR! node -v v8.9.3
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! tree-sitter-tablatal@1.2.0 install: node-gyp rebuild
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the tree-sitter-tablatal@1.2.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\jacob.atom.apm_logs\2019-02-10T04_31_40_537Z-debug.log

Any ideas? Again, I don’t have these problems with the tree sitter grammar itself, so it seems to be some discrepancy between the bundled node-gyp with Atom…