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

npm install ibm_db fails on centos 7.5 in local install but works in global install #790

Closed
ibm-omnicron opened this issue Aug 21, 2021 · 2 comments

Comments

@ibm-omnicron
Copy link

Hi

Problem Statement

I am trying to use the DB2 connect vscode plugin (https://marketplace.visualstudio.com/items?itemName=IBM.Db2Connect) which i gleaned internally runs npm install ibm_db in the respective extensions folder. the extension has been failing to install on the remote vm which is on centos 7.5

I downloaded the DB2 CLI linux driver and set the IBM_DB_HOME variable so that it doesn't download it for every build
curl -L -o linuxx64_odbc_cli.tar.gz https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/linuxx64_odbc_cli.tar.gz

When i run the command as per below to install in local mode (npm install) it fails, but appears to work in global mode (npm install -g)

As DB2 connect wants the package within the node_modules folder within the extension folder and will not use the global package, I am looking for a solution to fix this.

Any pointers?

Local install - failing

npm install ibm_db                                                                           

> ibm_db@2.7.4 install /home/oms/.vscode-server/extensions/ibm.db2connect-2.2.0/node_modules/ibm_db
> node installer/driverInstall.js

platform =  linux , arch =  x64 , node.js version =  v12.22.5
make version = GNU Make 3.82

Proceeding to build IBM_DB for Electron framework...

Unable to detect electon installation.
Detected VSCode version 1.59 , will use Electron version  12.0.4

IBM_DB_HOME environment variable have already been set to -> /home/oms/archives/ibm_db_driver/clidriver

Downloading of clidriver skipped - build is in progress...

make: Entering directory `/home/oms/.vscode-server/extensions/ibm.db2connect-2.2.0/node_modules/ibm_db/build'
  CXX(target) Release/obj.target/odbc_bindings/src/odbc.o
make: Leaving directory `/home/oms/.vscode-server/extensions/ibm.db2connect-2.2.0/node_modules/ibm_db/build'

Error: Command failed: node-gyp configure build  --IS_DOWNLOADED=false --target=12.0.4 --arch=x64 --dist-url=https://atom.io/download/electron --IBM_DB_HOME="$IBM_DB_HOME"
In file included from /home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:30:0,
                 from ../src/odbc.cpp:23:
/home/oms/.cache/node-gyp/12.0.4/include/node/v8-internal.h: In function ‘void v8::internal::PerformCastCheck(T*)’:
/home/oms/.cache/node-gyp/12.0.4/include/node/v8-internal.h:452:33: error: ‘remove_cv_t’ is not a member of ‘std’
             !std::is_same<Data, std::remove_cv_t<T>>::value>::Perform(data);
                                 ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8-internal.h:452:33: error: ‘remove_cv_t’ is not a member of ‘std’
/home/oms/.cache/node-gyp/12.0.4/include/node/v8-internal.h:452:50: error: template argument 2 is invalid
             !std::is_same<Data, std::remove_cv_t<T>>::value>::Perform(data);
                                                  ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8-internal.h:452:61: error: ‘::Perform’ has not been declared
             !std::is_same<Data, std::remove_cv_t<T>>::value>::Perform(data);
                                                             ^
In file included from ../src/odbc.cpp:23:0:
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h: At global scope:
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:1436:75: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
       Local<PrimitiveArray> host_defined_options = Local<PrimitiveArray>());
                                                                           ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:1448:49: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   V8_INLINE Local<Integer> ResourceLineOffset() const;
                                                 ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:1450:51: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   V8_INLINE Local<Integer> ResourceColumnOffset() const;
                                                   ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:1452:39: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   V8_INLINE Local<Integer> ScriptID() const;
                                       ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:1597:33: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   int GetModuleRequestsLength() const;
                                 ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:1605:41: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   Local<String> GetModuleRequest(int i) const;
                                         ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:1614:44: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   Location GetModuleRequestLocation(int i) const;
                                            ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:1634:53: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
                              Local<Module> referrer);
                                                     ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:1650:79: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
                                                       ResolveCallback callback);
                                                                               ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:1741:58: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
                                 Local<Value> export_value);
                                                          ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:1924:74: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
     StreamedSource(ExternalSourceStream* source_stream, Encoding encoding);
                                                                          ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:2031:49: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
       CompileOptions options = kNoCompileOptions);
                                                 ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:3544:23: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   Local<Value> Name() const { return Description(); }
                       ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:5399:76: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
       ArrayBufferCreationMode mode = ArrayBufferCreationMode::kExternalized);
                                                                            ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:5446:21: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   bool IsExternal() const;
                     ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:5473:24: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   Contents Externalize();
                        ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:5483:70: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   void Externalize(const std::shared_ptr<BackingStore>& backing_store);
                                                                      ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:5494:24: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   Contents GetContents();
                        ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:5882:76: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
       ArrayBufferCreationMode mode = ArrayBufferCreationMode::kExternalized);
                                                                            ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:5931:76: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
       ArrayBufferCreationMode mode = ArrayBufferCreationMode::kExternalized);
                                                                            ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:5940:21: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   bool IsExternal() const;
                     ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:5956:24: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   Contents Externalize();
                        ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:5966:70: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   void Externalize(const std::shared_ptr<BackingStore>& backing_store);
                                                                      ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:5981:24: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   Contents GetContents();
                        ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:8927:59: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
                                     MeasureMemoryMode mode);
                                                           ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:9566:55: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
       ModifyCodeGenerationFromStringsCallback callback);
                                                       ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8.h:9925:75: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   static bool TryHandleSignal(int signal_number, void* info, void* context);
                                                                           ^
