Subject: Re: [bug#30417] [PATCH 06/11] gnu: Add java-modello-core.

From: Julien Lepiller <[email-masked]>
Date: Sat, 24 Feb 2018 22:11:15 +0100

Le Sat, 17 Feb 2018 16:06:19 +0100,
Marius Bakke <[email-masked]> a écrit :

> Björn Höfling <[email-masked]> writes:
> 
> > On Wed, 14 Feb 2018 22:56:38 +0100
> > Julien Lepiller <[email-masked]> wrote:
> >  
> >> Le Wed, 14 Feb 2018 21:22:25 +0100,
> >> Björn Höfling <[email-masked]> a écrit :
> >>   
> >> > On Sun, 11 Feb 2018 00:04:33 +0100
> >> > Julien Lepiller <[email-masked]> wrote:
> >> >     
> >> > > * gnu/packages/java.scm (java-modello-core): New variable.
> >> > > ---
> >> > >  gnu/packages/java.scm | 50
> >> > > ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file
> >> > > changed, 50 insertions(+)
> >> > > 
> >> > > diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
> >> > > index af9acd71f..d75960831 100644
> >> > > --- a/gnu/packages/java.scm
> >> > > +++ b/gnu/packages/java.scm
> >> > > @@ -2811,6 +2811,56 @@ a default implementation of it.  This
> >> > > API is about scanning files in a project and determining what
> >> > > files need to be rebuilt.") (license license:asl2.0)))
> >> > >  
> >> > > +(define-public java-modello-core
> >> > > +  (package
> >> > > +    (name "java-modello-core")
> >> > > +    (version "1.9.1")
> >> > > +    (source (origin
> >> > > +              (method url-fetch)
> >> > > +              (uri (string-append
> >> > > "https://github.com/codehaus-plexus/modello"
> >> > > +                                  "/archive/modello-" version
> >> > > ".tar.gz"))
> >> > > +              (sha256
> >> > > +               (base32
> >> > > +
> >> > > "0l2pvns8pmlrmjm3iknp7gpg3654y1m8qhy55b19sdwdchdcyxfh"))))
> >> > > +    (build-system ant-build-system)
> >> > > +    (arguments
> >> > > +     `(#:jar-name "modello-core.jar"
> >> > > +       #:source-dir "modello-core/src/main/java"
> >> > > +       #:test-dir "modello-core/src/test"
> >> > > +       #:main-class "org.codehaus.modello.ModelloCli"
> >> > > +       #:jdk ,icedtea-8
> >> > > +       #:phases
> >> > > +       (modify-phases %standard-phases
> >> > > +         (add-before 'build 'copy-resources
> >> > > +           (lambda _
> >> > > +             (mkdir-p "build/classes/META-INF/plexus")
> >> > > +             (copy-file
> >> > > "modello-core/src/main/resources/META-INF/plexus/components.xml"
> >> > > +
> >> > > "build/classes/META-INF/plexus/components.xml")
> >> > > +             #t))
> >> > > +         (add-before 'check 'fix-tests
> >> > > +           (lambda _
> >> > > +             (substitute*
> >> > > '("modello-core/src/test/java/org/codehaus/modello/core/DefaultModelloCoreTest.java"
> >> > > +
> >> > > "modello-core/src/test/java/org/codehaus/modello/core/io/ModelReaderTest.java")
> >> > > +               (("src/test") "modello-core/src/test")))))))
> >> > > +    (inputs
> >> > > +     `(("java-plexus-utils" ,java-plexus-utils)
> >> > > +
> >> > > ("java-plexus-container-default-bootstrap" ,java-plexus-container-default-bootstrap)
> >> > > +       ("java-sisu-build-api" ,java-sisu-build-api)))
> >> > > +    (native-inputs
> >> > > +     `(("java-junit" ,java-junit)
> >> > > +       ("java-plexus-classworlds" ,java-plexus-classworlds)
> >> > > +
> >> > > ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
> >> > > +       ("java-guava" ,java-guava)))
> >> > > +    (home-page "http://codehaus-plexus.github.io/modello/")
> >> > > +    (synopsis "Framework for code generation from a simple
> >> > > model")
> >> > > +    (description "Modello is a framework for code generation
> >> > > from a simple model. +
> >> > > +Modello generates code from a simple model format: based on a
> >> > > plugin +architecture, various types of code and descriptors
> >> > > can be generated from the +single model, including Java POJOs,
> >> > > XML/JSON/YAML marshallers/unmarshallers, +XSD and
> >> > > documentation.")
> >> > > +    (license license:asl2.0)))      
> >> > 
> >> > I'm not sure about how to declare the license:
> >> > 
> >> > If you consider only the code under modello-core, that is only
> >> > license:expat (if I havent overseen anything).
> >> > 
> >> > But as you are not working with snippets here, I think you have
> >> > to look at every file in the original source package. And there
> >> > I found three types of licenses:
> >> > 
> >> > * expat, as above
> >> > * asl2.0, like
> >> >   in ./modello-plugins/modello-plugin-stax/src/test/java/org/codehaus/modello/generator/xml/stax/BooleanTypeStaxGeneratorTest.java
> >> > * Finally, some kind of "5-clause-BSD":
> >> > ./modello-plugins/modello-plugin-java/src/main/java/org/codehaus/modello/plugin/java/javasource/JNaming.java
> >> > I always have my troubles matching a license text to one of the
> >> > available licenses, so I quote it in full here:
> >> > 
> >> > /**
> >> >  * Redistribution and use of this software and associated
> >> > documentation
> >> >  * ("Software"), with or without modification, are permitted
> >> > provided
> >> >  * that the following conditions are met:
> >> >  *
> >> >  * 1. Redistributions of source code must retain copyright
> >> >  *    statements and notices.  Redistributions must also contain
> >> > a
> >> >  *    copy of this document.
> >> >  *
> >> >  * 2. Redistributions in binary form must reproduce the
> >> >  *    above copyright notice, this list of conditions and the
> >> >  *    following disclaimer in the documentation and/or other
> >> >  *    materials provided with the distribution.
> >> >  *
> >> >  * 3. The name "Exolab" must not be used to endorse or promote
> >> >  *    products derived from this Software without prior written
> >> >  *    permission of Intalio, Inc.  For written permission,
> >> >  *    please contact [email-masked].
> >> >  *
> >> >  * 4. Products derived from this Software may not be called
> >> > "Exolab"
> >> >  *    nor may "Exolab" appear in their names without prior
> >> > written
> >> >  *    permission of Intalio, Inc. Exolab is a registered
> >> >  *    trademark of Intalio, Inc.
> >> >  *
> >> >  * 5. Due credit should be given to the Exolab Project
> >> >  *    (http://www.codehaus.org/).
> >> >  *
> >> >  * THIS SOFTWARE IS PROVIDED BY INTALIO, INC. AND CONTRIBUTORS
> >> >  * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
> >> > BUT
> >> >  * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
> >> >  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT
> >> > SHALL
> >> >  * INTALIO, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
> >> >  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> >> > DAMAGES
> >> >  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
> >> > GOODS OR
> >> >  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
> >> > INTERRUPTION)
> >> >  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> >> > CONTRACT,
> >> >  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
> >> >  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
> >> > ADVISED
> >> >  * OF THE POSSIBILITY OF SUCH DAMAGE.
> >> >  *
> >> >  * Copyright 1999-2000 (C) Intalio, Inc. All Rights Reserved.
> >> >  *
> >> >  * $Id$
> >> >  */    
> >> 
> >> We don't have anything for that license. I've seen it in some other
> >> java packages, and I used (non-copyleft "file:///LICENSE.txt"),
> >> except this time, LICENSE.txt contains only the expat license. The
> >> files that have this license are also licensed under the expat
> >> license. Is it OK to declare only the expat license here, as it is
> >> the only one in LICENSE.txt?  
> >
> >
> > I'm not a license expert. Has anyone else a opinion on that?  
> 
> I haven't checked, but if these source files are not part of the
> installed product (e.g. they are only used for tests, or optional
> plugins/features), AFAIU we don't need to list them in the
> (license ...) field.
> 
> But please add a comment about them regardless.

I've addressed all the comments in other packages, but this one
remains. Here is what I did. Do you think it's OK (I don't really like
to use string-append, but it shortens the length of lines). What do you
think?
From 5b1ecd2d2c451d3aba05eb9647bff39574b02e4f Mon Sep 17 00:00:00 2001
From: Julien Lepiller <[email-masked]>
Date: Sat, 10 Feb 2018 22:51:17 +0100
Subject: [PATCH 07/12] gnu: Add java-modello-core.

* gnu/packages/java.scm (java-modello-core): New variable.
---
 gnu/packages/java.scm | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index a274055a5..6288a2a63 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2814,6 +2814,69 @@ a default implementation of it.  This API is about scanning files in a
 project and determining what files need to be rebuilt.")
     (license license:asl2.0)))
 
+(define-public java-modello-core
+  (package
+    (name "java-modello-core")
+    (version "1.9.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/codehaus-plexus/modello"
+                                  "/archive/modello-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0l2pvns8pmlrmjm3iknp7gpg3654y1m8qhy55b19sdwdchdcyxfh"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "modello-core.jar"
+       #:source-dir "modello-core/src/main/java"
+       #:test-dir "modello-core/src/test"
+       #:main-class "org.codehaus.modello.ModelloCli"
+       #:jdk ,icedtea-8
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'copy-resources
+           (lambda _
+             (mkdir-p "build/classes/META-INF/plexus")
+             (copy-file "modello-core/src/main/resources/META-INF/plexus/components.xml"
+                        "build/classes/META-INF/plexus/components.xml")
+             #t))
+         (add-before 'check 'fix-tests
+           (lambda _
+             (with-directory-excursion "modello-core/src/test/java/org/codehaus"
+               (substitute* '("modello/core/DefaultModelloCoreTest.java"
+                              "modello/core/io/ModelReaderTest.java")
+                 (("src/test") "modello-core/src/test")))
+             #t)))))
+    (inputs
+     `(("java-plexus-utils" ,java-plexus-utils)
+       ("java-plexus-container-default" ,java-plexus-container-default)
+       ("java-sisu-build-api" ,java-sisu-build-api)))
+    (native-inputs
+     `(("java-junit" ,java-junit)
+       ("java-plexus-classworlds" ,java-plexus-classworlds)
+       ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
+       ("java-guava" ,java-guava)))
+    (home-page "http://codehaus-plexus.github.io/modello/")
+    (synopsis "Framework for code generation from a simple model")
+    (description "Modello is a framework for code generation from a simple model.
+
+Modello generates code from a simple model format: based on a plugin
+architecture, various types of code and descriptors can be generated from the
+single model, including Java POJOs, XML/JSON/YAML marshallers/unmarshallers,
+XSD and documentation.")
+    (license (list
+               license:expat
+               ;; Although this package uses only files licensed under expat,
+               ;; other parts of the source are licensed under different
+               ;; licenses.  We include them to be inherited by other packages.
+               license:asl2.0
+               ;; Some files in modello-plugin-java are licensed under a
+               ;; 5-clause BSD license.
+               (license:non-copyleft
+                 (string-append "file:///modello-plugins/modello-plugin-java/"
+                                "src/main/java/org/codehaus/modello/plugin/"
+                                "java/javasource/JNaming.java"))))))
+
 (define-public java-asm
   (package
     (name "java-asm")
-- 
2.16.2