summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorcions <gh.cions@gmail.com>2024-01-10 22:04:14 +0900
committerGitHub <noreply@github.com>2024-01-10 06:04:14 -0700
commit881a62869db13199eff30231d4299d36faf143df (patch)
treee739decaa38309910485c0808b25df9a1e560534 /ext
parent1bafde9cd03f42f490cf0e6e504a5606ac6b634e (diff)
fix: android support (#19437)
<!-- Before submitting a PR, please read https://deno.com/manual/contributing 1. Give the PR a descriptive title. Examples of good title: - fix(std/http): Fix race condition in server - docs(console): Update docstrings - feat(doc): Handle nested reexports Examples of bad title: - fix #7123 - update docs - fix bugs 2. Ensure there is a related issue and it is referenced in the PR text. 3. Ensure there are tests that cover the changes. 4. Ensure `cargo test` passes. 5. Ensure `./tools/format.js` passes without changing files. 6. Ensure `./tools/lint.js` passes. 7. Open as a draft PR if your work is still in progress. The CI won't run all steps, but you can add '[ci]' to a commit message to force it to. 8. If you would like to run the benchmarks on the CI, add the 'ci-bench' label. --> --------- Signed-off-by: Matt Mastracci <matthew@mastracci.com> Co-authored-by: Matt Mastracci <matthew@mastracci.com>
Diffstat (limited to 'ext')
-rw-r--r--ext/fs/30_fs.js9
-rw-r--r--ext/fs/std_fs.rs2
-rw-r--r--ext/net/ops.rs8
-rw-r--r--ext/net/ops_tls.rs2
-rw-r--r--ext/node/ops/os/cpus.rs2
-rw-r--r--ext/node/polyfills/_util/os.ts10
-rw-r--r--ext/node/polyfills/internal_binding/constants.ts2
-rw-r--r--ext/node/polyfills/internal_binding/uv.ts4
-rw-r--r--ext/node/polyfills/os.ts4
9 files changed, 31 insertions, 12 deletions
diff --git a/ext/fs/30_fs.js b/ext/fs/30_fs.js
index b0d3beeda..3b4392006 100644
--- a/ext/fs/30_fs.js
+++ b/ext/fs/30_fs.js
@@ -260,7 +260,7 @@ function createByteStruct(types) {
// types can be "date", "bool" or "u64".
let offset = 0;
let str =
- 'const unix = Deno.build.os === "darwin" || Deno.build.os === "linux" || Deno.build.os === "openbsd" || Deno.build.os === "freebsd"; return {';
+ 'const unix = Deno.build.os === "darwin" || Deno.build.os === "linux" || Deno.build.os === "android" || Deno.build.os === "openbsd" || Deno.build.os === "freebsd"; return {';
const typeEntries = ObjectEntries(types);
for (let i = 0; i < typeEntries.length; ++i) {
let { 0: name, 1: type } = typeEntries[i];
@@ -325,8 +325,11 @@ const { 0: statStruct, 1: statBuf } = createByteStruct({
});
function parseFileInfo(response) {
- const unix = core.build.os === "darwin" || core.build.os === "linux" ||
- core.build.os === "freebsd" || core.build.os === "openbsd";
+ const unix = core.build.os === "darwin" ||
+ core.build.os === "linux" ||
+ core.build.os === "android" ||
+ core.build.os === "freebsd" ||
+ core.build.os === "openbsd";
return {
isFile: response.isFile,
isDirectory: response.isDirectory,
diff --git a/ext/fs/std_fs.rs b/ext/fs/std_fs.rs
index d52879394..bb8d114a0 100644
--- a/ext/fs/std_fs.rs
+++ b/ext/fs/std_fs.rs
@@ -62,7 +62,7 @@ impl FileSystem for RealFs {
let _ = umask(prev);
prev
};
- #[cfg(target_os = "linux")]
+ #[cfg(any(target_os = "android", target_os = "linux"))]
{
Ok(r.bits())
}
diff --git a/ext/net/ops.rs b/ext/net/ops.rs
index 728c42bf6..4b2452935 100644
--- a/ext/net/ops.rs
+++ b/ext/net/ops.rs
@@ -378,7 +378,7 @@ where
#[cfg(not(windows))]
socket.set_reuse_address(true)?;
if reuse_port {
- #[cfg(target_os = "linux")]
+ #[cfg(any(target_os = "android", target_os = "linux"))]
socket.set_reuse_port(true)?;
}
let socket_addr = socket2::SockAddr::from(addr);
@@ -429,7 +429,11 @@ where
// are different from the BSDs: it _shares_ the port rather than steal it
// from the current listener. While useful, it's not something we can
// emulate on other platforms so we don't enable it.
- #[cfg(any(target_os = "windows", target_os = "linux"))]
+ #[cfg(any(
+ target_os = "windows",
+ target_os = "android",
+ target_os = "linux"
+ ))]
socket_tmp.set_reuse_address(true)?;
#[cfg(all(unix, not(target_os = "linux")))]
socket_tmp.set_reuse_port(true)?;
diff --git a/ext/net/ops_tls.rs b/ext/net/ops_tls.rs
index c0043c895..a36443977 100644
--- a/ext/net/ops_tls.rs
+++ b/ext/net/ops_tls.rs
@@ -471,7 +471,7 @@ where
#[cfg(not(windows))]
socket.set_reuse_address(true)?;
if args.reuse_port {
- #[cfg(target_os = "linux")]
+ #[cfg(any(target_os = "android", target_os = "linux"))]
socket.set_reuse_port(true)?;
}
let socket_addr = socket2::SockAddr::from(bind_addr);
diff --git a/ext/node/ops/os/cpus.rs b/ext/node/ops/os/cpus.rs
index 5db929961..6c852dce7 100644
--- a/ext/node/ops/os/cpus.rs
+++ b/ext/node/ops/os/cpus.rs
@@ -236,7 +236,7 @@ pub fn cpu_info() -> Option<Vec<CpuInfo>> {
}
}
-#[cfg(target_os = "linux")]
+#[cfg(any(target_os = "android", target_os = "linux"))]
pub fn cpu_info() -> Option<Vec<CpuInfo>> {
use std::io::BufRead;
diff --git a/ext/node/polyfills/_util/os.ts b/ext/node/polyfills/_util/os.ts
index 2c01d5c6e..239419d91 100644
--- a/ext/node/polyfills/_util/os.ts
+++ b/ext/node/polyfills/_util/os.ts
@@ -3,9 +3,15 @@
import { core } from "ext:core/mod.js";
const ops = core.ops;
-export type OSType = "windows" | "linux" | "darwin" | "freebsd" | "openbsd";
+export type OSType =
+ | "windows"
+ | "linux"
+ | "android"
+ | "darwin"
+ | "freebsd"
+ | "openbsd";
export const osType: OSType = ops.op_node_build_os();
export const isWindows = osType === "windows";
-export const isLinux = osType === "linux";
+export const isLinux = osType === "linux" || osType === "android";
diff --git a/ext/node/polyfills/internal_binding/constants.ts b/ext/node/polyfills/internal_binding/constants.ts
index cb66ac5bd..69a2dffeb 100644
--- a/ext/node/polyfills/internal_binding/constants.ts
+++ b/ext/node/polyfills/internal_binding/constants.ts
@@ -330,7 +330,7 @@ if (buildOs === "darwin") {
PRIORITY_HIGHEST: -20,
},
};
-} else if (buildOs === "linux") {
+} else if (buildOs === "linux" || buildOs === "android") {
os = {
UV_UDP_REUSEADDR: 4,
dlopen: {
diff --git a/ext/node/polyfills/internal_binding/uv.ts b/ext/node/polyfills/internal_binding/uv.ts
index 08315b094..aa468a0a5 100644
--- a/ext/node/polyfills/internal_binding/uv.ts
+++ b/ext/node/polyfills/internal_binding/uv.ts
@@ -494,6 +494,8 @@ export const errorMap = new Map<number, [string, string]>(
? codeToErrorDarwin
: osType === "linux"
? codeToErrorLinux
+ : osType === "android"
+ ? codeToErrorLinux
: osType === "freebsd"
? codeToErrorFreebsd
: osType === "openbsd"
@@ -508,6 +510,8 @@ export const codeMap = new Map<string, number>(
? errorToCodeDarwin
: osType === "linux"
? errorToCodeLinux
+ : osType === "android"
+ ? errorToCodeLinux
: osType === "freebsd"
? errorToCodeFreebsd
: osType === "openbsd"
diff --git a/ext/node/polyfills/os.ts b/ext/node/polyfills/os.ts
index af3e69d64..5d354b38b 100644
--- a/ext/node/polyfills/os.ts
+++ b/ext/node/polyfills/os.ts
@@ -151,7 +151,7 @@ export function endianness(): "BE" | "LE" {
/** Return free memory amount */
export function freemem(): number {
- if (Deno.build.os === "linux") {
+ if (Deno.build.os === "linux" || Deno.build.os == "android") {
// On linux, use 'available' memory
// https://github.com/libuv/libuv/blob/a5c01d4de3695e9d9da34cfd643b5ff0ba582ea7/src/unix/linux.c#L2064
return Deno.systemMemoryInfo().available;
@@ -176,6 +176,7 @@ export function homedir(): string | null {
case "windows":
return Deno.env.get("USERPROFILE") || null;
case "linux":
+ case "android":
case "darwin":
case "freebsd":
case "openbsd":
@@ -310,6 +311,7 @@ export function type(): string {
case "windows":
return "Windows_NT";
case "linux":
+ case "android":
return "Linux";
case "darwin":
return "Darwin";