unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* OpenJFX 14, gradle
@ 2020-05-04  2:00 Michael Zucchi
  2020-05-04  3:12 ` Julien Lepiller
  2020-05-04  8:53 ` Alexey Abramov
  0 siblings, 2 replies; 4+ messages in thread
From: Michael Zucchi @ 2020-05-04  2:00 UTC (permalink / raw)
  To: guix-devel


Morning,

I'm trying to work on updating some java stuff as guix currently only 
has java12 which is  a year out of date and javafx8 which is ancient.  
Apart from openjdk 13 and 14 which is in motion I've started looking at 
openjfx 14.

But openjfx needs to be compiled with gradle 6 now - the openjfx8 
package uses ant but that is no longer an option (there's some netbeans 
ant files there but they seem non functional).  guix has no build-system 
gradle and looking at gradle I can't imagine there will ever be a 
source-bootstrapped package for it - the 6.0 distribution is 215 jar 
files, mostly external libraries, and it needs gradle to build (because 
of course it does).  I'm assuming that guix wouldn't accept using 
gradle-wrapper here which is the `supported' build mechanism for the 
openjfx project.

Partly out of curiosity and partly as a potential alternative I spent 
the weekend creating a single 1000 line gnu makefile to replace the 
 >10kloc of gradle scripts and existing makefiles.  I haven't bothered 
with javafx.web or javafx-swt but otherwise it's complete and only 
requires antlr 4.7 at build time.  It uses gnu make features 
specifically and assumes a gnu environment, but it's 3-4x faster on my 
machine (amd r9-3900x).

Another alternative could be simple build script that forgoes 
incremental and parallel compilation support for a smaller script. I can 
possibly get that down to a few dozen lines of bash if i can utilise the 
existing makefiles.

Is either approach worth pursuing or is the whole idea a lost cause?

Regards,
  Michael



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: OpenJFX 14, gradle
  2020-05-04  2:00 OpenJFX 14, gradle Michael Zucchi
@ 2020-05-04  3:12 ` Julien Lepiller
  2020-05-04  8:53 ` Alexey Abramov
  1 sibling, 0 replies; 4+ messages in thread
From: Julien Lepiller @ 2020-05-04  3:12 UTC (permalink / raw)
  To: guix-devel, Michael Zucchi

Le 3 mai 2020 22:00:24 GMT-04:00, Michael Zucchi <notzed@gmail.com> a écrit :
>
>Morning,
>
>I'm trying to work on updating some java stuff as guix currently only 
>has java12 which is  a year out of date and javafx8 which is ancient.  
>Apart from openjdk 13 and 14 which is in motion I've started looking at
>
>openjfx 14.
>
>But openjfx needs to be compiled with gradle 6 now - the openjfx8 
>package uses ant but that is no longer an option (there's some netbeans
>
>ant files there but they seem non functional).  guix has no
>build-system 
>gradle and looking at gradle I can't imagine there will ever be a 
>source-bootstrapped package for it - the 6.0 distribution is 215 jar 
>files, mostly external libraries, and it needs gradle to build (because
>
>of course it does).  I'm assuming that guix wouldn't accept using 
>gradle-wrapper here which is the `supported' build mechanism for the 
>openjfx project.
>
>Partly out of curiosity and partly as a potential alternative I spent 
>the weekend creating a single 1000 line gnu makefile to replace the 
> >10kloc of gradle scripts and existing makefiles.  I haven't bothered 
>with javafx.web or javafx-swt but otherwise it's complete and only 
>requires antlr 4.7 at build time.  It uses gnu make features 
>specifically and assumes a gnu environment, but it's 3-4x faster on my 
>machine (amd r9-3900x).
>
>Another alternative could be simple build script that forgoes 
>incremental and parallel compilation support for a smaller script. I
>can 
>possibly get that down to a few dozen lines of bash if i can utilise
>the 
>existing makefiles.
>
>Is either approach worth pursuing or is the whole idea a lost cause?
>
>Regards,
>  Michael

Note that the ant-build-system is able to generate its own build.xml. that's going to be tough, so whatever works for you is fine, as long as everything is free software and source-bootstrapped.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: OpenJFX 14, gradle
  2020-05-04  2:00 OpenJFX 14, gradle Michael Zucchi
  2020-05-04  3:12 ` Julien Lepiller
@ 2020-05-04  8:53 ` Alexey Abramov
  2020-05-05  2:30   ` Michael Zucchi
  1 sibling, 1 reply; 4+ messages in thread
From: Alexey Abramov @ 2020-05-04  8:53 UTC (permalink / raw)
  To: Michael Zucchi; +Cc: guix-devel

Hi Michael,

I did almost the same thing but for JDKu8, You can check it https://gitlab.com/Levenson/ in a wip-davmail branch. I packaged graphics, swing, swt and friends. Unfortunatelly tests are disabled for now. I and am trying to make them work. It seems to me that even they do have tests for modules, a bundle needs to be created with all the modules first. 

I thought about makefiles, ant and build.xml, but decided to do everything in scheme for now. My plan is to make tests work, and then polish packages definition. 

-- 
Alexey


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: OpenJFX 14, gradle
  2020-05-04  8:53 ` Alexey Abramov
@ 2020-05-05  2:30   ` Michael Zucchi
  0 siblings, 0 replies; 4+ messages in thread
From: Michael Zucchi @ 2020-05-05  2:30 UTC (permalink / raw)
  To: Alexey Abramov; +Cc: guix-devel

Hi Alexey,

On 4/5/20 6:23 pm, Alexey Abramov wrote:
> Hi Michael,
>
> I did almost the same thing but for JDKu8, You can check it https://gitlab.com/Levenson/ in a wip-davmail branch. I packaged graphics, swing, swt and friends. Unfortunatelly tests are disabled for now. I and am trying to make them work. It seems to me that even they do have tests for modules, a bundle needs to be created with all the modules first.

At least for openjfx14 the main module resources need to be inside a jar 
file otherwise they can't be found, having them on the classpath isn't 
sufficient.  For the css files for example resolving resources in 
"com/sun/javafx/scene/control/skin" takes a different code path that 
seems to enforce this.

An additional wrinkle with 14 using modular java is that the tests need 
some proxy classes built into the modules - i found the easiest way is 
just to recompile everything again with the additional sources on the 
module source path.  It doesn't take very long at least.

I've only looked at the per-module unit tests and i got them to run ok 
apart from one test which seems to be locale related (LANG=C works).  
Those all-commented-out tests are still all-commented-out in 
javafx14(!).  There seems to be a surprising amount of baggage like that 
in the repository like the netbeans stuff, which seems nonfunctional.
> I thought about makefiles, ant and build.xml, but decided to do everything in scheme for now. My plan is to make tests work, and then polish packages definition.
>
I just don't know enough scheme or guix and looking at the scheme source 
it looks pretty ugly when running a bunch of shell commands in 
sequence.  ant is so very painful for non-trivial builds and pretty 
useless otherwise.  make has the benefit of easily supporting parallel 
compilation which speeds it up quite a bit (at least without javafx.web 
dominating).  The bash script i have is about 240 lines so somewhat more 
compact than the makefile i have but it uses the exising javafx.media 
makefiles which cuts it down quite a bit.

Thanks for the link, that will help trying to work out how to get this 
going within the guix build system.  I also need antlr4 which i'm hoping 
wont be too hard if i remove some of the optional parts/languages.

Cheers,
  Michael





^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-05-05  2:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-04  2:00 OpenJFX 14, gradle Michael Zucchi
2020-05-04  3:12 ` Julien Lepiller
2020-05-04  8:53 ` Alexey Abramov
2020-05-05  2:30   ` Michael Zucchi

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).