[fedora-java] gcj-dbtool --rebuild

Andrew Haley aph at redhat.com
Mon Nov 14 10:58:40 UTC 2005


Gary Benson writes:
 > Andrew Haley wrote:
 > > David Walluck writes:
 > > > I don't know how I feel about the Makefile idea. In any case, it
 > > > should never require user intervention.  What besides sendmail is
 > > > using this method anyhow? IMO, `make' should be touched by
 > > > packagers only, certainly not by end users, and not even by system
 > > > admins.
 > > 
 > > They won't need to.  The question here is how we fix our existing
 > > scripts so that they don't do unnecessary work.  If we do that, then
 > > they can be called unconditionally.  make is the right answer here,
 > > because it's a tool that already knows how to do the dependency
 > > analysis that's needed.
 > 
 > All it has to do is read every .db file under /usr/lib/gcj and write
 > what it finds to a .db file in /var/lib/gcj.  Where's the dependency
 > analysis in that?

We can already do that.  

My suggestion was a way to only do that when we know we really have
to.  So, if you install a RPM that doesn't add or remove any .db
files, nothing gets rebuilt because make doesn't see any changed
dependencies.

This completely solves the problem of

 > That aside, having the database rebuilding as an alternative (so
 > possibly a no-op) would also cause problems. Imagine this:
 > 
 >   1. User has GCJ as their JVM.
 >   2. a) User installs some Fedora packages.
 >      b) GCJ database is rebuilt into a consistent state.
 >   3. User switches to some other JVM.
 >   4. a) User installs some more Fedora packages.
 >      b) GCJ database is not rebuilt.
 >   5. User switches to GCJ as their JVM.
 > 
 > The user has ended up with a broken database.  His applications will
 > be slower, and in some (admittedly broken) cases will suddenly start
 > to fail.
 > 
 > Rather than being an alternative, the rebuild command would need to
 > rebuild all databases that could be installed on the system.  This
 > could be done by for example having all JVMs drop scripts in some
 > database, and having 'aot-compile --rebuild' or whatever call them all
 > in turn.

which was clipped from the mail.

Don't make database rebuilding an alternative.  Use make.

Andrew.




More information about the java-devel mailing list