diff mbox series

[bug#55929] gnu: maven: Add maven-doxia-sink-api

Message ID 874k0pxk20.fsf@gmail.com
State Accepted
Headers show
Series [bug#55929] gnu: maven: Add maven-doxia-sink-api | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Artyom V. Poptsov June 13, 2022, 4:29 a.m. UTC
Hello Julien,

first of all, thanks for reviewing my patches!

I fixed my patch, at least the part I understood -- see below.

> Great to see someone trying to package more maven-related stuff! I
> think I've seen it in the dependency graph to the maven-plugin-plugin,
> which I'd like to package at some point to make our life easier.

Indeed, I started my work on packaging Doxia because I wanted to package
'maven-plugin-plugin' which in turn is required for
'maven-release-plugin'[1].  And 'maven-release-plugin' is required for
'java-json-simple'[2] ...

So the dependency order looks like this:
0. 'ugs' (Universal G-Code sender) [3]
1. 'java-jts'
2. 'java-json-simple'
3. 'maven-release-plugin'
4. 'maven-plugin-plugin' <-- I'm here.  ;-)

Also, while we on it, I have the following questions:
0. How did you check the dependency graph for 'maven-plugin-plugin'
   without packaging it?
1. Is it possible with Guix to generate the reverse dependency graph to
   see that packages depend on the specified package?

> Here the subject should omit "maven", so simply:

Done.

> Is this intentional? Shouldn't it be doxia-sink-api.jar?

That was a mistake indeed.  Fixed it.

> Also I'm wondering, since this will be used by maven eventually,
> shouldn't we install it to lib/m2 with its pom file? To do so, we would
> change the install phase to something like this:

> (replace 'install (install-from-pom "doxia-sink-api/pom.xml"))

Done.

> This might require a parent-pom (probably the top-level pom.xml and
> maybe its own parent pom), so you'll have to provide a patch for it
> as well. You can have a look at (gnu packages maven-parent) for
> examples.

This part I don't understand.  Could you elaborate?

> The description doesn't follow all our conventions, in particular,
> double space between sentences :)

Fixed.

- Artyom

References:
1. https://maven.apache.org/maven-release/maven-release-plugin/
2. https://github.com/fangyidong/json-simple
3. https://github.com/winder/Universal-G-Code-Sender
--
Artyom "avp" Poptsov <poptsov.artyom@gmail.com>
Home page: https://memory-heap.org/~avp/
CADR Hackerspace co-founder: https://cadrspace.ru/
GPG: D0C2 EAC1 3310 822D 98DE  B57C E9C5 A2D9 0898 A02F

Comments

Julien Lepiller June 13, 2022, 5:41 a.m. UTC | #1
Le Mon, 13 Jun 2022 07:29:43 +0300,
"Artyom V. Poptsov" <poptsov.artyom@gmail.com> a écrit :

> Hello Julien,
> 
> first of all, thanks for reviewing my patches!
> 
> I fixed my patch, at least the part I understood -- see below.
> 
> > Great to see someone trying to package more maven-related stuff! I
> > think I've seen it in the dependency graph to the
> > maven-plugin-plugin, which I'd like to package at some point to
> > make our life easier.  
> 
> Indeed, I started my work on packaging Doxia because I wanted to
> package 'maven-plugin-plugin' which in turn is required for
> 'maven-release-plugin'[1].  And 'maven-release-plugin' is required for
> 'java-json-simple'[2] ...
> 
> So the dependency order looks like this:
> 0. 'ugs' (Universal G-Code sender) [3]
> 1. 'java-jts'
> 2. 'java-json-simple'
> 3. 'maven-release-plugin'
> 4. 'maven-plugin-plugin' <-- I'm here.  ;-)
> 
> Also, while we on it, I have the following questions:
> 0. How did you check the dependency graph for 'maven-plugin-plugin'
>    without packaging it?
> 1. Is it possible with Guix to generate the reverse dependency graph
> to see that packages depend on the specified package?

0. I tried to package it, but somehow it was more difficult than I
expected and I had other projects. Apache projects have "dependencies"
link on their web page, like this one:
https://maven.apache.org/plugin-tools/maven-plugin-plugin/dependencies.html
where they list all dependencies.

1. guix graph -t reverse-package (or guix graph -t reverse-bag), see
guix graph --list-types for more options.

> 
> > This might require a parent-pom (probably the top-level pom.xml and
> > maybe its own parent pom), so you'll have to provide a patch for it
> > as well. You can have a look at (gnu packages maven-parent) for
> > examples.  
> 
> This part I don't understand.  Could you elaborate?

The installed pom contains the following:

<parent>
 <artifactId>doxia</artifactId>
 <groupId>org.apache.maven.doxia</groupId>
 <version>2.0.0-M2</version>
 <relativePath>../pom.xml</relativePath>
</parent>

If the referenced pom file is not installed, it won't be found by Maven
later when we use it to run the maven-plugin-plugin. See for instance
how the parent pom is installed in java-slf4j-parent, and propagated
from java-slf4j-api (and recursively from java-slf4j-simple).

This top-level pom also has the following, so it should propagate it:

<parent>
 <groupId>org.apache.maven</groupId>
 <artifactId>maven-parent</artifactId>
 <version>34</version>
 <relativePath />
</parent>

We already have it: maven-parent-pom-34.
diff mbox series

Patch

From b4020bc283f18d7b7394976c4288d04130f1e651 Mon Sep 17 00:00:00 2001
From: "Artyom V. Poptsov" <poptsov.artyom@gmail.com>
Date: Sun, 12 Jun 2022 21:42:33 +0300
Subject: [PATCH] gnu: maven: Add maven-doxia-sink-api

* gnu/packages/maven.scm (maven-doxia-sink-api): New variable.
---
 gnu/packages/maven.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index 817fee1c71..93c1538bae 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -3,6 +3,7 @@ 
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3887,3 +3888,31 @@  reports in two different file formats, plain text and xml.")))
     (description "This plugin provides the capability to build jars.  If you
 would like to sign jars please use the Maven Jarsigner Plugin instead.")
     (license license:asl2.0)))
+
+(define-public maven-doxia-sink-api
+  (package
+    (name "maven-doxia-sink-api")
+    (version "2.0.0-M2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitbox.apache.org/repos/asf/maven-doxia.git")
+                    (commit (string-append "doxia-" version))))
+              (file-name (git-file-name "doxia" version))
+              (sha256
+               (base32
+                "0jx96lg0hgjsrm8mynhac4hwh2hmgiwjpwpx2k03yr14040zcr48"))))
+    (build-system ant-build-system)
+    (native-inputs
+     (list java-javax-inject))
+    (arguments
+     (list #:jar-name "doxia-core.jar"
+           #:source-dir "doxia-sink-api/src/main/java"
+           #:tests? #f))                ; no tests
+    (home-page "https://maven.apache.org/doxia/index.html")
+    (synopsis "Generic markup language interface")
+    (description "The @code{Sink} interface is a generic markup language
+interface provided as a Java API. It contains several methods that encapsulate
+common text syntax. A start tag is denoted by @code{xxxx()} method and a end
+of tag by @code{xxxx_()} method.")
+    (license license:asl2.0)))
-- 
2.25.1