Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TypeError: '>=' not supported between instances of 'tuple' and 'str' #1917

Closed
LavaToaster opened this issue Oct 13, 2019 · 32 comments · Fixed by #1939
Closed

TypeError: '>=' not supported between instances of 'tuple' and 'str' #1917

LavaToaster opened this issue Oct 13, 2019 · 32 comments · Fixed by #1939

Comments

@LavaToaster
Copy link

LavaToaster commented Oct 13, 2019

  • Node Version: node v10.15.3 npm 6.4.1
  • Platform: Darwin AdamsVoBookPro3 19.0.0 Darwin Kernel Version 19.0.0: Wed Sep 25 20:18:50 PDT 2019; root:xnu-6153.11.26~2/RELEASE_X86_64 x86_64
  • Compiler:
Target: x86_64-apple-darwin19.0.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
  • Module: electron-rebuild
Verbose output (from npm or node-gyp):
An unhandled error occurred inside electron-rebuild
Traceback (most recent call last):
  File "/Users/adam/Projects/Personal/insomnia/packages/insomnia-app/node_modules/node-gyp/gyp/gyp_main.py", line 50, in <module>
    sys.exit(gyp.script_main())
  File "/Users/adam/Projects/Personal/insomnia/packages/insomnia-app/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 554, in script_main
    return main(sys.argv[1:])
  File "/Users/adam/Projects/Personal/insomnia/packages/insomnia-app/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 547, in main
    return gyp_main(args)
  File "/Users/adam/Projects/Personal/insomnia/packages/insomnia-app/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 532, in gyp_main
    generator.GenerateOutput(flat_list, targets, data, params)
  File "/Users/adam/Projects/Personal/insomnia/packages/insomnia-app/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py", line 2215, in GenerateOutput
    part_of_all=qualified_target in needed_targets)
  File "/Users/adam/Projects/Personal/insomnia/packages/insomnia-app/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py", line 802, in Write
    self.WriteCopies(spec['copies'], extra_outputs, part_of_all)
  File "/Users/adam/Projects/Personal/insomnia/packages/insomnia-app/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py", line 1145, in WriteCopies
    env = self.GetSortedXcodeEnv()
  File "/Users/adam/Projects/Personal/insomnia/packages/insomnia-app/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py", line 1885, in GetSortedXcodeEnv
    additional_settings)
  File "/Users/adam/Projects/Personal/insomnia/packages/insomnia-app/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py", line 1618, in GetSortedXcodeEnv
    additional_settings)
  File "/Users/adam/Projects/Personal/insomnia/packages/insomnia-app/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py", line 1529, in _GetXcodeEnv
    if XcodeVersion() >= '0500' and not env.get('SDKROOT'):
