You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pulsar.apache.org by GitBox <gi...@apache.org> on 2022/06/17 04:21:21 UTC

[GitHub] [pulsar-client-node] equanz opened a new pull request, #220: Split conditions between OS in binding.gyp

equanz opened a new pull request, #220:
URL: https://github.com/apache/pulsar-client-node/pull/220

   # Motivation
   On macOS and Apple Silicon, we can't build pulsar-client-node if using default environment variables like below.
   https://github.com/apache/pulsar-client-node/issues/87#issuecomment-1158192533
   
   ```
   % echo $LIBRARY_PATH
   
   
   % PULSAR_CPP_DIR=/opt/homebrew/Cellar/libpulsar/2.10.0 npm install
   ...
   ld: library not found for -lpulsar
   clang: error: linker command failed with exit code 1 (use -v to see invocation)
   make: *** [Debug/Pulsar.node] Error 1
   gyp ERR! build error 
   gyp ERR! stack Error: `make` failed with exit code: 2
   gyp ERR! stack     at ChildProcess.onExit (/opt/homebrew/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
   gyp ERR! stack     at ChildProcess.emit (node:events:527:28)
   gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:291:12)
   gyp ERR! System Darwin 21.5.0
   gyp ERR! command "/opt/homebrew/Cellar/node/18.3.0/bin/node" "/opt/homebrew/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--debug" "--module=/Users/yumizush/src/pulsar-client-node/build/Release/libpulsar.node" "--module_name=libpulsar" "--module_path=/Users/yumizush/src/pulsar-client-node/build/Release" "--napi_version=8" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v108"
   gyp ERR! cwd /Users/yumizush/src/pulsar-client-node
   gyp ERR! node -v v18.3.0
   gyp ERR! node-gyp -v v9.0.0
   gyp ERR! not ok 
   ...
   ```
   
   The Root cause of the issue is clang tries to link `libpulsar` libraries through `-lpulsar` even if `OS==mac` .
   Therefore, If you don't add `libpulsar` to the library path, then fail on any architectures.
   
   I want to fix it.
   
   # Modification
   * Split target conditions between OS in `binding.gyp`
     - cf. https://github.com/nodejs/node-gyp/blob/v8.4.1/gyp/pylib/gyp/input.py#L1187-L1196
     - cf. https://docs.python.org/3/library/functions.html#compile
   * Add an example script for macOS and Apple Silicon to the README.md
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [pulsar-client-node] nkurihar merged pull request #220: Split conditions between OS in binding.gyp

Posted by GitBox <gi...@apache.org>.
nkurihar merged PR #220:
URL: https://github.com/apache/pulsar-client-node/pull/220


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org