Better handle line buffering in tws_get_version
This commit is contained in:
parent
8ff9558ff8
commit
e3ce17a605
|
@ -25,15 +25,20 @@ echo "Latest version after wget has md5sum $MD5_NEW"
|
|||
|
||||
if [ "$MD5_OLD" == "$MD5_NEW" ]; then
|
||||
echo "File has not changed"
|
||||
exit 0
|
||||
if [ -e "${DOWNLOAD_DIR}/version.txt" ] ; then
|
||||
echo "version.txt found so no further work required"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "File has been updated; extracting version number by executing Java"
|
||||
echo "Extracting version number"
|
||||
DST="$(./tws_get_version "${FILE_CUR}" || echo unknown)"
|
||||
echo "Version is $DST"
|
||||
|
||||
if [[ $DST == *"unknown"* ]]; then
|
||||
echo "Error obtaining version by executing $FILE_MIRROR"
|
||||
echo "Error obtaining version from $FILE_MIRROR"
|
||||
echo "Removing ${DOWNLOAD_DIR}/version.txt"
|
||||
rm -f ${DOWNLOAD_DIR}/version.txt
|
||||
exit 2
|
||||
fi
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ TDIR="$(mktemp -d -t twsdir.XXXX)" || exit 1
|
|||
trap "rm -rf ${TDIR}" exit
|
||||
cd "${TDIR}" || exit 1
|
||||
|
||||
# Clean up installation directories if required and install new version
|
||||
rm -rf $HOME/.install4j $HOME/.i4j_jres $HOME/tws
|
||||
chmod +x ${ARG1}
|
||||
${ARG1} -q &> /dev/null
|
||||
|
@ -27,26 +28,41 @@ mkdir "${TWS_HOME}" || exit 1
|
|||
LOG="${TWS_HOME}/launcher.log"
|
||||
|
||||
TWS_CP=`find ${HOME}/tws/jars -type f -name \*.jar -printf '%p:'`
|
||||
|
||||
java -cp "${TWS_CP}" jclient.LoginFrame "${TWS_HOME}" &
|
||||
/usr/sbin/xvfb-run -n 99 /usr/lib/jvm/java-8-openjdk/jre/bin/java -cp "${TWS_CP}" jclient.LoginFrame "${TWS_HOME}" &
|
||||
disown
|
||||
TWS_PID="$!"
|
||||
|
||||
# give TWS JVM chance to start writing to $LOG
|
||||
x=0
|
||||
while [ "$x" -lt 50 -a ! -e /path/to/the/file_name ]; do
|
||||
x=$((x+1))
|
||||
sleep .1
|
||||
# Wait for TWS JVM to start writing to $LOG
|
||||
while [ ! -f $LOG ]; do
|
||||
inotifywait -q -q -t 10 -e create --format '%f' $TWS_HOME
|
||||
if [ $? -eq 2 ] && [ ! -f $LOG ]; then
|
||||
echo "Error: $LOG not found"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
VERSION_LINE="$(timeout --preserve-status "${TWS_TIMEOUT}" grep -m1 --line-buffered " - Build" "${LOG}")"
|
||||
kill -9 "${TWS_PID}" &>/dev/null
|
||||
# Wait for $LOG to contain version ("Build") line
|
||||
for count in {0..10}; do
|
||||
grep -q ' - Build' $LOG
|
||||
if [ $? -eq 0 ]; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Kill process now that version line or timeout was reached
|
||||
/usr/bin/kill --verbose --timeout 1000 TERM --timeout 1000 KILL --signal INT $TWS_PID &>/dev/null
|
||||
|
||||
# Clean up ready for next run
|
||||
rm -rf $HOME/.install4j $HOME/.i4j_jres $HOME/tws
|
||||
|
||||
if test "${VERSION_LINE}" == ""; then
|
||||
echo "could not grep version string" 1>&2
|
||||
exit 1
|
||||
# Extract version line from log now the JVM has exited
|
||||
VERSION_LINE=$(grep -m1 ' - Build' $LOG)
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "${VERSION_LINE}" |sed -e 's/.*Build //1' -e 's/,.*//1'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "${VERSION_LINE}" |sed -e 's/.*Build //1' -e 's/,.*//1'
|
||||
echo "could not grep version string; final log appears below" 1>&2
|
||||
cat $LOG 1>&2
|
||||
exit 1
|
||||
|
|
Loading…
Reference in a new issue