TypeError: '>=' not supported between instances of 'tuple' and 'str'
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/Users/adam/Projects/Personal/insomnia/packages/insomnia-app/node_modules/node-gyp/lib/configure.js:351:16)
gyp ERR! stack     at ChildProcess.emit (events.js:189:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
gyp ERR! System Darwin 19.0.0
gyp ERR! command "/Users/adam/.nvm/versions/node/v10.15.3/bin/node" "/Users/adam/Projects/Personal/insomnia/packages/insomnia-app/node_modules/.bin/node-gyp" "rebuild" "--target=3.1.13" "--arch=x64" "--dist-url=https://electronjs.org/headers" "--build-from-source" "--module_name=node_libcurl" "--module_path=/Users/adam/Projects/Personal/insomnia/packages/insomnia-libcurl/node_modules/insomnia-node-libcurl/lib/binding" "--host=https://github.com/JCMais/node-libcurl/releases/download" "--remote_path=./v2.0.0-alpha.0-1/"
gyp ERR! cwd /Users/adam/Projects/Personal/insomnia/packages/insomnia-libcurl/node_modules/insomnia-node-libcurl
gyp ERR! node -v v10.15.3
gyp ERR! node-gyp -v v5.0.5
gyp ERR! not ok

Failed with exit code: 1

If I update the comparison on the line here to the following, it works:

  xcode_version, _ = XcodeVersion()

  if xcode_version >= '0500' and not env.get('SDKROOT'):

However, I'm not sure if it's supposed to work like that or not.

@cclauss
Copy link
Contributor

cclauss commented Oct 13, 2019

This was fixed in the last few weeks... Can you please try with a more current release?

@LavaToaster
Copy link
Author

That comparison is still in the master branch. So I don’t understand how it could have been fixed.

@cclauss
Copy link
Contributor

cclauss commented Oct 15, 2019

Yes but the line that you changed is line 1494 but the traceback above is complaining about line 1529 which does not contain the code in question: https://github.com/nodejs/node-gyp/blob/master/gyp/pylib/gyp/xcode_emulation.py#L1529

@sam-github My sense is that this relates to gyp roundtrip but it is not yet clear.

@richardlau
Copy link
Member

In the traceback node-gyp v5.0.5 is being used but the line number still looks off (although much closer to the code in question): https://github.com/nodejs/node-gyp/blob/v5.0.5/gyp/pylib/gyp/xcode_emulation.py#L1529

@wagnerand
Copy link

Got the same error, but with the correct line number:

Traceback (most recent call last):
  File "/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py", line 50, in <module>
    sys.exit(gyp.script_main())
  File "/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 554, in script_main
    return main(sys.argv[1:])
  File "/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 547, in main
    return gyp_main(args)
  File "/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 532, in gyp_main
    generator.GenerateOutput(flat_list, targets, data, params)
  File "/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py", line 2215, in GenerateOutput
    part_of_all=qualified_target in needed_targets)
  File "/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py", line 794, in Write
    extra_mac_bundle_resources, part_of_all)
  File "/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py", line 900, in WriteActions
    env = self.GetSortedXcodeEnv()
  File "/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py", line 1885, in GetSortedXcodeEnv
    additional_settings)
  File "/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py", line 1616, in GetSortedXcodeEnv
    additional_settings)
  File "/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py", line 1527, in _GetXcodeEnv
    if XcodeVersion() >= '0500' and not env.get('SDKROOT'):
