[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#41360] [PATCH v4 01/12] gnu: java-openjfx-graphics: Implement a com
From: |
Alexey Abramov |
Subject: |
[bug#41360] [PATCH v4 01/12] gnu: java-openjfx-graphics: Implement a complete compilation. |
Date: |
Thu, 18 Jun 2020 19:31:42 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.0.91 (gnu/linux) |
Hi Ludovic,
Please see an updated version of the java-openjfx-graphics in the attachments.
- Add yet another comment on top of the definition.
- Remove "XX" part from the commit, and put it to the above comment.
Ludovic Courtès <ludo@gnu.org> writes:
> Hi Alexey,
>
> Alexey Abramov <levenson@mmer.org> skribis:
>
>> * gnu/packages/java.scm (java-openjfx-graphics): Add stages to build
>> libdecora_sse, prism_common, glassgtk2, iio, prism_sw, prism_es2,
>> font_freetype, glassgtk3, font, font_pango and glass libraries.
>>
>> All the steps were taken by inspecting ./gradlew build --info result.
>
> Could you add it in a comment?
Done.
> So essentially all these phases and the unrolled and translated version
> of what Gradle would do, right?
Yes. Some of them are pretty straightforward, but others (like prism and
shaders) are tricky.
>
>> Signed-off-by: Alexey Abramov <levenson@mmer.org>
>> ---
>> gnu/packages/java.scm | 642 +++++++++++++++++++++++++++++++++++++++++-
>> 1 file changed, 634 insertions(+), 8 deletions(-)
>
> I guess it’s still “source”, but that’s a lot of it.
>
> Do you think there are ways this could be factorized? I’m not saying we
> have to do this right away, but we should probably keep in mind if we
> want to ensure the long-term maintainability of this package.
I guess, In the beginning, I was trying to wrap those steps with some
procedure/s, like the one gradle.build has, but when I was doing this, I
realized that it might become more complicated, than just simple series of
javah/javac/gcc/g++ steps. They all kinda look alike, but different.
>
>> + ;; XX: Description can be found in build.gradle:1429. Currently
>
> I think you can remove “XX”, but description of what? Probably a bit
> more context would be fine.
Done.
>
>> + (mkdir-p prism-gen-src)
>> + (for-each (lambda (file)
>> + (apply invoke "java"
>> + "-cp" (string-join (list
>> + ;; For CompileJSL
>> +
>> prism-compilers-classes
>> + ;; jsl files are
>> there
>> + prism-src
>> + (getenv
>> "CLASSPATH"))
>> + ":")
>> + "CompileJSL"
>> + "-i" prism-src
>> + "-o" prism-gen-src
>> + "-t"
>> + "-pkg" "com/sun/prism"
>> + "-d3d"
>> + "-es2"
>> + "-name" (list file)))
>
> Problem is we won’t know where those flags come from, right? Perhaps
> there’s additional info the Gradle build files?
gradle.build has no comments about that =(. This is what you can find on top
of the graphics module:
// The graphics module is needed for any graphical JavaFX application. It
requires the base module and includes the scene graph, layout, css, prism,
windowing, etc. This is a fairly complicated module. There are many different
types of native components that all need to be compiled.
I also put it above the java-openjfx-graphics definition.
>
>> + (add-after 'compile-decora-compilers 'generate-decora-shaders
>> + (lambda _
>> + (let ((classes "modules/graphics/build/classes/java/main")
>> + (decora-classes
>> "modules/graphics/build/classes/jsl-decora/")
>> + (decora-compilers-classes
>> "modules/graphics/build/classes/jsl-compilers/decora")
>> + (decora-gen-src
>> "modules/graphics/build/generated-src/jsl-decora")
>> + (decora-src "modules/graphics/src/main/jsl-decora/")
>> + (decora-components '([(file-name . "ColorAdjust")
>> + (generator . "CompileJSL")
>> + (outputs . "-all")]
>> + [(file-name . "Brightpass")
>> + (generator . "CompileJSL")
>> + (outputs . "-all")]
>> + [(file-name . "SepiaTone")
>> + (generator . "CompileJSL")
>> + (outputs . "-all")]
>> + [(file-name .
>> "PerspectiveTransform")
>> + (generator . "CompileJSL")
>> + (outputs . "-all")]
>> + [(file-name . "DisplacementMap")
>> + (generator . "CompileJSL")
>> + (outputs . "-all")]
>> + [(file-name . "InvertMask")
>> + (generator . "CompileJSL")
>> + (outputs . "-all")]
>> + [(file-name . "Blend")
>> + (generator . "CompileBlend")
>> + (outputs . "-all")]
>> + [(file-name . "PhongLighting")
>> + (generator . "CompilePhong")
>> + (outputs . "-all")]
>> + [(file-name . "LinearConvolve")
>> + (generator .
>> "CompileLinearConvolve")
>> + (outputs . "-hw")]
>> + [(file-name .
>> "LinearConvolveShadow")
>> + (generator .
>> "CompileLinearConvolve")
>> + (outputs . "-hw")])))
>
> We should at least have a comment explaining where that list comes from
> and what it means.
I put a big comment I found in gradle.build a little bit higher, before those
steps where we compile these generators.
> I appreciate the huge amount of work you put into this, but I’m
> concerned about maintainability.
Thanks, I agree. These patches are also not complete. Ideally, javafx should
provide a jfxrt.jar and users should not think about these modules at all. We
are half-way there.
> Julien, what are the prospects of getting Gradle in Guix? What are your
> thoughts here?
That would be awesome to have (guix build-system gradle)! I was looking into
this as well, and even found some links where I got an idea that "probably"
some older version of gradle could be build with ant.
> Thanks,
> Ludo’.
--
Alexey
0001-gnu-java-openjfx-graphics-Implement-a-complete-compi.patch
Description: Text Data
- [bug#41360] [PATCH v4 00/12] Improve OpenJFX and friends packages, Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 03/12] gnu: java-openjfx-swing: Add new variable., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 02/12] gnu: java-openjfx-build: Fix openjfx-swing component build for JDKu8, Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 01/12] gnu: java-openjfx-graphics: Implement a complete compilation., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 04/12] gnu: java-openjfx-swt: Add new variable., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 05/12] gnu: java-openjfx-controls: Add new variable., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 06/12] gnu: java-openjfx-build: Patch DumpRenderTree for the web component., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 09/12] gnu: java-openjfx-build: Fix web component linkage., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 07/12] gnu: java-openjfx-build: Do not use an embedded 3rd party libraries., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 11/12] gnu: java-openjfx-build: Ensure use of system provided libraries., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 08/12] gnu: java-openjfx-build: Fix web component compilation with ICU 59+., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 12/12] gnu: java-openjfx-web: Add new variable., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 10/12] gnu: java-openjfx-build: Fix web component compilation with ICU 65+., Alexey Abramov, 2020/06/07