home · contact · privacy
Add user-friendly safeguards against running with unmet dependencies.
authorChristian Heller <c.heller@plomlompom.de>
Tue, 25 Aug 2015 03:37:49 +0000 (05:37 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Tue, 25 Aug 2015 03:37:49 +0000 (05:37 +0200)
redo
start_server_client_union.sh

diff --git a/redo b/redo
index 4081117268dee04d1df9a08acd01f043d71bf0fd..51f7affff8e68dbc404ff65f4e33a4dbbe470de9 100755 (executable)
--- a/redo
+++ b/redo
 # <https://github.com/plomlompom/plomrogue/issues/2#issuecomment-50972436> for a
 # workaround.
 
 # <https://github.com/plomlompom/plomrogue/issues/2#issuecomment-50972436> for a
 # workaround.
 
+# Some tests first: for gcc, and certain necessary header files. (This is not
+# strictly the responsibility of a mere redo wrapper. But those using a
+# pre-installed redo probably will be fine with the error messages thrown by it
+# if these miss.)
+test=`command -v gcc | wc -l`
+if [ 1 != $test ]
+then
+    echo "FAILURE:"
+    echo "No gcc installed, but it's needed!"
+    exit 1
+fi
+test_header() {
+    code="#include <$1>"
+    test=`echo $code | cpp -H -o /dev/null 2>&1 | head -n1 | grep error | wc -l`
+    if [ 0 != $test ]
+    then
+        echo "FAILURE:"
+        echo "No $1 header file found, but it's needed!"
+        echo "Maybe install some $2 package?"
+        exit 1
+    fi
+}
+test_header stdlib.h libc6-dev      # Assume stdlib.h guarantees full libc6-dev.
+test_header ncurses.h libncurses5-dev
+
+# The actual redo calling.
 export PATH=$PATH:$PWD/build/redo_scripts
 redo "$@"
 export PATH=$PATH:$PWD/build/redo_scripts
 redo "$@"
index 3b7dccc387636e8a82b4b7aa05a4d4a8cbae7e40..ad05038c54ff3d3ad4908315260d213d3f1b0181 100755 (executable)
@@ -9,6 +9,15 @@ then
     rm log
 fi
 
     rm log
 fi
 
+# Abort if no proper Python version installed.
+test=`command -v python3 | wc -l`
+if [ 1 != $test ]
+then
+    echo "FAILURE:"
+    echo "No python3 installed, but it's needed!"
+    exit 1
+fi
+
 # Give helpful message to players that want to start without compiling first.
 if [ ! -e ./roguelike-client ]
 then
 # Give helpful message to players that want to start without compiling first.
 if [ ! -e ./roguelike-client ]
 then