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 writes: > Hi Alexey, > > Alexey Abramov 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 >> --- >> 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