Hi John! Ready for another dozen of questions and bug reports? ;)
1. As for testdata/qxt directory - yup, it is indeed present, but I don't see 
"source" subdirectory, where I would expect the actual application code to 
reside. So I just ran "create-application.py -n qxt" in another location and 
copied the generated "source" subdirectory to testdata/qxt. Is it how it is 
supposed to work?
2. The build process spits a lot of trace messages like this:
Function enter: anonymous
Function exit: anonymous

SourceTarget completes successfully, but BuildTarget fails with the following:

2016-02-15 04:10:22.045 [info ] makers          Writing target Build Target: 
../testdata/qxt/build-output/
events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: EMFILE: too many open files, open 
'../testdata/qxt/build-output//resource/qx/icon/Tango/48/actions/go-home.png'
    at Error (native)

I had to increase open file descriptors limit (ulimit -n 8192 worked
for me). If this cannot be fixed/optimized, probably it should be
reflected in the docs.
3. There seems to be a big mess with resources. Test app works well in
its source variant, but the single-script build fails to load an icon:
GET http://localhost:8282/qxcompiler/testdata/qxt/build-output/qxt/test
.png [HTTP/1.0 404 File not found 2ms]
000472 qx.ui.basic.Image[45-0]: Image could not be loaded: qxt/test.png
boot.js:54698:13
000474 qx.ui.basic.Image[45-0]: Image could not be loaded: qxt/test.png
boot.js:54698:13
000569 ImageLoader: Not recognized format of external image
'qxt/test.png'! boot.js:54698:13
Shouldn't it look in "resources" subdirectory instead? The subdir is
present and does contain resources; however, it seems to contain *all*
the available qooxdoo+app resources (~3600 files, ~25M). generate.py
usually produces a ~150K subdir containing resources that are actually
required.
At the same time, my application was unable to load resources neither
in source nor in build variant. In both cases it tried to
(unsuccessfully) look up resources in that very same "source-output" or
"build-output" directory.
4. Our project uses your (excellent :) UploadMgr contrib. I've added
the following to the async.series block:
        function(cb) {
          maker.addLibrary("/path/to/qooxdoo-contrib/UploadMgr", cb);
        },
