I thought I'd use some of the goodness we've come up with in my home environment too, so have put together a much-scaled-down version of our launch script, for my personal use - and thought I'd share this more broadly, as I'm sure other folks will find this useful too.
I generally have multiple installation and user configuration profiles, and even from the desktop launcher, I much prefer to use launch scripts than just pointing the shortcut to the binary executable.
Here is my generic configuration script:
#!/bin/bash
#
# Runs the stable version of Eclipse.
# By default, it will launch Indigo, installed in /opt/eclipse; different
# versions can be launched by invoking this script and setting the
# ECLIPSE_INSTALL and CONFIG variables to point to the correct places.
#
# The default configuration directory is set to '/home/$USER/.eclipse/eclipse37'
# but this can be changed exporting a different value for CONFIG.
# See /home/marco/bin/eclipse-helios for an example of how to do this.
##############################
# Globals (default value):
#
# LD_LIBRARY_PATH (/usr/local/lib:/usr/lib)
# library search path for C++ dynamic libraries
#
# ECLIPSE_INSTALL ()
# installation directory
#
# CONFIG ()
# user's configuration directory
#
# MEM_ALLOC_POOL, PERM_SIZE (2,048MB, 256MB)
# Memory allocation and PermGen size
#
# JVM (/usr/local/java/bin/java)
# Java VM executable (java)
#
# By setting any of the variables above after source`ing this script
# and before invoking launch_eclipse() the default value(s) can be changed
##############################
declare ECLIPSE_INSTALL
declare CONFIG
declare MEM_ALLOC_POOL
declare PERM_SIZE
declare JVM="/usr/local/java/bin/java"
##############################
# Concatenates input paramters to LD_LIBRARY_PATH, if not already present
##############################
munge_library_path() {
for dir in $@; do
if [ -n "${dir}" ]; then
local is_present=`echo $LD_LIBRARY_PATH | grep ${dir} | wc -l`
if [ ${is_present} -eq 0 ]; then
export LD_LIBRARY_PATH=${dir}:$LD_LIBRARY_PATH
fi
fi
done
}
##############################
# Sets up global variables with default values if not already set
##############################
check_dirs() {
# Installation directory
if [ -z "${ECLIPSE_INSTALL}" ]; then
echo "You must set ECLIPSE_INSTALL to the Eclipse installation directory"
exit -1
fi
if [ ! -d ${ECLIPSE_INSTALL} ]; then
echo "Cannot find Eclipse installation directory (${ECLIPSE_INSTALL})"
exit -1
fi
# Configuration directory, user-specific
if [ ! -d "${CONFIG}" ]; then
mkdir -p ${CONFIG}
fi
}
##############################
# The location of the JVM, currently the default (OpenJDK 6)
##############################
locate_jvm() {
if [ ! -e "${JVM}" ]; then
echo "Could not locate a valid JVM at ${JVM}"
echo "Trying to locate a valid java installation"
JVM=`which java`
if [ -z "${JVM}" ]; then
echo "Could not find a valid JRE, giving up"
return -1
fi
echo "Found a JRE at ${JVM}"
fi
}
##############################
# Runs a few checks, sets up the LD library path and then launches Eclipse
#
# Param:
# clean will set the '-clean' Eclipse option that will clear the plugins cache
##############################
launch_eclipse() {
check_dirs
locate_jvm
munge_library_path /usr/local/lib /usr/lib
if [ "$1" == "clean" ]; then
CLEAN="-clean"
fi
$ECLIPSE_INSTALL/eclipse $CLEAN -vm $JVM -configuration $CONFIG \
-bundlepool $CONFIG/plugins \
-vmargs -Xmx${MEM_ALLOC_POOL:-"2048M"} -XX:MaxPermSize=${PERM_SIZE:-"256M"}
}This is used in the actual shell script (called, unimaginatively, eclipse):#!/bin/bash
#
# Runs the stable version of Eclipse.
# By default, it will launch Indigo, installed in /opt/eclipse; different
# versions can be launched by invoking this script and setting the
# ECLIPSE_INSTALL and CONFIG variables to point to the correct places.
#
# See eclipse_config.sh for more details
source /home/marco/bin/eclipse_config.sh
ECLIPSE_INSTALL="/opt/eclipse"
CONFIG="/home/${USER}/.eclipse/eclipse37"
launch_eclipseWhat is left is to just point a desktop (or menu) launcher to this script and replace the generic icon with the one in the eclipse/ folder (icon.xpm)
CREDITS -- I would very much like to gratefully acknowledge Machtelt Garrels and his much-consulted "Bash Guide for Beginners;" I never seem able to remember the bash conditional operators!

No comments:
Post a Comment