Anybody interested in this at all? On Sun, 2005-04-03 at 11:12 -0500, Jerry Haltom wrote: > We need a standard, nice, easy to extend way for binary wrappers > in /usr/bin and/or startup scripts to locate their VM. There are a few > requirements that I had: > > 1) Whatever we do should be GUI configurable. I want to write a "System > VM Selection" control panel of some sort allowing the user to choose > which VM is used system-wide and also program specific. > > 2) It would be nice if a user (or us, as maintainers) could set the > system up so that a certain VM is used by default for a certain program. > There is a very obvious use case for wanting to run something like > Eclipse on Sun's VM, yet everything else on GCJ (at least until we are > feature complete with Sun!) > > 3) It should be overridable per user. If only one user wants to run > Eclipse on Sun, he should be able to. > > So the obvious way to implement this is to write a shell script fragment > which queries a number of files and returns a valid path to a JAVA_HOME. > We then include this fragment at the top of existing wrappers, or such > as in the case of Ant, just replace the wrapper (the Ant wrapper sucks > really badly.) > > Here's my idea. A JVM selection file is just a file listing JAVA_HOME > paths in order of preference. We put the default system one here: > > /etc/jvm > > Additionally, we create a directory to hold per program files. > > /etc/jvm.d > > A file in here would be for example named 'ant'. I'd like to talk about > this naming convention for these files. I'm thinking we'd use the same > stuff as like, /usr/share/$prog, not the specific package name. > > The script would test for /etc/jvm.d/prog, test each JAVA_HOME listed > within, then, if it hasn't found a jvm yet, proceed with /etc/jvm. > > We could also have it check ~/.jvm.d and ~/.jvm in the same manor. > > Because I like doing things before I talk about them, I did this. This > file would be cleaned up, placed in java-common, perhaps > in /usr/share/java-common/jvm.sh, and jvm_find would be called in each > wrapper. > > #!/bin/bash > > function jvm_scan_file() { > file="$1" > > while read jvm; do > if [ -x "$jvm/bin/java" ]; then > echo $jvm > return > fi > done < <(cat "$file" | grep -v '#') > } > > function jvm_find() { > program_file="/etc/jvm.d/$1" > user_program_file="$HOME/.jvm.d/$1" > > if [ -r "$user_program_file" ]; then > jvm="$(jvm_scan_file "$user_program_file")" > fi > > if [ -r "$HOME/.jvm" ]; then > jvm="$(jvm_scan_file "$HOME/.jvm")" > fi > > if [ -r "$program_file" ]; then > jvm="$(jvm_scan_file "$program_file")" > fi > > if [ -z "$jvm" ]; then > jvm="$(jvm_scan_file /etc/jvm)" > fi > > echo "$jvm" > } > > Then a wrapper just sources it, JAVA_HOME=`jvm_find myname`, and goes > on. > > Please discuss! > > -- > Jerry Haltom <[EMAIL PROTECTED]> > > -- Jerry Haltom <[EMAIL PROTECTED]>
-- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]