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

tools: allow single JS file for --link-module #28443

Closed
wants to merge 3 commits into from

Commits on Aug 12, 2019

  1. tools: allow single JS file for --link-module

    The description for the --link-module configuration option is as
    follows:
    $ ./configure --help | grep -A 5 'link-module'
      --link-module=LINKED_MODULE
                          Path to a JS file to be bundled in the binary as a
                          builtin. This module will be referenced by path
                          without extension; e.g. /root/x/y.js will be
                          referenced via require('root/x/y'). Can be used
                          multiple times
    
    This lead me to think that it was possible to specify a file like this:
    $ ./configure --link-module=something.js
    $ NODE_DEBUG=mkcodecache make -j8
    
    This will lead to a compilation error as an entry in the source_ map in
    node_javascript.cc will end up having an empty string as its key:
    source_.emplace("", UnionBytes{_raw, 105});
    
    This will then be used by CodeCacheBuilder when it iterates over the
    module ids, which will lead to the following compilation errors:
    
    /node/out/Release/obj/gen/node_code_cache.cc:12:23: warning:
    ISO C++17 does not allow a decomposition group to be
    empty [-Wempty-decomposition]
    static const uint8_t [] = {
                          ^
    /node/out/Release/obj/gen/node_code_cache.cc:12:22: warning:
    decomposition declarations are a C++17 extension [-Wc++17-extensions]
    static const uint8_t [] = {
                         ^~
    /node/out/Release/obj/gen/node_code_cache.cc:12:1: error:
    decomposition declaration cannot be declared 'static'
    static const uint8_t [] = {
    ^~~~~~
    /node/out/Release/obj/gen/node_code_cache.cc:12:22: error:
    decomposition declaration cannot be declared with type 'const uint8_t'
    (aka 'const unsigned char'); declared type must be 'auto' or
    reference to 'auto'
    static const uint8_t [] = {
                         ^
    /node/out/Release/obj/gen/node_code_cache.cc:12:22: error:
    excess elements in scalar initializer
    static const uint8_t [] = {
                         ^
    /node/out/Release/obj/gen/node_code_cache.cc:660:7: error:
    expected expression
          ,
          ^
    /node/out/Release/obj/gen/node_code_cache.cc:661:24: error:
    no matching function for call to 'arraysize'
          static_cast<int>(arraysize()), policy
                           ^~~~~~~~~
    ../src/util.h:667:18: note: candidate function template not viable:
    requires 1 argument, but 0 were provided
    constexpr size_t arraysize(const T (&)[N]) {
                     ^
    2 warnings and 5 errors generated.
    
    This commit suggests that passing a single file be allowed by modifying
    tools/js2c.py, or alternatively raise an Exception with an message that
    indicates the cause of this.
    danbev committed Aug 12, 2019
    Configuration menu
    Copy the full SHA
    ae47f11 View commit details
    Browse the repository at this point in the history
  2. squash: add test for js2c.py

    danbev committed Aug 12, 2019
    Configuration menu
    Copy the full SHA
    d1dae25 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    a656ed3 View commit details
    Browse the repository at this point in the history