diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index 1cd7c10e..d3de970c 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -149,7 +149,10 @@ jobs: touch "${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/${CLANG_VERSION}/lib/linux/aarch64/libgcc.a" chmod 777 "${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/${CLANG_VERSION}/lib/linux/aarch64/libgcc.a" echo "INPUT(-lunwind)" > "${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/${CLANG_VERSION}/lib/linux/aarch64/libgcc.a" - export LDFLAGS="--target=aarch64-linux-android24" + export LDFLAGS="-fuse-ld=lld" + export CC=aarch64-linux-android24-clang + export CXX=aarch64-linux-android24-clang++ + export CMAKE_TOOLCHAIN_FILE_aarch64_linux_android="$(pwd)/cmake/android-determine.cmake" yarn build --target aarch64-linux-android name: stable - ${{ matrix.settings.target }} - node@20 diff --git a/cmake/android-determine.cmake b/cmake/android-determine.cmake new file mode 100644 index 00000000..5294e56a --- /dev/null +++ b/cmake/android-determine.cmake @@ -0,0 +1,7 @@ +set(NDK_ARCH_arm64_ABI "arm64-v8a") +set(NDK_ARCH_aarch64_ABI "arm64-v8a") +set(NDK_ARCH_arm_ABI "armeabi") +set(NDK_ARCH_mips_ABI "mips") +set(NDK_ARCH_mips64_ABI "mips64") +set(NDK_ARCH_x86_ABI "x86") +set(NDK_ARCH_x86_64_ABI "x86_64") \ No newline at end of file diff --git a/load-image.js b/load-image.js index 2ee6b0e0..187d8cb3 100644 --- a/load-image.js +++ b/load-image.js @@ -61,14 +61,18 @@ function makeRequest(url, resolve, reject, redirectCount, requestOptions) { lib .get(url.toString(), requestOptions || {}, (res) => { - const shouldRedirect = REDIRECT_STATUSES.has(res.statusCode) && typeof res.headers.location === 'string' - if (shouldRedirect && redirectCount > 0) - return makeRequest(new URL(res.headers.location), resolve, reject, redirectCount - 1, requestOptions) - if (typeof res.statusCode === 'number' && (res.statusCode < 200 || res.statusCode >= 300)) { - return reject(new Error(`remote source rejected with status code ${res.statusCode}`)) + try { + const shouldRedirect = REDIRECT_STATUSES.has(res.statusCode) && typeof res.headers.location === 'string' + if (shouldRedirect && redirectCount > 0) + return makeRequest(new URL(res.headers.location, url.origin), resolve, reject, redirectCount - 1, requestOptions) + if (typeof res.statusCode === 'number' && (res.statusCode < 200 || res.statusCode >= 300)) { + return reject(new Error(`remote source rejected with status code ${res.statusCode}`)) + } + + consumeStream(res).then(resolve, reject) + } catch (err) { + reject(err) } - - consumeStream(res).then(resolve, reject) }) .on('error', reject) }