From f9d58b39b42f5a1f475be9962b0a18d9f378215f Mon Sep 17 00:00:00 2001 From: "Silas S. Brown" <ssb22@cam.ac.uk> Date: Tue, 4 Mar 2025 08:36:48 +0000 Subject: [PATCH] GNU/Linux install script for multiuser + desktop menu entry --- INSTALL.txt | 49 ---------------------------------------- Makefile | 3 ++- install.sh | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 50 deletions(-) delete mode 100644 INSTALL.txt create mode 100644 install.sh diff --git a/INSTALL.txt b/INSTALL.txt deleted file mode 100644 index bad4f89..0000000 --- a/INSTALL.txt +++ /dev/null @@ -1,49 +0,0 @@ -Installing Gradint on GNU/Linux systems ---------------------------------------- - -Gradint does not need to be installed, it can -just run from the current directory. - -If you do want to make a system-wide installation -(for example if you want to make a package for a -GNU/Linux distribution), I suggest doing the -following as root: - -mkdir /usr/share/gradint -cp gradint.py /usr/share/gradint/ -cd samples/utils -for F in *.py *.sh; do - DestFile=/usr/bin/gradint-$(echo $F|sed -e 's/\..*//') - cp $F $DestFile - chmod +x $DestFile -done -cd ../.. ; rm -rf samples/utils -tar -zcf /usr/share/gradint/new-user.tgz \ - advanced.txt settings.txt vocab.txt samples -cat > /usr/bin/gradint <<EOF -#!/bin/bash -if ! [ -e "$HOME/gradint" ]; then - echo "You will need some prompts and samples in your home directory." - echo "Is it OK to unpack an example into $HOME/gradint ?" - echo "Ctrl-C to quit or Enter to continue" - read - echo -n "Unpacking... " - mkdir "$HOME/gradint" - cd "$HOME/gradint" - tar -zxf /usr/share/gradint/new-user.tgz - echo "done." - echo "Please check the contents of $HOME/gradint" - echo "especially the README files." - echo "Then you can run gradint again." - exit -fi -cd "$HOME/gradint" -python /usr/share/gradint/gradint.py $@ -EOF -chmod +x /usr/bin/gradint - -For a distribution you might also have to write -man pages and tidy up the help text etc. - -Depends: python + a sound player (e.g. alsa-utils) -Recommends: python-tk python-tksnack sox libsox-fmt-all madplay diff --git a/Makefile b/Makefile index 9d79987..d110152 100644 --- a/Makefile +++ b/Makefile @@ -28,7 +28,7 @@ EData := $(shell for N in $(Extra_Data); do if [ -e $$N ]; then echo $$N; fi; do Common_Files=vocab.txt settings.txt advanced.txt samples $(EData) Most_Mac_Files=$(Common_Files) gradint.py Mac_Files=$(Most_Mac_Files) mac/start-gradint.app -Linux_Files=$(Common_Files) gradint.py INSTALL.txt +Linux_Files=$(Common_Files) gradint.py install.sh Riscos_Files=$(Common_Files) gradint.py CODE=src/lessonplan.py src/sequence.py src/loop.py src/booktime.py src/play.py src/synth.py src/makeevent.py src/filescan.py src/recording.py src/users.py @@ -207,6 +207,7 @@ gradint.dmg: gradint-installer.command gradint.bgz: $(Linux_Files) mkdir gradint cp -r $(Linux_Files) gradint + chmod +x gradint/install.sh tar -c gradint/ | bzip2 -9 > gradint.bgz rm -rf gradint diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..ec61bf2 --- /dev/null +++ b/install.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +# Installing Gradint on GNU/Linux systems +# --------------------------------------- + +# Gradint does not need to be installed, it can +# just run from the current directory. + +# If you do want to make a system-wide installation +# (for example if you want to make a package for a +# GNU/Linux distribution), I suggest running as root +# the commands below. + +# For a distribution you might also have to write +# man pages and tidy up the help text etc. + +# Depends: python + a sound player (e.g. alsa-utils) +# Recommends: python-tk python-tksnack sox libsox-fmt-all madplay + +# --------------------------------------- + +set -e +PREFIX=/usr/local # or /usr +if which python; then PYTHON=python; else PYTHON=python3; fi + +mkdir -p "$PREFIX/share/gradint" +mv gradint.py "$PREFIX/share/gradint/" +cd samples/utils +for F in *.py *.sh; do + DestFile="$PREFIX/bin/gradint-$(echo $F|sed -e 's/\..*//')" + mv "$F" "$DestFile" + chmod +x "$DestFile" +done +cd ../.. ; rm -rf samples/utils +tar -zcf "$PREFIX/share/gradint/new-user.tgz" \ + advanced.txt settings.txt vocab.txt samples + +cat > "$PREFIX/bin/gradint" <<'EOF' +#!/bin/bash +if ! [ -e "$HOME/gradint" ]; then + echo -n "Unpacking new user Gradint configuration... " + mkdir "$HOME/gradint" + cd "$HOME/gradint" +EOF +echo " tar -zxf \"$PREFIX/share/gradint/new-user.tgz\"" >> "$PREFIX/bin/gradint" +cat >> "$PREFIX/bin/gradint" <<'EOF' + echo "done." +fi +cd "$HOME/gradint" +EOF +echo "$PYTHON \"$PREFIX/share/gradint/gradint.py\" "'$@' >> "$PREFIX/bin/gradint" +chmod +x "$PREFIX/bin/gradint" + +mkdir -p "$PREFIX/share/applications" +cat > "$PREFIX/share/applications/gradint.desktop" <<EOF +[Desktop Entry] +Type=Application +Name=Gradint +Comment=Graduated-interval recall +Exec=$PREFIX/bin/gradint +Categories=Education;Languages +EOF + +echo; echo "Installation complete." +echo "To uninstall: sudo rm -rf \"$PREFIX/bin/gradint\" \"$PREFIX/share/gradint\"" -- GitLab