TypeError: '>=' not supported between instances of 'tuple' and 'str'
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:351:16)
gyp ERR! stack     at ChildProcess.emit (events.js:198:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
gyp ERR! System Darwin 18.7.0
gyp ERR! command "/usr/local/Cellar/node@10/10.16.3/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/awagner/mozilla/web-ext/node_modules/dtrace-provider
gyp ERR! node -v v10.16.3
gyp ERR! node-gyp -v v5.0.5
gyp ERR! not ok

@wagnerand
Copy link

https://github.com/nodejs/node-gyp/blob/master/gyp/pylib/gyp/xcode_emulation.py#L1527 throws because https://github.com/nodejs/node-gyp/blob/v5.0.5/gyp/pylib/gyp/xcode_emulation.py#L1294-L1295 sets XCODE_VERSION_CACHE to a tuple and returns it.

@MusicalEcho
Copy link

Hi. I have the same error after I updated xCode to the newest version(if it helps).

@cclauss
Copy link
Contributor

cclauss commented Oct 22, 2019

@MusicalEcho What does your traceback say for the following lines?

gyp ERR! System Darwin 18.7.0
gyp ERR! command "/usr/local/Cellar/node@10/10.16.3/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/awagner/mozilla/web-ext/node_modules/dtrace-provider
gyp ERR! node -v v10.16.3
gyp ERR! node-gyp -v v5.0.5
gyp ERR! not ok

@MusicalEcho
Copy link

Another package, but yep everything else is the same

@cclauss
Copy link
Contributor

cclauss commented Oct 22, 2019

$ sw_vers ; /usr/sbin/pkgutil --packages | grep CL

@MusicalEcho
Copy link

ProductName:	Mac OS X
ProductVersion:	10.14.6
BuildVersion:	18G87
com.apple.pkg.CLTools_Executables
com.apple.pkg.CLTools_SDK_macOSSDK
com.apple.pkg.CLTools_SDK_macOS1013
com.apple.pkg.CLTools_SDK_macOS1014

@paulywill
Copy link

paulywill commented Oct 23, 2019

ProductName:    Mac OS X
ProductVersion: 10.13.6
BuildVersion:   17G6030
com.apple.pkg.CLTools_Executables
com.apple.pkg.CLTools_SDK_macOSSDK
com.apple.pkg.CLTools_SDK_macOS1013
com.apple.pkg.CLTools_SDK_macOS1014

Resolve with updating node and : npm install grpc@latest

@MusicalEcho
Copy link

Resolve with updating node and : npm install grpc@latest

I updated node to 12.13.1 and have the latest packages - nothing changed

@createthis
Copy link

I'm also seeing this error today.

ProductName:	Mac OS X
ProductVersion:	10.14.6
BuildVersion:	18G1012
com.apple.pkg.CLTools_Executables
com.apple.pkg.CLTools_SDK_macOSSDK
com.apple.pkg.CLTools_SDK_macOS1013
com.apple.pkg.CLTools_SDK_macOS1014
MacBook-Pro:node jesse$ python --version
Python 3.6.8
MacBook-Pro:node jesse$ npm -v
6.12.0
MacBook-Pro:node jesse$ node -v
v12.13.0

What is the recommended fix since this issue is closed?

@rajatkumar
Copy link

I'm also seeing this error. What is the recommended fix?

ProductName:	Mac OS X
ProductVersion:	10.14.6
BuildVersion:	18G95
com.apple.pkg.CLTools_Executables
com.apple.pkg.CLTools_SDK_macOSSDK
com.apple.pkg.CLTools_SDK_macOS1013
com.apple.pkg.CLTools_SDK_macOS1014
python --version
Python 3.7.3
npm -v
6.12.1
node -v
v12.13.0

@cclauss
Copy link
Contributor

cclauss commented Nov 4, 2019

node-gyp v6.0.1 68319a2

@henderea
Copy link

henderea commented Nov 4, 2019

Anyone know when this will get integrated into NPM? It seems like NPM is still using v5.0.5 of node-gyp, and I don't seem to be able to find any pull requests for updating node-gyp. I'm unable to install a package right now because NPM is using a broken node-gyp.

@createthis
Copy link

Not to detract from the 6.0.1 conversation, because I think that is a good question, but just a quick FYI:

I think node-gyp is mostly needed when building modules from source. Most of the time there should be a binary package available for a given node module in your environment.

In my case, on a mac, node-gyp was trying to build fsevents 1.2.6 or something, because it was an optional child dependency of a dependency ( babel-cli in my case ). fsevents 1.2.9 is the first version compatible with node 12, so npm was failing to find a binary package.

I resolved this issue locally by adding the following to my package.json:

"optionalDependencies": {
    "fsevents": "^1.2.9"
  },

This allowed the binary package for fsevents 1.2.9 to be installed and eliminated the need for node-gyp.

Again, this shouldn't detract from the node-gyp issue, because it's still an issue. Just sayin there may be a quick workaround available for many folks.

@henderea
Copy link

henderea commented Nov 5, 2019

My issue is actually with detect-character-encoding, which I added to a couple of command-line tools I have in NPM. I've reverted to the previous version of my tools that doesn't use it while I wait for NPM to update the node-gyp dependency to fix my issue. It seemed to be an issue on all of the node versions I tried to install it on (8, 10, 12, 13).

Note that when I was implementing the tool changes, I used yarn, but I use NPM for installing packages globally. It worked without any issues in yarn, so I was rather surprised when the global NPM installs failed.

@cclauss
Copy link
Contributor

cclauss commented Nov 5, 2019

The last three comments do not pertain to this issue. Perhaps find the right repo to open a new issue on.

Anyone know when this will get integrated into NPM?

Wrong repo. Check out npm/cli#276 (comment)

@henderea
Copy link

henderea commented Nov 5, 2019

Sorry about that. I wasn't finding anything on NPM and wasn't sure where to post since they don't have an issues tab and I wasn't too sure about joining the forum just to ask a single question, so I ended up posting here since it was related to the error I was getting. Thanks for bringing the topic up on the NPM repo for me.

@afroald
Copy link

afroald commented Nov 9, 2019

A workaround that worked for me was running:

npm explore npm -g -- npm install node-gyp@latest
npm explore npm -g -- npm explore npm-lifecycle -- npm install node-gyp@latest

Found out about this here:
https://github.com/nodejs/node-gyp/wiki/Updating-npm's-bundled-node-gyp

@minhphuc429
Copy link

A workaround that worked for me was running:

npm explore npm -g -- npm install node-gyp@latest
npm explore npm -g -- npm explore npm-lifecycle -- npm install node-gyp@latest

Found out about this here:
https://github.com/nodejs/node-gyp/wiki/Updating-npm's-bundled-node-gyp

work like a charm

@pedrohma
Copy link

A workaround that worked for me was running:

npm explore npm -g -- npm install node-gyp@latest
npm explore npm -g -- npm explore npm-lifecycle -- npm install node-gyp@latest

Found out about this here:
https://github.com/nodejs/node-gyp/wiki/Updating-npm's-bundled-node-gyp

It worked for me as well! 👍

@magikid
Copy link

magikid commented Jan 2, 2020

The corresponding issue to get the version bundled with npm updated seems to be this: npm/cli#287

@rvagg
Copy link
Member

rvagg commented Jan 3, 2020

Addressing the contention that this is because npm is shipping node-gyp 6 rather than 5:

node-gyp v6 should be almost the same as node-gyp v5, if someone still experiencing this issue can demonstrate a difference between v5 and v6 that's causing it then we'll fix v5 and ship it.

On master:

$ git diff v5.x -- gyp/
$

The diff between the two consists primarily of switching the preference order between Python 2 and 3 such that node-gyp 6 prefers the latter and 5 the former, we consider that "breaking" change. In fact, a diff between the two branches, excluding tests and docs, reveals mainly Python version checking changes and #1978 which is an unrelated feature yet to be included in a 5.x.

Perhaps there's a Python 3 problem here and you're experiencing it because your system has both and it's opting for 2 with node-gyp 5 but is fixed when it opts for 3. You could test that by switching to Python 3 using node-gyp 5 (current npm version): https://github.com/nodejs/node-gyp#configuring-python-dependency

If this is still broken, help us fix it, we are still maintaining v5.x but none of us are getting this problem on our own systems.

@jnardone
Copy link

@rvagg Here is something.

On my MacOS system we use pyenv for our python stuff; our source repo requires python 3.6.7. My pyenv setup means Python 3.6.7 is the runtime python version in the installing user's path.

With this python as my default python version, I get what's described here: ranisalt/node-argon2#230 and what's described in this issue (>= tuple str...)

If I temporarily disable this and use the MacOS system 2.7 python - the build succeeds. I was not expecting this.

I am surprised by this. v3 should work with v5.0.5 since it's a supported version, shouldn't it?

In our situation, this is a breaker- we can't simply downgrade to python 2 for this one build nor do we want to mandate to the consumers of our source code that they have to manually configure node-gyp to use python2. I'd say this is a bug with v5.0.5 with python3...

@cclauss
Copy link
Contributor

cclauss commented Jan 21, 2020

#1939 Landed in 5.0.6 so please refrain from using earlier releases on macOS.

@jnardone
Copy link

jnardone commented Jan 21, 2020

Thanks for mentioning the release numnber @cclauss . Too bad upstream npm is still using 5.0.5 which is what everyone has. Is there any coordination with the NPM CLI team on bumping minor revs?

They've even had a release since 5.0.6 came out. :(

@cclauss
Copy link
Contributor

cclauss commented Jan 21, 2020

Nice workaround... #2031 (comment)

@smaillns
Copy link

smaillns commented Apr 3, 2020

see with the following issue #278

@cclauss
Copy link
Contributor

cclauss commented Apr 3, 2020

node-gyp v6.0.1 68319a2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.