nodejs / nodejs/node-gyp

The installed files are not consistent

Open
#3,069 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
10.7k
Forks
1.9k
Avg merge
1d 4h
Merged PRs (30d)
5

Description

  • Node Version:
    ❯ node -v
    v20.12.2
    ❯ npm -v
    10.5.0
  • Platform:
    ❯ uname -a
    Darwin JACK 23.6.0 Darwin Kernel Version 23.6.0: Fri Jul 5 17:54:20 PDT 2024; root:xnu-10063.141.1~2/RELEASE_X86_64 x86_64
  • Compiler:
    ❯ gcc -v
    Apple clang version 15.0.0 (clang-1500.3.9.4)
    Target: x86_64-apple-darwin23.6.0
    Thread model: posix
    InstalledDir: /Library/Developer/CommandLineTools/usr/bin
  • Module:
    cpu-features@0.0.10
Verbose output (from npm or node-gyp):
❯ npm r cpu-features;npm i cpu-features@0.0.10 --verbose

removed 3 packages, and audited 1 package in 491ms

found 0 vulnerabilities
npm verb cli /Users/jackzhang/.nvm/versions/node/v20.12.2/bin/node /Users/jackzhang/.nvm/versions/node/v20.12.2/bin/npm
npm info using npm@10.5.0
npm info using node@v20.12.2
npm verb title npm i cpu-features@0.0.10
npm verb argv "i" "cpu-features@0.0.10" "--loglevel" "verbose"
npm verb logfile logs-max:10 dir:/Users/jackzhang/.npm/_logs/2024-09-10T14_15_06_383Z-
npm verb logfile /Users/jackzhang/.npm/_logs/2024-09-10T14_15_06_383Z-debug-0.log
npm http fetch GET 200 https://npmreg.proxy.ustclug.org/cpu-features 19ms (cache hit)
npm http fetch GET 200 https://npmreg.proxy.ustclug.org/buildcheck 12ms (cache hit)
npm http fetch GET 200 https://npmreg.proxy.ustclug.org/nan 13ms (cache hit)
npm info run cpu-features@0.0.10 install node_modules/cpu-features node buildcheck.js > buildcheck.gypi && node-gyp rebuild
npm http fetch POST 200 https://npmreg.proxy.ustclug.org/-/npm/v1/security/advisories/bulk 567ms
npm info run cpu-features@0.0.10 install { code: 0, signal: null }

added 3 packages, and audited 4 packages in 7s

found 0 vulnerabilities
npm verb exit 0
npm info ok
~/src/workshop/hello-world-node 9s                                                                                                                       22:15:13
❯ md5sum node_modules/cpu-features/build/Release/cpufeatures.node
c7cea303f2b61a426712f207f516b59d  node_modules/cpu-features/build/Release/cpufeatures.node
~/src/workshop/hello-world-node                                                                                                                          22:15:16
❯ npm r cpu-features;npm i cpu-features@0.0.10 --verbose

removed 3 packages, and audited 1 package in 366ms

found 0 vulnerabilities
npm verb cli /Users/jackzhang/.nvm/versions/node/v20.12.2/bin/node /Users/jackzhang/.nvm/versions/node/v20.12.2/bin/npm
npm info using npm@10.5.0
npm info using node@v20.12.2
npm verb title npm i cpu-features@0.0.10
npm verb argv "i" "cpu-features@0.0.10" "--loglevel" "verbose"
npm verb logfile logs-max:10 dir:/Users/jackzhang/.npm/_logs/2024-09-10T14_15_19_828Z-
npm verb logfile /Users/jackzhang/.npm/_logs/2024-09-10T14_15_19_828Z-debug-0.log
npm http fetch GET 200 https://npmreg.proxy.ustclug.org/cpu-features 20ms (cache hit)
npm http fetch GET 200 https://npmreg.proxy.ustclug.org/nan 12ms (cache hit)
npm http fetch GET 200 https://npmreg.proxy.ustclug.org/buildcheck 16ms (cache hit)
npm info run cpu-features@0.0.10 install node_modules/cpu-features node buildcheck.js > buildcheck.gypi && node-gyp rebuild
npm http fetch POST 200 https://npmreg.proxy.ustclug.org/-/npm/v1/security/advisories/bulk 543ms
npm info run cpu-features@0.0.10 install { code: 0, signal: null }

added 3 packages, and audited 4 packages in 7s

found 0 vulnerabilities
npm verb exit 0
npm info ok
~/src/workshop/hello-world-node 8s                                                                                                                       22:15:26
❯ md5sum node_modules/cpu-features/build/Release/cpufeatures.node
6cbebb24ba9321c032ab68e897579978  node_modules/cpu-features/build/Release/cpufeatures.node

As we can we see, I tried to install the same version of cpu-features twice, the content in node_modules is different.

The md5 of node_modules/cpu-features/build/Release/cpufeatures.node is c7cea303f2b61a426712f207f516b59d at first time while it is 6cbebb24ba9321c032ab68e897579978 at second time.

All files except node_modules/cpu-features/build/Release/cpufeatures.node are the same.

It would be great if the content keeps consistent no matter how many times I install it. If the content is different, the hash would be different as well. And finally, the cache does not work.

BTW, there is no this issue on Linux but it exists on MacOS.
I am not sure it is an expected behavior.

Thanks @ben-zalekta-lmnd 's work in PR #3062 to ensure the Makefile consistent.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the two macOS installations of cpu-features@0.0.10 and compare the generated build/Release/cpufeatures.node hashes. Start with buildcheck.js, the Makefile, and the node-gyp rebuild output; done means repeated installs produce consistent installed files and the cache behaves as expected.

Written by the indexing model from the issue text.

Assessment

Tech stack
nodejs
Domain
build-system, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.