From Fedora Project Wiki
Line 491: Line 491:
=== direct arch-full java dependencies  ===
=== direct arch-full java dependencies  ===
<pre>
<pre>
placeholder
abrt-java-connector
ant-antunit
antlr32
antlr3
antlr4-project
antlr
antlr-maven-plugin
antlrworks
aopalliance
apache-commons-collections4
apache-commons-digester
apache-commons-exec
apache-commons-fileupload
apache-commons-math
apache-commons-modeler
apache-commons-pool
apache-ivy
apache-sshd
apron
arduino-listSerialPortsC
args4j
astyle
AusweisApp2
auto
automake
BareBonesBrowserLaunch
batik
beansbinding
bigloo
bolzplatz2006
bouncycastle
brazil
brltty
bsh
buildnumber-maven-plugin
byteman
cambozola
canl-java
capstone
CardManager
ceph
CFR
chromium
classloader-leak-test-framework
clojure
clojure-core-specs-alpha
clojure-maven-plugin
clojure-spec-alpha
cocoalib
codehaus-parent
collectd
colossus
console-image-viewer
cortado
cryptlib
crypto-policies
csound
cvc4
decentxml
DecodeIR
diffoscope
directory-maven-plugin
dirgra
ditaa
dl_poly
dogtag-pki
dom4j
ecj
eclipse-swt
ed25519-java
enjarify
erlang
erlang-corba
exec-maven-plugin
fasterxml-oss-parent
fernflower
filedrop
fishbowl
flute
fop
forge-parent
freecol
freemarker
freerouting
freewrl
frysk
gdal
gdl
genders
gnulib
google-gson
graphviz
hawtjni
hdf5
hdf
healpix
hibernate-jpa-2.0-api
hibernate-jpa-2.1-api
hid4java
hyperestraier
icecat
icu4j
imagej
IPAddress
jackson-annotations
jackson-bom
jackson-core
jackson-databind
jackson-dataformats-binary
jackson-dataformats-text
jackson-jaxrs-providers
jackson-modules-base
jackson-parent
jacoco
jacop
jakarta-el
jakarta-interceptors
jakarta-json
jakarta-mail
jakarta-saaj
jakarta-server-pages
jakarta-xml-ws
janino
jansi1
jansi
jansi-native
jargs
java-11-openjdk
java-17-openjdk
java-1.8.0-openjdk
javacc
javacc-maven-plugin
java-diff-utils
java-dirq
javaewah
java-gnome
java-jd-decompiler
java-mersenne-twister
javapackages-tools
javaparser
javapoet
java-runtime-decompiler
java-scrypt
javassist
jaxb-api
jaxb
jaxb-dtd-parser
jaxb-fi
jaxb-istack-commons
jaxb-stax-ex
jaxen
jblas
jboss-jaxrs-2.0-api
jboss-logging
jboss-logging-tools
jboss-parent
jchardet
jcip-annotations
jcodings
jcommon
jcommon-serializer
jcuber
jdeparser
jdependency
jericho-html
jetty
jffi
jFormatString
jfreechart
jgit
jglobus
jgoodies-common
jgoodies-forms
jgoodies-looks
jgrapht
jigawatts
jline2
jline
jmock
jmol
jna
jneuroml-core
jni-inchi
jnr-constants
jnr-ffi
jnr-netdb
jnr-posix
jnr-x86asm
jol
jolokia-jvm-agent
joni
jopt-simple
jorbis
jpanoramamaker
jpcap
jpype
jsch-agent-proxy
json_simple
jss
jssc
jtidy
juniversalchardet
kawa
kernel-tools
laf-plugin
lancer
ldapjdk
libbase
libbluray
libfonts
libformula
libgda
libidn
liblayout
libloader
libphidget
libreoffice
librepository
libserializer
libsvm
libvirt-java
libwebp
link-grammar
mapserver
mariadb-java-client
Mars
maven2
maven-archetype
maven-clean-plugin
maven-doxia
maven-doxia-sitetools
maven-invoker
maven-invoker-plugin
maven-mapping
maven-native
maven-patch-plugin
maven-reporting-api
maven-reporting-impl
maven-scm
maven-script-interpreter
maven-shade-plugin
maven-verifier-plugin
mecab-java
miglayout
mojo-executor
mp
mxparser
mysql-connector-java
naga
nailgun
nekohtml
nom-tam-fits
ocaml-atd
octave
ongres-scram
ongres-stringprep
openas2
opencv
openjdk-asmtools
openjfx8
openjfx
openmpi
openni
openstack-java-sdk
OpenStego
options
pcfi
pcl
pdfbox
pdftk-java
pentaho-libxml
pentaho-reporting-flow-engine
picocli
plantuml
pl
plexus-active-collections
plexus-component-api
plexus-i18n
plexus-velocity
plplot
pomchecker
portlet-2.0-api
portmidi
postgresql-jdbc
ppl
procyon
proguard
prometheus-jmx-exporter
prometheus-simpleclient-java
protobuf
py4j
python-javabridge
python-javaobj
python-jep
python-jnius
qdbm
rachota
R
reflections
replacer
resteasy
rhino
rstudio
rsyntaxtextarea
rundoc
sac
sat4j
sblim-cim-client2
sblim-cim-client
scala
scalacheck
scalpel
scannotation
sdljava
seqan2
seqan
sequence-library
serp
shaman
Singular
snakeyaml
snip
spec-version-maven-plugin
sphinx
spice-parent
sqljet
stringtemplate4
stringtemplate
string-template-maven-plugin
subversion
svnkit
swing-layout
system-rules
systemtap
taggle
tagsoup
t-digest
test-interface
texlive
tomcat
tomcatjss
tomcat-native
tomcat-taglibs-parent
treelayout
trilead-ssh2
truth
tuxguitar
tzdata
uom-parent
vecmath1.2
voms-api-java
voms-clients-java
vtk
weld-parent
will-crash
writer2latex
ws-commons-util
wsdl4j
xjparse
xmlgraphics-commons
xml-maven-plugin
xmlpull
xmlstreambuffer
xmltool
xmpcore
xmvn-connector-ivy
xstream
yuicompressor
z3
zbar
 
