Skip to content

Header extraction is unreliable and results in truncated files #3165

Open
@tmm1

Description

@tmm1

I frequently see corrupted node/electron headers. Sounds similar to #1054, but I'm using npm. And I see this on an isolate github actions runner, so it doesn't seem like a concurrency issue either?

npm error gyp info using [email protected]
npm error gyp info using [email protected] | linux | x64
npm error gyp info find Python using Python version 3.12.3 found at "/usr/bin/python3"
npm error gyp http GET https://electronjs.org/headers/v34.5.1/node-v34.5.1-headers.tar.gz
npm error gyp http 200 https://electronjs.org/headers/v34.5.1/node-v34.5.1-headers.tar.gz
npm error gyp http GET https://electronjs.org/headers/v34.5.1/SHASUMS256.txt
npm error gyp http 200 https://electronjs.org/headers/v34.5.1/SHASUMS256.txt
...
npm error   File "/home/runner/.cache/node-gyp/34.5.1/include/node/common.gypi", line 177
npm error     'msvs_settings': {
npm error                      ^
npm error SyntaxError: '{' was never closed

more examples:

npm error /home/runner/.cache/node-gyp/34.3.4/include/node/v8-object.h:5: error: unterminated #ifndef
npm error     5 | #ifndef INCLUDE_V8_OBJECT_H_
npm error gyp: /Users/ec2-user/Library/Caches/node-gyp/20.18.2/common.gypi not found while reading includes of binding.gyp while trying to load binding.gyp
npm error gyp: /home/AzDevOps/.cache/node-gyp/30.5.1/common.gypi not found while reading includes of binding.gyp while trying to load binding.gyp

We see this on both linux and macos, but interestingly never on windows. Perhaps due to this?

node-gyp/lib/install.js

Lines 203 to 206 in 7d883b5

// on Windows there can be file errors from tar if parallel installs
// are happening (not uncommon with multiple native modules) so
// extract the tarball to a temp directory first and then copy over
const tarExtractDir = win ? await fs.mkdtemp(path.join(os.tmpdir(), 'node-gyp-tmp-')) : devDir

I would propose making the separate directory download step the default on all platforms.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions