mirror of
https://github.com/denoland/deno.git
synced 2024-11-24 15:19:26 -05:00
This reverts commit 4e8f5875bc
.
Reverting because, it caused a failure during v1.45.3 publish:
https://github.com/denoland/deno/actions/runs/10048730693/job/27773718095
CC @Mutefish0
This commit is contained in:
parent
3f8efe5289
commit
8a7ed17ea2
5 changed files with 12 additions and 174 deletions
47
cli/build.rs
47
cli/build.rs
|
@ -404,28 +404,16 @@ fn main() {
|
||||||
);
|
);
|
||||||
|
|
||||||
#[cfg(target_os = "windows")]
|
#[cfg(target_os = "windows")]
|
||||||
{
|
println!(
|
||||||
println!(
|
"cargo:rustc-link-arg-bin=deno=/DEF:{}",
|
||||||
"cargo:rustc-link-arg-bin=deno=/DEF:{}",
|
symbols_path.display()
|
||||||
symbols_path.display()
|
);
|
||||||
);
|
|
||||||
println!(
|
|
||||||
"cargo:rustc-link-arg-bin=denort=/DEF:{}",
|
|
||||||
symbols_path.display()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
{
|
println!(
|
||||||
println!(
|
"cargo:rustc-link-arg-bin=deno=-Wl,-exported_symbols_list,{}",
|
||||||
"cargo:rustc-link-arg-bin=deno=-Wl,-exported_symbols_list,{}",
|
symbols_path.display()
|
||||||
symbols_path.display()
|
);
|
||||||
);
|
|
||||||
println!(
|
|
||||||
"cargo:rustc-link-arg-bin=denort=-Wl,-exported_symbols_list,{}",
|
|
||||||
symbols_path.display()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
{
|
{
|
||||||
|
@ -438,30 +426,19 @@ fn main() {
|
||||||
{
|
{
|
||||||
println!("cargo:warning=Compiling with all symbols exported, this will result in a larger binary. Please use glibc 2.35 or later for an optimised build.");
|
println!("cargo:warning=Compiling with all symbols exported, this will result in a larger binary. Please use glibc 2.35 or later for an optimised build.");
|
||||||
println!("cargo:rustc-link-arg-bin=deno=-rdynamic");
|
println!("cargo:rustc-link-arg-bin=deno=-rdynamic");
|
||||||
println!("cargo:rustc-link-arg-bin=denort=-rdynamic");
|
|
||||||
} else {
|
} else {
|
||||||
println!(
|
println!(
|
||||||
"cargo:rustc-link-arg-bin=deno=-Wl,--export-dynamic-symbol-list={}",
|
"cargo:rustc-link-arg-bin=deno=-Wl,--export-dynamic-symbol-list={}",
|
||||||
symbols_path.display()
|
symbols_path.display()
|
||||||
);
|
);
|
||||||
println!(
|
|
||||||
"cargo:rustc-link-arg-bin=denort=-Wl,--export-dynamic-symbol-list={}",
|
|
||||||
symbols_path.display()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_os = "android")]
|
#[cfg(target_os = "android")]
|
||||||
{
|
println!(
|
||||||
println!(
|
"cargo:rustc-link-arg-bin=deno=-Wl,--export-dynamic-symbol-list={}",
|
||||||
"cargo:rustc-link-arg-bin=deno=-Wl,--export-dynamic-symbol-list={}",
|
symbols_path.display()
|
||||||
symbols_path.display()
|
);
|
||||||
);
|
|
||||||
println!(
|
|
||||||
"cargo:rustc-link-arg-bin=denort=-Wl,--export-dynamic-symbol-list={}",
|
|
||||||
symbols_path.display()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// To debug snapshot issues uncomment:
|
// To debug snapshot issues uncomment:
|
||||||
// op_fetch_asset::trace_serializer();
|
// op_fetch_asset::trace_serializer();
|
||||||
|
|
|
@ -15,7 +15,6 @@ mod errors;
|
||||||
mod file_fetcher;
|
mod file_fetcher;
|
||||||
mod http_util;
|
mod http_util;
|
||||||
mod js;
|
mod js;
|
||||||
mod napi;
|
|
||||||
mod node;
|
mod node;
|
||||||
mod npm;
|
mod npm;
|
||||||
mod resolver;
|
mod resolver;
|
||||||
|
|
|
@ -1285,66 +1285,3 @@ fn standalone_jsr_dynamic_import() {
|
||||||
output.assert_exit_code(0);
|
output.assert_exit_code(0);
|
||||||
output.assert_matches_text("Hello world\n");
|
output.assert_matches_text("Hello world\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn standalone_require_node_addons() {
|
|
||||||
#[cfg(not(target_os = "windows"))]
|
|
||||||
{
|
|
||||||
let context = TestContextBuilder::for_jsr().build();
|
|
||||||
let dir = context.temp_dir();
|
|
||||||
let libout = dir.path().join("module.node");
|
|
||||||
|
|
||||||
let cc = context
|
|
||||||
.new_command()
|
|
||||||
.name("cc")
|
|
||||||
.current_dir(util::testdata_path());
|
|
||||||
|
|
||||||
#[cfg(not(target_os = "macos"))]
|
|
||||||
let c_module = cc
|
|
||||||
.arg("./compile/napi/module.c")
|
|
||||||
.arg("-shared")
|
|
||||||
.arg("-o")
|
|
||||||
.arg(&libout);
|
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
|
||||||
let c_module = {
|
|
||||||
cc.arg("./compile/napi/module.c")
|
|
||||||
.arg("-undefined")
|
|
||||||
.arg("dynamic_lookup")
|
|
||||||
.arg("-shared")
|
|
||||||
.arg("-Wl,-no_fixup_chains")
|
|
||||||
.arg("-dynamic")
|
|
||||||
.arg("-o")
|
|
||||||
.arg(&libout)
|
|
||||||
};
|
|
||||||
let c_module_output = c_module.output().unwrap();
|
|
||||||
|
|
||||||
assert!(c_module_output.status.success());
|
|
||||||
|
|
||||||
let exe = if cfg!(windows) {
|
|
||||||
dir.path().join("main.exe")
|
|
||||||
} else {
|
|
||||||
dir.path().join("main")
|
|
||||||
};
|
|
||||||
|
|
||||||
context
|
|
||||||
.new_command()
|
|
||||||
.env("NPM_CONFIG_REGISTRY", "https://registry.npmjs.org/")
|
|
||||||
.args_vec([
|
|
||||||
"compile",
|
|
||||||
"--allow-read",
|
|
||||||
"--allow-ffi",
|
|
||||||
"--output",
|
|
||||||
&exe.to_string_lossy(),
|
|
||||||
"./compile/napi/main.ts",
|
|
||||||
])
|
|
||||||
.run()
|
|
||||||
.skip_output_check()
|
|
||||||
.assert_exit_code(0);
|
|
||||||
|
|
||||||
let output = context.new_command().name(&exe).arg(&libout).run();
|
|
||||||
|
|
||||||
output.assert_exit_code(0);
|
|
||||||
output.assert_matches_text("{}\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
7
tests/testdata/compile/napi/main.ts
vendored
7
tests/testdata/compile/napi/main.ts
vendored
|
@ -1,7 +0,0 @@
|
||||||
import Module from "node:module";
|
|
||||||
|
|
||||||
const mod = new Module("");
|
|
||||||
|
|
||||||
const filepath = Deno.args[0];
|
|
||||||
|
|
||||||
console.log(mod.require(filepath));
|
|
68
tests/testdata/compile/napi/module.c
vendored
68
tests/testdata/compile/napi/module.c
vendored
|
@ -1,68 +0,0 @@
|
||||||
typedef struct napi_module {
|
|
||||||
int nm_version;
|
|
||||||
unsigned int nm_flags;
|
|
||||||
const char* nm_filename;
|
|
||||||
void* nm_register_func;
|
|
||||||
const char* nm_modname;
|
|
||||||
void* nm_priv;
|
|
||||||
void* reserved[4];
|
|
||||||
} napi_module;
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#define NAPI_EXTERN __declspec(dllexport)
|
|
||||||
#define NAPI_CDECL __cdecl
|
|
||||||
#else
|
|
||||||
#define NAPI_EXTERN __attribute__((visibility("default")))
|
|
||||||
#define NAPI_CDECL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
NAPI_EXTERN void NAPI_CDECL
|
|
||||||
napi_module_register(napi_module* mod);
|
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
#if defined(__cplusplus)
|
|
||||||
#define NAPI_C_CTOR(fn) \
|
|
||||||
static void NAPI_CDECL fn(void); \
|
|
||||||
namespace { \
|
|
||||||
struct fn##_ { \
|
|
||||||
fn##_() { fn(); } \
|
|
||||||
} fn##_v_; \
|
|
||||||
} \
|
|
||||||
static void NAPI_CDECL fn(void)
|
|
||||||
#else // !defined(__cplusplus)
|
|
||||||
#pragma section(".CRT$XCU", read)
|
|
||||||
// The NAPI_C_CTOR macro defines a function fn that is called during CRT
|
|
||||||
// initialization.
|
|
||||||
// C does not support dynamic initialization of static variables and this code
|
|
||||||
// simulates C++ behavior. Exporting the function pointer prevents it from being
|
|
||||||
// optimized. See for details:
|
|
||||||
// https://docs.microsoft.com/en-us/cpp/c-runtime-library/crt-initialization?view=msvc-170
|
|
||||||
#define NAPI_C_CTOR(fn) \
|
|
||||||
static void NAPI_CDECL fn(void); \
|
|
||||||
__declspec(dllexport, allocate(".CRT$XCU")) void(NAPI_CDECL * fn##_)(void) = \
|
|
||||||
fn; \
|
|
||||||
static void NAPI_CDECL fn(void)
|
|
||||||
#endif // defined(__cplusplus)
|
|
||||||
#else
|
|
||||||
#define NAPI_C_CTOR(fn) \
|
|
||||||
static void fn(void) __attribute__((constructor)); \
|
|
||||||
static void fn(void)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define NAPI_MODULE_TEST(modname, regfunc) \
|
|
||||||
static napi_module _module = { \
|
|
||||||
1, \
|
|
||||||
0, \
|
|
||||||
__FILE__, \
|
|
||||||
regfunc, \
|
|
||||||
#modname, \
|
|
||||||
0, \
|
|
||||||
{0}, \
|
|
||||||
}; \
|
|
||||||
NAPI_C_CTOR(_register_##modname) { napi_module_register(&_module); } \
|
|
||||||
|
|
||||||
void* init(void* env __attribute__((unused)), void* exports) {
|
|
||||||
return exports;
|
|
||||||
}
|
|
||||||
|
|
||||||
NAPI_MODULE_TEST(TEST_NAPI_MODULE_NAME, init)
|
|
Loading…
Reference in a new issue