I appreciate your help, Alex! Thanks. I pass linkage problems with that investigations.
On Wed, Dec 19, 2018 at 12:21 AM Alex Harui <aha...@adobe.com> wrote: > Hi, > > > > I saw that, but I think the compiler should be allowing that, so that’s > what I’m going to look into next. > > > > JavaScript should be able to set up these classes and constructors without > problem. > > > > -Alex > > > > *From: *mrchnk <mrc...@gmail.com> > *Reply-To: *"users@royale.apache.org" <users@royale.apache.org> > *Date: *Tuesday, December 18, 2018 at 12:24 PM > > > *To: *"users@royale.apache.org" <users@royale.apache.org> > *Subject: *Re: Linkage problem for asjs compiler > > > > I found the issue for that case. The problem is in Animation constructor: > > > > ... > > if (_rootTimeline == null) { > > if (_rootFrame == -1) { > > _rootFrame = 0; > > _rootFramesTimeline = new SimpleTimeline(); > > _rootTimeline = new SimpleTimeline(); > > _rootTimeline._startTime = getTimer() / 1000; > > _rootFramesTimeline._startTime = 0; > > _rootTimeline._active = _rootFramesTimeline._active = true; > > ticker.addEventListener("enterFrame", _updateRoot, false, 0, > true); > > } else { > > return; > > } > > } > > ... > > > > It tries to instantiate SimpleTimeout which is derived from Animation > itself. That's tricky. > > After dealing with that I faced other circular dependencies: > > > > - using a derived class in base's method: > > > > class Base { > > function doSomething() { > > if (this is Derived) { > > ... > > } > > } > > } > > class Derived extends Base { ... } > > > > - one more setup with static initialized const > > > > class Facade { > > static public var api: Service = new Service(); > > } > > class Service { > > function doSomething(forClient:Client) { > > forClient.done(); > > } > > } > > class Client { > > function doSomething() { > > Facade.api.doSomething(this); > > } > > function done() { > > trace("done"); > > } > > } > > > > > > On Tue, Dec 18, 2018 at 10:00 PM mrchnk <mrc...@gmail.com> wrote: > > I think the problem with that classes that SimpleTimeline extends > Animation, but Animation has fields (static too) with type SimpleTimeline. > > > > On Tue, Dec 18, 2018 at 9:54 PM mrchnk <mrc...@gmail.com> wrote: > > Hi, Alex. > > > > I tried build #1713. Log output says that following circular dependency is > found: > > > > ... > > Circular Dependency Found > > [com.greensock.core.Animation] > > [com.greensock.core.SimpleTimeline] > > [com.greensock.core.Animation] > > End of Circular Dependency > > ... > > > > Here are both .as and .js files mentioned in that dependency > > https://gist.github.com/mrchnk/caba399919690a785761242c35e5a01a > <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgist.github.com%2Fmrchnk%2Fcaba399919690a785761242c35e5a01a&data=02%7C01%7Caharui%40adobe.com%7C95beb17e09124817794c08d66526c567%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807614528602807&sdata=8LgVIcL%2BESZzfe%2F%2F0MGPN1pgfvtNbXz9Ilhhxbf7rXg%3D&reserved=0> > > > > Build output and warnings are available at the old location (with prefix > 1713-): > > https://drive.google.com/open?id=17IRbQ1xAfpAirjbW6YjQPFEYHmL1HnhC > <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdrive.google.com%2Fopen%3Fid%3D17IRbQ1xAfpAirjbW6YjQPFEYHmL1HnhC&data=02%7C01%7Caharui%40adobe.com%7C95beb17e09124817794c08d66526c567%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807614528602807&sdata=Jf%2B5TGx8l4XK8l345limH%2FjVgLhnKTL9XNOxRzaD7ag%3D&reserved=0> > > > > On Tue, Dec 18, 2018 at 11:43 AM Alex Harui <aha...@adobe.com> wrote: > > Hi, > > > > That log showed that lots of files are not in the sorted order, not just > Client. In a test of the Tour De Flex running in Royale, all files 700+ > files end up in the sorted order. In trying to reproduce the issue, I > discovered that circularities in the graph are not reported, so I’ve added > that to the output. So wait a few hours for the new nightly (build #1712 > or later) and try again and search the output for > > > > Circular Dependency Found > > > > Hopefully there will be one which would explain the differences in the > lists. It should be followed by a list of classes, then: > > > > > > End of Circular Dependency > > > > Post the list and the ActionScript sources and JavaScript from the output > folder for the classes. The JS output may not handle certain kinds of > static initializers and think there are static dependencies when there > doesn’t need to be which could result in circularities that would work fine > in SWF. We’ll see what it takes to make the compiler smarter, but you > might make more progress by modifying the static initializers. > > > > One pattern for a workaround is to test if the class has been initialized > and if not, initialize it. So instead of: > > > > public class SomeClass { > > public static var foo:int = SomeOtherClass.foo; > > } > > > > You could do: > > public class SomeClass { > > public static var initialized:Boolean; > > public static var foo:int;; > > public static function initialize() { > > SomeClass.foo = SomeOtherClass.foo; > > SomeClass.initialized = true; > > } > > } > > > > And then before you actually read SomeClass.foo, add > > > > if (!SomeClass.initialized) SomeClass.initialize(); > > > > But first, we have to see if there is a circularity being reported. > > > > HTH, > > -Alex > > > > *From: *mrchnk <mrc...@gmail.com> > *Reply-To: *"users@royale.apache.org" <users@royale.apache.org> > *Date: *Monday, December 17, 2018 at 9:48 AM > > > *To: *"users@royale.apache.org" <users@royale.apache.org> > *Subject: *Re: Linkage problem for asjs compiler > > > > Hi, Alex! > > > > I downloaded the latest nightly build of royale (which is 1707) and build > my project using it with "-diagnostics=32768" argument. > > Here is build output (too large to be posted as a gist): > > https://drive.google.com/open?id=17IRbQ1xAfpAirjbW6YjQPFEYHmL1HnhC > <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdrive.google.com%2Fopen%3Fid%3D17IRbQ1xAfpAirjbW6YjQPFEYHmL1HnhC&data=02%7C01%7Caharui%40adobe.com%7C95beb17e09124817794c08d66526c567%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807614528602807&sdata=Jf%2B5TGx8l4XK8l345limH%2FjVgLhnKTL9XNOxRzaD7ag%3D&reserved=0> > > > > I also enabled warnings for that build and save error output as a > separated log file. > > > > That project is large and has a long history, so it could be really bad at > dependencies with spaghetti code. > > But that seems to be ok for a mxmlc compiler from AIR SDK. > > > > On Mon, Dec 17, 2018 at 10:49 AM Alex Harui <aha...@adobe.com> wrote: > > Hi,, > > > > After more investigation, I’m not sure what is going wrong. I tested some > scenarios with all dependencies removed and they worked. I added more > diagnostics to the compiler. It can take several hours for the nightly > build to update, but when it does, please add -diagnostics=32768 to your > build and post a link to the output. > > > > Check the nightly build status here: > http://apacheroyaleci.westus2.cloudapp.azure.com:8080/job/royale-asjs/ > <https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fapacheroyaleci.westus2.cloudapp.azure.com%3A8080%2Fjob%2Froyale-asjs%2F&data=02%7C01%7Caharui%40adobe.com%7C95beb17e09124817794c08d66526c567%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807614528602807&sdata=cXuNSB8JzLOarBq3L5JIEgd5Bc59%2FZpxdsm21mlFsIA%3D&reserved=0> > The updated compiler should be in build #1705 or later. > > > > Thanks, > > -Alex > > > > *From: *Alex Harui <aha...@adobe.com> > *Reply-To: *"users@royale.apache.org" <users@royale.apache.org> > *Date: *Friday, December 14, 2018 at 11:32 PM > > > *To: *"users@royale.apache.org" <users@royale.apache.org> > *Subject: *Re: Linkage problem for asjs compiler > > > > Hi, > > > > I think I found the problem. A class that had all of its dependencies > removed in the circulars calculation (except its base class) wasn’t being > output to the addDependency list because the base class dependency wasn’t > being added into the addDependency list. I won’t have much time to work on > it until Sunday evening. > > > > I did notice that openfl.swc does not contain externs/typedefs. That > might be an issue for minification some day. > > > > -Alex > > > > > > *From: *mrchnk <mrc...@gmail.com> > *Reply-To: *"users@royale.apache.org" <users@royale.apache.org> > *Date: *Friday, December 14, 2018 at 11:06 AM > *To: *"users@royale.apache.org" <users@royale.apache.org> > *Subject: *Re: Linkage problem for asjs compiler > > > > Alex, here are files you requested: > > > > https://gist.github.com/mrchnk/c0965fdfef6caf0632acc78d1138940c > <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgist.github.com%2Fmrchnk%2Fc0965fdfef6caf0632acc78d1138940c&data=02%7C01%7Caharui%40adobe.com%7C95beb17e09124817794c08d66526c567%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807614528602807&sdata=k%2BRB8Yv8NP2%2BzZzz1wGVWo5oGX8BfeFHM59XrirVdUY%3D&reserved=0> > > > > I used npm distribution of openfl version 8.7.0. You can download it into > the current directory using npm or yarn package manager: > > > > npm install openfl@8.7.0 > > > > After that command, you can find openfl.swc, openfl.min.js as well as > non-minified version openfl.js at path node_modules/openfl/dist of the > current directory. > > > > Also I used npm script "asconfigc --debug=true" to build the code > > > > I tried to disable "remove-circulars" option (thanks to Harbs for pointing > me to that). It still compiles, and linkage problems seem to goes away. But > I figured out that circular dependencies cannot be resolved properly by the > closure library after all. Is there any common solution to that problem? > > > > On Fri, Dec 14, 2018 at 8:56 PM Alex Harui <aha...@adobe.com> wrote: > > In addition to the data I asked for earlier, please also post link to > openfl.swc and openfl.min.js. > > > > Thanks, > > -Alex > > > > *From: *mrchnk <mrc...@gmail.com> > *Reply-To: *"users@royale.apache.org" <users@royale.apache.org> > *Date: *Friday, December 14, 2018 at 8:22 AM > *To: *"users@royale.apache.org" <users@royale.apache.org> > *Subject: *Re: Linkage problem for asjs compiler > > > > I don't know anything about the option "remove-circulars", so I think I > use the default value here, which is enabled I guess. > > Actually, I am using asconfigc wrapper over the compiler, but I have > nothing about that option in my asconfig.json neither. > > > > On Fri, Dec 14, 2018 at 2:39 PM Harbs <harbs.li...@gmail.com> wrote: > > Are you using the remove-circulars compiler option? > > > > On Dec 14, 2018, at 10:24 AM, Alex Harui <aha...@adobe.com> wrote: > > > > OK. > > > > Please post a link to the entire output of the compiler including, if > possible, the command-line you used. I won’t have time to look at it right > away as I am at the end of my work day. > > > > Also post links to Client.as, Client.js, OasisClient.as, OasisClient.js, > OasisHTML5Launcher.as, OasisHTML5Launcher.js > > > > And also verify how the compiler “should” find Client.js. Is Client.as in > the source-path or is Client.js in a SWC? > > > > Thanks, > > -Alex > > > > *From: *mrchnk <mrc...@gmail.com> > *Reply-To: *"users@royale.apache.org" <users@royale.apache.org> > *Date: *Thursday, December 13, 2018 at 10:24 PM > *To: *"users@royale.apache.org" <users@royale.apache.org> > *Subject: *Re: Linkage problem for asjs compiler > > > > Same problem with the nightly build. I also asked about my issue in openfl > community. > > I think that problem may be related to circular dependencies in my code. > > Is there any way that can be handled automatically by royale compiler? > > > > On Thu, Dec 13, 2018 at 11:23 PM Alex Harui <aha...@adobe.com> wrote: > > Hi, > > > > Try a nightly build of Royale. I think some things have been fixed in the > calculation of dependencies. I think if you are using npm, you can > uninstall royale and then: > > > > npm install > http://apacheroyaleci.westus2.cloudapp.azure.com:8080/job/royale-asjs/lastSuccessfulBuild/artifact/out/apache-royale-0.9.6-bin-js.tar.gz > <https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fapacheroyaleci.westus2.cloudapp.azure.com%3A8080%2Fjob%2Froyale-asjs%2FlastSuccessfulBuild%2Fartifact%2Fout%2Fapache-royale-0.9.6-bin-js.tar.gz&data=02%7C01%7Caharui%40adobe.com%7C95beb17e09124817794c08d66526c567%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807614528602807&sdata=twUVT3fwdi3XyEK7DSmSVVg7tN%2BXVno3IXg0kMuOvKA%3D&reserved=0> > > > > No guarantees that will fix your issue, but at least we can eliminate some > possibilities. > > > > HTH, > > -Alex > > > > *From: *mrchnk <mrc...@gmail.com> > *Reply-To: *"users@royale.apache.org" <users@royale.apache.org> > *Date: *Thursday, December 13, 2018 at 10:34 AM > *To: *"users@royale.apache.org" <users@royale.apache.org> > *Subject: *Linkage problem for asjs compiler > > > > Greetings! > > > > I tried to compile a large project using npm distribution of Apache Royale > asjs compiler (@apache-royale/royale-js@0.9.4). I changed all flash.* > classes to openfl.*. After several hotfixes that project starts to compile. > > > > Here is index.html generated: > https://gist.github.com/mrchnk/4f468d1abb1b02466a0dad43265c4333 > <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgist.github.com%2Fmrchnk%2F4f468d1abb1b02466a0dad43265c4333&data=02%7C01%7Caharui%40adobe.com%7C95beb17e09124817794c08d66526c567%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807614528602807&sdata=rWkeAM45SFF6KeJqJerFLBh73%2BBd3uTV0G09D%2BuCVFM%3D&reserved=0> > > > > The page is loaded with javascript errors: > > Uncaught Error: Undefined nameToPath for Client > > at visitNode (base.js:1356) > > at visitNode (base.js:1354) > > at Object.goog.writeScripts_ (base.js:1368) > > at Object.goog.require (base.js:705) > > at (index):1681 > > > > (index):1687 Uncaught ReferenceError: OasisHTML5Launcher is not defined > > at (index):1687 > > > > So Client.as is the superclass of OasisClient.as and is used in main > OasisHTML5Launcher. > > It is successfully compiled to Client.js and declared as a dependency at > index.html > > But a link to js file and declaration for that class is missing (I mean > "goog.addDependency('../../../Client.as' ... )") > > > > So how to deal with that? Is it a Royale bug? Are there some guidelines I > missed about my code? > > > > Thanks in advance. > > > > PS: I'm kinda new to mailing lists. So don't hesitate to correct me if I > do something wrong. > > > >