unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Progress and todos for Jave maven
@ 2017-04-13 11:28 Hartmut Goebel
  2017-04-16 15:38 ` Björn Höfling
  0 siblings, 1 reply; 4+ messages in thread
From: Hartmut Goebel @ 2017-04-13 11:28 UTC (permalink / raw)
  To: guix-devel

Hello,

TL;DR: some progress on packaging maven; still a lot todo; need help
from Java-developers.

1) Some progress on packaging maven

I spent quite some on packaging maven again. This time I took a
different approach which looks promising; maven comes with a list of
transitive dependencies and includes a "build.xml" for bootstrapping via
ant. So I started re-implementing the ant-tasks in guix (which are a few
simple one only) and packaging the transitive dependencies.

My first idea was to merge all sources into one big source tree. But
this showed up to lead to an uggly and complicated (and thus hard to
maintain) package definition. (And afterwards I discovered this would
not even work since some meta-data file would need to be merged.) So I
started building "bootstrap" packages for the dependecies.

Packaging the dependencies showed up to be tricky, since for compiling
these packages, other unlisted packages are required. That's a mess! So
I started deleting classes (files) under the assumption that this
code-part will not be used by maven since the dependency is not listed.
Some code can not be removed or would lead to more and more code to be
removed, so needed to package the dependency.

One package (googe guice) includes another ant-task which is delivered
as a jar-file. Luckily this jar includes the source files, too, but
there seems to be no source-repository for this ant-task.

maven also requires some source to be generated at build-time using
"modello". It took me two days to make this work, I even needed to set
up a Eclipse development environment and step through the code, just to
find out that "could not find plugin" actually means: "plugin found, but
initiating it failed due to x.y.z missing". Even increasing the
debug-level did not show this. What crap!

While I'm now confident to make this work, is is quite time-consuming :-(


2) Still a lot todo / roadmap

After we managed to have some bootstrap-maven, these are the next tasks:

  * write a maven-build-system (see below)
  * package all the dependencies of maven using the maven-build-system
    and the bootstrap-maven and including all code. This means to
    package a lot more complicated dependencies.
  * Decide on naming conventions, repository structure, which data to be
    kept in poms, etc. (see below for all of these)
  * Clean up all the clutter, e.g. find official sources, homepage,
    descriptions, etc. for all packages,


3) Help needed from Java-Developers

I'll write this in a separate mail :-)
 

P.S.: My respect on the Java development community has vanished
completely. I've never seen another programming language having thus a
crappy source infrastructure: projects without home-page, packages
without source, packages not able to bootstrap itself, outdated links,
and thus. Bootstrapping (well, what they call bootstrapping) maven using
ant downloads 67 MB, many jars are fetches in five different version,
for one I counted even 12 versions! This is how unmaintainable software
grows!

-- 
Regards
Hartmut Goebel

| Hartmut Goebel          | h.goebel@crazy-compilers.com               |
| www.crazy-compilers.com | compilers which you thought are impossible |

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Progress and todos for Jave maven
  2017-04-13 11:28 Progress and todos for Jave maven Hartmut Goebel
@ 2017-04-16 15:38 ` Björn Höfling
  2017-04-16 15:43   ` Ricardo Wurmus
  2017-04-18 16:47   ` Hartmut Goebel
  0 siblings, 2 replies; 4+ messages in thread
From: Björn Höfling @ 2017-04-16 15:38 UTC (permalink / raw)
  To: Hartmut Goebel; +Cc: guix-devel

Hi Hartmut,

great to hear these news on Java/mvn development! Thanks for taking the
time.

You posted half a year ago a series of patches that are not yet
integrated into Guix:

https://lists.gnu.org/archive/html/guix-devel/2016-09/threads.html#00774

Are they still worth integrating, or are they obsolete with your new
approach? I'm asking because Ricardo wanted to work on them two weeks
ago:

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=+25925#16

On Thu, 13 Apr 2017 13:28:55 +0200
Hartmut Goebel <h.goebel@crazy-compilers.com> wrote:

> One package (googe guice) includes another ant-task which is delivered
> as a jar-file. Luckily this jar includes the source files, too, but
> there seems to be no source-repository for this ant-task.

I investigated this a bit:

Your are talking about munge, the task being defined in guice'
build.xml:

 <taskdef name="munge" classname="MungeTask"
 classpath="lib/build/munge.jar"/>

There is an old Blog post by Tom Ball about Munge's history:

https://web-beta.archive.org/web/20070402043337/http://weblogs.java.net/blog/tball/archive/2006/09/munge_swings_se.html

