Closed Nickoriuk closed 1 week ago
Oop, yeah this should be an easy fix
The only tricky part is that I need a good way to distinguish between emulated and native x64 (something like uname
or macOS' sysctl.proc_translated
)
But a quick patch that supports nodejs 20 and later is easy enough and I'll get to that later today
And running with -Dos.arch=x86_64
should allow running it until then
Would something like this Powershell command work?
(Get-WmiObject Win32_Processor).Architecture
It should output 12
for ARM64, 9
for x64 (or a few other values, listed here: https://learn.microsoft.com/en-us/windows/win32/cimwin32prov/win32-processor#properties)
I attempted the workaround of setting os.arch
but it did not have an effect.
PowerShell would probably work fine, I'll double-check if it's fast enough next week when my vacation starts
As for os.arch
could you check what's reported in java -XshowSettings -version
(I expect aarch64
but want to be certain 😇)
And if you clone this repository you should be able to use ./gradlew runParameterTest
to check, it'll run https://github.com/node-gradle/gradle-node-plugin/blob/main/src/main/kotlin/com/github/gradle/node/util/PlatformHelper.kt and tell you the different results
(There's also https://github.com/node-gradle/gradle-node-plugin/blob/main/src/test/groovy/com/github/gradle/node/util/PlatformHelperTest.groovy which I need to update now that nodejs has ARM builds for Windows)
java -XshowSettings -version
reports:
os.arch = aarch64
os.name = Windows 11
os.version = 10.0
I can't run runParameterTest
as is, as it has the uname
command invocation too. However, this is what I get with a tweak for the mentioned powershell command:
--- a/src/main/kotlin/com/github/gradle/node/util/PlatformHelper.kt (revision 92e1d218789d9c69266ad58328a6a698e80ec94e)
+++ b/src/main/kotlin/com/github/gradle/node/util/PlatformHelper.kt (date 1721287621026)
@@ -36,7 +36,9 @@
fun main(args: Array<String>) {
val osName = System.getProperty("os.name")
val osArch = System.getProperty("os.arch")
- val uname = { execute("uname", "-m", timeout = 10) }
+ val uname = { execute("powershell", "-command", "(Get-WmiObject Win32_Processor).Architecture", timeout = 10)
+ .mapIf({it == "12"}) { "arm64" }
+ .mapIf({it == "9"}) { "x64" } }
val platform = parsePlatform(osName, osArch, uname)
println("Your os.name is: '${osName}' and is parsed as: '${platform.name}'")
Outputs:
Your os.name is: 'Windows 11' and is parsed as: 'win'
Your os.arch is: 'aarch64' and is parsed as: 'arm64'
You're on windows (isWindows == true)
Process finished with exit code 0
This is fixed in 7.1.0
Hello,
I am encountering an error when attempting to apply this plugin to my project on a Windows ARM64 device. The same plugin configuration on a Windows x64 device builds successfully. The error from the build is as follows:
This error can be reproduced with just this for the
build.gradle.kts
:Device / Version information:
Full stack trace when building with
./gradlew.bat build --stacktrace
: