dockerode icon indicating copy to clipboard operation
dockerode copied to clipboard

Cannot install Dockerode with Electron >= 20

Open trungutt opened this issue 2 years ago • 0 comments

First thank you for your great work to maintain this library.

I'm writing a dummy Electron app with electron >= 20 making use of dockerode, and I cannot have cpu-features built correctly

yarn add v1.22.4
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
warning [email protected]: The engine "git" appears to be invalid.
[3/4] 🔗  Linking dependencies...
warning "xo > [email protected]" has unmet peer dependency "webpack@>=1.11.0".
[4/4] 🔨  Building fresh packages...
success Saved lockfile.
success Saved 21 new dependencies.
info Direct dependencies
└─ [email protected]
info All dependencies
├─ @balena/[email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
└─ [email protected]
$ electron-builder install-app-deps
  • electron-builder  version=23.6.0
  • loaded configuration  file=package.json ("build" field)
  • rebuilding native dependencies  [email protected] platform=darwin arch=x64
  • rebuilding native dependency  name=cpu-features version=0.0.4
  • cannot build optional native dependency  name=cpu-features
                                             version=0.0.4
                                             cause=exit status 1
yarn run v1.22.4
$ node buildcheck.js > buildcheck.gypi && node-gyp rebuild
      CC(target) Release/obj.target/cpu_features/deps/cpu_features/src/impl_aarch64_linux_or_android.o
      CC(target) Release/obj.target/cpu_features/deps/cpu_features/src/impl_arm_linux_or_android.o
      CC(target) Release/obj.target/cpu_features/deps/cpu_features/src/impl_mips_linux_or_android.o
      CC(target) Release/obj.target/cpu_features/deps/cpu_features/src/impl_ppc_linux.o
      CC(target) Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_freebsd.o
      CC(target) Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_linux_or_android.o
      CC(target) Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_macos.o
      CC(target) Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_windows.o
      CC(target) Release/obj.target/cpu_features/deps/cpu_features/src/filesystem.o
      CC(target) Release/obj.target/cpu_features/deps/cpu_features/src/stack_line_reader.o
      CC(target) Release/obj.target/cpu_features/deps/cpu_features/src/string_view.o
      LIBTOOL-STATIC Release/cpu_features.a
      CXX(target) Release/obj.target/cpufeatures/src/binding.o
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

                                             errorOut=gyp info it worked if it ends with ok
    gyp info using [email protected]
    gyp info using [email protected] | darwin | x64
    gyp info find Python using Python version 3.8.13 found at "/usr/local/opt/[email protected]/bin/python3.8"
    gyp http GET https://electronjs.org/headers/v21.3.0/node-v21.3.0-headers.tar.gz
    gyp http 200 https://artifacts.electronjs.org/headers/v21.3.0/node-v21.3.0-headers.tar.gz?force_headers_dist=1
    gyp http GET https://electronjs.org/headers/v21.3.0/SHASUMS256.txt
    gyp http 200 https://artifacts.electronjs.org/headers/v21.3.0/SHASUMS256.txt?force_headers_dist=1
    gyp info spawn /usr/local/opt/[email protected]/bin/python3.8
    gyp info spawn args [
    gyp info spawn args   '/Users/nhu-ductrungnguyen/.nvm/versions/node/v16.15.0/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
    gyp info spawn args   'binding.gyp',
    gyp info spawn args   '-f',
    gyp info spawn args   'make',
    gyp info spawn args   '-I',
    gyp info spawn args   '/Users/nhu-ductrungnguyen/Test/electron-boilerplate/node_modules/cpu-features/build/config.gypi',
    gyp info spawn args   '-I',
    gyp info spawn args   '/Users/nhu-ductrungnguyen/.nvm/versions/node/v16.15.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
    gyp info spawn args   '-I',
    gyp info spawn args   '/Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/common.gypi',
    gyp info spawn args   '-Dlibrary=shared_library',
    gyp info spawn args   '-Dvisibility=default',
    gyp info spawn args   '-Dnode_root_dir=/Users/nhu-ductrungnguyen/.electron-gyp/21.3.0',
    gyp info spawn args   '-Dnode_gyp_dir=/Users/nhu-ductrungnguyen/.nvm/versions/node/v16.15.0/lib/node_modules/npm/node_modules/node-gyp',
    gyp info spawn args   '-Dnode_lib_file=/Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/<(target_arch)/node.lib',
    gyp info spawn args   '-Dmodule_root_dir=/Users/nhu-ductrungnguyen/Test/electron-boilerplate/node_modules/cpu-features',
    gyp info spawn args   '-Dnode_engine=v8',
    gyp info spawn args   '--depth=.',
    gyp info spawn args   '--no-parallel',
    gyp info spawn args   '--generator-output',
    gyp info spawn args   'build',
    gyp info spawn args   '-Goutput_dir=.'
    gyp info spawn args ]
    gyp info spawn make
    gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
    In file included from ../src/binding.cc:1:
    In file included from /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/node.h:69:
    In file included from /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8.h:24:
    In file included from /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-array-buffer.h:12:
    In file included from /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-local-handle.h:12:
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:471:30: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    SHARED_EXTERNAL_POINTER_TAGS(CHECK_SHARED_EXTERNAL_POINTER_TAGS)
                                 ^
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:471:30: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:471:30: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:471:30: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:471:30: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:472:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    PER_ISOLATE_EXTERNAL_POINTER_TAGS(CHECK_NON_SHARED_EXTERNAL_POINTER_TAGS)
                                      ^
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:472:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:472:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:472:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:472:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:472:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:472:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:472:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:472:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:472:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:472:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:472:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:472:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:655:61: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
        static_assert(kJSObjectType + 1 == kFirstJSApiObjectType);
                                                                ^
                                                                , ""
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:656:55: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
        static_assert(kJSObjectType < kLastJSApiObjectType);
                                                          ^
                                                          , ""
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-internal.h:657:63: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
        static_assert(kFirstJSApiObjectType < kLastJSApiObjectType);
                                                                  ^
                                                                  , ""
    In file included from ../src/binding.cc:1:
    In file included from /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/node.h:69:
    In file included from /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8.h:24:
    In file included from /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-array-buffer.h:13:
    In file included from /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-object.h:9:
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-maybe.h:106:45: error: no template named 'is_lvalue_reference_v' in namespace 'std'; did you mean 'is_lvalue_reference'?
      template <class U, std::enable_if_t<!std::is_lvalue_reference_v<U>>*>
                                           ~~~~~^~~~~~~~~~~~~~~~~~~~~
                                                is_lvalue_reference
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/type_traits:910:29: note: 'is_lvalue_reference' declared here
    struct _LIBCPP_TEMPLATE_VIS is_lvalue_reference : _BoolConstant<__is_lvalue_reference(_Tp)> { };
                                ^
    In file included from ../src/binding.cc:1:
    In file included from /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/node.h:69:
    In file included from /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8.h:24:
    In file included from /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-array-buffer.h:13:
    In file included from /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-object.h:9:
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-maybe.h:106:69: error: expected '(' for function-style cast or type construction
      template <class U, std::enable_if_t<!std::is_lvalue_reference_v<U>>*>
                                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-maybe.h:123:43: error: no template named 'is_lvalue_reference_v' in namespace 'std'; did you mean 'is_lvalue_reference'?
    template <class T, std::enable_if_t<!std::is_lvalue_reference_v<T>>* = nullptr>
                                         ~~~~~^~~~~~~~~~~~~~~~~~~~~
                                              is_lvalue_reference
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/type_traits:910:29: note: 'is_lvalue_reference' declared here
    struct _LIBCPP_TEMPLATE_VIS is_lvalue_reference : _BoolConstant<__is_lvalue_reference(_Tp)> { };
                                ^
    In file included from ../src/binding.cc:1:
    In file included from /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/node.h:69:
    In file included from /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8.h:24:
    In file included from /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-array-buffer.h:13:
    In file included from /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-object.h:9:
    /Users/nhu-ductrungnguyen/.electron-gyp/21.3.0/include/node/v8-maybe.h:123:67: error: expected '(' for function-style cast or type construction
    template <class T, std::enable_if_t<!std::is_lvalue_reference_v<T>>* = nullptr>
                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    21 warnings and 4 errors generated.
    make: *** [Release/obj.target/cpufeatures/src/binding.o] Error 1
    gyp ERR! build error
    gyp ERR! stack Error: `make` failed with exit code: 2
    gyp ERR! stack     at ChildProcess.onExit (/Users/nhu-ductrungnguyen/.nvm/versions/node/v16.15.0/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 Process.ChildProcess._handle.onexit (node:internal/child_process:291:12)
    gyp ERR! System Darwin 22.1.0
    gyp ERR! command "/Users/nhu-ductrungnguyen/.nvm/versions/node/v16.15.0/bin/node" "/Users/nhu-ductrungnguyen/.nvm/versions/node/v16.15.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /Users/nhu-ductrungnguyen/Test/electron-boilerplate/node_modules/cpu-features
    gyp ERR! node -v v16.15.0
    gyp ERR! node-gyp -v v9.0.0
    gyp ERR! not ok
error Command failed with exit code 1.

                                             command=/Users/nhu-ductrungnguyen/.nvm/versions/node/v16.15.0/bin/node /Users/nhu-ductrungnguyen/.yarn/bin/yarn.js run install
                                             workingDir=/Users/nhu-ductrungnguyen/Test/electron-boilerplate/node_modules/cpu-features
✨  Done in 26.59s.

According to Electron 20 release notes, we need to Use node-gyp >=8.4.0 and electron-rebuild >=3.2.9 for when rebuilding native modules. Even with that, the same error happens, I guess that all rebuild will use node-gyp which gives the error above. The reproduction is below

electron-boilerplate.zip

I believe we already bumped cpu-features in the past (https://github.com/apocas/dockerode/issues/656).

Could you please advise me what to follow to resolve the issue? Thanks in advance

trungutt avatar Nov 20 '22 21:11 trungutt