Quoting from there: "it [Munge] wasn't a product, after all". That was
probably the main problem: They just used it internally at Sun, not too
much caring about source code and reproducibility.

Jesse Wilson made an Ant task out of it, described in this blog post:

https://publicobject.com/2009/02/preprocessing-java-with-munge.html

He writes: "If you're preprocessing some .java files and can use these
features, help yourself to our custom munge.jar[0]. The jar includes
both source and classfiles."

That means: You actually found the "repository" for Munge:

[0] http://google-guice.googlecode.com/svn/trunk/lib/build/munge.jar

The link is gone, because Google Code was shut down.

But the jar is still downloadable from archive.org:

https://web-beta.archive.org/web/20090221010131/https://google-guice.googlecode.com/svn/trunk/lib/build/munge.jar

It is bit-identical with the munge.jar from the current Guice
repository:


https://github.com/google/guice/blob/bf0d876bb767f45c5cfbed3929e2cf6acd7d061a/lib/build/munge.jar

having sha256 of:

fdc08ecce4dd71d3fcb2ff0db1061091a18a37c2c24af2e7566fcb7a8500b41c
munge.jar

The initial commit on the jar also says about the ant integration:

https://github.com/google/guice/commit/7c508c235dc7a3ec1c58a9f0600f6864279a29c3

"The stripping builds on Tom Ball's Munge.java program, with a few
alterations:
 - we're a bit more careful about handling /* in end-of-line comments
and Strings
 - I wrote an Ant task called MungeTask that supports munging an entire
fileset"

I also found a Git rebository for a Maven plugin for Munge:

https://github.com/sonatype/munge-maven-plugin


About your other Maven-questions, I will answer later this week.

Yours,

Björn

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Progress and todos for Jave maven
  2017-04-16 15:38 ` Björn Höfling
@ 2017-04-16 15:43   ` Ricardo Wurmus
  2017-04-18 16:47   ` Hartmut Goebel
  1 sibling, 0 replies; 4+ messages in thread
From: Ricardo Wurmus @ 2017-04-16 15:43 UTC (permalink / raw)
  To: Björn Höfling; +Cc: guix-devel


Björn Höfling <bjoern.hoefling@bjoernhoefling.de> writes:

> Hi Hartmut,
>
> great to hear these news on Java/mvn development! Thanks for taking the
> time.
>
> You posted half a year ago a series of patches that are not yet
> integrated into Guix:
>
> https://lists.gnu.org/archive/html/guix-devel/2016-09/threads.html#00774
>
> Are they still worth integrating, or are they obsolete with your new
> approach? I'm asking because Ricardo wanted to work on them two weeks
> ago:
>
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=+25925#16

I still have them (I’m currently working on another set of patches for
SELinux) and I still think they are useful to have.

--
Ricardo

GPG: BCA6 89B6 3655 3801 C3C6  2150 197A 5888 235F ACAC
https://elephly.net

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Progress and todos for Jave maven
  2017-04-16 15:38 ` Björn Höfling
  2017-04-16 15:43   ` Ricardo Wurmus
@ 2017-04-18 16:47   ` Hartmut Goebel
  1 sibling, 0 replies; 4+ messages in thread
From: Hartmut Goebel @ 2017-04-18 16:47 UTC (permalink / raw)
  To: Björn Höfling; +Cc: guix-devel

Am 16.04.2017 um 17:38 schrieb Björn Höfling:
> You posted half a year ago a series of patches that are not yet
> integrated into Guix:
>
> https://lists.gnu.org/archive/html/guix-devel/2016-09/threads.html#00774
>
> Are they still worth integrating, or are they obsolete with your new
> approach? I'm asking because Ricardo wanted to work on them two weeks
> ago:

These patches are most probably outdated and will be overhauled.

My current strategy is to build "bootstrap" versions for each of these
packages and then build the "real" ones using the "maven-build-system".
This effects at least the plexus packages, but most probably also the
other ones  to get "poms" for these, too.

-- 
Regards
Hartmut Goebel

| Hartmut Goebel          | h.goebel@crazy-compilers.com               |
| www.crazy-compilers.com | compilers which you thought are impossible |

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-04-18 16:47 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-13 11:28 Progress and todos for Jave maven Hartmut Goebel
2017-04-16 15:38 ` Björn Höfling
2017-04-16 15:43   ` Ricardo Wurmus
2017-04-18 16:47   ` Hartmut Goebel

Code repositories for project(s) associated with this public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).