RFR: JDK-8317308 JavaFX Developer build broken on Windows - NativeLibrary file contains invalid character ':'

John Neffenger jgneff at openjdk.org
Fri Sep 29 16:30:59 UTC 2023


On Fri, 29 Sep 2023 13:19:51 GMT, Florian Kirmaier <fkirmaier at openjdk.org> wrote:

>> The format of the timestamp has changed to ISO 8601. This contains the “:” Character.
>> A copy of the dll is saved at <home>/.openjfx/cache/" + jfxVersion + "/" + arch .
>> On Windows, the character ‘:’ is invalid in files, causing internal errors.
>> 
>> This only happens on developer/non-hudson builds, because on hudson-builds, the timestamp is omitted.
>> 
>> I just replaced the disallowed character when creating the native library.
>
> Thank you for the quick response! 
> I already wondered whether I've been the only one running into this :D

@FlorianKirmaier Hi, Florian. I realize I'm late to this pull request, but do you know off hand why the ISO 8601 timestamp is getting into the version number? I didn't see that in my tests. When doing non-Hudson builds, I get the following timestamp stripped of the colon (`:`) character:


$ cat lib/javafx.properties 
javafx.version=21
javafx.runtime.version=21+31-2023-08-23-201007
javafx.runtime.build=31


The timestamp format is changed [early on in the build](https://github.com/openjdk/jfx/blob/master/build.gradle#L641) to avoid this problem in the version string. What's the exact error message that you saw (and that I apparently missed)?

> I think there is a logic - somewhere in the build.gradle, to clean the runtime-version, ...

Right. In fact, [it's right here](https://github.com/openjdk/jfx/blob/master/build.gradle#L646) on line 646 in the `build.gradle` file:


if (HUDSON_JOB_NAME == "not_hudson") {
    // The version OPT field matches the regular expression "([-a-zA-Z0-9.]+)".
    // For the ISO 8601 basic format, use the pattern "yyyyMMdd'T'HHmmssX".
    def zonedTime = ZonedDateTime.ofInstant(buildInstant, ZoneOffset.UTC)
    def formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HHmmss")
    String versionTimestamp = zonedTime.format(formatter)
    relSuffix = "-internal"
    relOpt = "-${versionTimestamp}"
} else {
    relSuffix = IS_MILESTONE_FCS ? "" : jfxReleaseSuffix
}


I'm trying to understand why that `if` statement didn't cover your case. Can you post your exact build command? It seems to me this error might be a regression in my reproducible builds pull request and should have been fixed in the build file itself.

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

PR Comment: https://git.openjdk.org/jfx/pull/1251#issuecomment-1741029491
PR Comment: https://git.openjdk.org/jfx/pull/1251#issuecomment-1741087632


More information about the openjfx-dev mailing list