The source-map-source-root compiler option has two potential use-cases.

1) A user compiling an application can use it to override where the
original .as/.mxml source files should be found when debugging. For
instance, they might want to deploy the source files to their server. Or
they might compile on one machine, but debug on another where the source
files are in a different location.

2) The Royale framework developers can use it to set a consistent
sourceRoot in the source maps added to .swc files. This will help with
reproducible builds because the default behavior (without
source-path-source-root) results in a different sourceRoot path on
different machines.

So, when we build a library like JewelJS, we might set these options:

--source-map=true --source-map-source-root=/frameworks/projects/Jewel/

The generated source map will have this:

"sourceRoot": "/frameworks/projects/Jewel/"

This is not a valid path, but it's consistent. We can do some interesting
things with this path to make it valid, though.

I should probably mention another improvement that I made. When compiling
an application, the compiler now checks the value of sourceRoot when a
source map is copied out of  .swc file. If the sourceRoot path appears to
point to one of the projects inside the Royale SDK, the path is rewritten
to point to the local SDK on the user's computer. Basically, it checks if
the path contains either "/frameworks/js/projects/" or
"/frameworks/projects/" to know if it's an SDK path or not. This allows
developers to add breakpoints to source files from their local SDK, even if
that SDK was built on a different computer (like the CI server).

Using our example above, if the user installed the Royale SDK to
C:/SDKs/royale-0.9.8/, the compiler will automatically update the
sourceRoot for Jewel source maps like this:

"sourceRoot": "file:///C:/SDKs/royale-0.9.8/frameworks/projects/Jewel/"

This works really nicely with the command line compiler and in IDEs that
build with a standard SDK. I'm not sure how well it will work with Maven,
which doesn't actually use an SDK. I have ideas for that, if needed.

I should add that I would be okay if we make the magic string something
other than "/frameworks/js/projects/" or "/frameworks/projects/". For
instance, we might look for "${royalelib}" instead, which is a token that
we support elsewhere. I am open to discussing that, if anyone thinks it
matters.

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


On Thu, Oct 29, 2020 at 3:57 AM Carlos Rovira <[email protected]>
wrote:

> Hi Josh,
>
> many thanks for the addition. I think this was very needed. I have some
> questions to understand it all better:
>
> 1.- in order to provide royale libraries with usable debugging information
> could configure all our libs to use "source-map" and the new
> "source-map-source-root" to build in CI server? In that case how should we
> configure them?
>
> 2.- can we use in our local machines the same config, or do we need to
> change them? (it would be good if we could we remain unchanged)
>
> If you can put some examples with let's say Core or Basic, it would be
> helpful to visualize how it should be.
>
> I think Greg removed source-maps recently, but if we're all ok and the
> solution can be reused, we could reconfigure so source maps can be
> really useful for all users and we can finally debug more easily
>
> thanks
>
>
>
> El mié., 28 oct. 2020 a las 23:28, Josh Tynjala (<
> [email protected]>)
> escribió:
>
> > Today, I added a new "source-map-source-root" compiler option. You can
> use
> > it to optionally customize the "sourceRoot" field in source map files
> > generated by the Royale compiler.
> >
> > It will basically assume that "sourceRoot" is equivalent to the root
> > package in AS3/MXML. Chris, I'll use your example, where the path
> >
> >
> "../../../../../../../../../../../src/main/royale/de/cware/cweb/frontend/services/HomeAutomationHeatingService.as"
> > is relative to your project directory. If you were to set a custom
> > source-map-source-root, that path would be simplified to
> > "de/cware/cweb/frontend/services/HomeAutomationHeatingService.as", and
> then
> > you could pass in any value you want for the "sourceRoot".
> >
> > You can pass in any string for source-map-source-root, but some kind of
> URI
> > is recommended. For instance, if you want to reference a folder on your
> > file system, you'd generally use a file:/// URI. A raw file path instead
> of
> > an URI may work sometimes, but I don't think that all web browsers
> support
> > it.
> >
> > --
> > Josh Tynjala
> > Bowler Hat LLC <https://bowlerhat.dev>
> >
> >
> > On Sun, Sep 27, 2020 at 4:19 AM Christofer Dutz <
> [email protected]
> > >
> > wrote:
> >
> > > Hi all,
> > >
> > > while digging into Royale and it’s differences to Flex, I noticed
> > > something which makes debugging a little difficult.
> > > Source-maps contain paths to the AS code in a sort of hard-coded
> manner:
> > >
> > > {
> > > "version":3,
> > > "file":"HomeAutomationHeatingService.js",
> > > "lineCount":62,
> > >
> > >
> >
> "mappings":"A;;;;;;;;;;;;;;;;;;;;;;;;;;AAUgB,sK,OAA+C,C;;;;;;AAGhD,oF,OAA2B,C;;;;;;AAG3B,wF,OAAmC,C;;;;;;AAGnC,iF,OAA2B,C;;;;;AAGtB,oFAAhB,WAA6B,CAAC,C,CAAO,C;EACjC,iCAAA,KAAK,CAAC,4CAA4C,CAAC,C;EACnD,KAAA,+FAAkC,GAAG,IAAI,4BAAY,CAAC,8BAA8B,CAAC,C;EACrF,KAAA,+FAAkC,CAAC,UAAU,GAAG,KAAA,iBAAiB,CAAC,UAAU,C;AAChF,C;;;;;;AAGgB,0FAAhB,WAAmC,CAAC,UAAqB,C,CAAO,C;EAC5D,iCAAA,KAAK,CAAC,gCAAgC,EAAE,UAAU,CAAC,C;EACnD,KAAA,+FAAkC,CAAC,UAAU,GAAG,UAAU,CAAA;",
> > >
> > >
> >
> "sources":["../../../../../../../../../../../src/main/royale/de/cware/cweb/frontend/services/HomeAutomationHeatingService.as"],
> > > "names":[]
> > > }
> > >
> > > For framework code it’s even a little more inconvenient:
> > >
> > >
> > > {
> > > "version":3,
> > > "file":"isXMLName.js",
> > > "lineCount":88,
> > >
> > >
> >
> "sourceRoot":"file:///f:/jenkins/jenkins-slave/712657a4/workspace/Royale/Royale-asjs",
> > >
> > >
> >
> "mappings":"A;;;;;;;;;;;;;;;;;;;;;;;;;;SAwBI,WAAyB,CAAC,GAAU,C,CAAU,C;EAE1C,IAAI,GAAG,IAAI,IAAI,C;IAAE,OAAO,KAAK,C;EAE7B,IAAK,sBAAD,CAAM,G,CAAG,GAAG,CAAC,M,OAAM,C;EACvB,IAAI,CAAC,CAAC,C;IAAE,OAAO,KAAK,C;EAEpB,IAAI,CAAC,mBAAS,CAAC,sBAAY,E,CAAE,GAAG,CAAC,UAAU,CAAC,CAAC,C,OAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,C;IAAE,OAAO,KAAK,C;EAErF,KAAK,IAAK,sBAAD,CAAK,GAAC,CAAC,EAAC,CAAC,GAAC,CAAE,EAAA,CAAC,EAAE,EAAE,C;IACtB,IAAY,sBAAR,QAAa,G,CAAG,GAAG,CAAC,UAAU,CAAC,CAAC,C,OAAC,C;IACrC,IAAI,mBAAS,CAAC,sBAAY,EAAC,QAAQ,CAAC,IACzB,mBAAS,CAAC,qBAAW,EAAC,QAAQ,CAAC,IAC/B,QAAQ,IAAI,EAAE,IACd,QAAQ,IAAI,EAAE,IACd,QAAQ,IAAI,EAAE,IACd,mBAAS,CAAC,6BAAmB,EAAE,QAAQ,CAAC,IACxC,mBAAS,CAAC,wBAAc,EAAE,QAAQ,CAAC,C;MAAE,QAAQ,C;IACxD,OAAO,KAAK,C;EAChB,C;EACA,OAAO,IAAI,C;AACf,C;;;;;;;;sBAIoB,GAAG,CACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd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",
> > >
> "sources":["frameworks/projects/Language/src/main/royale/isXMLName.as"],
> > > "names":[]
> > > }
> > >
> > > So I was thinking .. could it be possible to define a base URL for all
> > > source-maps?
> > > Then I could ensure I copy the sources to the right place … so for a
> > debug
> > > build I could not only have the JS files in there, but also in a
> > > sub-directory the AS code, which should make debugging a lot simpler.
> > > At least with maven, we’re already producing source-jars and I could
> > > simply use these and unpack them with the dependency plugin.
> > >
> > > Chris
> > >
> > >
> > >
> >
>
>
> --
> Carlos Rovira
> Apache Member & Apache Royale PMC
> *Apache Software Foundation*
> http://about.me/carlosrovira
>

Reply via email to