Is this the right way to integrate a contrib into the project?
Can't yet say whether it worked or not, as I didn't manage to make
application work (see below). I've noticed the following in console:
SyntaxError: in strict mode code, functions may be declared only at top
level or immediately within another function (source-
output/transpiled//com/zenesis/qx/upload/XhrHandler.js:212:19)
(original file line 212, function sendAsMime definition)
5. One of my classes invokes its static method from a constructor.
According to qooxdoo docs, this should be done this way:
this.self(arguments).foo();

The application failed to load because of "this.constructor.self" being
undefined. The following however worked fine:
this.constructor.foo();

This could potentially break applications that access static members
from constructors and/or instance methods. (I'm not sure if constructor
is some special case.)
6. Is there a way to pass qooxdoo environment keys to the app a la
config.js? Much better if the values could be passed via command line.
Our build system produces metadata (version, build number, revision,
timestamp) which we are planning to pass to the app in the form of
qx.core.Environment keys.
7. What about locales & translation? For us, it is essential because
our app is already bilingual, and more languages are to come.
8. For our app, "generate.py build" produces a ~900K script, and it
takes less than a second for the app to be up and running.
QxCompiler/BuildTarget produces a huge ~5M single script, and
application startup takes up to 10 seconds (!)
What is the recommended way to produce optimized/minified build that
would be comparable to the original one?
Okay, that's enough for today :) Tomorrow I'll try to figure out the
cause of another failure that prevents our app from starting up. It's
something related to JSON unmarshalling; the data is unmarshalled as
auto-generated class (qx.data.model.prop1"prop2"prop3[123-0]), while it
should be an application class resolved by a marshal delegate. This
works fine with generate.py.
Good luck!
Dimitri
> Further to this - I've added some docs about the API, but also seen
> that the BuildTarget has a bug and doesn't work - it's only a minor
> issue but I probably wont have time to fix it until tonight
>  
> John
>  
>  
>  
> From: "John Spackman" <john.spack...@zenesis.com>
> Sent: Sunday, February 14, 2016 9:50 AM
> To: "qooxdoo Development" <qooxdoo-devel@lists.sourceforge.net>
> Subject: Re: [qooxdoo-devel] QxCompiler - add ES6, faster
> compilation, and 100% Javascript API to building applications
>  
> Hi Dimitri
>  
> Thanks for checking out so quickly :)
>  
> Re: npm and docs: done
>  
> Re: qooxdoo submodule and https: fixed
>  
> Re: QOOXDOO_PATH: no - that's a generator.py/config.json setting and
> config.json files are completely ignored; when using the QxCompiler
> API, once you have told it where the Qooxdoo library is you have done
> the equivalent of setting QOOXDOO_PATH.  Of course, as it's API based
> you can define variables etc as suits you best :)
>  
> In test/compile-app-demo.js it adds the Qooxdoo library like this:
>     maker.addLibrary("../qooxdoo/framework", cb);
>  
> Just change the path to point to your preferred location for qooxdoo.
>  To make this a bit clearer, I've just modified the test/compile-app-
> demo.js to declare a variable QOOXDOO_PATH
>  
> I expect that the command line version will imply have a search path
> for libraries and just auto-discover by searching for Manifest.json
> files.
>  
> Re: missing testdata/qxt: something went wrong with your checkout,
> that directory is definitely there.
>  
> Re: build (and source-hybrid) targets: to control output for Source
> vs Build vs Source-Hybrid, the API classes
> qxcompiler.targets.SourceTarget, qxcompiler.targets.BuildTarget, and
> qxcompiler.targets.SourceHybridTarget are used; test/compile-app-
> demo.js uses the SourceTarget but you should be able to switch it
> easily enough.  I say "should" because I realise now that I havn't
> tested them for a few weeks now and I should give them the once over
> ASAP :)  I've got to go out shortly so I'll take a look this evening.
>  
> John
>  
>  
> From: "Dimitri" <mi...@cargosoft.ru>
> Sent: Sunday, February 14, 2016 2:27 AM
> To: "qooxdoo Development" <qooxdoo-devel@lists.sourceforge.net>
> Subject: Re: [qooxdoo-devel] QxCompiler - add ES6, faster
> compilation, and 100% Javascript API to building applications
>  
> John, congratulations with the long awaited release! :) qooxdoo guys,
> do you think that project like this could at some moment land in
> qooxdoo and get official support? What about qooxdoo patches (mostly
> strict mode compatibility related, AFAIK) - could they be merged
> upstream? This would reduce maintainship costs for those who want to
> experiment with both QxCompiler and official toolchain. I didn't yet
> try QxCompiler with my project - I feel I yet lack some understanding
> of how it works. However, I tried to test it with the skeleton app.
> Off the top of my head: - one needs to do "npm install" first and to
> run test scripts with "node .js". This might be quite obvious
> for those experienced with Node, but I guess the docs will
> nevertheless benefit from mentioning this; - it's not easy to clone a
> repo unless you've set up Github SSH access. This is because of
> "qooxdoo" submodule pointing to "g...@github.com:john
> spackman/qooxdoo.git". Could it be a HTTPS URL instead? - does
> QxCompiler honour QOOXDOO_PATH setting? How do I define qooxdoo
> location if it is different from the bundled one? - testdata/qxt
> directory doesn't contain skeleton app. In order to play with test
> scripts, one needs to create the app manually (as
> "skeleton.Application"?) and copy it to the said location; - does
> lib/compiler.jar really belong there? Most importantly, I was unable
> to find clear instructions how to produce a single-script minified
> build (a-la "generate.py build"). By deafult, QxCompiler produces a
> bunch of JS files, which significantly slows down loading and,
> obviously, is not acceptable for production. Is it possible at all
> with the current version (maybe in combination with classic
> generator)? I hope these are just minor issues. After all, you've
> done a great job :) I wish you good luck and further progress wih
> QxCompiler. Dimitri > Hi all > > There is a first release of my
> QxCompiler that adds ES6 to Qooxdoo > applications and replaces the
> generate.py toolchain with a faster, > 100% Javascript tool that is
> easily extensible. > > You can find the first release at GitHub here:
> https://github.com/joh > nspackman/qxcompiler > > It’s an alpha
> release, but something that’s been in development for a > while now
> and which I’m starting to build into my production > servers.   > >
> I’m very open to pull requests or collaboration, and keen to see this
> > become a useful tool for myself as well as others so any questions
> > etc please ask. > > Regards > John > > > > > > --------------------
> ----------------------------------------------- > ----------- >
> Site24x7 APM Insight: Get Deep Visibility into Application >
> Performance > APM + Mobile APM + RUM: Monitor 3 App instances at just
> $35/Month > Monitor end-to-end web transactions and take corrective
> actions now > Troubleshoot faster and improve end-user experience.
> Signup Now! > http://pubads.g.doubleclick.net/gampad/clk?id=272487151
> &iu=/4140 > _______________________________________________ >
> qooxdoo-devel mailing list > qooxdoo-devel@lists.sourceforge.net >
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel ----------
> --------------------------------------------------------------------
> Site24x7 APM Insight: Get Deep Visibility into Application
> Performance APM + Mobile APM + RUM: Monitor 3 App instances at just
> $35/Month Monitor end-to-end web transactions and take corrective
> actions now Troubleshoot faster and improve end-user experience.
> Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
> _______________________________________________ qooxdoo-devel mailing
> list qooxdoo-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>  ------------------------------------------------------------------
> ------------
> Site24x7 APM Insight: Get Deep Visibility into Application
> Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
> _______________________________________________
> qooxdoo-devel mailing list
> qooxdoo-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
qooxdoo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to