Re: Java policy and ABI changes

2007-05-26 Thread Andrew Haley
[EMAIL PROTECTED] writes:
  Quoting Andrew Haley [EMAIL PROTECTED]:

   In my opinion, Java libraries without stable interfaces shouldn't be
   deployed in free OSes.  If they are to be used, you're going to have
   to change the jar name, but even that may not work: if you use such a
   library Mozilla, some other version of the same package might be used
   by some other Java application running in the same process, and unless
   it's firewalled by some ClassLoader trickery it'll break.  If that
   happens, some trickery like Jar Jar Links may be your only hope.
  
  Hm. All this is a bit extreme. Even the Linux kernel changes its API  
  all the time and things are working okay.

This really is grossly unfair to the kernel deveopers, who go to great
lengths to avoid breaking the ABI.  Would that Java package
mantainers were so careful.

Andrew.

-- 
Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, SL4 
1TE, UK
Registered in England and Wales No. 3798903


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Getting Maven Into Main - What Next?

2007-05-26 Thread Paul Cager

Paul Cager wrote:

This is the desert island test [1],


No it isn't. The Desert Island Test is something quite different, to do 
with the freeness of the upstream license. Please ignore this bit, as I 
hadn't got my brain in gear!


The Debian prohibition against downloading during a package build 
stands, though.



[1] http://people.debian.org/~bap/dfsg-faq.html



--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Java policy and ABI changes

2007-05-26 Thread Andrew Haley
Marcus Better writes:
  Andrew Haley wrote:
   In my opinion, Java libraries without stable interfaces shouldn't be
   deployed in free OSes.
  
  That's a nice goal but unfortunately the world is not so perfect,
  because users occasionally require new software with shiny new
  bells and whistles.  Besides we cannot control upstream and prevent
  them from breaking ABI. As a distribution we need to find a balance
  between features and stability.
  
  I think the Java policy needs to be tweaked to allow for multiple
  versions of the same library. The problem is much easier than for C
  libraries, since we don't have a dynamic linker, so the user is
  responsible for adding the correct library to the classpath. We
  just need to make sure the different versions don't conflict, which
  usually means that both of them cannot install the generic symlink
  /usr/share/java/foo.jar.

As I pointed out before, that doesn't work for Java in the general
case because a single running VM can load multiple libraries, which
come from different sources, which may need different versions of the
same library.  You're into dependency hell very quickly.

  It seems it would suffice to have the symlink created by postinst,
  which would point it at the latest installed version (similar to
  ldconfig).
  
  Note that I'm not suggesting we should package several versions of
  libraries. That should be avoided, but when necessary there should
  be a way to do it.

I'm not going to argue with that.  Sometimes everybody has to do bad
things.  :-)

Andrew.

-- 
Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, SL4 
1TE, UK
Registered in England and Wales No. 3798903


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Getting Maven Into Main - What Next?

2007-05-26 Thread Florian Weimer
* Paul Cager:

 Now that we are making progress with packaging Maven's
 Build-Dependencies, I'm beginning to wonder what happens next. I've
 noticed from the JavaCC packaging that it seems to be all right to
 include a bootstrap jar in the upstream source. Is this right? I guess
 to be valid:

* When building the package a new Jar must be built (from source)
  that could replace the bootstrap Jar.

This is a bit tricky.  Theoretically, you are supposed to bootstrap
from an installed version (IOW, a self-depdency).  However, several
packages (Ocaml, for instance) bootstrap from blobs.  In case of
source code generators, it's also common to ship the processed source
files.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Getting Maven Into Main - What Next?

2007-05-26 Thread Trygve Laugstøl

Florian Weimer wrote:

* Paul Cager:


Now that we are making progress with packaging Maven's
Build-Dependencies, I'm beginning to wonder what happens next. I've
noticed from the JavaCC packaging that it seems to be all right to
include a bootstrap jar in the upstream source. Is this right? I guess
to be valid:

   * When building the package a new Jar must be built (from source)
 that could replace the bootstrap Jar.


This is a bit tricky.  Theoretically, you are supposed to bootstrap
from an installed version (IOW, a self-depdency).  However, several
packages (Ocaml, for instance) bootstrap from blobs.  In case of
source code generators, it's also common to ship the processed source
files.


If someone would say that if this was allowed with Maven it would make 
life so much easier as Maven has to many build dependencies. Then 
Michael Koch's binary package could be used to build all of those 
dependencies and then a proper Maven could be built easily.


--
Trygve


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Getting Maven Into Main - What Next?

2007-05-26 Thread Paul Cager
Florian Weimer wrote:
 * Paul Cager:
 
 Now that we are making progress with packaging Maven's
 Build-Dependencies, I'm beginning to wonder what happens next. I've
 noticed from the JavaCC packaging that it seems to be all right to
 include a bootstrap jar in the upstream source. Is this right? I guess
 to be valid:

* When building the package a new Jar must be built (from source)
  that could replace the bootstrap Jar.
 
 This is a bit tricky.  Theoretically, you are supposed to bootstrap
 from an installed version (IOW, a self-depdency).

So we couldn't use bootstrapping to get the *first* version into Debian?
We could only use version (n-1) to build version (n)?

 However, several
 packages (Ocaml, for instance) bootstrap from blobs.

Ah - so we might get away with it? Maybe I should use ask the FTP masters?

 In case of
 source code generators, it's also common to ship the processed source
 files.

Yes, that's a possibility.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Getting Maven Into Main - What Next?

2007-05-26 Thread Florian Weimer
* Paul Cager:

 This is a bit tricky.  Theoretically, you are supposed to bootstrap
 from an installed version (IOW, a self-depdency).

 So we couldn't use bootstrapping to get the *first* version into Debian?

If there are architecture-dependent binary packages, they need to
built and uploaded manually, for each architecture.  The same thing
happens when you break the chain.  The upload history for MLton might
be quite instructive here.

It's basically a non-issue for architecture-independent packages.  The
only requirement is that the package can be rebuilt with itself.

 We could only use version (n-1) to build version (n)?

You need to start from somewhere, obviously. 8-)

 However, several
 packages (Ocaml, for instance) bootstrap from blobs.

 Ah - so we might get away with it? Maybe I should use ask the FTP
 masters?

The current Java policy requires that you strip the JARs.  Not that it
is rigorously followed, but you should decide first what you actually
want, and then you can pester the ftpmasters.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Getting Maven Into Main - What Next?

2007-05-26 Thread Paul Cager
Florian Weimer wrote:
 * Paul Cager:
 
 Now that we are making progress with packaging Maven's
 Build-Dependencies, I'm beginning to wonder what happens next. I've
 noticed from the JavaCC packaging that it seems to be all right to
 include a bootstrap jar in the upstream source. Is this right? I guess
 to be valid:

* When building the package a new Jar must be built (from source)
  that could replace the bootstrap Jar.
 
 This is a bit tricky.  Theoretically, you are supposed to bootstrap
 from an installed version (IOW, a self-depdency).  However, several
 packages (Ocaml, for instance) bootstrap from blobs.  In case of
 source code generators, it's also common to ship the processed source
 files.

Thinking about it, am I worrying unnecessarily here?  The source
downloaded from svn *does* include Jars, but I think these are only used
to run the unit tests. (I'm guessing; Trygve could you confirm this,
please?).

Once we have the build-dependencies packaged we should be able to
download the svn source, delete the jars and create an upstream source
tarball. Then debian/rules could just call the bootstrap.sh script
(possibly amended to prevent net access).

I don't think my brain is working this week...


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: A Java Packaging Wishlist

2007-05-26 Thread Arnaud Vandyck

On 5/26/07, Trygve Laugstøl [EMAIL PROTECTED] wrote:

Arnaud Vandyck wrote:
 If we wanna use maven to build, we need maven in main. If we want to
 extract metadata, we just need an xslt or some
 perl/python/java/whatever xml parser.

No you don't. I meant that you can use Maven to generate the files and
include in debian/. That way you can leverage the project's meta-data
and start working on integration Maven into the build process until it
is properly into main and those files can be generated build-time.


I don't like the idea of generating those files at build time. But
maybe I don't understand what you mean.

Anyway, tools used to generate and build debian package are in main so
if we want to include maven calls in those scripts, we need maven to
be in main.

--
Arnaud Vandyck



Re: A Java Packaging Wishlist