In file included from /home/oms/.cache/node-gyp/12.0.4/include/node/node.h:72:0,
                 from ../src/odbc.cpp:24:
/home/oms/.cache/node-gyp/12.0.4/include/node/v8-platform.h:234:28: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   virtual bool IsCompleted() { return !IsActive(); }
                            ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8-platform.h:245:26: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   virtual bool IsRunning() { return IsValid(); }
                          ^
/home/oms/.cache/node-gyp/12.0.4/include/node/v8-platform.h:278:38: warning: ‘deprecated’ attribute directive ignored [-Wattributes]
   virtual size_t GetMaxConcurrency() const { return 0; }
                                      ^
../src/odbc.cpp: In static member function ‘static void ODBC::UV_AfterCreateConnection(uv_work_t*, int)’:
../src/odbc.cpp:216:27: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated (declared at ../../nan/nan.h:1742) [-Wdeprecated-declarations]
     data->cb->Call(1, info);
                           ^
../src/odbc.cpp:228:27: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated (declared at ../../nan/nan.h:1742) [-Wdeprecated-declarations]
     data->cb->Call(2, info);
                           ^
../src/odbc.cpp: In static member function ‘static v8::Local<v8::Value> ODBC::CallbackSQLError(SQLSMALLINT, SQLHANDLE, char*, Nan::Callback*)’:
../src/odbc.cpp:1413:19: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated (declared at ../../nan/nan.h:1742) [-Wdeprecated-declarations]
   cb->Call(1, info);
                   ^
make: *** [Release/obj.target/odbc_bindings/src/odbc.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (events.js:314:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12)
gyp ERR! System Linux 3.10.0-1160.36.2.el7.x86_64
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "build" "--IS_DOWNLOADED=false" "--target=12.0.4" "--arch=x64" "--dist-url=https://atom.io/download/electron" "--IBM_DB_HOME=/home/oms/archives/ibm_db_driver/clidriver"
gyp ERR! cwd /home/oms/.vscode-server/extensions/ibm.db2connect-2.2.0/node_modules/ibm_db
gyp ERR! node -v v12.22.5
gyp ERR! node-gyp -v v5.1.0
gyp ERR! not ok

    at ChildProcess.exithandler (child_process.js:308:12)
    at ChildProcess.emit (events.js:314:20)
    at maybeClose (internal/child_process.js:1022:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) {
  killed: false,
  code: 1,
  signal: null,
  cmd: 'node-gyp configure build  --IS_DOWNLOADED=false --target=12.0.4 --arch=x64 --dist-url=https://atom.io/download/electron --IBM_DB_HOME="$IBM_DB_HOME"'
}
npm WARN db2connect@2.2.0 No license field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! ibm_db@2.7.4 install: `node installer/driverInstall.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the ibm_db@2.7.4 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!     /home/oms/.npm/_logs/2021-08-21T11_59_45_964Z-debug.log`

Global install - appears to be working

npm -g install ibm_db                                                                       

> ibm_db@2.7.4 install /usr/lib/node_modules/ibm_db
> node installer/driverInstall.js

platform =  linux , arch =  x64 , node.js version =  v12.22.5
make version = GNU Make 3.82
IBM_DB_HOME environment variable have already been set to -> /home/oms/archives/ibm_db_driver/clidriver

Downloading of clidriver skipped - build is in progress...

make: Entering directory `/usr/lib/node_modules/ibm_db/build'
  CXX(target) Release/obj.target/odbc_bindings/src/odbc.o
  CXX(target) Release/obj.target/odbc_bindings/src/odbc_connection.o
  CXX(target) Release/obj.target/odbc_bindings/src/odbc_statement.o
  CXX(target) Release/obj.target/odbc_bindings/src/odbc_result.o
  SOLINK_MODULE(target) Release/obj.target/odbc_bindings.node
  COPY Release/odbc_bindings.node
make: Leaving directory `/usr/lib/node_modules/ibm_db/build'

+ ibm_db@2.7.4
updated 1 package in 12.424s

Global package is updated

ls /usr/lib/node_modules/ibm_db/                                                                 
APIDocumentation.md  binding.gyp  build  CHANGES.md  _config.yml  contributing  examples  installer  INSTALL.md  lib  LICENSE  node_modules  package.json  README.md  src  test
@bimalkjha
Copy link
Member

@ibm-omnicron Probably you have two versions of compiler installed or your compiler is old. Below is the mail error that you are hitting for local installation:

/home/oms/.cache/node-gyp/12.0.4/include/node/v8-internal.h:452:33: error: ‘remove_cv_t’ is not a member of ‘std’

             !std::is_same<Data, std::remove_cv_t<T>>::value>::Perform(data);

This error comes for older compiler which is not C++14 compliant. This error is from compiler which fails to compile the ibm_db native module code. Since, global installation is able to compile it, so I suspect global installation is using different gcc version than local installation. Could you please check it? Thanks.

@ibm-omnicron
Copy link
Author

Many thanks - upgrading to gcc 7 on centos 7.5 resolved this

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

No branches or pull requests

2 participants