all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Ricardo Wurmus <rekado@elephly.net>
To: Theodoros Foradis <theodoros.for@openmailbox.org>
Cc: guix-devel <guix-devel@gnu.org>
Subject: Re: [PATCH v2 1/1] gnu: Add plantuml.
Date: Sat, 29 Oct 2016 23:46:55 +0200	[thread overview]
Message-ID: <87pomiakvk.fsf@elephly.net> (raw)
In-Reply-To: <87d1iku3f4.fsf@openmailbox.org>


Theodoros Foradis <theodoros.for@openmailbox.org> writes:

>>> +(define-public plantuml

[…]

>>> +       (modify-phases %standard-phases
>>> +         (add-before 'build 'delete-extra-from-cp

BTW: the phase name is a little hard to understand.  We don’t mind
slightly longer phase names if that improves readability.

>>> +                     (lambda _
>>> +                       (substitute* "build.xml"
>>> +                         (("1.6") "1.7")
>>> +                         (("<attribute name=\"Class-Path\"") "<!--")
>>> +                         (("j2v8_macosx_x86_64-3.1.7.jar\" />")
>>> "-->"))

Another thing I forgot: is this jar bundled?  If so, it should be
removed in a snippet.

>>> +                       #t))
>>> +         (add-before 'install 'gen-install
>>> +                  (lambda* (#:key outputs #:allow-other-keys)
>>> +                    (mkdir-p "build/jar")
>>> +                    (system* "mv" "plantuml.jar" "build/jar")
>>> +                    ((@@ (guix build ant-build-system) default-build.xml)
>>> +                     "plantuml.jar"
>>> +                     (string-append (assoc-ref outputs "out")
>>> +                                    "/share/java"))))
>>
>> I don’t understand this.  Do you only use “default-build.xml” to add an
>> install target?  In the previous phase you use the included “build.xml”.
>> I find this a little odd and think it would be clearer to just install
>> the files manually instead of using “default-build.xml” here.
>
> The build.xml that our ant-build-system generates, does not generate a
> correct manifest attribute with the Main-Class, so the produced jar file
> cannot be run. Instead of generating the required text manually, I use
> the default build.xml for the build phase.
>
> The default build.xml does not include an install phase, so I generate
> it after compilation, with our ant-build-system.
>
> Feedback is welcome, if there is a better way to do this, before I
> reformat the patch.

(I’m a little confused.  When you write “default build.xml” you mean the
included “build.xml”, not the one generated by the procedure
“default-build.xml”, right?)

Should the “default-build.xml” procedure be changed to (conditionally)
add the “Main-Class” attribute?

In this case I think using “default-build.xml” just for the install
phase is a little over the top.  All it does is copy the jars to the
target directory:

(target (@ (name "install"))
        (copy (@ (todir "${dist.dir}"))
              (fileset (@ (dir "${jar.dir}"))
                       (include (@ (name "**/*.jar"))))))

That’s something you could do with Scheme directly:

    (replace 'install
      (lambda* (#:key outputs #:allow-other-keys)
        (for-each (lambda … install-file …)
                  (find-files … "\\.jar$"))
        #t))

I find that a lot clearer than accessing a private procedure from
“ant-build-system”.

>>
>>> +         (add-after 'install 'make-wrapper
>>> +                    (lambda* (#:key inputs outputs #:allow-other-keys)
>>
>> Please check the indentation for all phases.  That’s too far to the
>> right.
>>
>
> I will fix that. This is the default indentation emacs does with this,
> so I forgot to fix it manually.

Actually, we have a “.dir-locals.el” file that Emacs should respect.
Using the settings in that file will tell Emacs to indent these things
correctly.  (Many of us here are using Emacs and we don’t fix
indentation manually.)

~~ Ricardo

  reply	other threads:[~2016-10-29 21:47 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-24 13:12 [PATCH] gnu: Add plantuml Theodoros Foradis
2016-10-27 10:13 ` Efraim Flashner
2016-10-27 11:18   ` [PATCH v2 0/1] " Theodoros Foradis
2016-10-27 11:18     ` [PATCH v2 1/1] " Theodoros Foradis
2016-10-27 17:29       ` Ricardo Wurmus
2016-10-28 11:19         ` Theodoros Foradis
2016-10-29 21:46           ` Ricardo Wurmus [this message]
2016-11-02  0:07             ` Theodoros Foradis
2016-11-02 11:03             ` [PATCH v4 " Theodoros Foradis
2016-11-02 13:58               ` Roel Janssen
2016-11-03 14:29                 ` Theodoros Foradis
2016-11-04 14:46                   ` Roel Janssen
2016-11-07 13:21                     ` [PATCH v5 0/1] " Theodoros Foradis
2016-11-07 13:21                       ` [PATCH v5 1/1] " Theodoros Foradis
2016-11-08 14:03                       ` [PATCH v5 0/1] " Roel Janssen
2016-10-28 19:12         ` [PATCH v2 1/1] " Theodoros Foradis
2016-10-28 19:12           ` [PATCH v3 " Theodoros Foradis
2016-10-29 10:39             ` Theodoros Foradis
2016-10-27 10:21 ` [PATCH] " Marius Bakke

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87pomiakvk.fsf@elephly.net \
    --to=rekado@elephly.net \
    --cc=guix-devel@gnu.org \
    --cc=theodoros.for@openmailbox.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.