2007-05-26 Thread Manfred Moser
On Saturday May 26 2007, Arnaud Vandyck wrote:
 On 5/26/07, Trygve Laugstøl [EMAIL PROTECTED] wrote:
  Arnaud Vandyck wrote:
   If we wanna use maven to build, we need maven in main. If we
   want to extract metadata, we just need an xslt or some
   perl/python/java/whatever xml parser.
 
  No you don't. I meant that you can use Maven to generate the
  files and include in debian/. That way you can leverage the
  project's meta-data and start working on integration Maven into
  the build process until it is properly into main and those files
  can be generated build-time.

 I don't like the idea of generating those files at build time. But
 maybe I don't understand what you mean.

Sorry to be unclear. I meant at the time when you are first assembling 
the package from the upstream source. The information in the pom can 
be used to derive a lot of data in the debian control files.

In addition when another version is available from upstream the pom 
content can be verified back into the control files to do amendments. 
That wont be fully automatic of course.

manfred

-- 
Manfred Moser
http://www.mosabuam.com
skype: mosabua
http://www.linkedin.com/in/manfredmoser



Re: A Java Packaging Wishlist

2007-05-26 Thread Trygve Laugstøl

Arnaud Vandyck wrote:

On 5/26/07, Trygve Laugstøl [EMAIL PROTECTED] wrote:

Arnaud Vandyck wrote:
 If we wanna use maven to build, we need maven in main. If we want to
 extract metadata, we just need an xslt or some
 perl/python/java/whatever xml parser.

No you don't. I meant that you can use Maven to generate the files and
include in debian/. That way you can leverage the project's meta-data
and start working on integration Maven into the build process until it
is properly into main and those files can be generated build-time.


I don't like the idea of generating those files at build time. But
maybe I don't understand what you mean.


I think you understood me correctly. There is nothing wrong with 
generated files, there are already lots of them begin built on every 
.deb build. I know it's not ideal to check in generated files, but given 
the benefit it shouldn't be a big problem.


I made a Maven 2 plugin for this over *3* years ago [1], but still 
no-one has been able to leverage any of the metadata in Maven.



Anyway, tools used to generate and build debian package are in main so
if we want to include maven calls in those scripts, we need maven to
be in main.


Yes, do be a integral part of the build cycle it has to be. But it does 
not have to be there to be able to leverage a lot of the information 
that is inside every Maven-based project.


[1]: Probably even earlier than that, but that was when the repository 
was initialized: http://fisheye.codehaus.org/changelog/mojo?cs=5


--
Trygve


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Getting Maven Into Main - What Next?

2007-05-26 Thread Manfred Moser
On Friday May 25 2007, Paul Cager wrote:

 I have practically no experience with Maven (yet!), so it's good to
 meet someone who is active with it. Would you be interested in
 getting involved with the testing of any packaging we produce? We'd
 do some basic testing, of course, but it would be nice if there was
 testing against real world projects.

Yeah. For sure. I could at least build it against my project (large 
JEE project with lots of subprojects using all sorts of plugins). I 
am currently using the upstream version as well as Michael Kochs 
package. Both are fine. 

 Just to summarise what I understand to be plans for Maven:

 Firstly we want to package maven itself, so that users can
 aptitude install maven, 

aptitude install maven2 
I assume... 

 and Maven will work just as though the 
 users had downloaded and installed it manually.

  * Create a local repository for Maven, e.g.
  debian/.m2/repository. For each build-dependency create the
  appropriate directory structure (e.g.
  debian/.m2/repository/plexus/plexus-utils/1.0.2/).
 
  I would actually suggest to start building a debian build server
  internal maven repository.

 Debian imposes quite strict (but sensible) rules on how its
 packages can be built. One restriction is that the package must be
 able to be built from source, without downloading anything (except
 other packages from the Debian archive). This is the desert island
 test [1], and probably disallows access to a standard maven
 repository. This is why I am proposing creating a temporary  local
 repository (on the build machine) each time a package is built.

I understand that restriction. I was actually proposing to create a 
debian private repo as part of the Debian archive into which all 
maven packages and dependencies go as well as into which all future 
packages can get their artifacts into and use others from there. 

I look forward to the progress. I wish I could help more but time is 
very short at the moment... at least I hope to be able to help by 
giving my input.

manfred
-- 
Manfred Moser
http://www.mosabuam.com
skype: mosabua
http://www.linkedin.com/in/manfredmoser


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]