Some more findings:

The difference in Jewel appears to be caused by defaults.css. The Maven
build at some point was updated to force Sass to output CRLF on Windows, to
keep Git from saying that the file is modified after regenerating it.
Unfortunately, this breaks the ability to do a cross-platform reproducible
build because every other platform uses LF. I'm probably going to undo this
change (sorry, Greg!).  However, it looks like adding a .gitattributes file
to the repo allows us to force line endings for specific files or
extensions, regardless of autocrlf behavior. It should provide the same
benefit as Greg's commit, while restoring reproducible builds. Side note: I
also found that modern Sass doesn't even provide the option to use CRLF, so
this change is probably for the best because we may need to upgrade Sass in
the future.

The situation with duplicates of hoisted variables in MXRoyaleBase/MXRoyale
in JDK 17 might be a threading conflict (and probably could happen with JDK
11 too, if conditions are correct). When the issue reproduces, I see that
the function scope actually contains duplicate definitions of every local
variable, instead of just one of each. Interestingly, if I add enough
logging to help myself debug this issue, the scope ends up containing one
of each local variable, and it doesn't duplicate the hoisted variables
anymore. That makes me think multiple threads may be manipulating the scope.

--
Josh Tynjala
Bowler Hat LLC <https://bowlerhat.dev>


On Wed, Apr 5, 2023 at 2:42 PM Josh Tynjala <joshtynj...@bowlerhat.dev>
wrote:

