me
/
guix
Archived
1
0
Fork 0
This repository has been archived on 2024-08-07. You can view files and clone it, but cannot push or open issues/pull-requests.
guix/gnu/packages/patches/bsd-games-add-wrapper.patch

252 lines
10 KiB
Diff
Raw Normal View History

As we cannot install outside the Store, and those games do not create the
needed writable files on their own, we need a wrapper script.
diff -Naur bsd-games-2.17/atc/Makefrag bsd-games-patch/atc/Makefrag
--- bsd-games-2.17/atc/Makefrag 1970-01-01 07:00:00.000000000 +0700
+++ bsd-games-patch/atc/Makefrag 2020-04-23 20:24:04.446176222 +0700
@@ -47,7 +47,8 @@
mv atc/lex.yy.c $@
atc_install: atc_all
- $(INSTALL_SCORE_GAME) atc/atc $(INSTALL_PREFIX)$(GAMESDIR)/atc
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/atc
+ $(INSTALL_SCORE_GAME) atc/atc $(INSTALL_PREFIX)$(GAMESDIR)/.atc-real
$(HIDE_GAME) atc
$(INSTALL_SCORE_FILE) $(ATC_SCOREFILE)
$(INSTALL_MANUAL) atc/atc.6
diff -Naur bsd-games-2.17/battlestar/Makefrag bsd-games-patch/battlestar/Makefrag
--- bsd-games-2.17/battlestar/Makefrag 1970-01-01 07:00:00.000000000 +0700
+++ bsd-games-patch/battlestar/Makefrag 2020-04-23 20:24:04.482175771 +0700
@@ -32,7 +32,8 @@
battlestar_all: battlestar/battlestar battlestar/battlestar.6
battlestar_install: battlestar_all
- $(INSTALL_SCORE_GAME) battlestar/battlestar $(INSTALL_PREFIX)$(GAMESDIR)/battlestar
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/battlestar
+ $(INSTALL_SCORE_GAME) battlestar/battlestar $(INSTALL_PREFIX)$(GAMESDIR)/.battlestar-real
$(HIDE_GAME) battlestar
$(INSTALL_MANUAL) battlestar/battlestar.6
$(INSTALL_SCORE_FILE) $(BATTLESTAR_SCOREFILE)
diff -Naur bsd-games-2.17/canfield/canfield/Makefrag bsd-games-patch/canfield/canfield/Makefrag
--- bsd-games-2.17/canfield/canfield/Makefrag 1970-01-01 07:00:00.000000000 +0700
+++ bsd-games-patch/canfield/canfield/Makefrag 2020-04-23 20:24:04.522175270 +0700
@@ -31,7 +31,8 @@
canfield_canfield_all: canfield/canfield/canfield canfield/canfield/canfield.6
canfield_canfield_install: canfield_canfield_all
- $(INSTALL_SCORE_GAME) canfield/canfield/canfield $(INSTALL_PREFIX)$(GAMESDIR)/canfield
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/canfield
+ $(INSTALL_SCORE_GAME) canfield/canfield/canfield $(INSTALL_PREFIX)$(GAMESDIR)/.canfield-real
$(HIDE_GAME) canfield
$(INSTALL_MANUAL) canfield/canfield/canfield.6
$(INSTALL_SCORE_FILE) $(CANFIELD_SCOREFILE)
diff -ur bsd-games-2.17.orig/canfield/cfscores/Makefrag bsd-games-2.17/canfield/cfscores/Makefrag
--- bsd-games-2.17.orig/canfield/cfscores/Makefrag 1970-01-01 07:00:01.000000000 +0700
+++ bsd-games-2.17/canfield/cfscores/Makefrag 2020-08-06 12:20:10.592076477 +0700
@@ -32,6 +32,7 @@
canfield_cfscores_all: canfield/cfscores/cfscores
canfield_cfscores_install: canfield_cfscores_all
- $(INSTALL_BINARY) canfield/cfscores/cfscores $(INSTALL_PREFIX)$(GAMESDIR)/cfscores
+ $(INSTALL_BINARY) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/cfscores
+ $(INSTALL_BINARY) canfield/cfscores/cfscores $(INSTALL_PREFIX)$(GAMESDIR)/.cfscores-real
$(HIDE_GAME) cfscores
$(INSTALL_MANUAL) canfield.6 cfscores.6
diff -Naur bsd-games-2.17/cribbage/Makefrag bsd-games-patch/cribbage/Makefrag
--- bsd-games-2.17/cribbage/Makefrag 1970-01-01 07:00:00.000000000 +0700
+++ bsd-games-patch/cribbage/Makefrag 2020-04-23 20:24:04.534175120 +0700
@@ -31,7 +31,8 @@
cribbage_all: cribbage/cribbage cribbage/cribbage.n cribbage/cribbage.6
cribbage_install: cribbage_all
- $(INSTALL_SCORE_GAME) cribbage/cribbage $(INSTALL_PREFIX)$(GAMESDIR)/cribbage
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/cribbage
+ $(INSTALL_SCORE_GAME) cribbage/cribbage $(INSTALL_PREFIX)$(GAMESDIR)/.cribbage-real
$(HIDE_GAME) cribbage
$(INSTALL_DATA) cribbage/cribbage.n $(INSTALL_PREFIX)$(CRIBBAGE_INSTRFILE)
$(INSTALL_SCORE_FILE) $(CRIBBAGE_SCOREFILE)
diff -Naur bsd-games-2.17/hack/Makefrag bsd-games-patch/hack/Makefrag
--- bsd-games-2.17/hack/Makefrag 1970-01-01 07:00:00.000000000 +0700
+++ bsd-games-patch/hack/Makefrag 2020-04-23 20:24:04.590174419 +0700
@@ -53,7 +53,8 @@
hack/hack.zap.d hack/rnd.d: hack/hack.onames.h
hack_install: hack_all
- $(INSTALL_SCORE_GAME) hack/hack $(INSTALL_PREFIX)$(GAMESDIR)/hack
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/hack
+ $(INSTALL_SCORE_GAME) hack/hack $(INSTALL_PREFIX)$(GAMESDIR)/.hack-real
$(HIDE_GAME) hack
$(INSTALL_HACK_DIR) $(INSTALL_PREFIX)$(HACK_DIR)
set -e; for f in data help hh rumors; do $(INSTALL_DATA) hack/$$f $(INSTALL_PREFIX)$(HACK_DIR)/$$f; done
diff -Naur bsd-games-2.17/phantasia/Makefrag bsd-games-patch/phantasia/Makefrag
--- bsd-games-2.17/phantasia/Makefrag 1970-01-01 07:00:00.000000000 +0700
+++ bsd-games-patch/phantasia/Makefrag 2020-04-23 20:24:04.650173667 +0700
@@ -38,7 +38,8 @@
touch phantasia/scorefiles.stamp
phantasia_install: phantasia_all
- $(INSTALL_SCORE_GAME) phantasia/phantasia $(INSTALL_PREFIX)$(GAMESDIR)/phantasia
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/phantasia
+ $(INSTALL_SCORE_GAME) phantasia/phantasia $(INSTALL_PREFIX)$(GAMESDIR)/.phantasia-real
$(HIDE_GAME) phantasia
(set -e; for f in $(phantasia_VFILES1); do \
cp phantasia/$$f $(INSTALL_PREFIX)$(PHANTASIA_DIR)/$$f; \
diff -Naur bsd-games-2.17/robots/Makefrag bsd-games-patch/robots/Makefrag
--- bsd-games-2.17/robots/Makefrag 1970-01-01 07:00:00.000000000 +0700
+++ bsd-games-patch/robots/Makefrag 2020-04-23 20:24:04.702173016 +0700
@@ -32,7 +32,8 @@
robots_all: robots/robots robots/robots.6
robots_install: robots_all
- $(INSTALL_SCORE_GAME) robots/robots $(INSTALL_PREFIX)$(GAMESDIR)/robots
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/robots
+ $(INSTALL_SCORE_GAME) robots/robots $(INSTALL_PREFIX)$(GAMESDIR)/.robots-real
$(HIDE_GAME) robots
$(INSTALL_SCORE_FILE) $(ROBOTS_SCOREFILE)
$(INSTALL_MANUAL) robots/robots.6
diff -Naur bsd-games-2.17/sail/Makefrag bsd-games-patch/sail/Makefrag
--- bsd-games-2.17/sail/Makefrag 1970-01-01 07:00:00.000000000 +0700
+++ bsd-games-patch/sail/Makefrag 2020-04-23 20:24:04.710172917 +0700
@@ -31,7 +31,8 @@
sail_all: sail/sail sail/sail.6
sail_install: sail_all
- $(INSTALL_SCORE_GAME) sail/sail $(INSTALL_PREFIX)$(GAMESDIR)/sail
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/sail
+ $(INSTALL_SCORE_GAME) sail/sail $(INSTALL_PREFIX)$(GAMESDIR)/.sail-real
$(HIDE_GAME) sail
$(INSTALL_SCORE_FILE) $(SAIL_SCOREFILE)
$(INSTALL_SAIL_DIR) $(INSTALL_PREFIX)$(SAIL_DIR)
diff -Naur bsd-games-2.17/snake/snake/Makefrag bsd-games-patch/snake/snake/Makefrag
--- bsd-games-2.17/snake/snake/Makefrag 1970-01-01 07:00:00.000000000 +0700
+++ bsd-games-patch/snake/snake/Makefrag 2020-04-23 20:24:04.722172766 +0700
@@ -31,7 +31,8 @@
snake_snake_all: snake/snake/snake snake/snake/snake.6
snake_snake_install: snake_snake_all
- $(INSTALL_SCORE_GAME) snake/snake/snake $(INSTALL_PREFIX)$(GAMESDIR)/snake
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/snake
+ $(INSTALL_SCORE_GAME) snake/snake/snake $(INSTALL_PREFIX)$(GAMESDIR)/.snake-real
$(HIDE_GAME) snake
$(INSTALL_SCORE_FILE) $(SNAKE_SCOREFILE)
$(INSTALL_SCORE_FILE) $(SNAKE_RAWSCOREFILE)
--- bsd-games-2.17.orig/snake/snscore/Makefrag 1970-01-01 07:00:01.000000000 +0700
+++ bsd-games-2.17/snake/snscore/Makefrag 2020-08-06 12:33:09.636089394 +0700
@@ -32,6 +32,7 @@
snake_snscore_all: snake/snscore/snscore
snake_snscore_install: snake_snscore_all
- $(INSTALL_BINARY) snake/snscore/snscore $(INSTALL_PREFIX)$(GAMESDIR)/snscore
+ $(INSTALL_BINARY) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/snscore
+ $(INSTALL_BINARY) snake/snscore/snscore $(INSTALL_PREFIX)$(GAMESDIR)/.snscore-real
$(HIDE_GAME) snscore
$(INSTALL_MANUAL) snake.6 snscore.6
diff -Naur bsd-games-2.17/tetris/Makefrag bsd-games-patch/tetris/Makefrag
--- bsd-games-2.17/tetris/Makefrag 1970-01-01 07:00:00.000000000 +0700
+++ bsd-games-patch/tetris/Makefrag 2020-04-23 20:24:04.734172616 +0700
@@ -32,7 +32,8 @@
tetris_all: tetris/tetris tetris/tetris.6
tetris_install: tetris_all
- $(INSTALL_SCORE_GAME) tetris/tetris $(INSTALL_PREFIX)$(GAMESDIR)/tetris-bsd
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/tetris-bsd
+ $(INSTALL_SCORE_GAME) tetris/tetris $(INSTALL_PREFIX)$(GAMESDIR)/.tetris-bsd-real
$(HIDE_GAME) tetris-bsd
$(INSTALL_SCORE_FILE) $(TETRIS_SCOREFILE)
ln -f tetris/tetris.6 tetris/tetris-bsd.6
diff -Naur bsd-games-2.17/wrapper bsd-games-patch/wrapper
--- bsd-games-2.17/wrapper 1970-01-01 07:00:00.000000000 +0700
+++ bsd-games-patch/wrapper 2020-04-23 20:24:37.153766719 +0700
@@ -0,0 +1,91 @@
+#!/bin/sh
+# This file works around limitations of our read-only Store.
+
+set -e
+
+check_empty_files () {
+ # those start empty
+ for f in ${@}
+ do
+ if [[ ! -f ${f} ]]
+ then
+ touch ${f}
+ echo "$(pwd)/${f} RESTORED"
+ fi
+ done
+}
+check_data_files () {
+ # those start with some initial data
+ for f in ${@}
+ do
+ if [[ ! -f ${f} ]]
+ then
+ cp STATIC_DATA/${game}/${f} ${f}
+ chmod u+w ${f}
+ echo "$(pwd)/${f} RESTORED"
+ fi
+ done
+}
+visit_dir () {
+ mkdir -p ${1}
+ cd ${1}
+}
+exit_with_variable_error () {
+ variables="${1}${2:+ or ${2}}"
+ echo "Guix: Please set up the ${variables} variable."
+ echo "Examples:"
+ echo " export ${1}=/var/multiplayer"
+ echo " export ${2:-${1}}=~/.local/share/bsd-games"
+ echo "You can place this in ~/.bashrc or a similar file for Your shell."
+ echo "For multiplayer this directory should be writable for all players."
+ exit 1
+}
+
+game=$(basename $0)
+if [[ ${game} == "hack" ]]
+then
+ if [[ -n ${HACKDIR} ]]; then visit_dir "${HACKDIR}"
+ elif [[ -n ${BSD_GAMES_DIR} ]]; then visit_dir "${BSD_GAMES_DIR}/hack"
+ else exit_with_variable_error "HACKDIR" "BSD_GAMES_DIR"
+ fi
+else
+ if [[ -n ${BSD_GAMES_DIR} ]]; then visit_dir "${BSD_GAMES_DIR}"
+ else exit_with_variable_error "BSD_GAMES_DIR"
+ fi
+fi
+
+case ${game} in
+ ### Games with score-files
+ atc)
+ check_empty_files "atc_score";;
+ battlestar)
+ check_empty_files "battlestar.log";;
+ canfield)
+ check_empty_files "cfscores";;
+ cribbage)
+ check_empty_files "criblog";;
+ robots)
+ check_empty_files "robots_roll";;
+ snake)
+ check_empty_files "snakerawscores" "snake.log";;
+ tetris)
+ check_empty_files "tetris-bsd.scores";;
+ ### Games with saved state
+ hack)
+ check_empty_files "record" "perm"
+ check_data_files "data" "help" "hh" "rumors"
+ visit_dir "save"
+ cd ../../;;
+ phantasia)
+ visit_dir "phantasia"
+ check_empty_files "characs" "gold" "lastdead"\
+ "mess" "motd" "scoreboard" "void"
+ check_data_files "monsters"
+ cd ../;;
+ sail)
+ visit_dir "sail"
+ check_empty_files "log" "syncfile"
+ cd ../;;
+esac
+
+exec .${game}-real ${@}