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>*
>

Reply via email to