guix-patches
[Top][All Lists]
Advanced

[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

Attachment: 0001-gnu-java-openjfx-graphics-Implement-a-complete-compi.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]