Hi Josh, Do you refer to my post by mentioning "distribution"? - I don't use distribution for Maven. I will rebuild everything once again. Maybe I'm missing something.
Thanks, Piotr wt., 16 lip 2019 o 17:04 Josh Tynjala <[email protected]> napisał(a): > Oh yeah, the Maven "distribution" has its own separate versions of files > like frameworks/royale-config.xml and frameworks/js-config.xml, doesn't it? > I guess that those need to be updated to use external-library-path too. > > -- > Josh Tynjala > Bowler Hat LLC <https://bowlerhat.dev> > > > On Tue, Jul 16, 2019 at 7:34 AM Piotr Zarzycki <[email protected]> > wrote: > > > Hi Carlos, > > > > Did you check whether you can run TourDeJewel ? I have build SDK using > > Maven and than TourDeJewel and I couldn't run application. I'm getting > [1]. > > When I build HelloWorld and run I got the same. > > > > [1] https://ibb.co/NKjNBMJ > > > > Thanks, > > Piotr > > > > wt., 16 lip 2019 o 16:10 Carlos Rovira <[email protected]> > > napisał(a): > > > > > Hi, > > > > > > thanks Josh for the update! > > > One question about it: should separate the @extern classes in Jewel > > > (dialogPollyfill and hljs classes) or with this change now can live in > > that > > > library? > > > Just to know it, although for other organizational purposes I think it > > > should be probably separated. > > > > > > @Greg Dove <[email protected]> just merged locally this changes and > > > rebuild Crux branch and seems some changes are needed there when > building > > > ANT SDK. I probably can't do changes to try to solve this before you > > reach > > > the problem since I'm busy with work things. Just copy here my log so > it > > > could be of help for you > > > > > > I suppose is the need to change in this branch from library-path to > > > external-library-path > > > > > > > > > compile-swf: > > > > > > [echo] Compiling libs/Crux.swc > > > > > > [echo] ROYALE_HOME: > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs > > > > > > [echo] ROYALE_SWF_COMPILER_HOME: > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs > > > > > > [echo] ROYALE_COMPILER_HOME: > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/js > > > > > > [java] args: > > > > > > [java] > > > +royalelib=/Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks > > > > > > [java] +playerglobal.version=11.1 > > > > > > [java] +env.AIR_HOME=/Users/carlosrovira/Dev/Air/Sdks/AIR_SDK_25 > > > > > > [java] -compiler.strict-xml=true > > > > > > [java] -compiler.targets=SWF,JSRoyale > > > > > > [java] -metadata.date=07/16/19 12:12 +0200 > > > > > > [java] -metadata.dateFormat=MM/dd/yy HH:mm Z > > > > > > [java] -swf-debugfile-alias=/org/apache/royale/0.9.6 > > > > > > [java] > > > > > > > > > -output=/Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Crux/target/Crux.swc > > > > > > [java] > > > > > > > > > -load-config=/Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Crux/src/main/config/compile-swf-config.xml > > > > > > [java] > > > > > > > > > -js-load-config=/Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js-config.xml > > > > > > [java] > > > > > > > > > -js-load-config+=/Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Crux/../../js/projects/CruxJS/src/main/config/compile-js-config.xml > > > > > > [java] target:SWF > > > > > > [java] target:JSRoyale > > > > > > [java] COMPC > > > > > > [java] Loading configuration: > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Crux/src/main/config/compile-swf-config.xml > > > > > > [java] > > > > > > [java] 128421 bytes written to > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Crux/target/Crux.swc > > > in 3,234 seconds > > > > > > [java] COMPCJSCRoyale > > > > > > [java] 6.474858102 seconds > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > The definition XMLList depended on by mx.messaging.config.ServerConfig > in > > > the SWC > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > could not be found > > > > > > [java] > > > > > > [java] > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > The definition XML depended on by mx.messaging.config.ServerConfig in > the > > > SWC > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > could not be found > > > > > > [java] > > > > > > [java] > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > The definition XML depended on by mx.messaging.channels.PollingChannel > in > > > the SWC > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > could not be found > > > > > > [java] > > > > > > [java] > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > The definition QName depended on by mx.utils.ObjectUtil in the SWC > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > could not be found > > > > > > [java] > > > > > > [java] > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > The definition XMLList depended on by mx.utils.ObjectUtil in the SWC > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > could not be found > > > > > > [java] > > > > > > [java] > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > The definition XML depended on by mx.utils.ObjectUtil in the SWC > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > could not be found > > > > > > [java] > > > > > > [java] > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > The definition XMLList depended on by mx.messaging.Channel in the SWC > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > could not be found > > > > > > [java] > > > > > > [java] > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > The definition XML depended on by mx.messaging.Channel in the SWC > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > could not be found > > > > > > [java] > > > > > > [java] > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > The definition XML depended on by mx.messaging.channels.AMFChannel in > the > > > SWC > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > could not be found > > > > > > [java] > > > > > > [java] > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > The definition XMLList depended on by mx.utils.UIDUtil in the SWC > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/MXRoyaleJS.swc > > > could not be found > > > > > > [java] > > > > > > [java] > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/ReflectionJS.swc > > > The definition org.apache.royale.utils.Language depended on by > > > org.apache.royale.reflection.nativejs.AS3Vector in the SWC > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/ReflectionJS.swc > > > could not be found > > > > > > [java] > > > > > > [java] > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/ReflectionJS.swc > > > The definition org.apache.royale.utils.Language depended on by > > > org.apache.royale.reflection.describeType in the SWC > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/ReflectionJS.swc > > > could not be found > > > > > > [java] > > > > > > [java] > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/ReflectionJS.swc > > > The definition org.apache.royale.utils.Language depended on by > > > org.apache.royale.reflection.getQualifiedClassName in the SWC > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/js/libs/ReflectionJS.swc > > > could not be found > > > > > > [java] > > > > > > [java] > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Crux/src/main/royale/org/apache/royale/crux/processors/EventHandlerProcessor.as(23): > > > col: 10 Definition org.apache.royale.utils.Language could not be found. > > > > > > [java] > > > > > > [java] import org.apache.royale.utils.Language; > > > > > > [java] ^ > > > > > > [java] > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Crux/src/main/royale/org/apache/royale/crux/processors/EventHandlerProcessor.as(106): > > > col: 16 Access of possibly undefined property Language. > > > > > > [java] > > > > > > [java] method = Language.closure(method, bean.source, > > > eventHandlerTag.host.name); > > > > > > [java] ^ > > > > > > [java] > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Crux/src/main/royale/org/apache/royale/crux/processors/EventHandlerProcessor.as(127): > > > col: 15 Access of possibly undefined property Language. > > > > > > [java] > > > > > > [java] method = Language.closure(method, bean.source, > > > eventHandlerTag.host.name); > > > > > > [java] ^ > > > > > > [java] > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Crux/src/main/royale/org/apache/royale/crux/processors/InjectProcessor.as(123): > > > col: 61 Access of possibly undefined property QName. > > > > > > [java] > > > > > > [java] var bind:Boolean = injectTag.bind && !( destPropName is > QName > > > ); > > > > > > [java] ^ > > > > > > [java] > > > > > > [java] > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Crux/src/main/royale/org/apache/royale/crux/processors/InjectProcessor.as(137): > > > col: 26 Access of possibly undefined property QName. > > > > > > [java] > > > > > > [java] if( destPropName is QName && injectTag.bind == true ) > > > > > > [java] ^ > > > > > > [java] > > > > > > [java] Java Result: 3 > > > > > > > > > BUILD FAILED > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/build.xml:652: The > > > following error occurred while executing this line: > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/build.xml:143: > > > The following error occurred while executing this line: > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/build.xml:370: > > > The following error occurred while executing this line: > > > > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Crux/build.xml:85: > > > The following error occurred while executing this line: > > > > > > > > > > > > /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Crux/build.xml:111: > > > condition satisfied > > > > > > > > > Total time: 12 minutes 8 seconds > > > > > > Error:Build stopped - build SDK with ANT > > > > > > > > > Thanks! > > > > > > Carlos > > > > > > > > > > > > > > > El mar., 16 jul. 2019 a las 0:20, Josh Tynjala (< > > [email protected] > > > >) > > > escribió: > > > > > > > The Maven royale-compiler build is fixed now. :) > > > > > > > > -- > > > > Josh Tynjala > > > > Bowler Hat LLC <https://bowlerhat.dev> > > > > > > > > > > > > On Mon, Jul 15, 2019 at 1:19 PM Josh Tynjala < > > [email protected]> > > > > wrote: > > > > > > > > > FYI: Found an issue building royale-compiler with Maven. Working on > > the > > > > > fix. > > > > > > > > > > -- > > > > > Josh Tynjala > > > > > Bowler Hat LLC <https://bowlerhat.dev> > > > > > > > > > > > > > > > On Mon, Jul 15, 2019 at 12:32 PM Josh Tynjala < > > > [email protected] > > > > > > > > > > wrote: > > > > > > > > > >> Hey folks, > > > > >> > > > > >> I just pushed some commits to royale-compiler and royale-asjs, > and I > > > > >> wanted to add a little explanation, and some possible > > troubleshooting > > > > >> advice if anything seems to have broken in your apps. > > > > >> > > > > >> My work over the last week has been to fix an issue related to > > > > specifying > > > > >> dependencies when compiling libraries for JS. As you probably > know, > > > the > > > > >> compiler supports two options for adding libraries as > dependencies, > > > > >> library-path and external-library-path. The library-path compiler > > > option > > > > >> basically says "include all classes that I use from this SWC in > the > > > > final > > > > >> output". It's typically what you use when compiling an app that > > uses a > > > > >> library. The external-library-path compiler option basically says > > "if > > > I > > > > use > > > > >> anything from this SWC, check that I'm using the types correctly, > > but > > > > don't > > > > >> include any of classes from this SWC in the final output". > > > > >> > > > > >> If you're compiling an app, you typically use library-path for > > > > >> everything. You use external-library-path only for dependencies > like > > > > >> playerglobal.swc/airglobal.swc in Flash or typedef SWCs in JS. > > > > Basically, > > > > >> for an app project, external-library-path is for classes that are > > > > provided > > > > >> natively by the Flash runtime or a web browser, like Chrome or > > > Firefox. > > > > >> > > > > >> When compiling libraries, external-library-path is also used to > > > prevent > > > > >> the compiler from creating a "fat" library that stuffs in all of > the > > > > >> dependencies. Let's say that you have a library, A.swc. It > provides > > > some > > > > >> core functionality that is needed by both B.swc and C.swc. When we > > > > compile > > > > >> B.swc and C.swc, we don't want the classes from A.swc duplicated > in > > > > both of > > > > >> them. So we add A.swc to the external-library-path when compiling > > > B.swc > > > > or > > > > >> C.swc. Then, if you use those SWCs when compiling an app, you need > > to > > > > add > > > > >> A.swc, B.swc, and C.swc to the library-path. > > > > >> > > > > >> To put that in Royale terms, A.swc is something like > LanguageJS.swc > > or > > > > >> CoreJS.swc. They're some of our lowest-level SWCs in the > framework. > > > > B.swc > > > > >> and C.swc are more like BasicJS.swc or JewelJS.swc, and they tend > to > > > > share > > > > >> multiple classes from the lower-level stuff. > > > > >> > > > > >> Up until now, library-path and external-library-path were a little > > > > quirky > > > > >> when compiling to JS. It was related to the goog.provide() and > > > > >> goog.require() calls that you might have seen in the generated JS. > > > These > > > > >> are from the module system that we use in Royale. The compiler > > didn't > > > > know > > > > >> how to differentiate between classes that had goog.provide() and > > > classes > > > > >> that were typedefs for JS libraries. It treated everything on the > > > > >> external-library-path as a typedef, and this led to missing > > > > goog.require() > > > > >> calls in the generated JS. To work around this, when we specified > > > > >> dependencies in our framework SWCs, we used library-path to ensure > > > that > > > > >> goog.require() would be used. > > > > >> > > > > >> This workaround of using library-path led to "fat" SWCs that > > contained > > > > >> all of their dependencies. Low-level classes in SWCs like CoreJS > > were > > > > >> duplicated in higher-level SWCs. This led to the compiler getting > > > > confused > > > > >> about exactly where a class was defined. > > > > >> > > > > >> This has resulted in some minor issues here and there, but nothing > > too > > > > >> major until recently. However, Harbs noticed the other day that it > > > > caused > > > > >> the compiler to copy extra default CSS into apps from SWCs that > you > > > may > > > > not > > > > >> have been using. So, you might build an app with the Basic > > components, > > > > but > > > > >> you'd get extra CSS from Jewel or MaterialDesignLite. This could > > mess > > > up > > > > >> your app's styling pretty dramatically. > > > > >> > > > > >> I updated the compiler to better detect when a class needs > > > > goog.require() > > > > >> and when it's a typedef. If that class comes from a SWC, the > > compiler > > > > knows > > > > >> to check for an included file like, js/out/com/example/MyClass.js. > > If > > > > the > > > > >> generated JS is there, goog.require() is necessary. If it's > missing, > > > > it's > > > > >> treated as a typedef class instead. If the class is an .as source > > file > > > > >> instead, the compiler looks for the @externs asdoc tag to > determine > > if > > > > it's > > > > >> a typedef class (and everything else needs goog.require() > instead). > > > > >> > > > > >> By the way, if we ever support other module systems, it shouldn't > be > > > too > > > > >> difficult to extend this code to detect different SWC layouts for > > each > > > > >> module system. > > > > >> > > > > >> If your project is an app, this change should not cause any > > problems. > > > > >> You're probably using library-path and external-library-path > > > correctly. > > > > >> > > > > >> If you have a project that is a library, you should check your > > > compiler > > > > >> options to see if you are using library-path and > > external-library-path > > > > >> correctly. If your library depends on another library, you > probably > > > > should > > > > >> be using external-library-path because you don't want a "fat" SWC. > > In > > > > other > > > > >> words, if you're using library-path in a library project, you > > probably > > > > need > > > > >> to change that to external-library-path. > > > > >> > > > > >> If you have any custom typedef SWCs, you may want to recompile > them. > > > At > > > > >> one point, the compiler had a bug where classes in typedef SWCs > were > > > > being > > > > >> incorrectly added to the "js/out" folder in the SWC, but that was > > > > >> incorrect. They should have been placed in an "externs" folder > > > instead. > > > > The > > > > >> compiler handles this correctly now, but old typedef SWCs may look > > > like > > > > >> goog.require() SWCs instead. To be sure, you can open a SWC file > in > > > any > > > > >> program that can read ZIP files, and you'll see the internal > folder > > > > >> structure. If a typedef SWC has a "js/out" folder, it's not going > to > > > > work > > > > >> properly. > > > > >> > > > > >> If you're working directly out of the royale-compiler and > > royale-asjs > > > > Git > > > > >> repos, be sure to update and rebuild them both. The nightly builds > > > > should > > > > >> be updated shortly. > > > > >> > > > > >> When you build any apps, be sure to clean first, just to be sure > > that > > > > you > > > > >> have the latest JS files from the SWCs. > > > > >> > > > > >> If you run into any other problems with these changes, please let > me > > > > >> know. I'll get them fixed right away! > > > > >> > > > > >> -- > > > > >> Josh Tynjala > > > > >> Bowler Hat LLC <https://bowlerhat.dev> > > > > >> > > > > > > > > > > > > > > > > > > -- > > > Carlos Rovira > > > http://about.me/carlosrovira > > > > > > > > > -- > > > > Piotr Zarzycki > > > > Patreon: *https://www.patreon.com/piotrzarzycki > > <https://www.patreon.com/piotrzarzycki>* > > > -- Piotr Zarzycki Patreon: *https://www.patreon.com/piotrzarzycki <https://www.patreon.com/piotrzarzycki>*
