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

Bug#227587: [PROPOSAL] Java library dependencies



Package: java-common
Version: 0.22
Severity: wishlist

I propose to change the following paragraph in section 2.4. of the Debian Java policy

> Java libraries must depend on the needed runtime environment
> (java1-runtime and/or java2-runtime) but should not depend (only
> suggest) java-virtual-machine.

to:

Java library packages must depend on other library packages if they can't be used without them. If other libraries are only required by parts of the library, they should suggest the required library package instead.

Reasons:

1. Currently library packages are not required to depend on other
   libraries that they use. A dependency should not be used when only
   parts of a library require other libraries, for example as in
   ant-optional.jar. It's then up to the packager of a Java application
   to decide which other JARs are really required.

2. Dependencies on java*-runtime don't make a lot of sense:

   java*-runtime are both virtual packages and packages always
   should depend on "real_package | virtual_package" (so apt and others
   know what to do when they are first installed). Most Java libraries
   have a dependency like "classpath | java1-runtime | java2-runtime".
   This will keep them from migration to testing since the real package
   that provides java*-runtime might not be available for all
   architectures.

   It's almost impossible to determine if a library works with
   java1-runtime and/or java2-runtime. This can only be decided when
   you have an applications that uses the library. For example, tomcat4
   can now be run with Kaffe 1.1.3 so a lot of libtomcat4-java's
   dependencies actually work without a full "Java 2 runtime
   environment" although they depend on "java2-runtime".

3. Depending on java-common (IIRC this was mandated by a previos version
   of the Java Policy) is also not needed since there's nothing but
   documentation in java-common. This might change if we put some
   scripts to automatically generate a class path in java-common.

4. Libraries are supposed to work with any JVM so depending on
   known-to-work JVM packages is also not sensible: One library might
   depend on kaffe, another one on sablevm. An application which uses
   them both might work with Kaffe but dpkg would insist on installing
   SableVM even if it's not required.

To summarize: I'd like to move the task of determining the actual dependencies to the packagers of Java applications. They can test them with specific JVM packages and know which "optional" JARs are required to run the application.

Stefan




Reply to: