From 50eb826c0f3da5771f52c99e477feb43b362fcaf Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Thu, 13 Aug 2015 15:53:24 +0300 Subject: [PATCH] Add a chroot install hints file for linux This makes installing NetHack on a public server much easier. Required some minor changes to the unix top-level Makefile, and the other hints files; Makefile variable HACKDIR may not be a full path anymore, use INSTDIR instead. --- sys/unix/Makefile.top | 40 +++++++++++++++---------------- sys/unix/hints/linux | 4 +++- sys/unix/hints/linux-chroot | 48 +++++++++++++++++++++++++++++++++++++ sys/unix/hints/linux-x11 | 6 +++-- sys/unix/hints/macosx | 8 +++++-- sys/unix/hints/macosx10.10 | 14 ++++++++--- sys/unix/hints/macosx10.5 | 14 ++++++++--- sys/unix/hints/macosx10.7 | 14 ++++++++--- sys/unix/hints/unix | 2 ++ 9 files changed, 116 insertions(+), 34 deletions(-) create mode 100644 sys/unix/hints/linux-chroot diff --git a/sys/unix/Makefile.top b/sys/unix/Makefile.top index 61669e7f2..f5def29f2 100644 --- a/sys/unix/Makefile.top +++ b/sys/unix/Makefile.top @@ -40,7 +40,7 @@ DIRPERM = 0755 # (if there is, you'll have to do the installation by hand or modify the # instructions) #HACKDIR = $(PREFIX)/games/lib/$(GAME)dir -VARDIR = $(HACKDIR) +#VARDIR = $(HACKDIR) # Where nethack.sh in installed. If this is not defined, the wrapper is not used. #SHELLDIR = $(PREFIX)/games @@ -201,9 +201,9 @@ dofiles: -e '}' \ -e '$$s/.*/nodlb/p' < dat/options` ; \ $(MAKE) dofiles-$${target-nodlb} - (cd dat ; cp symbols $(HACKDIR) ) - cp src/$(GAME) $(HACKDIR) - cp util/recover $(HACKDIR) + (cd dat ; cp symbols $(INSTDIR) ) + cp src/$(GAME) $(INSTDIR) + cp util/recover $(INSTDIR) -if test -n '$(SHELLDIR)'; then rm -f $(SHELLDIR)/$(GAME); fi if test -n '$(SHELLDIR)'; then \ sed -e 's;/usr/games/lib/nethackdir;$(HACKDIR);' \ @@ -211,41 +211,41 @@ dofiles: < sys/unix/nethack.sh \ > $(SHELLDIR)/$(GAME) ; fi # set up their permissions - -( cd $(HACKDIR) ; $(CHOWN) $(GAMEUID) $(GAME) recover ; \ + -( cd $(INSTDIR) ; $(CHOWN) $(GAMEUID) $(GAME) recover ; \ $(CHGRP) $(GAMEGRP) $(GAME) recover ) - chmod $(GAMEPERM) $(HACKDIR)/$(GAME) - chmod $(EXEPERM) $(HACKDIR)/recover + chmod $(GAMEPERM) $(INSTDIR)/$(GAME) + chmod $(EXEPERM) $(INSTDIR)/recover -if test -n '$(SHELLDIR)'; then \ $(CHOWN) $(GAMEUID) $(SHELLDIR)/$(GAME); fi if test -n '$(SHELLDIR)'; then \ $(CHGRP) $(GAMEGRP) $(SHELLDIR)/$(GAME); \ chmod $(EXEPERM) $(SHELLDIR)/$(GAME); fi - -( cd $(HACKDIR) ; $(CHOWN) $(GAMEUID) symbols ; \ + -( cd $(INSTDIR) ; $(CHOWN) $(GAMEUID) symbols ; \ $(CHGRP) $(GAMEGRP) symbols ; \ chmod $(FILEPERM) symbols ) dofiles-dlb: check-dlb - ( cd dat ; cp nhdat $(DATNODLB) $(HACKDIR) ) + ( cd dat ; cp nhdat $(DATNODLB) $(INSTDIR) ) # set up their permissions - -( cd $(HACKDIR) ; $(CHOWN) $(GAMEUID) nhdat $(DATNODLB) ; \ + -( cd $(INSTDIR) ; $(CHOWN) $(GAMEUID) nhdat $(DATNODLB) ; \ $(CHGRP) $(GAMEGRP) nhdat $(DATNODLB) ; \ chmod $(FILEPERM) nhdat $(DATNODLB) ) dofiles-nodlb: # copy over the game files - ( cd dat ; cp $(DAT) $(HACKDIR) ) + ( cd dat ; cp $(DAT) $(INSTDIR) ) # set up their permissions - -( cd $(HACKDIR) ; $(CHOWN) $(GAMEUID) $(DAT) ; \ + -( cd $(INSTDIR) ; $(CHOWN) $(GAMEUID) $(DAT) ; \ $(CHGRP) $(GAMEGRP) $(DAT) ; \ chmod $(FILEPERM) $(DAT) ) update: $(GAME) recover $(VARDAT) dungeon spec_levs # (don't yank the old version out from under people who're playing it) - -mv $(HACKDIR)/$(GAME) $(HACKDIR)/$(GAME).old + -mv $(INSTDIR)/$(GAME) $(INSTDIR)/$(GAME).old # quest.dat is also kept open and has the same problems over NFS # (quest.dat may be inside nhdat if dlb is in use) - -mv $(HACKDIR)/quest.dat $(HACKDIR)/quest.dat.old - -mv $(HACKDIR)/nhdat $(HACKDIR)/nhdat.old + -mv $(INSTDIR)/quest.dat $(INSTDIR)/quest.dat.old + -mv $(INSTDIR)/nhdat $(INSTDIR)/nhdat.old # set up new versions of the game files ( $(MAKE) dofiles ) # touch time-sensitive files @@ -264,13 +264,13 @@ install: rootcheck $(GAME) recover $(VARDAT) dungeon spec_levs # not all mkdirs have -p; those that don't will create a -p directory -if test -n '$(SHELLDIR)'; then \ mkdir -p $(SHELLDIR); fi - rm -rf $(HACKDIR) $(VARDIR) - -mkdir -p $(HACKDIR) $(VARDIR) $(VARDIR)/save + rm -rf $(INSTDIR) $(VARDIR) + -mkdir -p $(INSTDIR) $(VARDIR) $(VARDIR)/save if test -d ./-p; then rmdir ./-p; fi - -$(CHOWN) $(GAMEUID) $(HACKDIR) $(VARDIR) $(VARDIR)/save - $(CHGRP) $(GAMEGRP) $(HACKDIR) $(VARDIR) $(VARDIR)/save + -$(CHOWN) $(GAMEUID) $(INSTDIR) $(VARDIR) $(VARDIR)/save + $(CHGRP) $(GAMEGRP) $(INSTDIR) $(VARDIR) $(VARDIR)/save # order counts here: - chmod $(DIRPERM) $(HACKDIR) + chmod $(DIRPERM) $(INSTDIR) chmod $(VARDIRPERM) $(VARDIR) $(VARDIR)/save # set up the game files ( $(MAKE) dofiles ) diff --git a/sys/unix/hints/linux b/sys/unix/hints/linux index 8e50aefc2..a9b612edb 100644 --- a/sys/unix/hints/linux +++ b/sys/unix/hints/linux @@ -13,10 +13,12 @@ PREFIX=$(wildcard ~)/nh/install HACKDIR=$(PREFIX)/games/lib/$(GAME)dir SHELLDIR = $(PREFIX)/games +INSTDIR=$(HACKDIR) +VARDIR = $(HACKDIR) -POSTINSTALL=cp -n sys/unix/sysconf $(HACKDIR)/sysconf; $(CHOWN) $(GAMEUID) $(HACKDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(HACKDIR)/sysconf; chmod $(VARFILEPERM) $(HACKDIR)/sysconf; +POSTINSTALL=cp -n sys/unix/sysconf $(INSTDIR)/sysconf; $(CHOWN) $(GAMEUID) $(INSTDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(INSTDIR)/sysconf; chmod $(VARFILEPERM) $(INSTDIR)/sysconf; CFLAGS=-g -O -I../include -DNOTPARMDECL $(CFLAGS1) -DDLB CFLAGS1=-DCOMPRESS=\"/bin/gzip\" -DCOMPRESS_EXTENSION=\".gz\" diff --git a/sys/unix/hints/linux-chroot b/sys/unix/hints/linux-chroot new file mode 100644 index 000000000..d8af97580 --- /dev/null +++ b/sys/unix/hints/linux-chroot @@ -0,0 +1,48 @@ +# +# NetHack 3.5 linux $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ +# NetHack 3.5 linux $Date: 2010/01/15 19:54:37 $ $Revision: 1.8 $ +# Copyright (c) Kenneth Lorber, Kensington, Maryland, 2007. +# NetHack may be freely redistributed. See license for details. +# +#-PRE +# Linux hints file +# This hints file provides a chrooted build for Linux, specifically +# for Ubuntu dapper. +# Does not copy required libraries or termcap files into the chroot. + +COMPILEREVISION?=1 + +# this is the chroot dir +PREFIX=$(wildcard ~)/nh/install + +# this is the dir where NetHack is inside the chroot +HACKDIR=/nh.$(shell date +%Y%m%d)-$(COMPILEREVISION) +INSTDIR=$(PREFIX)$(HACKDIR) +SHELLDIR=$(PREFIX)/games +VARDIR=$(INSTDIR)/var + + +POSTINSTALL=cp -n sys/unix/sysconf $(INSTDIR)/sysconf; $(CHOWN) $(GAMEUID) $(INSTDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(INSTDIR)/sysconf; chmod $(VARFILEPERM) $(INSTDIR)/sysconf; + +CFLAGS1=-DCOMPRESS=\"/bin/gzip\" -DCOMPRESS_EXTENSION=\".gz\" +CFLAGS=-g -O -I../include -DNOTPARMDECL $(CFLAGS1) -DDLB +CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE +CFLAGS+=-DHACKDIR=\"$(HACKDIR)\" +CFLAGS+=-DVAR_PLAYGROUND=\"$(HACKDIR)/var\" + +LINK=$(CC) +# Only needed for GLIBC stack trace: +LFLAGS=-rdynamic + +WINSRC = $(WINTTYSRC) +WINOBJ = $(WINTTYOBJ) +WINLIB = $(WINTTYLIB) + +WINTTYLIB=-lcurses + +CHOWN=true +CHGRP=true + +VARDIRPERM = 0755 +VARFILEPERM = 0600 +GAMEPERM = 0755 diff --git a/sys/unix/hints/linux-x11 b/sys/unix/hints/linux-x11 index 4a18a8bd1..0728234aa 100644 --- a/sys/unix/hints/linux-x11 +++ b/sys/unix/hints/linux-x11 @@ -13,10 +13,12 @@ PREFIX=$(wildcard ~)/nh/install HACKDIR=$(PREFIX)/games/lib/$(GAME)dir SHELLDIR = $(PREFIX)/games +INSTDIR=$(HACKDIR) +VARDIR = $(HACKDIR) -POSTINSTALL= cp -n sys/unix/sysconf $(HACKDIR)/sysconf; $(CHOWN) $(GAMEUID) $(HACKDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(HACKDIR)/sysconf; chmod $(VARFILEPERM) $(HACKDIR)/sysconf; -POSTINSTALL+= bdftopcf win/X11/nh10.bdf > $(HACKDIR)/nh10.pcf; (cd $(HACKDIR); mkfontdir); +POSTINSTALL= cp -n sys/unix/sysconf $(INSTDIR)/sysconf; $(CHOWN) $(GAMEUID) $(INSTDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(INSTDIR)/sysconf; chmod $(VARFILEPERM) $(INSTDIR)/sysconf; +POSTINSTALL+= bdftopcf win/X11/nh10.bdf > $(INSTDIR)/nh10.pcf; (cd $(INSTDIR); mkfontdir); CFLAGS=-O -I../include -DNOTPARMDECL $(CFLAGS1) $(CFLAGS3) CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" diff --git a/sys/unix/hints/macosx b/sys/unix/hints/macosx index b5e159709..cb5a1643f 100644 --- a/sys/unix/hints/macosx +++ b/sys/unix/hints/macosx @@ -72,7 +72,7 @@ WINOBJ += $(WINX11OBJ) WINLIB += $(WINX11LIB) LFLAGS=-L/usr/X11R6/lib VARDATND = x11tiles NetHack.ad pet_mark.xbm -POSTINSTALL= bdftopcf win/X11/nh10.bdf > $(HACKDIR)/nh10.pcf; (cd $(HACKDIR); mkfontdir) +POSTINSTALL= bdftopcf win/X11/nh10.bdf > $(INSTDIR)/nh10.pcf; (cd $(INSTDIR); mkfontdir) CFLAGS += -DX11_GRAPHICS endif @@ -107,6 +107,8 @@ ifdef WANT_SHARE_INSTALL PREFIX:=/Users/$(GAMEUID) SHELLDIR=$(PREFIX)/bin HACKDIR=$(PREFIX)/nethackdir +INSTDIR=$(HACKDIR) +VARDIR=$(HACKDIR) CHOWN=chown CHGRP=chgrp # We run sgid so the game has access to both HACKDIR and user preferences. @@ -116,12 +118,14 @@ VARDIRPERM = 0775 ROOTCHECK= [[ `id -u` == 0 ]] || ( echo "Must run install with sudo."; exit 1) # make sure we have group GAMEUID and group GAMEGRP PREINSTALL= . sys/unix/hints/macosx.sh user $(GAMEUID); . sys/unix/hints/macosx.sh group $(GAMEGRP); mkdir $(SHELLDIR); chown $(GAMEUID) $(SHELLDIR) -POSTINSTALL= touch $(HACKDIR)/sysconf; $(CHOWN) $(GAMEUID) $(HACKDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(HACKDIR)/sysconf; chmod $(VARFILEPERM) $(HACKDIR)/sysconf +POSTINSTALL= touch $(INSTDIR)/sysconf; $(CHOWN) $(GAMEUID) $(INSTDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(INSTDIR)/sysconf; chmod $(VARFILEPERM) $(INSTDIR)/sysconf CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE else PREFIX:=$(wildcard ~) SHELLDIR=$(PREFIX)/bin HACKDIR=$(PREFIX)/nethackdir +INSTDIR=$(HACKDIR) +VARDIR=$(HACKDIR) CHOWN=true CHGRP=true GAMEPERM = 0700 diff --git a/sys/unix/hints/macosx10.10 b/sys/unix/hints/macosx10.10 index ccc166e05..4c2485cfc 100644 --- a/sys/unix/hints/macosx10.10 +++ b/sys/unix/hints/macosx10.10 @@ -99,7 +99,7 @@ WINOBJ += $(WINX11OBJ) WINLIB += $(WINX11LIB) LFLAGS=-L/usr/X11R6/lib VARDATND = x11tiles NetHack.ad pet_mark.xbm -POSTINSTALL+= bdftopcf win/X11/nh10.bdf > $(HACKDIR)/nh10.pcf; (cd $(HACKDIR); mkfontdir); +POSTINSTALL+= bdftopcf win/X11/nh10.bdf > $(INSTDIR)/nh10.pcf; (cd $(INSTDIR); mkfontdir); CFLAGS += -DX11_GRAPHICS -I/usr/X11R6/include endif # WANT_WIN_X11 @@ -137,6 +137,8 @@ ifeq ($(GAMEUID),root) PREFIX:=/Library/NetHack SHELLDIR=/usr/local/bin HACKDIR=$(PREFIX)/nethackdir +INSTDIR=$(HACKDIR) +VARDIR=$(HACKDIR) CHOWN=chown CHGRP=chgrp # We run sgid so the game has access to both HACKDIR and user preferences. @@ -145,6 +147,8 @@ else # ! root PREFIX:=/Users/$(GAMEUID) SHELLDIR=$(PREFIX)/bin HACKDIR=$(PREFIX)/nethackdir +INSTDIR=$(HACKDIR) +VARDIR=$(HACKDIR) CHOWN=/usr/bin/true CHGRP=/usr/bin/true GAMEPERM = 0500 @@ -155,13 +159,15 @@ ROOTCHECK= [[ `id -u` == 0 ]] || ( echo "Must run install with sudo."; exit 1) # XXX it's nice we don't write over sysconf, but we've already erased it # make sure we have group GAMEUID and group GAMEGRP PREINSTALL= . sys/unix/hints/macosx.sh user2 $(GAMEUID); . sys/unix/hints/macosx.sh group2 $(GAMEGRP); mkdir $(SHELLDIR); chown $(GAMEUID) $(SHELLDIR) -POSTINSTALL+= cp -n sys/unix/sysconf $(HACKDIR)/sysconf; $(CHOWN) $(GAMEUID) $(HACKDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(HACKDIR)/sysconf; chmod $(VARFILEPERM) $(HACKDIR)/sysconf; +POSTINSTALL+= cp -n sys/unix/sysconf $(INSTDIR)/sysconf; $(CHOWN) $(GAMEUID) $(INSTDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(INSTDIR)/sysconf; chmod $(VARFILEPERM) $(INSTDIR)/sysconf; CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE else ifdef WANT_SOURCE_INSTALL PREFIX=$(abspath $(NHSROOT)) # suppress nethack.sh #SHELLDIR= HACKDIR=$(PREFIX)/playground +INSTDIR=$(HACKDIR) +VARDIR=$(HACKDIR) CHOWN=/usr/bin/true CHGRP=/usr/bin/true GAMEPERM = 0700 @@ -174,6 +180,8 @@ else # !WANT_SOURCE_INSTALL PREFIX:=$(wildcard ~) SHELLDIR=$(PREFIX)/bin HACKDIR=$(PREFIX)/nethackdir +INSTDIR=$(HACKDIR) +VARDIR=$(HACKDIR) CHOWN=/usr/bin/true CHGRP=/usr/bin/true GAMEPERM = 0700 @@ -183,7 +191,7 @@ ifdef WANT_WIN_X11 # install nethack.rc as ~/.nethackrc if no ~/.nethackrc exists PREINSTALL= cp -n win/X11/nethack.rc ~/.nethackrc endif # WANT_WIN_X11 -POSTINSTALL+= cp -n sys/unix/sysconf $(HACKDIR)/sysconf; $(CHOWN) $(GAMEUID) $(HACKDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(HACKDIR)/sysconf; chmod $(VARFILEPERM) $(HACKDIR)/sysconf; +POSTINSTALL+= cp -n sys/unix/sysconf $(INSTDIR)/sysconf; $(CHOWN) $(GAMEUID) $(INSTDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(INSTDIR)/sysconf; chmod $(VARFILEPERM) $(INSTDIR)/sysconf; CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE endif # !WANT_SOURCE_INSTALL diff --git a/sys/unix/hints/macosx10.5 b/sys/unix/hints/macosx10.5 index 5c112688f..df9a84980 100644 --- a/sys/unix/hints/macosx10.5 +++ b/sys/unix/hints/macosx10.5 @@ -81,7 +81,7 @@ WINOBJ += $(WINX11OBJ) WINLIB += $(WINX11LIB) LFLAGS=-L/usr/X11R6/lib VARDATND = x11tiles NetHack.ad pet_mark.xbm -POSTINSTALL+= bdftopcf win/X11/nh10.bdf > $(HACKDIR)/nh10.pcf; (cd $(HACKDIR); mkfontdir); +POSTINSTALL+= bdftopcf win/X11/nh10.bdf > $(INSTDIR)/nh10.pcf; (cd $(INSTDIR); mkfontdir); CFLAGS += -DX11_GRAPHICS endif # WANT_WIN_X11 @@ -119,6 +119,8 @@ ifeq ($(GAMEUID),root) PREFIX:=/Library/NetHack SHELLDIR=/usr/local/bin HACKDIR=$(PREFIX)/nethackdir +INSTDIR=$(HACKDIR) +VARDIR=$(HACKDIR) CHOWN=chown CHGRP=chgrp # We run sgid so the game has access to both HACKDIR and user preferences. @@ -127,6 +129,8 @@ else # ! root PREFIX:=/Users/$(GAMEUID) SHELLDIR=$(PREFIX)/bin HACKDIR=$(PREFIX)/nethackdir +INSTDIR=$(HACKDIR) +VARDIR=$(HACKDIR) CHOWN=touch CHGRP=touch GAMEPERM = 0500 @@ -137,13 +141,15 @@ ROOTCHECK= [[ `id -u` == 0 ]] || ( echo "Must run install with sudo."; exit 1) # XXX it's nice we don't write over sysconf, but we've already erased it # make sure we have group GAMEUID and group GAMEGRP PREINSTALL= . sys/unix/hints/macosx.sh user2 $(GAMEUID); . sys/unix/hints/macosx.sh group2 $(GAMEGRP); mkdir $(SHELLDIR); chown $(GAMEUID) $(SHELLDIR) -POSTINSTALL+= cp -n sys/unix/sysconf $(HACKDIR)/sysconf; $(CHOWN) $(GAMEUID) $(HACKDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(HACKDIR)/sysconf; chmod $(VARFILEPERM) $(HACKDIR)/sysconf; +POSTINSTALL+= cp -n sys/unix/sysconf $(INSTDIR)/sysconf; $(CHOWN) $(GAMEUID) $(INSTDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(INSTDIR)/sysconf; chmod $(VARFILEPERM) $(INSTDIR)/sysconf; CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE else ifdef WANT_SOURCE_INSTALL PREFIX=$(abspath $(NHSROOT)) # suppress nethack.sh" #SHELLDIR= HACKDIR=$(PREFIX)/playground +INSTDIR=$(HACKDIR) +VARDIR=$(HACKDIR) CHOWN=touch CHGRP=touch GAMEPERM = 0700 @@ -155,6 +161,8 @@ else # !WANT_SOURCE_INSTALL PREFIX:=$(wildcard ~) SHELLDIR=$(PREFIX)/bin HACKDIR=$(PREFIX)/nethackdir +INSTDIR=$(HACKDIR) +VARDIR=$(HACKDIR) CHOWN=true CHGRP=true GAMEPERM = 0700 @@ -164,7 +172,7 @@ ifdef WANT_WIN_X11 # install nethack.rc as ~/.nethackrc if no ~/.nethackrc exists PREINSTALL= cp -n win/X11/nethack.rc ~/.nethackrc endif # WANT_WIN_X11 -POSTINSTALL+= cp -n sys/unix/sysconf $(HACKDIR)/sysconf; $(CHOWN) $(GAMEUID) $(HACKDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(HACKDIR)/sysconf; chmod $(VARFILEPERM) $(HACKDIR)/sysconf; +POSTINSTALL+= cp -n sys/unix/sysconf $(INSTDIR)/sysconf; $(CHOWN) $(GAMEUID) $(INSTDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(INSTDIR)/sysconf; chmod $(VARFILEPERM) $(INSTDIR)/sysconf; CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE endif # !WANT_SOURCE_INSTALL diff --git a/sys/unix/hints/macosx10.7 b/sys/unix/hints/macosx10.7 index 363d11556..7126eef1e 100644 --- a/sys/unix/hints/macosx10.7 +++ b/sys/unix/hints/macosx10.7 @@ -98,7 +98,7 @@ WINOBJ += $(WINX11OBJ) WINLIB += $(WINX11LIB) LFLAGS=-L/usr/X11R6/lib VARDATND = x11tiles NetHack.ad pet_mark.xbm -POSTINSTALL+= bdftopcf win/X11/nh10.bdf > $(HACKDIR)/nh10.pcf; (cd $(HACKDIR); mkfontdir); +POSTINSTALL+= bdftopcf win/X11/nh10.bdf > $(INSTDIR)/nh10.pcf; (cd $(INSTDIR); mkfontdir); CFLAGS += -DX11_GRAPHICS endif # WANT_WIN_X11 @@ -136,6 +136,8 @@ ifeq ($(GAMEUID),root) PREFIX:=/Library/NetHack SHELLDIR=/usr/local/bin HACKDIR=$(PREFIX)/nethackdir +INSTDIR=$(HACKDIR) +VARDIR=$(HACKDIR) CHOWN=chown CHGRP=chgrp # We run sgid so the game has access to both HACKDIR and user preferences. @@ -144,6 +146,8 @@ else # ! root PREFIX:=/Users/$(GAMEUID) SHELLDIR=$(PREFIX)/bin HACKDIR=$(PREFIX)/nethackdir +INSTDIR=$(HACKDIR) +VARDIR=$(HACKDIR) CHOWN=/usr/bin/true CHGRP=/usr/bin/true GAMEPERM = 0500 @@ -154,13 +158,15 @@ ROOTCHECK= [[ `id -u` == 0 ]] || ( echo "Must run install with sudo."; exit 1) # XXX it's nice we don't write over sysconf, but we've already erased it # make sure we have group GAMEUID and group GAMEGRP PREINSTALL= . sys/unix/hints/macosx.sh user2 $(GAMEUID); . sys/unix/hints/macosx.sh group2 $(GAMEGRP); mkdir $(SHELLDIR); chown $(GAMEUID) $(SHELLDIR) -POSTINSTALL+= cp -n sys/unix/sysconf $(HACKDIR)/sysconf; $(CHOWN) $(GAMEUID) $(HACKDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(HACKDIR)/sysconf; chmod $(VARFILEPERM) $(HACKDIR)/sysconf; +POSTINSTALL+= cp -n sys/unix/sysconf $(INSTDIR)/sysconf; $(CHOWN) $(GAMEUID) $(INSTDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(INSTDIR)/sysconf; chmod $(VARFILEPERM) $(INSTDIR)/sysconf; CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE else ifdef WANT_SOURCE_INSTALL PREFIX=$(abspath $(NHSROOT)) # suppress nethack.sh #SHELLDIR= HACKDIR=$(PREFIX)/playground +INSTDIR=$(HACKDIR) +VARDIR=$(HACKDIR) CHOWN=/usr/bin/true CHGRP=/usr/bin/true GAMEPERM = 0700 @@ -173,6 +179,8 @@ else # !WANT_SOURCE_INSTALL PREFIX:=$(wildcard ~) SHELLDIR=$(PREFIX)/bin HACKDIR=$(PREFIX)/nethackdir +INSTDIR=$(HACKDIR) +VARDIR=$(HACKDIR) CHOWN=/usr/bin/true CHGRP=/usr/bin/true GAMEPERM = 0700 @@ -182,7 +190,7 @@ ifdef WANT_WIN_X11 # install nethack.rc as ~/.nethackrc if no ~/.nethackrc exists PREINSTALL= cp -n win/X11/nethack.rc ~/.nethackrc endif # WANT_WIN_X11 -POSTINSTALL+= cp -n sys/unix/sysconf $(HACKDIR)/sysconf; $(CHOWN) $(GAMEUID) $(HACKDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(HACKDIR)/sysconf; chmod $(VARFILEPERM) $(HACKDIR)/sysconf; +POSTINSTALL+= cp -n sys/unix/sysconf $(INSTDIR)/sysconf; $(CHOWN) $(GAMEUID) $(INSTDIR)/sysconf; $(CHGRP) $(GAMEGRP) $(INSTDIR)/sysconf; chmod $(VARFILEPERM) $(INSTDIR)/sysconf; CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE endif # !WANT_SOURCE_INSTALL diff --git a/sys/unix/hints/unix b/sys/unix/hints/unix index b1e8afa3a..bd2ef8684 100644 --- a/sys/unix/hints/unix +++ b/sys/unix/hints/unix @@ -12,6 +12,8 @@ PREFIX=/usr HACKDIR=$(PREFIX)/games/lib/$(GAME)dir +INSTDIR=$(HACKDIR) +VARDIR=$(HACKDIR) SHELLDIR=$(PREFIX)/games CFLAGS=-O -I../include