Fedora Console needs to be packaged as a RPM. Here are some of the requirements
- Must have a buildable source RPM
- Should use rpm dependencies for build and install requirements
- Should be a distributed intall layout as opposed to self-contained
Created attachment 121375 [details]
Quite a few things needed to be modified to make Console work properly as a
The Console RPM will install the Console jar files in "/usr/share/java", and
the startconsole script will go in "/usr/bin". The RPM will require nspr, nss,
jss, and ldapjdk RPMs to be installed already. These dependencies will exist
in system locations (/usr/lib and /usr/share/java).
The build system had to be modified to use system copies of nspr, nss, jss, and
ldapjdk instead of downloading them. The developer still has the ability to
build the old way if they supply an imports.file property to Ant, otherwise it
looks in system locations (/usr/lib and /usr/share/java). The default build
option is to use these local system dependencies and just build the jar files.
A standalone console can be build with the "package" target.
The downloaded jars are no longer stored in a local "jars" directory where the
console is installed. This would be a problem since the user running console
may not have permission to download a jar file to a system directory such as
"/usr/share/java". They are now put in the users preference directory. This
used to be "~/.mcc", but it's now changed to "~/.fedora-console".
The Console jar file names are now more decriptive. The names used to be
things such as "mcc10.jar", btu they are now "fedora-mcc-1.0.jar".
The startconsole script was changed around to allow it to be run from any
location. Previously, you had to run it from the location that it was
installed due to the use of relative paths. There are now two versions of the
startconsole script, one for Console installs that will use system locations
(plain startconsole), and one for standalone installs of the Console
(startconsole-sandbox). The appropriate one will be packaged depending on how
you build Console. I also was able to strip out a bunch of stuff related to
setting LD_LIBRARY_PATH to satisfy the JSS C library. JSS versions prior to
3.7 were linked against libjava.so and libjvm.so. These links were unnecessary
and have been removed in JSS 3.7, so we don't need to put them in
I also cleaned up the way the caplugin stuff works for the manual certificate
request plugin. The old way this was done was to have a separate jar file for
this. The Console would require there to be a "caplugin" directory where the
server jar files get downloaded that must contain this default plugin.
Additional plugins would be loaded from here as well. I changed it so that the
default plugin is located withing one of the main Console jars (the mcc jar
specifically) instead of being a standalone jar. This allows the console to
run without this jar being present in the user's ".fedora-console" directory.
Additional plugins can be loaded from the user's ".fedora-console/caplugin"
Created attachment 121376 [details]
This is the initial specfile for the fedora-console RPM.
Created attachment 121377 [details]
New standalone startconsole script
This is the new startconsole script that will only be used for self-contained
installs of Console. Ant will package it during the package target (which is
not used by rpmbuild).
Created attachment 121606 [details]
Checked into console (HEAD). Reviewed by Rich and Noriko.