Skip to content

[GR-44872] Windows environment variables are case insensitive and result in native build failures #6212

@zakkak

Description

@zakkak

Environment variable names are case insensitive on windows, so both $Env:Path and $Env:PATH in powershell evaluate to the same value, and in some cases Windows will use Path and in others PATH as the variable name in the environemnt...

GraalVM, however, only requires/propagates the uppercase PATH environment variable, which results in the following failure (originally reported in graalvm#483) when Windows use Path as the variable name:

========================================================================================================================
GraalVM Native Image: Generating 'quarkus-integration-test-resteasy-jackson-999-SNAPSHOT-runner' (executable)...
========================================================================================================================

[1/8] Initializing...                                                                                    (0.0s @ 0.22GB)
------------------------------------------------------------------------------------------------------------------------
                         0.7s (6.8% of total time) in 8 GCs | Peak RSS: 0.57GB | CPU load: 1.88
------------------------------------------------------------------------------------------------------------------------
Produced artifacts:
 D:\a\mandrel\mandrel\quarkus\integration-tests\resteasy-jackson\target\quarkus-integration-test-resteasy-jackson-999-SNAPSHOT-native-image-source-jar\svm_err_b_20230311T033426.745_pid1380.md (build_info)
========================================================================================================================
Failed generating 'quarkus-integration-test-resteasy-jackson-999-SNAPSHOT-runner' after 8.7s.

The build process encountered an unexpected error:

java.lang.NullPointerException: Cannot invoke "String.split(String)" because the return value of "java.lang.System.getenv(String)" is null
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.c.codegen.CCompilerInvoker.lookupSearchPath(CCompilerInvoker.java:515)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.c.codegen.CCompilerInvoker.getCCompilerPath(CCompilerInvoker.java:528)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.c.codegen.CCompilerInvoker.getCCompilerInfo(CCompilerInvoker.java:372)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.c.codegen.CCompilerInvoker.<init>(CCompilerInvoker.java:71)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.c.codegen.CCompilerInvoker$WindowsCCompilerInvoker.<init>(CCompilerInvoker.java:111)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.c.codegen.CCompilerInvoker.create(CCompilerInvoker.java:85)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.setupNativeImage(NativeImageGenerator.java:920)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:576)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:536)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:408)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:612)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.start(NativeImageGeneratorRunner.java:134)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:94)

cc @jerboaa

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions