better-sqlite3 icon indicating copy to clipboard operation
better-sqlite3 copied to clipboard

Version `GLIBC_2.29' not found error while running in pipeline

Open Divya-Shanmugamb opened this issue 1 year ago • 3 comments

Hi,

I am getting the below error, while running in the pipeline

npm error prebuild-install warn install /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found

Version of better-sqlite3 in package-lock is 11.2.1.

image

Note: The pipeline is failing for past 6 days.

Divya-Shanmugamb avatar Aug 27 '24 09:08 Divya-Shanmugamb

The error message states that your OS does not have the required GLIBC. What OS are you running the pipeline on?

neoxpert avatar Aug 27 '24 19:08 neoxpert

This is happening running inside the node:lts-buster docker image.

npm error code 1
npm error path /incidents-app/node_modules/better-sqlite3
npm error command failed
npm error command sh -c prebuild-install || node-gyp rebuild --release
npm error make: Entering directory '/incidents-app/node_modules/better-sqlite3/build'
npm error   TOUCH ba23eeee118cd63e16015df367567cb043fed872.intermediate
npm error   ACTION deps_sqlite3_gyp_locate_sqlite3_target_copy_builtin_sqlite3 ba23eeee118cd63e16015df367567cb043fed872.intermediate
npm error   TOUCH Release/obj.target/deps/locate_sqlite3.stamp
npm error   CC(target) Release/obj.target/sqlite3/gen/sqlite3/sqlite3.o
npm error rm -f Release/obj.target/deps/sqlite3.a Release/obj.target/deps/sqlite3.a.ar-file-list; mkdir -p `dirname Release/obj.target/deps/sqlite3.a`
npm error ar crs Release/obj.target/deps/sqlite3.a @Release/obj.target/deps/sqlite3.a.ar-file-list
npm error   COPY Release/sqlite3.a
npm error   CXX(target) Release/obj.target/better_sqlite3/src/better_sqlite3.o
npm error rm ba23eeee118cd63e16015df367567cb043fed872.intermediate
npm error make: Leaving directory '/incidents-app/node_modules/better-sqlite3/build'
npm error prebuild-install warn install /lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /incidents-app/node_modules/better-sqlite3/build/Release/better_sqlite3.node)
npm error gyp info it worked if it ends with ok
npm error gyp info using [email protected]
npm error gyp info using [email protected] | linux | arm64
npm error gyp info find Python using Python version 3.7.3 found at "/usr/bin/python3"
npm error gyp http GET https://nodejs.org/download/release/v20.15.0/node-v20.15.0-headers.tar.gz
npm error gyp http 200 https://nodejs.org/download/release/v20.15.0/node-v20.15.0-headers.tar.gz
npm error gyp http GET https://nodejs.org/download/release/v20.15.0/SHASUMS256.txt
npm error gyp http 200 https://nodejs.org/download/release/v20.15.0/SHASUMS256.txt
npm error gyp info spawn /usr/bin/python3
npm error gyp info spawn args [
npm error gyp info spawn args '/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
npm error gyp info spawn args 'binding.gyp',
npm error gyp info spawn args '-f',
npm error gyp info spawn args 'make',
npm error gyp info spawn args '-I',
npm error gyp info spawn args '/incidents-app/node_modules/better-sqlite3/build/config.gypi',
npm error gyp info spawn args '-I',
npm error gyp info spawn args '/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
npm error gyp info spawn args '-I',
npm error gyp info spawn args '/root/.cache/node-gyp/20.15.0/include/node/common.gypi',
npm error gyp info spawn args '-Dlibrary=shared_library',
npm error gyp info spawn args '-Dvisibility=default',
npm error gyp info spawn args '-Dnode_root_dir=/root/.cache/node-gyp/20.15.0',
npm error gyp info spawn args '-Dnode_gyp_dir=/usr/local/lib/node_modules/npm/node_modules/node-gyp',
npm error gyp info spawn args '-Dnode_lib_file=/root/.cache/node-gyp/20.15.0/<(target_arch)/node.lib',
npm error gyp info spawn args '-Dmodule_root_dir=/incidents-app/node_modules/better-sqlite3',
npm error gyp info spawn args '-Dnode_engine=v8',
npm error gyp info spawn args '--depth=.',
npm error gyp info spawn args '--no-parallel',
npm error gyp info spawn args '--generator-output',
npm error gyp info spawn args 'build',
npm error gyp info spawn args '-Goutput_dir=.'
npm error gyp info spawn args ]
npm error gyp info spawn make
npm error gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
npm error g++: error: unrecognized command line option '-std=c++20'; did you mean '-std=c++2a'?
npm error make: *** [better_sqlite3.target.mk:118: Release/obj.target/better_sqlite3/src/better_sqlite3.o] Error 1
npm error gyp ERR! build error
npm error gyp ERR! stack Error: `make` failed with exit code: 2
npm error gyp ERR! stack at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:209:23)
npm error gyp ERR! System Linux 5.10.104-linuxkit
npm error gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--release"
npm error gyp ERR! cwd /incidents-app/node_modules/better-sqlite3
npm error gyp ERR! node -v v20.15.0
npm error gyp ERR! node-gyp -v v10.1.0
npm error gyp ERR! not ok

navinkrishnan avatar Aug 28 '24 18:08 navinkrishnan

Well, Debian 10 ships with GLIBC 2.28. Also it reached it's EOL 2 years ago.

So you can either try to somehow install GLIBC 2.29 within the container together with the required tool chain to build the native part of the library, or just switch to a supported and maintained version of Debian.

neoxpert avatar Aug 28 '24 20:08 neoxpert

Same issue I got in my Next.js project. I had to update to node 20.x in Vercel

jy95 avatar Aug 30 '24 20:08 jy95

Beside the missing GLIBC 2.29 or higher, what is an issue of the used OS, [email protected] requires a C++20 compatible compiler, due to the requirements of V8. As some older compilers don't know c++20 but only c++2a as a compiler level, this would requires changes in the whole project setup and I don't think building workarounds for outdated compilers is something desirable.

So you can either try to use an older (prebuilt) version of better-sqlite3, that does not require GLIBC 2.29 or higher or C++20 when compiling on demand, or you just update the runtime environments to up to date libraries if possible. Otherwise it would be up to you, to setup the required compilation toolchain within the target runtime / container.

neoxpert avatar Aug 30 '24 20:08 neoxpert

For future reference – you can set Node version either:

  • Project Settings > General > Node.js Version, or
  • Put "engines": {"node": "20.x" }, to package.json

Strajk avatar Nov 20 '24 12:11 Strajk