Java package maintainers, please, add missing requires to your packages.

Peter Lemenkov lemenkov at gmail.com
Thu Mar 11 09:31:10 UTC 2010


Hello All!

Recently I (re)started to package some big java application, and as
one of side effect of this work, I take a closer look on current state
of java packages in Fedora and I was disappointed with what I saw
here.

Quick summary - many java packages does not obey Fedora Packaging
Guidelines in case of owning a directories, already owned by other
packages.

As a result - some packages owns %{_javadir}, some - %{_javadocdir},
some - own directories with maven-related stuff. This mess must be
fixed!

Please, take a closer look at your spec-files and

a) Add Requires jpackage-utils to main package's header if your
package stores something in %{_javadir}
b) Add Requires jpackage-utils to *-javadoc subpackage's header if you
store something in %{_javadocdir}
c) Do NOT own %{_javadir} - e.g. do NOT list bare directory
%{_javadir} in %files section. Instead use something like
%{_javadir}/*
d) The same rule applies for /usr/share/maven2, /etc/maven/fragments (
%{_mavendepmapfragdir} ) and /usr/share/maven2/poms ( %{_mavenpomdir}
) and other  - these two already owned by jpackage-utils.
e) Check for other directories, already owned by other packages. Foe
example, take a look at the "rpm -ql jpackage-utils" and you'll see
the list of directories, owned by this package - these directories can
NOT be owned by other packages. Add proper Requires instead.

I already fixed some packages, byt there are lots of them remaining.
For example, very often people forgot to add "Requires:
jpackage-utils"  to *-javadoc.

Please, do NOT fix packages ONLY in Rawhide (as some of us do usually)
- proposed fixes doesn't ruin ABI or API compatibility, and should be
applied in every active branch.

Please, keep in mind that adding Requires(post) and Requires(postun)
is not the same as adding Requires. One could easily remove packages,
listed in Requires(post|postun), and your package should work and
whole filesystem tree should remain consistent (I mean every directory
should have their respective owner). Thus, enlisting jpackage-utils in
Requires(post) only is not enough if you store something in
%{_javadir}.

Thank you for your attention!

-- 
With best regards, Peter Lemenkov.


More information about the devel mailing list