mirror of
https://github.com/denoland/deno.git
synced 2024-12-21 23:04:45 -05:00
fix(build) fix linux symbols export list format (#16313)
Fixes the error reported in #16304. > = note: /usr/bin/ld:/home/abotella/Projects/deno/cli/generated_symbol_exports_list_linux.def:1: syntax error in dynamic list collect2: error: ld returned 1 exit status This was caused by the format of the symbols list on Linux being malformed (as the error implies). The format is documented in ld's [VERSION](https://sourceware.org/binutils/docs/ld/VERSION.html) as well as: > --export-dynamic-symbol-list=file Specify a --export-dynamic-symbol for each pattern in the file. The format of the file is the same as the version node without scope and node name. See VERSION for more information. Previously, the format for the Linux symbols list was simply a list of symbols, now it follows the format: ``` { symbol_name_a; ...; symbol_name_z }; ```
This commit is contained in:
parent
9fe508dfb9
commit
d2c8b5f087
6 changed files with 19 additions and 154 deletions
|
@ -333,7 +333,11 @@ fn main() {
|
|||
}
|
||||
|
||||
let symbols_path = std::path::Path::new(
|
||||
format!("generated_symbol_exports_list_{}.def", env::consts::OS).as_str(),
|
||||
format!(
|
||||
"napi_sym/generated_symbol_exports_list_{}.def",
|
||||
env::consts::OS
|
||||
)
|
||||
.as_str(),
|
||||
)
|
||||
.canonicalize()
|
||||
.expect(
|
||||
|
|
|
@ -1,144 +0,0 @@
|
|||
node_api_create_syntax_error
|
||||
napi_make_callback
|
||||
napi_has_named_property
|
||||
napi_async_destroy
|
||||
napi_coerce_to_object
|
||||
napi_get_arraybuffer_info
|
||||
napi_detach_arraybuffer
|
||||
napi_get_undefined
|
||||
napi_reference_unref
|
||||
napi_fatal_error
|
||||
napi_open_callback_scope
|
||||
napi_close_callback_scope
|
||||
napi_get_value_uint32
|
||||
napi_create_function
|
||||
napi_create_arraybuffer
|
||||
napi_get_value_int64
|
||||
napi_get_all_property_names
|
||||
napi_resolve_deferred
|
||||
napi_is_detached_arraybuffer
|
||||
napi_create_string_utf8
|
||||
napi_create_threadsafe_function
|
||||
node_api_throw_syntax_error
|
||||
napi_create_bigint_int64
|
||||
napi_wrap
|
||||
napi_set_property
|
||||
napi_get_value_bigint_int64
|
||||
napi_open_handle_scope
|
||||
napi_create_error
|
||||
napi_create_buffer
|
||||
napi_cancel_async_work
|
||||
napi_is_exception_pending
|
||||
napi_acquire_threadsafe_function
|
||||
napi_create_external
|
||||
napi_get_threadsafe_function_context
|
||||
napi_get_null
|
||||
napi_create_string_utf16
|
||||
napi_get_value_bigint_uint64
|
||||
napi_module_register
|
||||
napi_is_typedarray
|
||||
napi_create_external_buffer
|
||||
napi_get_new_target
|
||||
napi_get_instance_data
|
||||
napi_close_handle_scope
|
||||
napi_get_value_string_utf16
|
||||
napi_get_property_names
|
||||
napi_is_arraybuffer
|
||||
napi_get_cb_info
|
||||
napi_define_properties
|
||||
napi_add_env_cleanup_hook
|
||||
node_api_get_module_file_name
|
||||
napi_get_node_version
|
||||
napi_create_int64
|
||||
napi_create_double
|
||||
napi_get_and_clear_last_exception
|
||||
napi_create_reference
|
||||
napi_get_typedarray_info
|
||||
napi_call_threadsafe_function
|
||||
napi_get_last_error_info
|
||||
napi_create_array_with_length
|
||||
napi_coerce_to_number
|
||||
napi_get_global
|
||||
napi_is_error
|
||||
napi_set_instance_data
|
||||
napi_create_typedarray
|
||||
napi_throw_type_error
|
||||
napi_has_property
|
||||
napi_get_value_external
|
||||
napi_create_range_error
|
||||
napi_typeof
|
||||
napi_ref_threadsafe_function
|
||||
napi_create_bigint_uint64
|
||||
napi_get_prototype
|
||||
napi_adjust_external_memory
|
||||
napi_release_threadsafe_function
|
||||
napi_delete_async_work
|
||||
napi_create_string_latin1
|
||||
napi_is_array
|
||||
napi_unref_threadsafe_function
|
||||
napi_throw_error
|
||||
napi_has_own_property
|
||||
napi_get_reference_value
|
||||
napi_remove_env_cleanup_hook
|
||||
napi_get_value_string_utf8
|
||||
napi_is_promise
|
||||
napi_get_boolean
|
||||
napi_run_script
|
||||
napi_get_element
|
||||
napi_get_named_property
|
||||
napi_get_buffer_info
|
||||
napi_get_value_bool
|
||||
napi_reference_ref
|
||||
napi_create_object
|
||||
napi_create_promise
|
||||
napi_create_int32
|
||||
napi_escape_handle
|
||||
napi_open_escapable_handle_scope
|
||||
napi_throw
|
||||
napi_get_value_double
|
||||
napi_set_named_property
|
||||
napi_call_function
|
||||
napi_create_date
|
||||
napi_object_freeze
|
||||
napi_get_uv_event_loop
|
||||
napi_get_value_string_latin1
|
||||
napi_reject_deferred
|
||||
napi_add_finalizer
|
||||
napi_create_array
|
||||
napi_delete_reference
|
||||
napi_get_date_value
|
||||
napi_create_dataview
|
||||
napi_get_version
|
||||
napi_define_class
|
||||
napi_is_date
|
||||
napi_remove_wrap
|
||||
napi_delete_property
|
||||
napi_instanceof
|
||||
napi_create_buffer_copy
|
||||
napi_delete_element
|
||||
napi_object_seal
|
||||
napi_queue_async_work
|
||||
napi_get_value_bigint_words
|
||||
napi_is_buffer
|
||||
napi_get_array_length
|
||||
napi_get_property
|
||||
napi_new_instance
|
||||
napi_set_element
|
||||
napi_create_bigint_words
|
||||
napi_strict_equals
|
||||
napi_is_dataview
|
||||
napi_close_escapable_handle_scope
|
||||
napi_get_dataview_info
|
||||
napi_get_value_int32
|
||||
napi_unwrap
|
||||
napi_throw_range_error
|
||||
napi_coerce_to_bool
|
||||
napi_create_uint32
|
||||
napi_has_element
|
||||
napi_create_external_arraybuffer
|
||||
napi_create_symbol
|
||||
napi_coerce_to_string
|
||||
napi_create_type_error
|
||||
napi_fatal_exception
|
||||
napi_create_async_work
|
||||
napi_async_init
|
1
cli/napi_sym/generated_symbol_exports_list_linux.def
Normal file
1
cli/napi_sym/generated_symbol_exports_list_linux.def
Normal file
|
@ -0,0 +1 @@
|
|||
{ "node_api_create_syntax_error"; "napi_make_callback"; "napi_has_named_property"; "napi_async_destroy"; "napi_coerce_to_object"; "napi_get_arraybuffer_info"; "napi_detach_arraybuffer"; "napi_get_undefined"; "napi_reference_unref"; "napi_fatal_error"; "napi_open_callback_scope"; "napi_close_callback_scope"; "napi_get_value_uint32"; "napi_create_function"; "napi_create_arraybuffer"; "napi_get_value_int64"; "napi_get_all_property_names"; "napi_resolve_deferred"; "napi_is_detached_arraybuffer"; "napi_create_string_utf8"; "napi_create_threadsafe_function"; "node_api_throw_syntax_error"; "napi_create_bigint_int64"; "napi_wrap"; "napi_set_property"; "napi_get_value_bigint_int64"; "napi_open_handle_scope"; "napi_create_error"; "napi_create_buffer"; "napi_cancel_async_work"; "napi_is_exception_pending"; "napi_acquire_threadsafe_function"; "napi_create_external"; "napi_get_threadsafe_function_context"; "napi_get_null"; "napi_create_string_utf16"; "napi_get_value_bigint_uint64"; "napi_module_register"; "napi_is_typedarray"; "napi_create_external_buffer"; "napi_get_new_target"; "napi_get_instance_data"; "napi_close_handle_scope"; "napi_get_value_string_utf16"; "napi_get_property_names"; "napi_is_arraybuffer"; "napi_get_cb_info"; "napi_define_properties"; "napi_add_env_cleanup_hook"; "node_api_get_module_file_name"; "napi_get_node_version"; "napi_create_int64"; "napi_create_double"; "napi_get_and_clear_last_exception"; "napi_create_reference"; "napi_get_typedarray_info"; "napi_call_threadsafe_function"; "napi_get_last_error_info"; "napi_create_array_with_length"; "napi_coerce_to_number"; "napi_get_global"; "napi_is_error"; "napi_set_instance_data"; "napi_create_typedarray"; "napi_throw_type_error"; "napi_has_property"; "napi_get_value_external"; "napi_create_range_error"; "napi_typeof"; "napi_ref_threadsafe_function"; "napi_create_bigint_uint64"; "napi_get_prototype"; "napi_adjust_external_memory"; "napi_release_threadsafe_function"; "napi_delete_async_work"; "napi_create_string_latin1"; "napi_is_array"; "napi_unref_threadsafe_function"; "napi_throw_error"; "napi_has_own_property"; "napi_get_reference_value"; "napi_remove_env_cleanup_hook"; "napi_get_value_string_utf8"; "napi_is_promise"; "napi_get_boolean"; "napi_run_script"; "napi_get_element"; "napi_get_named_property"; "napi_get_buffer_info"; "napi_get_value_bool"; "napi_reference_ref"; "napi_create_object"; "napi_create_promise"; "napi_create_int32"; "napi_escape_handle"; "napi_open_escapable_handle_scope"; "napi_throw"; "napi_get_value_double"; "napi_set_named_property"; "napi_call_function"; "napi_create_date"; "napi_object_freeze"; "napi_get_uv_event_loop"; "napi_get_value_string_latin1"; "napi_reject_deferred"; "napi_add_finalizer"; "napi_create_array"; "napi_delete_reference"; "napi_get_date_value"; "napi_create_dataview"; "napi_get_version"; "napi_define_class"; "napi_is_date"; "napi_remove_wrap"; "napi_delete_property"; "napi_instanceof"; "napi_create_buffer_copy"; "napi_delete_element"; "napi_object_seal"; "napi_queue_async_work"; "napi_get_value_bigint_words"; "napi_is_buffer"; "napi_get_array_length"; "napi_get_property"; "napi_new_instance"; "napi_set_element"; "napi_create_bigint_words"; "napi_strict_equals"; "napi_is_dataview"; "napi_close_escapable_handle_scope"; "napi_get_dataview_info"; "napi_get_value_int32"; "napi_unwrap"; "napi_throw_range_error"; "napi_coerce_to_bool"; "napi_create_uint32"; "napi_has_element"; "napi_create_external_arraybuffer"; "napi_create_symbol"; "napi_coerce_to_string"; "napi_create_type_error"; "napi_fatal_exception"; "napi_create_async_work"; "napi_async_init"; };
|
|
@ -141,4 +141,4 @@ _napi_coerce_to_string
|
|||
_napi_create_type_error
|
||||
_napi_fatal_exception
|
||||
_napi_create_async_work
|
||||
_napi_async_init
|
||||
_napi_async_init
|
|
@ -143,4 +143,4 @@ EXPORTS
|
|||
napi_create_type_error
|
||||
napi_fatal_exception
|
||||
napi_create_async_work
|
||||
napi_async_init
|
||||
napi_async_init
|
|
@ -5,15 +5,19 @@ import exports from "../../cli/napi_sym/symbol_exports.json" assert {
|
|||
type: "json",
|
||||
};
|
||||
|
||||
for await (const os of ["linux", "macos", "windows"]) {
|
||||
let def = os === "windows" ? "LIBRARY\nEXPORTS\n" : "";
|
||||
const prefix = os === "windows" ? " " : os === "macos" ? "_" : "";
|
||||
for (const symbol of exports.symbols) {
|
||||
def += `${prefix}${symbol}\n`;
|
||||
}
|
||||
const symbolExportLists = {
|
||||
linux: `{ ${exports.symbols.map((s) => `"${s}"`).join("; ")}; };`,
|
||||
windows: `LIBRARY\nEXPORTS\n${
|
||||
exports.symbols
|
||||
.map((symbol) => " " + symbol)
|
||||
.join("\n")
|
||||
}`,
|
||||
macos: exports.symbols.map((symbol) => "_" + symbol).join("\n"),
|
||||
};
|
||||
|
||||
for await (const [os, def] of Object.entries(symbolExportLists)) {
|
||||
const defUrl = new URL(
|
||||
`../../cli/generated_symbol_exports_list_${os}.def`,
|
||||
`../../cli/napi_sym/generated_symbol_exports_list_${os}.def`,
|
||||
import.meta.url,
|
||||
);
|
||||
await Deno.writeTextFile(defUrl.pathname, def, { create: true });
|
||||
|
|
Loading…
Reference in a new issue