1414import  org .elasticsearch .gradle .Architecture ;
1515import  org .elasticsearch .gradle .OS ;
1616import  org .elasticsearch .gradle .Version ;
17- import  org .elasticsearch .gradle .VersionProperties ;
1817import  org .elasticsearch .gradle .internal .BwcVersions ;
1918import  org .elasticsearch .gradle .internal .Jdk ;
2019import  org .elasticsearch .gradle .internal .JdkDownloadPlugin ;
@@ -108,7 +107,6 @@ public GlobalBuildInfoPlugin(
108107
109108    @ Override 
110109    public  void  apply (Project  project ) {
111- 
112110        if  (project  != project .getRootProject ()) {
113111            throw  new  IllegalStateException (this .getClass ().getName () + " can only be applied to the root project." );
114112        }
@@ -128,6 +126,8 @@ public void apply(Project project) {
128126        JavaVersion  minimumCompilerVersion  = JavaVersion .toVersion (versionProperties .get ("minimumCompilerJava" ));
129127        JavaVersion  minimumRuntimeVersion  = JavaVersion .toVersion (versionProperties .get ("minimumRuntimeJava" ));
130128
129+         Version  elasticsearchVersionProperty  = Version .fromString (versionProperties .getProperty ("elasticsearch" ));
130+ 
131131        RuntimeJava  runtimeJavaHome  = findRuntimeJavaHome ();
132132        AtomicReference <BwcVersions > cache  = new  AtomicReference <>();
133133        Provider <BwcVersions > bwcVersionsProvider  = providers .provider (
@@ -356,59 +356,65 @@ private static void assertMinimumCompilerVersion(JavaVersion minimumCompilerVers
356356    }
357357
358358    private  RuntimeJava  findRuntimeJavaHome () {
359+         Properties  versionProperties  = (Properties ) project .getExtensions ().getByName (VERSIONS_EXT );
360+         String  bundledJdkVersion  = versionProperties .getProperty ("bundled_jdk" );
361+         String  bundledJdkMajorVersion  = bundledJdkVersion .split ("[.+]" )[0 ];
362+ 
359363        String  runtimeJavaProperty  = System .getProperty ("runtime.java" );
360364        if  (runtimeJavaProperty  != null ) {
361365            if  (runtimeJavaProperty .toLowerCase ().endsWith ("-pre" )) {
362366                // handle pre-release builds differently due to lack of support in Gradle toolchain service 
363367                // we resolve them using JdkDownloadPlugin for now. 
364-                 return  resolvePreReleaseRuntimeJavaHome (runtimeJavaProperty );
368+                 return  resolvePreReleaseRuntimeJavaHome (runtimeJavaProperty ,  bundledJdkMajorVersion );
365369            } else  {
366-                 return  runtimeJavaHome (resolveJavaHomeFromToolChainService (runtimeJavaProperty ), true );
370+                 return  runtimeJavaHome (resolveJavaHomeFromToolChainService (runtimeJavaProperty ), true ,  bundledJdkMajorVersion );
367371            }
368372        }
369373        if  (System .getenv ("RUNTIME_JAVA_HOME" ) != null ) {
370-             return  runtimeJavaHome (providers .provider (() -> new  File (System .getenv ("RUNTIME_JAVA_HOME" ))), true );
374+             return  runtimeJavaHome (providers .provider (() -> new  File (System .getenv ("RUNTIME_JAVA_HOME" ))), true ,  bundledJdkVersion );
371375        }
372376        // fall back to tool chain if set. 
373377        String  env  = System .getenv ("JAVA_TOOLCHAIN_HOME" );
374378        boolean  explicitlySet  = env  != null ;
375379        Provider <File > javaHome  = explicitlySet 
376380            ? providers .provider (() -> new  File (env ))
377-             : resolveJavaHomeFromToolChainService (VersionProperties . getBundledJdkMajorVersion () );
378-         return  runtimeJavaHome (javaHome , explicitlySet );
381+             : resolveJavaHomeFromToolChainService (bundledJdkMajorVersion );
382+         return  runtimeJavaHome (javaHome , explicitlySet ,  bundledJdkMajorVersion );
379383    }
380384
381-     private  RuntimeJava  runtimeJavaHome (Provider <File > fileProvider , boolean  explicitlySet ) {
382-         return  runtimeJavaHome (fileProvider , explicitlySet , null );
385+     private  RuntimeJava  runtimeJavaHome (Provider <File > fileProvider , boolean  explicitlySet ,  String   bundledJdkMajorVersion ) {
386+         return  runtimeJavaHome (fileProvider , explicitlySet , null ,  null ,  bundledJdkMajorVersion );
383387    }
384388
385-     private  RuntimeJava  runtimeJavaHome (Provider <File > fileProvider , boolean  explicitlySet , String  preReleasePostfix ) {
389+     private  RuntimeJava  runtimeJavaHome (
390+         Provider <File > fileProvider ,
391+         boolean  explicitlySet ,
392+         String  preReleasePostfix ,
393+         Integer  buildNumber ,
394+         String  bundledJdkMajorVersion 
395+     ) {
386396        Provider <JavaVersion > javaVersion  = fileProvider .map (
387397            javaHome  -> determineJavaVersion (
388398                "runtime java.home" ,
389399                javaHome ,
390400                fileProvider .isPresent ()
391401                    ? JavaVersion .toVersion (getResourceContents ("/minimumRuntimeVersion" ))
392-                     : JavaVersion .toVersion (VersionProperties . getBundledJdkMajorVersion () )
402+                     : JavaVersion .toVersion (bundledJdkMajorVersion )
393403            )
394404        );
395405
396406        Provider <String > vendorDetails  = fileProvider .map (j  -> metadataDetector .getMetadata (getJavaInstallation (j )))
397407            .map (m  -> formatJavaVendorDetails (m ));
398408
399-         return  new  RuntimeJava (fileProvider , javaVersion , vendorDetails , explicitlySet , preReleasePostfix );
409+         return  new  RuntimeJava (fileProvider , javaVersion , vendorDetails , explicitlySet , preReleasePostfix ,  buildNumber );
400410    }
401411
402-     private  RuntimeJava  resolvePreReleaseRuntimeJavaHome (String  runtimeJavaProperty ) {
412+     private  RuntimeJava  resolvePreReleaseRuntimeJavaHome (String  runtimeJavaProperty ,  String   bundledJdkMajorVersion ) {
403413        var  major  = JavaLanguageVersion .of (Integer .parseInt (runtimeJavaProperty .substring (0 , runtimeJavaProperty .length () - 4 )));
404414        Integer  buildNumber  = Integer .getInteger ("runtime.java.build" );
405415        var  jdkbuild  = buildNumber  == null  ? findLatestPreReleaseBuild (major ) : findPreReleaseBuild (major , buildNumber );
406-         String  prVersionString  = String .format ("%d-%s+%d" , major .asInt (), jdkbuild .type (), jdkbuild .buildNumber ());
407-         return  resolveJavaHomeFromJdkDownloadPlugin (jdkbuild .type (), major , prVersionString );
408- 
409-     }
410- 
411-     private  RuntimeJava  resolveJavaHomeFromJdkDownloadPlugin (String  preReleaseType , JavaLanguageVersion  major , String  prVersionString ) {
416+         String  preReleaseType  = jdkbuild .type ();
417+         String  prVersionString  = String .format ("%d-%s+%d" , major .asInt (), preReleaseType , jdkbuild .buildNumber ());
412418        NamedDomainObjectContainer <Jdk > container  = (NamedDomainObjectContainer <Jdk >) project .getExtensions ().getByName ("jdks" );
413419        Jdk  jdk  = container .create (preReleaseType  + "_"  + major .asInt (), j  -> {
414420            j .setVersion (prVersionString );
@@ -420,7 +426,7 @@ private RuntimeJava resolveJavaHomeFromJdkDownloadPlugin(String preReleaseType,
420426        // We on purpose resolve this here eagerly to ensure we resolve the jdk configuration in the context of the root project. 
421427        // If we keep this lazy we can not guarantee in which project context this is resolved which will fail the build. 
422428        File  file  = new  File (jdk .getJavaHomePath ().toString ());
423-         return  runtimeJavaHome (providers .provider (() -> file ), true , preReleaseType );
429+         return  runtimeJavaHome (providers .provider (() -> file ), true , preReleaseType ,  jdkbuild . buildNumber (),  bundledJdkMajorVersion );
424430    }
425431
426432    private  Provider <File > resolveJavaHomeFromToolChainService (String  version ) {
0 commit comments