Re: javapackages-tools auto-require: Why?

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

 



Hi Mikolaj,

On Fri, 2018-07-13 at 15:30 +0200, Mikolaj Izdebski wrote:
> On 07/13/2018 11:00 AM, Severin Gehwolf wrote:
> > See this bug for some background:
> > https://bugzilla.redhat.com/show_bug.cgi?id=1600426
> > 
> > Any Java package gets a "Requires: javapackages-tools" whether they
> > want it or not. It's part of the Java Packaging Guidelines[1]. Does
> > anybody remember the rationale as to why that exists? If the answer is
> > directory ownership for dirs like /usr/lib/jvm/ et.al. I'd consider
> > changing the guidelines to auto-requires javapackages-filesystem in
> > F29+.
> 
> Typically packages require javapackages-tools during runtime for one or
> both of two following major reasons:
> 
> 1. Directory ownership. javapackages-tools requires
> javapackages-filesystem, which owns many directories into which Java
> packages install their files.
> 
> 2. Java functions library. javapackages-tools contains library of shell
> functions at /usr/share/java-utils/java-functions which is imported by
> application launcher scripts written in shell. These functions may be
> used to help loading system-wide or application-specific configuration,
> constructing application classpath, determining proper JVM/JDK to use
> with the application, and finally invoking JVM with appropriate flags,
> including ABRT agent flags, and finally invoking JVM.
> 
> (There are also other minor, but valid reasons to require
> javapckages-tools, such as for configuration files it contains.)
> 
> Changing auto-requires from javapackages-tools to
> javapackages-filesystem and rebuilding all packages would break most of
> launcher scripts. Explicit requires on javapackages-tools would have to
> be added to packages that have launchers in order to fix them, reverting
> some of benefits of the change.

[...]

Some data points from a rawhide query from today.

A) Total packages with "Requires: javapackages-tools": 4204
B) Total packages with "Requires: javapackages-tools" that are *not*
   -javadoc sub-packages: 2991
C) Total packages with "Requires: javapackages-tools", not a
   -javadoc sub-package and installing something in {,/usr}/bin: 145

> Implementing this change would require modifying many Java packages to
> add explicit requires to spec files. It would not affect users of Java
> applications, which would still need to require javapackages-tools. It
> would only possibly affect installations with Java libraries, but no
> applications, provided that these libraries don't have dependencies on
> applications.

Given from the data above it would entail to change on the order of 145
(binary) packages[1].

I've also run specific analysis on those 145 packages in order to
figure out whether or not they source /usr/share/java-utils/java-
functions from javapackages-tools. It appears there are (roughly) 82
SRPM packages which may need changing[2]. 5 of those already use
explicit requires for javapackages-tools[3].

Note that this doesn't seem to capture packages like ant. ant itself
doesn't depend on javapackages-tools, but it depends on ant-lib which
does. Yet, the ant package installs binaries which use functions
exported by javapackages-tools, not ant-lib. There is also a case of
installed symlinks like for package eclipse-platform which symlinks to
ant. While eclipse-platform is a false positive, ant is a false
negative.

> So to me it seems like a lot of effort for not much benefit. But I'm not
> opposed to the change, as long as people implementing it will take
> responsibility for fixing all packages broken by it. Due to nature of
> the change, affecting many packages across the distribution, I think it
> should be a system-wide change approved by FESCo.

If you think a system-wide change is needed for this, then so be it.
I'll help get packages fixed and get explicit javapackages-tools
requirement added for the packages that need it.

Given that there are currently about 80 SRPM to potentially change, it
seems a reasonable effort. After all, all other packages will benefit
from the change.

Thanks,
Severin

[1] See attachment "bin_containing_packages_javapackages_tools.txt"
    for a list of specific binary RPM packages.
[2] See attachment "pkgs_needing_javapackages-tools_srpms_name.txt"
[3] console-image-viewer
    eclipse
    gradle
    liquibase
    will-crash
389-console
CardManager
HdrHistogram
Mars
OpenStego
accumulo-core
accumulo-gc
accumulo-master
accumulo-server-base
accumulo-tracer
accumulo-tserver
antlr-tool
antlr3-tool
antlr4
antlrworks
apache-rat-core
aqute-bnd
batik-rasterizer
batik-slideshow
batik-squiggle
batik-svgpp
batik-ttf2svg
bindex
bolzplatz2006
bsh
bundling-detection-java
byteman
checkstyle
clapham
clojure
closure-compiler
colossus
console-image-viewer
dbus-java
derby
ditaa
dl_poly-gui
dtdinst
ecj
eclipse-cdt
eclipse-cdt-tests
eclipse-platform
eclipse-tests
elasticsearch
findbugs
fop
freecol
freerouting
gherkin2-java
gogui
gradle
gradle-local
hadoop-common
hadoop-hdfs
hadoop-mapreduce
hadoop-yarn
hdfview
hive
icedtea-web
imagej
itext-rups
jabref
jarjar
java-deptools
java-shogun
java-wakeonlan
javacc
javadocofflinesearch
javahelp2
javapackages-local
jaxodraw
jcuber
jdiff
jenkins-cli
jets3t-app
jetty
jflex
jgit
jibx
jing
jmake
jmol
josm
jpanoramamaker
jruby
jsonld-java-tools
jtidy
junit5
jython
lcm-java
legendsbrowser
liquibase
log4j-jmx-gui
logisim
maven-lib
metadata-extractor2
modello
msv-msv
msv-rngconv
msv-xmlgen
mvel
nekohtml
nesc
neurord
objectweb-asm
objectweb-asm3
ohc-benchmark
pki-console
pki-tools
plantuml
portecle
portmidi-tools
proguard
proguard-gui
rachota
rhino
sablecc
sbt
scala
shiro-tools-hasher
sunflow
svnkit-cli
taggle
taggle-server
thermostat
tika-app
tomcat
tomcat-lib
tonto
trang
tuxguitar
voms-clients-java
weka
will-crash
woden-tool
xerces-j2
xjparse
xml-commons-resolver
xmvn-bisect
xmvn-install
xmvn-resolve
xmvn-subst
yuicompressor
zanata-client
zookeeper
389-console
accumulo
antlr
antlr3
antlr4
antlrworks
apache-rat
aqute-bnd
batik
bolzplatz2006
bsh
bundling-detection-java
CardManager
checkstyle
clapham
closure-compiler
console-image-viewer
derby
ditaa
eclipse
fop
freecol
freerouting
gherkin2-java
gogui
gradle
HdrHistogram
itext
jarjar
javacc
java-deptools
javadocofflinesearch
javahelp2
java-wakeonlan
jdiff
jenkins
jetty
jflex
jing-trang
jmol
josm
jpanoramamaker
jsonld-java-tools
jtidy
junit5
legendsbrowser
liquibase
log4j
logisim
Mars
maven
metadata-extractor2
modello
msv
mvel
nekohtml
neurord
objectweb-asm3
objectweb-asm
ohc
OpenStego
plantuml
portecle
proguard
rachota
rhino
scala
shiro
sunflow
svnkit
tika
tomcat
tonto
weka
will-crash
woden
xerces-j2
xjparse
xml-commons-resolver
xmvn
yuicompressor
zanata-platform
_______________________________________________
java-devel mailing list -- java-devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to java-devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/java-devel@xxxxxxxxxxxxxxxxxxxxxxx/message/WVZOI7I27SAOUVF2SGCRLGVPEFFHXGWP/

[Index of Archives]     [Red Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]

  Powered by Linux