Subject: [bug#42000] [PATCH] gnu: Add drip.

From: Efraim Flashner <[email-masked]>
Date: Tue, 23 Jun 2020 15:51:49 +0300

On Mon, Jun 22, 2020 at 11:31:54AM +0200, Pierre Neidhardt wrote:
> * gnu/packages/java.scm (drip): New variable.
> ---
>  gnu/packages/java.scm | 52 +++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 52 insertions(+)
> 
> diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
> index d5bc713c70..d4bb88cf49 100644
> --- a/gnu/packages/java.scm
> +++ b/gnu/packages/java.scm
> @@ -165,6 +165,58 @@ defined in The Java Language Specification into the bytecoded instruction set
>  and binary format defined in The Java Virtual Machine Specification.")
>      (license license:ibmpl1.0)))
>  
> +(define-public drip
> +  ;; Last release is from 2014, with few important commits afterwards.

'with few important commits' has a negative connotation, while 'with a few
important commits' has a positive connotation. Considering we're using a
commit after the release I assume we want those commits. There's
probably something more concrete than that but we want the extra 'a'.

> +  (let ((commit "a4bd00df0199e78243847f06cc04ecaea31f8f08"))
> +    (package
> +      (name "drip")
> +      (version (git-version "0.2.4" "1" commit))
> +      (source (origin
> +                (method git-fetch)
> +                (uri (git-reference
> +                      (url "https://github.com/ninjudd/drip")
> +                      (commit commit)))
> +                (file-name (git-file-name name version))
> +                (sha256
> +                 (base32
> +                  "0wzmjwfyldr3jn49517xd8yn7dgdk8h88qkga3kjyg1zc375ylg2"))))
> +      (build-system gnu-build-system)
> +      (native-inputs
> +       `(("jdk" ,icedtea "jdk")))
> +      (arguments
> +       `(#:tests? #f                    ; No tests.
> +         #:phases
> +         (modify-phases %standard-phases
> +           (delete 'configure)
> +           (add-before 'install 'fix-wrapper
> +             (lambda* (#:key inputs #:allow-other-keys)
> +               (let ((jps (string-append (assoc-ref inputs "jdk") "/bin/jps")))
> +                 (substitute* "bin/drip"
> +                   (("jps") jps)
> +                   (("brew update && brew upgrade drip") "guix pull && guix install drip")
> +                   ;; No need to make:
> +                   (("\\(cd -- \"\\$drip_dir\" && make -s\\) \\|\\| exit 1") "")
> +                   ;; No need to include source:
> +                   (("\\[\\[ -r \\$drip_dir/src/org/flatland/drip/Main\\.java \\]\\]")
> +                    "true")))))

Don't forget to return #t and make sure the lines aren't too long.

> +           (replace 'install
> +             (lambda* (#:key outputs #:allow-other-keys)
> +               (let* ((out (assoc-ref outputs "out"))
> +                      (bin (string-append out "/bin")))
> +                 (mkdir-p bin)
> +                 (for-each
> +                  (lambda (file)
> +                    (install-file (string-append "bin/" file) bin))
> +                  '("drip" "drip_daemon" "drip_proxy"))
> +                 (install-file "drip.jar" out)))))))

Is drip.jar supposed to be at the root of %output?
Also, this phase should return #t.

> +      (home-page "https://github.com/ninjudd/drip")
> +      (synopsis "Fast Java Virtual Machine launching")

I see Github has "Fast JVM launching without the hassle of persistent
JVMs." which doesn't look too long. Alternatively I'd consider switching
'Fast' to 'Faster'.

> +      (description "Drip is a launcher for the Java Virtual Machine that
> +provides much faster startup times than the java command.  The @command{drip}
                                               ^@command{java} here too

> +script is intended to be a drop-in replacement for the @command{java} command,
> +only faster.")
> +      (license license:epl1.0))))
> +
>  ;; This is the last version of GNU Classpath that can be built without ECJ.
>  (define classpath-bootstrap
>    (package
> -- 
> 2.26.2
> 

I have nothing to test it with but it looks good with those few changes.

-- 
Efraim Flashner   <[email-masked]>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted