[ioquake3] 05/12: Improvements to the linux build script

Simon McVittie smcv at debian.org
Mon Nov 27 12:04:07 UTC 2017


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to annotated tag debian/1.36+u20171122_dfsg-1
in repository ioquake3.

commit 14cb72f91219b760d21ee50a5a663ab3dcd28fdb
Author: Matt Palmer <mpalmer at hezmatt.org>
Date:   Wed Nov 22 16:07:54 2017 +1100

    Improvements to the linux build script
    
    In no particular order:
    
    * Use `set -e`, because it prevents accidents, and means we can avoid
      lengthy &&-joined command chains.
    * Override defaults by setting env vars; this means people don't have to
      edit the script to change things.
    * Use an unpredictable and safely-created tmpdir for building; ain't nobody
      wants to cleanup from a tmpdir race condition attack.
    * Test for the presence of `git` and `make` *before* asking questions, and
      only prompt the user about them if they're missing.  No need to bother
      people with unnecessary reading.
    * Automatically clean up the build directory after use.
    * Tidy up some indenting that had come asunder.
---
 misc/linux/server_compile.sh | 75 +++++++++++++++++++++++++++++---------------
 1 file changed, 49 insertions(+), 26 deletions(-)

diff --git a/misc/linux/server_compile.sh b/misc/linux/server_compile.sh
index 66bdc65..b4e1037 100644
--- a/misc/linux/server_compile.sh
+++ b/misc/linux/server_compile.sh
@@ -1,30 +1,53 @@
 #!/bin/bash
-localPATH=`pwd`
-export BUILD_CLIENT="0"
-export BUILD_SERVER="1"
-export USE_CURL="1"
-export USE_CODEC_OPUS="1"
-export USE_VOIP="1"
-export COPYDIR="~/ioquake3"
-IOQ3REMOTE="https://github.com/ioquake/ioq3.git"
-IOQ3LOCAL="/tmp/ioquake3compile"
-JOPTS="-j2" 
-echo "This process requires you to have the following installed through your distribution:
- make
- git
- and all of the ioquake3 dependencies necessary for an ioquake3 server.
- If you do not have the necessary dependencies this script will bail out.
+
+set -e
+
+export BUILD_CLIENT="${BUILD_CLIENT:-0}"
+export BUILD_SERVER="${BUILD_SERVER:-1}"
+export USE_CURL="${USE_CURL:-1}"
+export USE_CODEC_OPUS="${USE_CODEC_OPUS:-1}"
+export USE_VOIP="${USE_VOIP:-1}"
+export COPYDIR="${COPYDIR:-~/ioquake3}"
+IOQ3REMOTE="${IOQ3REMOTE:-https://github.com/ioquake/ioq3.git}"
+MAKE_OPTS="${MAKE_OPTS:--j2}"
+
+if ! [ -x "$(command -v git)" ] || ! [ -x "$(command -v make)" ]; then
+        echo "This build script requires 'git' and 'make' to be installed." >&2
+        echo "Please install them through your normal package installation system." >&2
+        exit 1
+fi
+
+echo " This build process requires all of the ioquake3 dependencies necessary for an ioquake3 server.
+ If you do not have the necessary dependencies the build will fail.
+
  Please post a message to http://discourse.ioquake.org/ asking for help and include whatever error messages you received during the compile phase.
- Please edit this script. Inside you will find a COPYDIR variable you can alter to change where ioquake3 will be installed to."
+
+ We will be building from the git repo at ${IOQ3REMOTE}
+ The resulting binary will be installed to ${COPYDIR}
+
+ If you need to change these, please set variables as follows:
+
+ IOQ3REMOTE=https://github.com/something/something.git COPYDIR=~/somewhere $0"
+
+BUILD_DIR="$(mktemp -d)"
+trap "rm -rf $BUILD_DIR" EXIT
+
 while true; do
-        read -p "Are you ready to compile ioquake3 in the $IOQ3LOCAL directory, and have it installed into $COPYDIR? " yn
-case $yn in
-        [Yy]* )
-if  [ -x "$(command -v git)" ] && [ -x "$(command -v make)" ] ; then
-        git clone $IOQ3REMOTE $IOQ3LOCAL && cd $IOQ3LOCAL && make $JOPTS && make copyfiles && cd $localPATH && rm -rf $IOQ3LOCAL
-fi
-        exit;;
-        [Nn]* ) exit;;
-        * ) echo "Please answer yes or no.";;
-esac
+        read -p "Are you ready to compile ioquake3 from ${IOQ3REMOTE}, and have it installed into $COPYDIR? " yn
+        case $yn in
+                [Yy]*)
+                        git clone $IOQ3REMOTE $BUILD_DIR/ioq3
+                        cd $BUILD_DIR/ioq3
+                        make $MAKE_OPTS
+                        make copyfiles
+                        exit
+                        ;;
+                [Nn]*)
+                        echo "aborting installation."
+                        exit
+                        ;;
+                *)
+                        echo "Please answer yes or no."
+                        ;;
+        esac
 done

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/ioquake3.git



More information about the Pkg-games-commits mailing list