From: Theodoros Foradis <theodoros.for@openmailbox.org>
To: Guix-devel <guix-devel@gnu.org>
Subject: Re: [PATCH v2 1/1] gnu: Add plantuml.
Date: Wed, 02 Nov 2016 02:07:55 +0200 [thread overview]
Message-ID: <874m3qu4kk.fsf@openmailbox.org> (raw)
In-Reply-To: <87pomiakvk.fsf@elephly.net>
Ricardo Wurmus writes:
> 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.
>
I'll change that to delete-extra-from-classpath.
>>>> + (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.
>
The jar is not bundled. With those substitutions, I comment out all the
extra jars (not included anyway) from the classpath.
>>>> + #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.
>>
Right, I should install manually instead. Generating the
default-build.xml is unneeded.
>> 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?)
Right.
>
> Should the “default-build.xml” procedure be changed to (conditionally)
> add the “Main-Class” attribute?
>
I am not very knowledgeable about the ant-build-system, but I think it
would be a useful addition, as runnable jars need that "Main-Class"
attibute.
> 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”.
>
Thanks for the hint. I'll skip the "default-build.xml" and do it with
Scheme directly.
>>>
>>>> + (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
Thanks for letting me know. I thought I had been using that
".dir-locals.el", and that this indentation wasn't included, but I should
have made some mistake.
Regards,
--
Theodoros Foradis
next prev parent reply other threads:[~2016-11-02 0:11 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
2016-11-02 0:07 ` Theodoros Foradis [this message]
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=874m3qu4kk.fsf@openmailbox.org \
--to=theodoros.for@openmailbox.org \
--cc=guix-devel@gnu.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.