Subject: [bug#67846] [PATCH] gnu: Add davmail

From: reza <[email-masked]>
Date: Mon, 18 Dec 2023 07:01:24 +0000

On December 17, 2023 10:06:14 AM UTC, Lars Rustand <[email-masked]> wrote:
>
>I've made a little progress here, added packages for three of the
>packages we were missing:
>
>- java-htmlcleaner
>- java-jcharset
>- java-jcifs
>
>
>I also added a couple of packages that were not listed as dependencies
>but were needed:
>
>- java-openjfx-swing
>- java-openjfx-web
>
>java-openjfx-swing needs to have the patch
>java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch from
>https://issues.guix.gnu.org/41360 applied to java-openjfx-build.
>
>Your jackrabbit-webdav package built without problems. So the only
>packages we are missing now seems to be:
>
>- java-javax-activation
>- java-sfl4j-log4j12
>- java-winrun4j
>
>I added a packaged definition for java-sfl4j-log4j12 but it is currently
>failing to build with some undefined reference to
>`org.apache.log4j.helpers.ThreadLocalMap`.
>
>javax.activation has been taken over by Eclipse and moved to
>jakarta.activation. I haven't yet tried to package this one since I
>don't know what is the best way to handle this and if it is possible to
>use the new jakarta.activation directly in place of javax.activation.
>
>It also seems that winrun4j is needed after all, since I get some build
>error related to winrun4j when trying to build davmail. Unless we are
>able to remove references to it we might need to package winrun4j also.
>
>Attaching the java-additions file with my changes added.
>
>--8<---------------cut here---------------start------------->8---
>(define-module (gnu packages java-additions)
>  #:use-module ((guix licenses) #:prefix license:)
>  #:use-module (guix utils)
>  #:use-module (guix packages)
>  #:use-module (guix download)
>  #:use-module (guix gexp)  
>  #:use-module (guix git-download)
>  #:use-module (guix build-system ant)
>  #:use-module (guix build-system maven)
>  #:use-module (gnu packages)
>  #:use-module (gnu packages cmake)
>  #:use-module (gnu packages compression)
>  #:use-module (gnu packages java)
>  #:use-module (gnu packages java-bootstrap)
>  #:use-module (gnu packages java-compression)
>  #:use-module (gnu packages java-xml)
>  #:use-module (gnu packages gperf)
>  #:use-module (gnu packages python)
>  #:use-module (gnu packages ruby))
>
>
>(define-public java-javax-jcr
>  (package
>    (name "java-javax-jcr")
>    (version "2.0")
>    (source (origin
>              (method url-fetch)
>	      (uri (string-append "https://repo1.maven.org/maven2/"
>				  "javax/jcr/jcr/"
>				  version "/jcr-"
>				  version "-sources.jar"))
>              (sha256
>               (base32
>                "163c9y71rm31mgazzxar28r3k4fb9vzk7a1dfs1cgf7d9rnx4i33"))))
>    (build-system ant-build-system)
>    (arguments
>     `(#:tests? #f ; no tests
>       #:jar-name "javax-jcr.jar"))
>    (home-page "https://jcp.org/aboutJava/communityprocess/final/jsr283/index.html")
>    (synopsis "Specifies a standard API to access content repositories in Java independently of implementation")
>    (description "
>The API should be a standard, implementation independent, way to access content bi-directionally on a 
>granular level within a content repository. A Content Repository is a high-level information management 
>system that is a superset of traditional data repositories. A content repository implements 
>\"content services\" such as: author based versioning, full textual searching, fine grained access control, 
>content categorization and content event monitoring. It is these \"content services\" that differentiate a 
>Content Repository from a Data Repository.
>
>Many of today's (web)applications are interacting with a content repository in various ways.
>
>This API proposes that content repositories have a dedicated, standard way of interaction with applications 
>that deal with content. This API will focus on transactional read/write access, binary content 
>(stream operations), textual content, full-text searching, filtering, observation, versioning, handling of 
>hard and soft structured content.")
>    ;; Day Specification License
>    (license license:gpl2)))
>
>(define-public java-oak-jackrabbit-api
>  (package
>    (name "java-oak-jackrabbit-api")
>    (version "1.42.0")
>    (source (origin
>              (method url-fetch)
>	      (uri (string-append "https://dlcdn.apache.org/jackrabbit/oak/"
>				  version "/jackrabbit-oak-" version "-src.zip"))
>	      (sha256
>	       (base32
>		"17ra69nn4fl7ja2m23d3995570j5j5ni3fi4kfvfsp82jdmryy6r"))))
>    (build-system ant-build-system)
>    (arguments
>     `(#:jar-name "oak-jackrabbit-api.jar"
>       #:phases
>       (modify-phases %standard-phases
>         (add-after 'unpack 'chdir
>           (lambda _ (chdir "oak-jackrabbit-api") #t))
>	 (add-before 'build 'prepare
>           (lambda _
>             (with-directory-excursion
>		 "src/test/java/org/apache/jackrabbit/api/"
>	       ;; remove test which has build error
>               (delete-file "JackrabbitSessionTest.java"))
>             #t)))))
>    (inputs
>     (list unzip
>	   java-commons-logging-minimal
>           java-mockito-1
>           java-junit
>	   java-jetbrains-annotations
>	   java-javax-jcr
>	   java-osgi-annotation))
>    (home-page "https://jackrabbit.apache.org/oak/docs/index.html")
>    (synopsis "Jackrabbit Oak - the next generation content repository")
>    (description "This component contains the interface extensions that Apache Jackrabbit and
>Jackrabbit Oak support in addition to the standard JCR API. You can
>use these interfaces to access implementation-specific functionality.")
>    (license license:asl2.0)))
>
>(define-public java-jackrabbit-oak
>  (package
>    (name "java-jackrabbit-oak")
>    (version "1.42.0")
>    (source (origin
>              (method url-fetch)
>	      (uri (string-append "https://dlcdn.apache.org/jackrabbit/oak/"
>				  version "/jackrabbit-oak-" version "-src.zip"))
>	      (sha256
>	       (base32
>		"17ra69nn4fl7ja2m23d3995570j5j5ni3fi4kfvfsp82jdmryy6r"))))
>    (build-system maven-build-system)
>    (arguments
>     `(#:exclude
>       (
>					;   ("org.apache.maven.plugins" .
>					;	 ("maven-deploy-plugin" "maven-javadoc-plugin" "maven-idea-plugin"
>					;	  "maven-eclipse-plugin" "maven-release-plugin"))
>	("org.apache.rat" . ("apache-rat-plugin"))
>	("org.codehaus.mojo" . ("animal-sniffer-maven-plugin"))
>	("org.jacoco" . ("jacoco-maven-plugin"))
>	("org.apache.felix" . ("maven-bundle-plugin")))
>       #:local-packages (("javax.jcr" . (("jcr" . "2.0")))
>			 ("org.osgi" . (("org.osgi.annotation" . "6.0.0")))
>			 ("org.jetbrains" . (("annotations". "19.0.0")))
>			 ("org.mockito" . (("mockito-core" . "1.10.19"))))))
>    (native-inputs (list unzip java-javax-jcr))
>    (synopsis "Jackrabbit Oak - the next generation content repository")
>    (description
>     "Jackrabbit Oak is an effort to implement a scalable and performant hierarchical 
>content repository for use as the foundation of modern world-class web sites and other 
>demanding content applications. The Oak effort is a part of the Apache Jackrabbit 
>project. Apache Jackrabbit is a project of the Apache Software Foundation.
>")
>    (home-page "https://jackrabbit.apache.org/oak/docs/index.html")
>    (license license:asl2.0)))
>
>(define-public java-jackrabbit
>  (package
>    (name "java-jackrabbit")
>    (version "2.21.21")
>    (source (origin
>              (method url-fetch)
>              (uri (string-append "https://dlcdn.apache.org/jackrabbit/"
>				  version "/jackrabbit-" version "-src.zip"))
>              (sha256
>               (base32
>		"0i2m0zmbb7xcvg2zwkdj16xjr9jhv5a0rxf75r2vad7jpkym99sz"))))
>    (build-system maven-build-system)
>    (arguments
>     `(#:exclude
>       (("org.apache.maven.plugins" .
>	 ("maven-deploy-plugin" "maven-javadoc-plugin" "maven-idea-plugin"
>	  "maven-eclipse-plugin" "maven-release-plugin"))
>	("org.apache.rat" . ("apache-rat-plugin"))
>	("org.codehaus.mojo" . ("animal-sniffer-maven-plugin"))
>	("org.jacoco" . ("jacoco-maven-plugin"))
>	("org.apache.felix" . ("maven-bundle-plugin")))
>       #:local-packages (("javax.jcr" . (("jcr" . "2.0")))
>			 ("org.apache.jackrabbit" . (("oak-jackrabbit-api" . "1.42.0")))
>			 ("org.osgi" . (("org.osgi.annotation" . "6.0.0")))
>			 ("cglib" . (("cglib" . "3.2.4"))))))
>    (native-inputs (list unzip java-junit java-javax-jcr))
>    (synopsis "This is the WebDAV Library component of the Apache Jackrabbit project")
>    (description
>     "This component provides interfaces and common utility classes used for
>building a WebDAV server or client. The following RFC have been integrated:
>
>    * RFC 2518 (WebDAV - HTTP Extensions for Distributed Authoring)
>    * RFC 3253 (DeltaV - Versioning Extensions to WebDAV)
>    * RFC 3648 (Ordered Collections Protocol)
>    * RFC 3744 (Access Control Protocol)
>    * DAV Searching and Locating  (DASL)
>    * Binding Extensions to Web Distributed Authoring and Versioning (WebDAV) (experimental)
>
>In addition this library defines (unspecified)
>
>    * Observation
>    * Bundling multiple request with extensions to locking")
>    (home-page "https://jackrabbit.apache.org/jcr/index.html")
>    (license license:asl2.0)))
>
>(define-public java-jackrabbit-webdav
>  (package
>    (name "java-jackrabbit-webdav")
>    (version "2.21.21")
>    (source (origin
>              (method url-fetch)
>              (uri (string-append "https://dlcdn.apache.org/jackrabbit/"
>				  version "/jackrabbit-" version "-src.zip"))
>              (sha256
>               (base32
>		"0i2m0zmbb7xcvg2zwkdj16xjr9jhv5a0rxf75r2vad7jpkym99sz"))))
>    (build-system ant-build-system)
>    (arguments
>     `(#:jar-name "jackrabbit-webdav.jar"
>       #:test-exclude (list "**/ParserTest.java") ;; fails unexpected
>       #:phases
>       (modify-phases %standard-phases
>	 (add-after 'unpack 'chdir
>           (lambda _ (chdir "jackrabbit-webdav") #t)))))
>    (native-inputs (list
>		    unzip
>		    java-junit
>		    java-slf4j-simple
>		    java-httpcomponents-httpcore
>		    java-httpcomponents-httpclient
>		    java-javaee-servletapi
>		    java-osgi-annotation))
>    (synopsis "This is the WebDAV Library component of the Apache Jackrabbit project")
>    (description
>     "This component provides interfaces and common utility classes used for
>building a WebDAV server or client. The following RFC have been integrated:
>
>    * RFC 2518 (WebDAV - HTTP Extensions for Distributed Authoring)
>    * RFC 3253 (DeltaV - Versioning Extensions to WebDAV)
>    * RFC 3648 (Ordered Collections Protocol)
>    * RFC 3744 (Access Control Protocol)
>    * DAV Searching and Locating  (DASL)
>    * Binding Extensions to Web Distributed Authoring and Versioning (WebDAV) (experimental)
>
>In addition this library defines (unspecified)
>
>    * Observation
>    * Bundling multiple request with extensions to locking")
>    (home-page "https://jackrabbit.apache.org")
>    (license license:asl2.0)))
>
>(define-public java-davmail
>  (package
>    (name "java-davmail")
>    (version "6.0.1")
>    (source (origin
>              (method url-fetch)
>	      (uri (string-append "https://sourceforge.net/projects/davmail/files/davmail/"
>				  version "/davmail-srconly-" version "-3390.tgz"))
>	      (sha256
>	       (base32
>		"0q5yix25i253w9kpqc8wiryvzpfrbqalky8byf5bz66v13c07y7p"))))
>    (build-system ant-build-system)
>    (arguments
>     `(#:modules ((guix build ant-build-system)
>                  (guix build java-utils)
>                  (guix build utils)
>                  (srfi srfi-1)
>                  (ice-9 match))
>					;#:build-target "jar"
>       #:source-dir "src/"
>       #:test-dir "src/test"
>       #:tests? #false
>       #:jar-name "davmail.jar"
>       #:build-target "jar"))
>					;#:phases
>					;(modify-phases %standard-phases
>					;	 (add-after 'unpack 'create-libdir
>					;	   (lambda* (#:key inputs #:allow-other-keys)
>					;	     (mkdir-p "lib")
>					;					;(for-each
>					;					; (lambda (file)
>					;					;	(let ((target (string-append "lib/" (basename file))))
>					;					;	  (unless (file-exists? target)
>					;					;	    (symlink file target))))
>					;					; (append-map (match-lambda
>					;					;		    (dir
>					;					;		     (find-files dir "\\.jar$")))
>					;					;		  inputs))
>					;	     #t)))))
>    (inputs (list
>					;java-junit
>	     ;;java-log4j-core
>	     ;;java-log4j-api
>	     java-slf4j-api
>	     java-log4j-1.2-api
>	     ;;java-slf4j-log4j12
>             java-jcl-over-slf4j
>             java-openjfx-base
>             java-openjfx-build
>             java-openjfx-controls
>             java-openjfx-graphics
>             java-openjfx-media
>             java-openjfx-web
>             java-openjfx-swing ;; Maybe not all of these are needed
>	     java-javax-mail
>             java-htmlcleaner
>             java-jackrabbit-webdav
>             java-junit
>	     ;;java-slf4j-simple
>             java-jcifs
>             java-swt
>             java-woodstox-core
>             java-stax
>             java-stax2-api
>             java-jcharset
>	     java-httpcomponents-httpcore
>	     java-httpcomponents-httpclient
>             java-commons-httpclient
>             java-commons-codec
>             java-jettison
>             java-javaee-servletapi
>					;java-osgi-annotation
>	     ))
>    (synopsis "POP/IMAP/SMTP/Caldav/Carddav/LDAP Exchange and Office 365 Gateway")
>    (description
>     "Ever wanted to get rid of Outlook? DavMail is a POP/IMAP/SMTP/Caldav/Carddav/LDAP 
>exchange gateway allowing users to use any mail/calendar client (e.g. Thunderbird with 
>Lightning or Apple iCal) with an Exchange server, even from the internet or behind a firewall 
>through Outlook Web Access. DavMail now includes an LDAP gateway to Exchange global address 
>book and user personal contacts to allow recipient address completion in mail compose window 
>and full calendar support with attendees free/busy display.")
>    (home-page "http://davmail.sourceforge.net/index.html")
>    (license license:gpl2)))
>
>(define-public java-htmlcleaner
>  (package
>    (name "java-htmlcleaner")
>    (version "0.0")
>    (source (origin
>              (method url-fetch)
>              (uri (string-append
>               "https://downloads.sourceforge.net/project/htmlcleaner/htmlcleaner/htmlcleaner%20v2.29/htmlcleaner-src-2.29.zip"))
>              (sha256 (base32 "0l2k94rklbhxbcqqzn46y4l089jdi5ivy2g1h7vk8vxyc5qqvilz"))))
>    (build-system ant-build-system)
>    (arguments
>     `(#:jar-name "htmlcleaner.jar"
>       #:tests? #false
>       #:source-dir "../src/main"
>       #:test-dir "../src/test"))
>    (native-inputs
>     (list java-jdom2
>           unzip
>           java-junit))
>    (home-page "")
>    (synopsis "")
>    (description "")
>    ;; GPLv2 only
>    (license license:bsd-3)))
>
>(define-public java-jcharset
>  (package
>    (name "java-jcharset")
>    (version "0.0")
>    (source (origin
>              (method url-fetch)
>              (uri (string-append
>               "https://www.freeutils.net/source/jcharset/jcharset-2.1-distribution.zip"))
>              (sha256 (base32 "1k1fqwgrpxp81r93n2irw4lhsnx217jky7lz8h3wbic14iycz8v9"))))
>    (build-system ant-build-system)
>    (arguments
>     `(#:jar-name "jcharset.jar"
>       #:tests? #false
>       #:source-dir "src/main"
>       #:test-dir "src/test"))
>    (native-inputs
>     (list unzip
>           java-junit))
>    (home-page "")
>    (synopsis "")
>    (description "")
>    ;; GPLv2 only
>    (license license:bsd-3)))
>
>(define-public java-slf4j-log4j12
>  (package
>    (name "java-slf4j-log4j12")
>    (version "0.0.0")
>    (source (package-source java-slf4j-api))
>    (build-system ant-build-system)
>    (arguments
>     `(#:jar-name "slf4j-log4j12.jar"
>       #:source-dir "slf4j-log4j12/src/main"
>       #:test-dir "slf4j-log4j12/src/test"
>       #:phases
>       (modify-phases %standard-phases
>         ;; The tests need some test classes from slf4j-api
>         (add-before 'check 'build-slf4j-api-test-helpers
>           (lambda _
>             ;; Add current dir to CLASSPATH ...
>             (setenv "CLASSPATH"
>                     (string-append (getcwd) ":" (getenv "CLASSPATH")))
>             ;; ... and build test helper classes here:
>             (apply invoke
>                    `("javac" "-d" "."
>                      ,@(find-files "slf4j-api/src/test" ".*\\.java")))))
>         (replace 'install
>           (install-from-pom "slf4j-log4j12/pom.xml")))))
>    (propagated-inputs
>     (list java-slf4j-api
>           java-log4j-1.2-api))
>           ;;java-log4j-core))
>    (native-inputs
>     (list java-junit
>           java-logback-core
>           java-logback-classic
>           java-log4j-1.2-api
>           java-hamcrest-core))
>    (home-page "https://www.slf4j.org/")
>    (synopsis "")
>    (description "")
>    (license license:expat)))
>
>
>;; This might not be needed at all. It was listed as a dependency for jacrabbit,
>;; but I don't think jackrabbit uses it
>(define-public java-jcl-over-slf4j
>  (package
>    (name "java-jcl-over-slf4j")
>    (version "0.0.0")
>    (source (package-source java-slf4j-api))
>    (build-system ant-build-system)
>    (arguments
>     `(#:jar-name "jcl-over-slf4j.jar"
>       #:source-dir "jcl-over-slf4j/src/main"
>       #:tests? #false
>       #:test-dir "jcl-over-slf4j/src/test"
>       ;;#:test-exclude (list "**/*SimpleLoggerMultithreadedInitializationTest.java")
>       #:phases
>       (modify-phases %standard-phases
>         ;; The tests need some test classes from slf4j-api
>         (add-before 'check 'build-slf4j-api-test-helpers
>           (lambda _
>             ;; Add current dir to CLASSPATH ...
>             (setenv "CLASSPATH"
>                     (string-append (getcwd) ":" (getenv "CLASSPATH")))
>             ;; ... and build test helper classes here:
>             (apply invoke
>                    `("javac" "-d" "."
>                      ,@(find-files "slf4j-api/src/test" ".*\\.java")))))
>         (replace 'install
>           (install-from-pom "jcl-over-slf4j/pom.xml")))))
>    (propagated-inputs
>     (list java-slf4j-api
>           java-log4j-1.2-api
>           java-log4j-core))
>    (native-inputs
>     (list java-junit)) ;java-hamcrest-core))
>    (home-page "https://www.slf4j.org/")
>    (synopsis "")
>    (description "")
>    (license license:expat)))
>
>(define-public java-jcifs
>  (package
>    (name "java-jcifs")
>    (version "0.0.0")
>    (source (origin
>              (method url-fetch)
>              (uri (string-append
>               "https://www.jcifs.org/src/jcifs-1.3.19.zip"))
>              (sha256 (base32 "06pj5qi8giplsxdp5y4l4j55pj13n13k8lrqpk96jvm7xjhqc7m3"))))
>    (build-system ant-build-system)
>    (arguments
>     `(#:jar-name "jcifs.jar"
>       #:source-dir "src/jcifs"
>       #:tests? #false
>       #:test-dir "src/test"))
>    (propagated-inputs
>     (list ))
>    (native-inputs
>     (list java-junit
>	   java-javaee-servletapi
>           unzip)) ;java-hamcrest-core))
>    (home-page "")
>    (synopsis "")
>    (description "")
>    (license license:expat)))
>
>(define-public java-openjfx-swing
>  (package (inherit java-openjfx-build)
>    (name "java-openjfx-swing")
>    (arguments
>     `(#:jar-name "java-openjfx-swing.jar"
>       #:source-dir "modules/swing/src/main/java"
>       #:tests? #f
>       #:test-dir "modules/swing/src/test"))
>    (propagated-inputs
>     (list java-openjfx-base  
>           java-openjfx-graphics
>           java-openjfx-controls
>           java-openjfx-build
>           java-openjfx-media))
>    (description "OpenJFX is a client application platform for desktop,
>mobile and embedded systems built on Java.  Its goal is to produce a
>modern, efficient, and fully featured toolkit for developing rich client
>applications.  This package contains base classes for the OpenJFX
>distribution.")))
>
>
>
>(define-public java-openjfx-web
>  (package (inherit java-openjfx-build)
>    (name "java-openjfx-web")
>    (arguments
>     `(#:jar-name "java-openjfx-web.jar"
>       #:source-dir (string-join '("modules/web/src/main/java"
>                                   "modules/web/src/main/native/Source/WebCore/bindings/java/dom3")
>                                 ";")
>       #:tests? #f
>       #:modules ((ice-9 match)
>                  (guix build ant-build-system)
>                  (guix build utils))
>       #:phases
>       (modify-phases %standard-phases
>         (replace 'build
>           (lambda* (#:key inputs #:allow-other-keys)
>             (let* ((module (string-append (getcwd) "/modules/web"))
>                    (classes (string-append module "/build/classes/java/main")))
>               (invoke "ant" "compile" (string-append "-Dclasses.dir=" classes)))
>             #t))
>         (add-after 'build 'generate-headers
>           (lambda* (#:key inputs #:allow-other-keys)
>             (let* ((module (string-append (getcwd) "/modules/web"))
>                    (classes (string-append module "/build/classes/java/main"))
>                    (web-generated-headers (string-append module "/build/generated-src/headers"))
>                    (web-generated-classes '("com.sun.webkit.ContextMenu"
>                                             "com.sun.webkit.ContextMenuItem"
>                                             "com.sun.webkit.CursorManager"
>                                             "com.sun.webkit.PageCache"
>                                             "com.sun.webkit.PopupMenu"
>                                             "com.sun.webkit.SharedBuffer"
>                                             "com.sun.webkit.WebPage"
>                                             "com.sun.webkit.LoadListenerClient"
>                                             "com.sun.webkit.event.WCFocusEvent"
>                                             "com.sun.webkit.event.WCKeyEvent"
>                                             "com.sun.webkit.event.WCMouseEvent"
>                                             "com.sun.webkit.event.WCMouseWheelEvent"
>                                             "com.sun.webkit.graphics.GraphicsDecoder"
>                                             "com.sun.webkit.graphics.RenderMediaControls"
>                                             "com.sun.webkit.graphics.RenderTheme"
>                                             "com.sun.webkit.graphics.ScrollBarTheme"
>                                             "com.sun.webkit.graphics.WCMediaPlayer"
>                                             "com.sun.webkit.graphics.WCGraphicsManager"
>                                             "com.sun.webkit.graphics.WCRenderQueue"
>                                             "com.sun.webkit.graphics.WCPath"
>                                             "com.sun.webkit.graphics.WCPathIterator"
>                                             "com.sun.webkit.Timer"
>                                             "com.sun.webkit.WCFrameView"
>                                             "com.sun.webkit.WCPasteboard"
>                                             "com.sun.webkit.WCPluginWidget"
>                                             "com.sun.webkit.dom.CharacterDataImpl"
>                                             "com.sun.webkit.dom.JSObject"
>                                             "com.sun.webkit.network.SocketStreamHandle"
>                                             "com.sun.webkit.network.URLLoader"
>                                             "com.sun.webkit.text.TextBreakIterator"
>                                             "com.sun.webkit.text.TextNormalizer"))
>                    (graphics (assoc-ref inputs "java-openjfx-graphics")))
>               (mkdir-p web-generated-headers)
>               (apply invoke
>                      "javah"
>                      "-Djava.ext.dirs="
>                      "-XDignore.symbol.file"
>                      "-XDuseUnsharedTable=true"
>                      "-d" web-generated-headers
>                      "-cp" (string-join (cons* classes (find-files graphics ".jar$")) ":")
>                      web-generated-classes))
>             #t))
>
>         (add-after 'generate-headers 'compile-native-linux
>           (lambda* (#:key inputs system outputs #:allow-other-keys)
>             (let*  ((module (string-append (getcwd) "/modules/web"))
>                     ;;
>                     (webkit-native-dest (string-append module "/build/linux"))
>                     (webkit-native-src (string-append module "/src/main/native"))
>                     ;;
>                     (lib (string-append (assoc-ref outputs "out") "/lib"))
>                     ;; uname -m
>                     (machine (match system
>                                ("x86_64-linux"   "x86_64")
>                                ("i686-linux"     "i686")
>                                ;; Prevent errors when querying this
>                                ;; package on unsupported platforms,
>                                ;; e.g. when running "guix package
>                                ;; --search="
>                                (_                "UNSUPPORTED"))))
>
>               (mkdir-p webkit-native-dest)
>               (setenv "PYTHONDONTWRITEBYTECODE" "1")
>               (setenv "WEBKIT_OUTPUTDIR" webkit-native-dest)
>               (apply invoke `("perl"
>                               ,(string-append webkit-native-src "/Tools/Scripts/set-webkit-configuration")
>                               ,(if ,(target-64bit?) "--64-bit" "--32-bit")
>                               "--release"))
>
>               (substitute* (find-files "." "xsltlocale\\.h")
>                 (("#include <xlocale.h>") "#include <locale.h>"))
>               (invoke "perl"
>                       (string-append webkit-native-src "/Tools/Scripts/build-webkit")
>                       "--java" ; webkit port
>                       "--skip-library-update"
>                       "--verbose"
>                       (string-append
>                        "--cmakeargs="
>                        (string-join
>                         (list "-DCMAKE_SYSTEM_NAME=Linux"
>                               ;; ensure that the libraries are installed into /lib
>                               (string-append "-DCMAKE_INSTALL_LIBDIR=" lib)
>                               ;; add input libraries to rpath
>                               "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE"
>                               ;; enable verbose output from builds
>                               "-DCMAKE_VERBOSE_MAKEFILE=ON"
>                               (string-append "-DCMAKE_SHARED_LINKER_FLAGS="
>                                              "\"-Wl,-rpath=" lib "\"")
>                               (string-append "-DCMAKE_SYSTEM_PROCESSOR=" machine)
>
>                               "-DJAVAFX_RELEASE_VERSION=8.0"
>                               ;;"-W"
>                               "-Wall"
>                               "-Werror=implicit-function-declaration"
>                               "-Wl,--gc-sections"
>                               "-Wno-parentheses"
>                               "-Wno-unused")))))
>                               ;;"-fPIC"
>                               ;;"-fno-omit-frame-pointer"
>                               ;;"-fno-strict-aliasing"
>                               ;;"-fstack-protector")))))
>             #t))
>
>         (add-after 'compile-native-linux 'install-native
>           (lambda* (#:key outputs #:allow-other-keys)
>             (let ((lib (string-append (assoc-ref outputs "out") "/lib")))
>               (for-each (lambda (file)
>                           (install-file file lib))
>                         (find-files "." "\\.so$")))))
>
>         (add-before 'install 'build-jar
>           (lambda _
>             (let* ((module (string-append (getcwd) "/modules/web"))
>                    (resources (string-append module "/src/main/resources"))
>                    (classes (string-append module "/build/classes/java/main")))
>               (copy-recursively resources classes)
>               (invoke "ant" "jar" (string-append "-Dclasses.dir=" classes)))
>             #t)))))
>    (inputs
>     `(("antlr3" ,antlr3)
>       ("java-stringtemplate" ,java-stringtemplate)))
>    (native-inputs
>     `(("java-junit" ,java-junit)
>       ("java-hamcrest-core" ,java-hamcrest-core)
>       ("cmake" ,cmake)
>       ("gcc" ,gcc)
>       ("gtk" ,gtk+-2)
>       ("gtk3" ,gtk+)
>       ("ruby" ,ruby)
>       ("perl" ,perl)
>       ("gperf" ,gperf)
>       ("python-2" ,python-2)
>       ("pkg-config" ,pkg-config)))
>    (propagated-inputs
>     `(("java-openjfx-controls" ,java-openjfx-controls)
>       ("java-openjfx-media" ,java-openjfx-media)
>       ("java-openjfx-graphics" ,java-openjfx-graphics)))))
>
>
>java-davmail
>--8<---------------cut here---------------end--------------->8---

Great, I'am in the process of packaging jcl-over-sfl4j but tests are failing due to missing dependencies. What about com.sun.mail?