On Wed, 12 May 2021 17:30:20 GMT, Crazyjavahacking 
<github.com+1445818+crazyjavahack...@openjdk.org> wrote:

>> This PR fixes the gradle deprecation warnings described in 
>> [JDK-8240336](https://bugs.openjdk.java.net/browse/JDK-8240336) and updates 
>> the JavaFX build to use gradle 7.0.1 as described in 
>> [JDK-8263760](https://bugs.openjdk.java.net/browse/JDK-8263760). The minimum 
>> version of gradle is set to 6.3.
>> 
>> In addition to keeping gradle up to date, updating to gradle 7 will allow 
>> building and testing JavaFX with JDK 16.
>> 
>> I have done a full build and test on all three platforms, comparing the 
>> artifacts produced before and after this change.
>> 
>> ### Notes to Reviewers:
>> 
>> The PR branch has two separate commits, one for each fix, in case reviewers 
>> want to look at them separately. As always, they will be squashed into a 
>> single commit when integrated. Both bug IDs will be listed in the commit.
>> 
>> The following changes were done for 
>> [JDK-8240336](https://bugs.openjdk.java.net/browse/JDK-8240336) to eliminate 
>> the use of deprecated features removed in gradle 7:
>> 
>> 1. Replaced `compile` with either `implementation` or `compileClasspath` as 
>> needed
>> 2. Replaced obsolete `archiveName` and `destinationDir` properties in 
>> archive tasks with `archiveFileName` and `destinationDirectory`
>> 3. Added missing `@Input` annotation to custom Groovy task properties
>> 4. Bumped the minimum version of gradle to 6.3 (which we have been using for 
>> more than 1 year)
>> 
>> 
>> The following changes were done for 
>> [JDK-8263760](https://bugs.openjdk.java.net/browse/JDK-8263760) to update to 
>> gradle 7.0.1:
>> 
>> 1. Ran `bash ./gradlew wrapper --gradle-version=7.0.1`
>> 2. Updated the gradle version in `build.properties` to `7.0.1`
>> 3. Updated the SHA-256 checksum in `gradle/wrapper/gradle-wrapper.properties`
>
> buildSrc/src/main/groovy/com/sun/javafx/gradle/CCTask.groovy line 34:
> 
>> 32:     @Optional @Input List<String> linkerOptions = new 
>> ArrayList<String>();
>> 33:     @Optional @InputDirectory File headers;
>> 34:     @Optional @Input Closure eachOutputFile; // will be given a File and 
>> must return a File
> 
> Is this field actually used anywhere?
> 
> As this field is not initialized + there is the `@Optional` annotation, 
> Gradle will not verify this is fine. Gradle docs is specifying that:
> 1. `@Input` can be used on Closure if it is a provider of `File` (which means 
> no param in closure).
> 2. `@Input` can be used for any `Serializable` which `Closure` actually is.
> 
> It's not obvious if Gradle will correctly handle `Closure` taking argument.

I'll take a look, but I will likely want to do any cleanup of this in a 
follow-on issue. As you note the `eachOutputFile` property is unused...as is 
the `exe` property. They were formerly used by one of the `javapackager` tasks, 
which has since been removed.

> buildSrc/src/main/groovy/com/sun/javafx/gradle/NativeCompileTask.groovy line 
> 44:
> 
>> 42:     @Optional @Input String matches; // regex for matching input files
>> 43:     @Input List<String> params = new ArrayList<String>();
>> 44:     @Input List sourceRoots = new ArrayList();
> 
> Shouldn't this be `@Internal`?:
> 
> 1. `updateFiles()` uses `sourceRoots` and maps that into the `allFiles` 
> field, which has already `@InputFiles`. If the `sourceRoots` is changed in a 
> way that does not affect `allFiles`, this task can remain `UP_TO_DATE` and 
> save task execution.

Perhaps, but I wouldn't want to make this change as part of this bug fix. I'd 
rather not have to do the analysis of whether there is any case where 
`sourceRoots` can change in a way that wouldn't affect the outputs. If not, 
then this is only a theoretical concern, and if so, it seems better to err on 
the side of correctness unless you can prove that all similar cases won't 
affect the outputs.

-------------

PR: https://git.openjdk.java.net/jfx/pull/498

Reply via email to