</pre>
</pre>

Revision as of 12:58, 1 July 2022


Drop i686 builds of jdk8,11,17 and latest (18) rpms from f37 onwards

Summary

java-1.8.0-openjdk, java-11-openjdk, java-17-openjdk and java-latest-openjdk packages will no longer build i686 subpackages

Owner

  • Name: Jiri Vanek
  • Email: <jvanek@redhat.com>
  • Product: java and java stack
  • Responsible WG: java-sig (java and java-maint)(which no longer exists)


Current status

Expected schedule

  • during march, drop i686 builds from all jdks in fedora rawhide

Detailed Description

Fedora currently ships:

  • java-1.8.0-openjdk (LTS)
  • java-11-openjdk (LTS)
  • java-17-openjdk (LTS)
  • java-latest-openjdk (STS, jdk18).

All those builds on all architectures except jdk8, where arm32 with jit is built by different package. Unluckily, the i686 bit builds of jdk are rotten in upstream. The recent breakage of i686 JIT just before branching nearly killed jdk17 as system jdk feature. The rotting have main visibility with newer GCCs. If GCC bump, and it does, it always triggers new issues in i686 JIT, and there is less and less people to somehow workaround them. Unluckily, there is probably no longer anyone willing to really fix them

Although there is https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval , this proposal have nothign to do with it, not even inspiration. People about OpenJDK learned about after this jdk one was announced.

Benefit to Fedora

The i686 builds are rotten in usptream, and to patch them localy had become pain. We may be introducing very bugy i686 jdk. Better then to do so, we would rather not ship that at all. This will untie hands of both JDK and GCC developers, who will no longer need to dive into nasty legacy code.

Scope

Change owners

Workflow

  • new macro %{java_arches} which will be of value : aarch64 ppc64le s390x x86_64
    • will be declared
  • Once done,
    • All most crucial affected pkg - the blacklist + few others, eg R,graphviz (suggestions welcomed, bottom of sorted by dependent children list) will get filled bugzilla -listing - eg:
cairo is transitively depending on java, please ensure you drop java support on i686

Dear maintainer, we are going to drop i686 java packages in f37 - https://fedoraproject.org/wiki/Changes/Drop_i686_JDKs
Your library is transitively affected by this change:
 
java-devel <- graphviz <- gcc <- bash <- fontconfig <- cairo
java-devel <- graphviz <- gcc <- coreutils <- fontconfig <- cairo
java-devel <- graphviz <- gcc <- freetype <- fontconfig <- cairo
java-11-openjdk-devel <- subversion <- git <- gettext <- fontconfig <- cairo
java-devel <- graphviz <- gcc <- glibc <- fontconfig <- cairo
java-devel <- graphviz <- gcc <- gperf <- fontconfig <- cairo
java-devel <- graphviz <- gcc <- grep <- fontconfig <- cairo
java-devel <- graphviz <- gcc <- libtool <- fontconfig <- cairo
java-devel <- graphviz <- gcc <- libxml2 <- fontconfig <- cairo
java-devel <- graphviz <- gcc <- make <- fontconfig <- cairo
java-devel <- graphviz <- gcc <- bash <- freetype <- cairo
java-devel <- graphviz <- doxygen <- gcc <- freetype <- cairo
java-devel <- graphviz <- gcc <- gcc <- freetype <- cairo
java-devel <- libwebp <- graphviz <- gcc <- freetype <- cairo
R-java-devel <- R-devel <- graphviz <- gcc <- freetype <- cairo
java-devel <- graphviz <- gcc <- glibc <- freetype <- cairo

Please ensure, you drop i686 java support before branching. You can use new ExclusiveArch: %{java_arches} macro for your convenience

(only glibc will not have its 15000 depnedent pkg listed),

    • all native (not noarch) direct dependencies of javas', maven ant (as in here and here (to be generated) will get filled bugzilla -listing - eg:
native libreoffice depends on to be removed i686 java packages

Dear maintainer, we are going to drop i686 java packages in f37 - https://fedoraproject.org/wiki/Changes/Drop_i686_JDKs
libreoffice  is dependnign on it and is native, please adapt your package so it builds without java support on i686
You can use new ExclusiveArch: %{java_arches} macro for your convenience
    • all noarch direct java, amven ant... dependencies will -listing - get auto injected ExclusiveArch: %{java_arches} noarch if not present, or appended by %{java_arches} noarch if ExclusiveArch already there
    • all bugs will block this feature main bug
  • if all goes ok, we will simply stop building i686 java pacakges in rawhide
  • I'm not sure if there is any sense in creating copr for this, as there is no proper i686 there...

Other developers

  • may notice the multilib i686 java missing.
  • it is up to them to drop i686 builds or to povide workaround (if possible)
  • all the bugreports should contain precisse instructions what to do:
If you are using %{ix86} or i686 ExclusiveArch, in the java depending subpkg, you ahve to drop it.
You should declare  ExclusiveArch: %{java_arches} noarch in your noarch java depending subpkgs
You should declare  ExclusiveArch: %{java_arches} in your archdull java depending pkgs
Note that you really have to ifarch the depndece out, so you do not randomly fail because of BR not satisfied if your builder wil be i686, which can happen.
See examples: 
https://src.fedoraproject.org/rpms/graphviz/pull-request/9
https://src.fedoraproject.org/rpms/maven/c/520942645bfd1e4721dacd536a6ccbf80495a8ae?branch=rawhide
todo automake once https://bugzilla.redhat.com/show_bug.cgi?id=2102298 is done

Other

  • Release engineering: #10686
    • mass rebuild will NOT be required for this change


  • Trademark approval: N/A (not needed for this Change)
  • Bug assignees will need to verify the impact of i686

Upgrade/compatibility impact

  • The upgrade on multilib systems will lead to autoremoval of i686 javastack
  • which should be minimum if above bugzillas are properly handled

How To Test

install i686 java will result to not packages found

User Experience

User experience on multilib systems will be bad. Bad reasonable.

Dependencies

There are is unknown number of multilib java consumers. I expect some of them may rise voice, but that will have to handled one by one.

Contingency Plan

  • Contingency mechanism: return i686 java packages
  • Contingency date: (not provided)

Documentation

Will be needed...

Release Notes

None yet...

final listings

crucial dependences transitively depndnding on java(s)

alsa-lib
alsa-lib-devel
atk
autoconf
automake
bash
boost-devel
cairo
cargo
cmake
coreutils
coreutils-single
desktop-file-utils
doxygen
findutils
fontconfig
freetype
gawk
gcc
gcc-c++
gdk-pixbuf2
gettext
ghc-base
ghc-base-devel
ghc-compiler
git
glib2
glib2-devel
glibc
gmp
gnupg2
go-rpm-macros
graphviz
gtk2
gtk2-devel
gtk3
gtk3-devel
gtk-doc
harfbuzz
hicolor-icon-theme
kf5-kconfigwidgets
kf5-kcoreaddons
kf5-kio-core-libs
kf5-kio-widgets-libs
kf5-kxmlgui
libappstream-glib
libcurl
libcurl-minimal
libglvnd-glx
libjpeg-turbo
libstdc++
libtool
libX11
libX11-devel
libXext
libXext-devel
make
mesa-libGLU
meson
ninja-build
ocaml
ocaml-runtime
openssl-devel
openssl-libs
pango
perl-Carp
perl-constant
perl-Exporter
perl-generators
perl-interpreter
perl-libs
perl-PathTools
perl-Scalar-List-Utils
php-common
pkgconf-pkg-config
python3
python3-devel
python3-pytest
python3-pyyaml
python3-setuptools
qt
qt5-qtbase
qt5-qtbase-devel
qt5-qtbase-gui
qt5-qtdeclarative
qt-x11
R-core
R-devel
rubygems
rubypick
rust-packaging
rust-web-sys-devel
sed
shadow-utils
systemd
systemd-libs
tesseract
texlive-base
texlive-kpathsea
texlive-latex
vala
zlib
zlib-devel

direct noarch java dependencies

ant
apache-commons-beanutils
apache-commons-cli
apache-commons-codec
apache-commons-collections
apache-commons-compress
apache-commons-io
apache-commons-jxpath
apache-commons-lang3
apache-commons-logging
apache-commons-net
apache-commons-parent
apache-parent
apache-resource-bundles
apiguardian
aqute-bnd
assertj-core
atinject
bcel
beust-jcommander
bsf
byte-buddy
cdi-api
cglib
classpathless-compiler
disruptor
easymock
felix-parent
felix-utils
fusesource-pom
google-guice
guava
hamcrest
httpcomponents-client
httpcomponents-core
httpcomponents-project
jakarta-activation
jakarta-annotations
jakarta-oro
jakarta-servlet
java_cup
javapackages-bootstrap
jctools
jdepend
jdom2
jdom
jflex
jsch
jsr-305
junit5
junit
jzlib
log4j
maven-antrun-plugin
maven-archiver
maven-artifact-transfer
maven-assembly-plugin
maven-common-artifact-filters
maven-compiler-plugin
maven-dependency-analyzer
maven-dependency-plugin
maven-dependency-tree
maven-enforcer
maven-file-management
maven-filtering
maven-jar-plugin
maven
maven-parent
maven-plugin-build-helper
maven-plugin-bundle
maven-plugin-testing
maven-plugin-tools
maven-remote-resources-plugin
maven-resolver
maven-resources-plugin
maven-shared-incremental
maven-shared-io
maven-shared-utils
maven-source-plugin
maven-surefire
maven-verifier
maven-wagon
mockito
modello
mojo-parent
munge-maven-plugin
objectweb-asm
objenesis
opentest4j
osgi-annotation
osgi-compendium
osgi-core
plexus-archiver
plexus-build-api
plexus-cipher
plexus-classworlds
plexus-compiler
plexus-components-pom
plexus-containers
plexus-interpolation
plexus-io
plexus-languages
plexus-pom
plexus-resources
plexus-sec-dispatcher
plexus-utils
qdox
regexp
sisu-mojos
sisu
slf4j
testng
univocity-parsers
velocity
vim-syntastic
xalan-j2
xbean
xerces-j2
xml-commons-apis
xml-commons-resolver
xmlunit
xmvn
xz-java

direct arch-full java dependencies

abrt-java-connector
ant-antunit
antlr32
antlr3
antlr4-project
antlr
antlr-maven-plugin
antlrworks
aopalliance
apache-commons-collections4
apache-commons-digester
apache-commons-exec
apache-commons-fileupload
apache-commons-math
apache-commons-modeler
apache-commons-pool
apache-ivy
apache-sshd
apron
arduino-listSerialPortsC
args4j
astyle
AusweisApp2
auto
automake
BareBonesBrowserLaunch
batik
beansbinding
bigloo
bolzplatz2006
bouncycastle
brazil
brltty
bsh
buildnumber-maven-plugin
byteman
cambozola
canl-java
capstone
CardManager
ceph
CFR
chromium
classloader-leak-test-framework
clojure
clojure-core-specs-alpha
clojure-maven-plugin
clojure-spec-alpha
cocoalib
codehaus-parent
collectd
colossus
console-image-viewer
cortado
cryptlib
crypto-policies
csound
cvc4
decentxml
DecodeIR
diffoscope
directory-maven-plugin
dirgra
ditaa
dl_poly
dogtag-pki
dom4j
ecj
eclipse-swt
ed25519-java
enjarify
erlang
erlang-corba
exec-maven-plugin
fasterxml-oss-parent
fernflower
filedrop
fishbowl
flute
fop
forge-parent
freecol
freemarker
freerouting
freewrl
frysk
gdal
gdl
genders
gnulib
google-gson
graphviz
hawtjni
hdf5
hdf
healpix
hibernate-jpa-2.0-api
hibernate-jpa-2.1-api
hid4java
hyperestraier
icecat
icu4j
imagej
IPAddress
jackson-annotations
jackson-bom
jackson-core
jackson-databind
jackson-dataformats-binary
jackson-dataformats-text
jackson-jaxrs-providers
jackson-modules-base
jackson-parent
jacoco
jacop
jakarta-el
jakarta-interceptors
jakarta-json
jakarta-mail
jakarta-saaj
jakarta-server-pages
jakarta-xml-ws
janino
jansi1
jansi
jansi-native
jargs
java-11-openjdk
java-17-openjdk
java-1.8.0-openjdk
javacc
javacc-maven-plugin
java-diff-utils
java-dirq
javaewah
java-gnome
java-jd-decompiler
java-mersenne-twister
javapackages-tools
javaparser
javapoet
java-runtime-decompiler
java-scrypt
javassist
jaxb-api
jaxb
jaxb-dtd-parser
jaxb-fi
jaxb-istack-commons
jaxb-stax-ex
jaxen
jblas
jboss-jaxrs-2.0-api
jboss-logging
jboss-logging-tools
jboss-parent
jchardet
jcip-annotations
jcodings
jcommon
jcommon-serializer
jcuber
jdeparser
jdependency
jericho-html
jetty
jffi
jFormatString
jfreechart
jgit
jglobus
jgoodies-common
jgoodies-forms
jgoodies-looks
jgrapht
jigawatts
jline2
jline
jmock
jmol
jna
jneuroml-core
jni-inchi
jnr-constants
jnr-ffi
jnr-netdb
jnr-posix
jnr-x86asm
jol
jolokia-jvm-agent
joni
jopt-simple
jorbis
jpanoramamaker
jpcap
jpype
jsch-agent-proxy
json_simple
jss
jssc
jtidy
juniversalchardet
kawa
kernel-tools
laf-plugin
lancer
ldapjdk
libbase
libbluray
libfonts
libformula
libgda
libidn
liblayout
libloader
libphidget
libreoffice
librepository
libserializer
libsvm
libvirt-java
libwebp
link-grammar
mapserver
mariadb-java-client
Mars
maven2
maven-archetype
maven-clean-plugin
maven-doxia
maven-doxia-sitetools
maven-invoker
maven-invoker-plugin
maven-mapping
maven-native
maven-patch-plugin
maven-reporting-api
maven-reporting-impl
maven-scm
maven-script-interpreter
maven-shade-plugin
maven-verifier-plugin
mecab-java
miglayout
mojo-executor
mp
mxparser
mysql-connector-java
naga
nailgun
nekohtml
nom-tam-fits
ocaml-atd
octave
ongres-scram
ongres-stringprep
openas2
opencv
openjdk-asmtools
openjfx8
openjfx
openmpi
openni
openstack-java-sdk
OpenStego
options
pcfi
pcl
pdfbox
pdftk-java
pentaho-libxml
pentaho-reporting-flow-engine
picocli
plantuml
pl
plexus-active-collections
plexus-component-api
plexus-i18n
plexus-velocity
plplot
pomchecker
portlet-2.0-api
portmidi
postgresql-jdbc
ppl
procyon
proguard
prometheus-jmx-exporter
prometheus-simpleclient-java
protobuf
py4j
python-javabridge
python-javaobj
python-jep
python-jnius
qdbm
rachota
R
reflections
replacer
resteasy
rhino
rstudio
rsyntaxtextarea
rundoc
sac
sat4j
sblim-cim-client2
sblim-cim-client
scala
scalacheck
scalpel
scannotation
sdljava
seqan2
seqan
sequence-library
serp
shaman
Singular
snakeyaml
snip
spec-version-maven-plugin
sphinx
spice-parent
sqljet
stringtemplate4
stringtemplate
string-template-maven-plugin
subversion
svnkit
swing-layout
system-rules
systemtap
taggle
tagsoup
t-digest
test-interface
texlive
tomcat
tomcatjss
tomcat-native
tomcat-taglibs-parent
treelayout
trilead-ssh2
truth
tuxguitar
tzdata
uom-parent
vecmath1.2
voms-api-java
voms-clients-java
vtk
weld-parent
will-crash
writer2latex
ws-commons-util
wsdl4j
xjparse
xmlgraphics-commons
xml-maven-plugin
xmlpull
xmlstreambuffer
xmltool
xmpcore
xmvn-connector-ivy
xstream
yuicompressor
z3
zbar