Red Hat Bugzilla – Bug 208613
Review Request: libgcj - separate libgcj srpm
Last modified: 2014-08-11 01:46:43 EDT
Spec URL: http://people.redhat.com/~tromey/libgcj-srpm/libgcj41.spec
SRPM URL: http://people.redhat.com/~tromey/libgcj-srpm/libgcj-4.1.1-20.src.rpm
This is a separate source RPM for libgcj. The idea is to allow pushing
libgcj updates separately from GCC updates, enabling faster bug fix
There's a separate patch for the GCC spec file. I've sent a version of it
to Jakub, but it needs an update. This patch reduces the build requirements
of GCC; for instance we no longer need gtk to build the GCC rpms.
There is a helper script in the libgcj SRPM to create the initial source
tar from the gcc srpm. I think maintenance-wise the best approach is to
start with the current gcc sources and then apply libgcj patchese as needed.
Rebasing to a new gcc is simply and automated with the script.
With my patch the gcc spec file still builds libgcj. This lets us continue
to run 'make check' to verify that compiler changes don't break the libgcj
build. However, the libgcj built here has reduced functionality (e.g.,
no AWT peers -- this is why we can remove build requirements) and is not
With this change, fastjar and grepjar move from the libgcj RPM into the
I presume this is targeted at FC-7?
(In reply to comment #1)
> I presume this is targeted at FC-7?
No, Jesse wanted this for FC-6.
Huh? It seems way late in the game for this.
I'd like to request a review for this for FC-7.
With our intent to move all packages externally, can this split wait until then?
It would be nice if it could happen before the split so that we can start
testing the libgcj bits sooner rather than later.
Is this going to happen? From my perspective, the pros/cons are:
. no need to bug Jakub on libgcj requests
-> this is the biggie IMO. I know I feel bad when I want one small class
library fix and it requires getting Jakub to spend time spinning all of gcc
. no need to wait for entire gcc test suite to complete
. can potentially push java-gcj-compat directly into libgcj SRPM
. distro compiler changes independently of java class library => can lead to
more bugfixes for the latter without potentially destabilizing the former
. skew between the two SRPMS?
. no real upstream source for the libgcj SRPM's Source as it's derived from the
. will patches need to be maintained in multiple places?
. will we be duplicating test suite running?
I think this should happen so that we have faster turnaround time for pure-class
library libgcj bugs. Jakub, do you think this is reasonable? As Andrew said,
it doesn't seem reasonable to ask Jakub to do a multi-hour respin of the gcc
rpms for the backport of a single patch from GNU Classpath.
That said, if this is going to happen for Fedora 7 I'm saying right now that
we'll need an extension past the February 20th freeze. Jesse, is there a
procedure for requesting such an extension?
Nothing official :/
I talked this over with Jakub, Tom Tromey and Andrew Overholt, and we came up
with an alternate proposal.
The main goal of splitting libgcj was to get class library fixes out to Fedora
users faster. Jakub has explained to me that there are problems with that goal
for Fedora updates: 1) we don't want to force users to download megabytes of
updates very often (35M for a libgcj update (no debuginfo), 78M for a full gcc
update (no debuginfo) and 2) we don't want to force re-prelinking more often
than necessary (a libgcj update forces re-prelinking of all libraries linked to
it (uses up to 10 minutes of CPU time according to Jakub).
He has suggested that we instead use updates-testing as a channel for fast
delivery of libgcj updates to users. In this arrangement, the process for
getting a class library fix out to Fedora users would be:
1) fix GNU Classpath upstream
2) backport the fix to redhat/gcc-4_1-branch in the GCC SVN repository
3) send mail to Jakub requesting a new gcc build in Fedora 7 updates-testing
Normal users would get the fix in the next gcc update, which would happen at a
frequency of once every one or two months.
Users who want a fix immediately could do:
yum --enablerepo=updates-testing update libgcj
Jakub would be prepared to do these updates-testing gcc builds as long as they
weren't needed more often than once per week.
The remaining concerns are:
1) Jakub is too busy on a given week to build a requested fix into
Jakub, if this were the case, would it be possible for one of us from the Java
group to do the build, after you've approved the proposed changes?
2) A class library bug that should be fixed for all libgcj users (not just those
aware of/able-to-use updates-testing) is found early in the one-to-two month
gcc update cycle
I don't have a good answer for this one. Those users will have to wait the one
or two months for that update.
3) gcc will still have the same large set of BuildRequires
Does releng still consider this an issue?
4) The potential for merging java-1.5.0-gcj into libgcj
Jakub tells me he's open to accepting java-1.5.0-gcj constructs into the libgcj
sub-rpm of the gcc spec file (alternatives, new SourceNs, etc.) so this merge
can be done independent of the libgcj split.
Do people think this approach is acceptable/better than the split libgcj approach?
in the new world we were not going to let packages linger in updates-testing
for that long. I guess we could exclude glibc for longer time periods.
(In reply to comment #11)
> in the new world we were not going to let packages linger in updates-testing
> for that long. I guess we could exclude glibc for longer time periods.
What about gcc?
1) yes, I guess it would be possible if we come up with some simple rules,
e.g. such builds would be possible only if there weren't any changes checked
in on the branch other than in libjava/ since the last gcc rpm built by myself
and it used a release tag with dot inside (the former because things being
checked there means a new gcc from me is in the works, the latter e.g. to not
get out of sync e.g. with rawhide gcc)
3) even with separate libgcj the BuildRequires of gcc couldn't be trimmed down,
as building untested gcj/jc1 is not an option - even with separate libgcj gcc
build would need to build libgcj itself and run tests against it, only it
wouldn't be installed by gcc subpackages.
OK, I think that settles it. Though it would be nice to satisfy concern 2) as
well, the simplicity of this compromise probably outweighs the downsides of a
split libgcj. I'm closing this WONTFIX.