guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 1/1] gnu: Add plantuml.


From: Theodoros Foradis
Subject: Re: [PATCH v2 1/1] gnu: Add plantuml.
Date: Wed, 02 Nov 2016 02:07:55 +0200
User-agent: mu4e 0.9.17; emacs 25.1.1

Ricardo Wurmus writes:

> Theodoros Foradis <address@hidden> 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]