laverdet / isolated-vm

Secure & isolated JS environments for nodejs
ISC License
2.11k stars 148 forks source link

Build error at yarn install in docker #413

Closed fukit0 closed 11 months ago

fukit0 commented 11 months ago

Hello,

We have a bitbucket pipeline. We have also a dockerfile that has the following configuration:

ubuntu:16.04 nodejs: 16.9.1 isolated-vm: 4.6.0 python: 3.6.10

...
RUN apt-get update && apt-get install -y software-properties-common

RUN add-apt-repository -y ppa:jblgf0/python && \
    apt-get -y update && \
    apt-get install -y python3.6

RUN apt-get install -y g++ build-essential
...

In the pipeline, I get the following error from isolated-vm:

➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR prebuild-install warn install /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /opt/atlassian/pipelines/agent/build/backend/functions/api/node_modules/isolated-vm/out/isolated_vm.node)
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info it worked if it ends with ok
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info using node-gyp@9.4.0
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info using node@16.9.1 | linux | x64
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info find Python using Python version 3.6.10 found at "/usr/bin/python3.6"
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp http GET https://nodejs.org/download/release/v16.9.1/node-v16.9.1-headers.tar.gz
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp http 200 https://nodejs.org/download/release/v16.9.1/node-v16.9.1-headers.tar.gz
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp http GET https://nodejs.org/download/release/v16.9.1/SHASUMS256.txt
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp http 200 https://nodejs.org/download/release/v16.9.1/SHASUMS256.txt
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn /usr/bin/python3.6
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args [
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '/opt/atlassian/pipelines/agent/build/backend/functions/api/node_modules/node-gyp/gyp/gyp_main.py',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   'binding.gyp',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '-f',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   'make',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '-I',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '/opt/atlassian/pipelines/agent/build/backend/functions/api/node_modules/isolated-vm/build/config.gypi',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '-I',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '/opt/atlassian/pipelines/agent/build/backend/functions/api/node_modules/node-gyp/addon.gypi',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '-I',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '/root/.cache/node-gyp/16.9.1/include/node/common.gypi',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '-Dlibrary=shared_library',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '-Dvisibility=default',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '-Dnode_root_dir=/root/.cache/node-gyp/16.9.1',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '-Dnode_gyp_dir=/opt/atlassian/pipelines/agent/build/backend/functions/api/node_modules/node-gyp',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '-Dnode_lib_file=/root/.cache/node-gyp/16.9.1/<(target_arch)/node.lib',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '-Dmodule_root_dir=/opt/atlassian/pipelines/agent/build/backend/functions/api/node_modules/isolated-vm',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '-Dnode_engine=v8',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '--depth=.',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '--no-parallel',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '--generator-output',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   'build',
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args   '-Goutput_dir=.'
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args ]
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn make
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build', '--jobs', 4 ]
➤ YN0000: │ isolated-vm@npm:4.6.0 STDOUT make: Entering directory '/opt/atlassian/pipelines/agent/build/backend/functions/api/node_modules/isolated-vm/build'
➤ YN0000: │ isolated-vm@npm:4.6.0 STDOUT   CXX(target) Release/obj.target/nortti/src/external_copy/serializer_nortti.o
➤ YN0000: │ isolated-vm@npm:4.6.0 STDOUT   CXX(target) Release/obj.target/nortti/src/isolate/allocator_nortti.o
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR In file included from ../src/isolate/allocator_nortti.cc:2:0:
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR ../src/isolate/environment.h:102:48: error: use of deleted function 'std::atomic<long unsigned int>::atomic(const std::atomic<long unsigned int>&)'
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR    std::atomic<size_t> extra_allocated_memory = 0;
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR                                                 ^
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR In file included from /root/.cache/node-gyp/16.9.1/include/node/v8.h:22:0,
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR                  from ../src/isolate/allocator.h:2,
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR                  from ../src/isolate/allocator_nortti.cc:1:
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR /usr/include/c++/5/atomic:669:7: note: declared here
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR        atomic(const atomic&) = delete;
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR        ^
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR /usr/include/c++/5/atomic:673:17: note:   after user-defined conversion: constexpr std::atomic<long unsigned int>::atomic(std::atomic<long unsigned int>::__integral_type)
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR        constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { }
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR                  ^
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR In file included from ../src/external_copy/serializer.h:3:0,
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR                  from ../src/external_copy/serializer_nortti.cc:1:
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR ../src/isolate/environment.h:102:48: error: use of deleted function 'std::atomic<long unsigned int>::atomic(const std::atomic<long unsigned int>&)'
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR    std::atomic<size_t> extra_allocated_memory = 0;
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR                                                 ^
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR In file included from /root/.cache/node-gyp/16.9.1/include/node/v8.h:22:0,
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR                  from ../src/external_copy/external_copy.h:2,
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR                  from ../src/external_copy/serializer.h:2,
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR                  from ../src/external_copy/serializer_nortti.cc:1:
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR /usr/include/c++/5/atomic:669:7: note: declared here
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR        atomic(const atomic&) = delete;
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR        ^
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR /usr/include/c++/5/atomic:673:17: note:   after user-defined conversion: constexpr std::atomic<long unsigned int>::atomic(std::atomic<long unsigned int>::__integral_type)
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR        constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { }
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR                  ^
➤ YN0000: │ isolated-vm@npm:4.6.0 STDOUT nortti.target.mk:164: recipe for target 'Release/obj.target/nortti/src/isolate/allocator_nortti.o' failed
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR make: *** [Release/obj.target/nortti/src/isolate/allocator_nortti.o] Error 1
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR make: *** Waiting for unfinished jobs....
➤ YN0000: │ isolated-vm@npm:4.6.0 STDOUT nortti.target.mk:164: recipe for target 'Release/obj.target/nortti/src/external_copy/serializer_nortti.o' failed
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR make: *** [Release/obj.target/nortti/src/external_copy/serializer_nortti.o] Error 1
➤ YN0000: │ isolated-vm@npm:4.6.0 STDOUT make: Leaving directory '/opt/atlassian/pipelines/agent/build/backend/functions/api/node_modules/isolated-vm/build'
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp ERR! build error 
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp ERR! stack Error: `make` failed with exit code: 2
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp ERR! stack     at ChildProcess.onExit (/opt/atlassian/pipelines/agent/build/backend/functions/api/node_modules/node-gyp/lib/build.js:203:23)
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp ERR! stack     at ChildProcess.emit (node:events:394:28)
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:290:12)
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp ERR! System Linux 5.15.0-1044-aws
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp ERR! command "/usr/local/nvm/versions/node/v16.9.1/bin/node" "/opt/atlassian/pipelines/agent/build/backend/functions/api/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--release" "-j" "4"
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp ERR! cwd /opt/atlassian/pipelines/agent/build/backend/functions/api/node_modules/isolated-vm
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp ERR! node -v v16.9.1
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp ERR! node-gyp -v v9.4.0
➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp ERR! not ok 
➤ YN0009: │ isolated-vm@npm:4.6.0 couldn't be built successfully (exit code 1, logs can be found here: /tmp/xfs-b28b2808/build.log)
laverdet commented 11 months ago

You say that you're using nodejs 16 but your log file doesn't agree:

➤ YN0000: │ isolated-vm@npm:4.6.0 STDERR gyp info using node@14.19.2 | linux | x64

isolated-vm requires nodejs v16 or higher.

fukit0 commented 11 months ago

Hi @laverdet ,

I resolved the issue and updated my entry. Could you please reopen this? Because, error is the same.

Thanks

laverdet commented 11 months ago

Looks like you're using an old compiler which doesn't support c++17 copy elision. Ubuntu 16 is really old you need to upgrade or get left behind by OSS. ✨