#!/bin/sh
echo "Welcome to Reflex set_memory utility"
echo " This utility allows you to set the Java memory used by Reflex"
echo " Hints: If the machine has 2Gb, settting default to 1024 will allow "
echo " reflex to run stable even for complex workflows."
echo " Do not set max to more than 1536 on 32 bit machine."
echo " If user has limited memory: setting max value to 256 is enough"
echo " for simple workflows (UVES), and will leave enough memory for"
echo " esorex to run."
ESOREFLEX_BASE=$(dirname $0)/../..
if command -v perl > /dev/null ; then
ESOREFLEX_BASE=$(perl -MCwd=realpath -e "print realpath '$ESOREFLEX_BASE'")
else
ESOREFLEX_BASE=$(cd "$ESOREFLEX_BASE" ; pwd)
fi
memory_file=$ESOREFLEX_BASE/build-area/settings/memory.xml
min_line=`grep min "$memory_file"`
isnumber=0
while [ $isnumber -eq 0 ]
do
printf "Minimum amount of memory (in Megabytes) for Reflex: [unchanged] "
read -r memory_min
case $memory_min in
'') printf "Minimum memory setting not changed\n"; isnumber=999 ;;
*[!0-9]*) printf "Cannot understand number\n"; isnumber=0 ;;
*) isnumber=1 ; min_line=`echo \${memory_min}m\`;;
esac
done
max_line=`grep max "$memory_file"`
isnumber=0
while [ $isnumber -eq 0 ]
do
printf "Maximum amount of memory (in Megabytes) for Reflex: [unchanged] "
read -r memory_max
case $memory_max in
'') printf "Maximum memory setting not changed\n"; isnumber=999 ;;
*[!0-9]*) printf "Cannot understand number\n"; isnumber=0 ;;
*) isnumber=1 ; max_line=`echo \${memory_max}m\`;;
esac
done
write_config () {
cat <
Default Memory Properties
$max_line
$min_line
EOF2
}
# Test if we have write access to the file. If not then use sudo.
echo "" 2> /dev/null >> "$memory_file"
if test "$?" -eq 0 ; then
write_config > "$memory_file" || exit 1
else
# Copy via a temp file to avoid problems with redirections and sudo.
temp_file=`mktemp /tmp/tmp_XXXXXXXX` || exit 1
write_config > "$temp_file" || exit 1
sudo cp "$temp_file" "$memory_file" || exit 1
rm -f "$temp_file"
fi
echo " Memory config set to:"
echo $max_line
echo $min_line