> Some preliminary findings:
>
> Jewel:
> - Some plaintext [Embed] content was not matching up between macOS and
> Windows. It was clearly a text encoding issue. I fixed a compiler bug
> where it was using the system default encoding instead of UTF-8. A
> workaround would be to use JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8.
> - The SWF files inside the Jewel SWCs still do not match between my
> machines. I still need to figure out why. Probably a missing compiler
> option in the Jewel pom.xml file.
>
> MXRoyale and MXRoyaleBase:
> - On Windows, I was seeing hoisted variables appear in the JS output
> twice. I noticed that I was using JDK 11 on macOS, and JDK 17 on Windows.
> When I switched to JDK 11 on Windows, the problem went away. It looks like
> there's a bug in the compiler that needs to be fixed to support JDK 17.
> Until then, I recommend building with JDK 11 or older (8 should be fine
> too).
>
> --
> Josh Tynjala
> Bowler Hat LLC <https://bowlerhat.dev>
>
>
> On Wed, Apr 5, 2023 at 10:11 AM Josh Tynjala <joshtynj...@bowlerhat.dev>
> wrote:
>
>> Alright, I built the distribution locally with Maven on two different
>> machines, and I can see that the following SWCs don't match: Jewel,
>> MXRoyale, and MXRoyaleBase
>>
>> It affects both the JS and SWF versions of the SWCs.
>>
>> I'll see what I can do.
>>
>> --
>> Josh Tynjala
>> Bowler Hat LLC <https://bowlerhat.dev>
>>
>>
>> On Mon, Apr 3, 2023 at 8:04 AM Josh Tynjala <joshtynj...@bowlerhat.dev>
>> wrote:
>>
>>> Yes, it's on by default.
>>>
>>> I guess that there must be some other reason why the builds don't match
>>> up. I just happened to notice this, in particular, was different between
>>> the Ant build and the Maven build.
>>>
>>> You may need to extract the .swc files and manually compare the contents
>>> to see what is different.
>>>
>>> --
>>> Josh Tynjala
>>> Bowler Hat LLC <https://bowlerhat.dev>
>>>
>>>
>>> On Sun, Apr 2, 2023 at 4:01 AM Yishay Weiss <yishayj...@hotmail.com>
>>> wrote:
>>>
>>>> Is that option on by default? I just tried building both on release
>>>> machine and locally and am still getting the mismatch.
>>>>
>>>> <exec executable="${mvn}" dir="${artifactfolder}/sources"
>>>> failonerror="true" >
>>>>             <arg value="-X" />
>>>>             <arg value="-P" />
>>>>             <arg
>>>> value="royale-release,apache-release,_reproducible-build,with-distribution,with-examples,with-manualtests,option-with-swf"
>>>> />
>>>>             <arg value="clean" />
>>>>             <arg value="install" />
>>>>         </exec>
>>>>
>>>> Is how it gets built now locally. Intuitively debug info should not be
>>>> part of the release but I need to look into it further.
>>>> ________________________________
>>>> From: Josh Tynjala <joshtynj...@bowlerhat.dev>
>>>> Sent: Tuesday, March 28, 2023 6:17 PM
>>>> To: dev@royale.apache.org <dev@royale.apache.org>
>>>> Subject: Re: 0.9.10 Release
>>>>
>>>> Hey Yishay,
>>>>
>>>> I recently made a commit that adds the swf-debugfile-alias compiler
>>>> option
>>>> for SWC files built by Maven. This compiler option was being used by Ant
>>>> already, but it never got added to the Maven build. And I think that
>>>> binaries would fail comparison without it. This may be why Release Step
>>>> 11
>>>> was failing for you.
>>>>
>>>> Basically, swf-debugfile-alias ensures that the debugging information in
>>>> the SWC doesn't include the local path to the .as/.mxml source files
>>>> (starting with something like C:\Users\joshtynjala\ or
>>>> /Users/CoolGuy19/).
>>>> Instead, it sets a generic path that will always match among builds from
>>>> different machines. Considering this was missing, it sure sounds like a
>>>> reason why binary comparison would fail.
>>>>
>>>> --
>>>> Josh Tynjala
>>>> Bowler Hat LLC <https://bowlerhat.dev>
>>>>
>>>>
>>>> On Wed, Feb 22, 2023 at 10:38 AM Yishay Weiss <yishayj...@hotmail.com>
>>>> wrote:
>>>>
>>>> > FYI I am put this on hold about 2 weeks ago after failing to debug a
>>>> > binary reproducibility issue in as-js repo.
>>>> >
>>>> > @Harbs<mailto:harbs.li...@gmail.com>, can you see if the same issue
>>>> > exists for you?
>>>> >
>>>> > You can follow instructions [1] and tell me if step 2 succeeded or
>>>> failed
>>>> > for you.
>>>> >
>>>> > Thanks.
>>>> >
>>>> > [1]
>>>> >
>>>> apacheroyale.francecentral.cloudapp.azure.com:8080/job/Royale_Release_Step_011/ws/Success-5.txt
>>>> > <
>>>> >
>>>> http://apacheroyale.francecentral.cloudapp.azure.com:8080/job/Royale_Release_Step_011/ws/Success-5.txt
>>>> > >
>>>> > ________________________________
>>>> > From: Josh Tynjala <joshtynj...@bowlerhat.dev>
>>>> > Sent: Tuesday, January 17, 2023 10:08 PM
>>>> > To: dev@royale.apache.org <dev@royale.apache.org>
>>>> > Subject: Re: 0.9.10 Release
>>>> >
>>>> > Oops! I meant NO further changes. Sorry about that. You're good to go
>>>> on my
>>>> > end.
>>>> >
>>>> > --
>>>> > Josh Tynjala
>>>> > Bowler Hat LLC <https://bowlerhat.dev>
>>>> >
>>>> >
>>>> > On Tue, Jan 17, 2023 at 11:32 AM Yishay Weiss <yishayj...@hotmail.com
>>>> >
>>>> > wrote:
>>>> >
>>>> > > Thanks for the update, let me know when to pull the trigger.
>>>> > >
>>>> > > Get Outlook for Android<https://aka.ms/AAb9ysg>
>>>> > > ________________________________
>>>> > > From: Josh Tynjala <joshtynj...@bowlerhat.dev>
>>>> > > Sent: Tuesday, January 17, 2023 7:05:29 PM
>>>> > > To: dev@royale.apache.org <dev@royale.apache.org>
>>>> > > Subject: Re: 0.9.10 Release
>>>> > >
>>>> > > I've updated the release notes with my changes. I have further
>>>> changes
>>>> > > planned before the release.
>>>> > >
>>>> > > --
>>>> > > Josh Tynjala
>>>> > > Bowler Hat LLC <https://bowlerhat.dev>
>>>> > >
>>>> > >
>>>> > > On Mon, Jan 16, 2023 at 12:40 AM Yishay Weiss <
>>>> yishayj...@hotmail.com>
>>>> > > wrote:
>>>> > >
>>>> > > > Hi Guys,
>>>> > > >
>>>> > > > We’re starting a new release soon. As it’s been a while and I
>>>> expect
>>>> > some
>>>> > > > issues I have agreed with Harbs to do this release. 0.9.11 should
>>>> be
>>>> > > easier
>>>> > > > if we don’t wait too long, so the goal is for a different
>>>> volunteer to
>>>> > do
>>>> > > > the next one.
>>>> > > >
>>>> > > > If anybody wants to commit changes they are welcome to do so now,
>>>> and
>>>> > > > update the release notes.
>>>> > > >
>>>> > > > Please make sure the integration tests are working post commits.
>>>> > > >
>>>> > > > Thanks,
>>>> > > > Yishay
>>>> > > >
>>>> > >
>>>> >
>>>>
>>>

Reply via email to