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.
This commit is contained in:
Pasi Kallinen
2015-08-13 15:53:24 +03:00
parent 71d0e83e97
commit 50eb826c0f
9 changed files with 116 additions and 34 deletions

View File

@@ -40,7 +40,7 @@ DIRPERM = 0755
# (if there is, you'll have to do the installation by hand or modify the # (if there is, you'll have to do the installation by hand or modify the
# instructions) # instructions)
#HACKDIR = $(PREFIX)/games/lib/$(GAME)dir #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. # Where nethack.sh in installed. If this is not defined, the wrapper is not used.
#SHELLDIR = $(PREFIX)/games #SHELLDIR = $(PREFIX)/games
@@ -201,9 +201,9 @@ dofiles:
-e '}' \ -e '}' \
-e '$$s/.*/nodlb/p' < dat/options` ; \ -e '$$s/.*/nodlb/p' < dat/options` ; \
$(MAKE) dofiles-$${target-nodlb} $(MAKE) dofiles-$${target-nodlb}
(cd dat ; cp symbols $(HACKDIR) ) (cd dat ; cp symbols $(INSTDIR) )
cp src/$(GAME) $(HACKDIR) cp src/$(GAME) $(INSTDIR)
cp util/recover $(HACKDIR) cp util/recover $(INSTDIR)
-if test -n '$(SHELLDIR)'; then rm -f $(SHELLDIR)/$(GAME); fi -if test -n '$(SHELLDIR)'; then rm -f $(SHELLDIR)/$(GAME); fi
if test -n '$(SHELLDIR)'; then \ if test -n '$(SHELLDIR)'; then \
sed -e 's;/usr/games/lib/nethackdir;$(HACKDIR);' \ sed -e 's;/usr/games/lib/nethackdir;$(HACKDIR);' \
@@ -211,41 +211,41 @@ dofiles:
< sys/unix/nethack.sh \ < sys/unix/nethack.sh \
> $(SHELLDIR)/$(GAME) ; fi > $(SHELLDIR)/$(GAME) ; fi
# set up their permissions # set up their permissions
-( cd $(HACKDIR) ; $(CHOWN) $(GAMEUID) $(GAME) recover ; \ -( cd $(INSTDIR) ; $(CHOWN) $(GAMEUID) $(GAME) recover ; \
$(CHGRP) $(GAMEGRP) $(GAME) recover ) $(CHGRP) $(GAMEGRP) $(GAME) recover )
chmod $(GAMEPERM) $(HACKDIR)/$(GAME) chmod $(GAMEPERM) $(INSTDIR)/$(GAME)
chmod $(EXEPERM) $(HACKDIR)/recover chmod $(EXEPERM) $(INSTDIR)/recover
-if test -n '$(SHELLDIR)'; then \ -if test -n '$(SHELLDIR)'; then \
$(CHOWN) $(GAMEUID) $(SHELLDIR)/$(GAME); fi $(CHOWN) $(GAMEUID) $(SHELLDIR)/$(GAME); fi
if test -n '$(SHELLDIR)'; then \ if test -n '$(SHELLDIR)'; then \
$(CHGRP) $(GAMEGRP) $(SHELLDIR)/$(GAME); \ $(CHGRP) $(GAMEGRP) $(SHELLDIR)/$(GAME); \
chmod $(EXEPERM) $(SHELLDIR)/$(GAME); fi chmod $(EXEPERM) $(SHELLDIR)/$(GAME); fi
-( cd $(HACKDIR) ; $(CHOWN) $(GAMEUID) symbols ; \ -( cd $(INSTDIR) ; $(CHOWN) $(GAMEUID) symbols ; \
$(CHGRP) $(GAMEGRP) symbols ; \ $(CHGRP) $(GAMEGRP) symbols ; \
chmod $(FILEPERM) symbols ) chmod $(FILEPERM) symbols )
dofiles-dlb: check-dlb dofiles-dlb: check-dlb
( cd dat ; cp nhdat $(DATNODLB) $(HACKDIR) ) ( cd dat ; cp nhdat $(DATNODLB) $(INSTDIR) )
# set up their permissions # set up their permissions
-( cd $(HACKDIR) ; $(CHOWN) $(GAMEUID) nhdat $(DATNODLB) ; \ -( cd $(INSTDIR) ; $(CHOWN) $(GAMEUID) nhdat $(DATNODLB) ; \
$(CHGRP) $(GAMEGRP) nhdat $(DATNODLB) ; \ $(CHGRP) $(GAMEGRP) nhdat $(DATNODLB) ; \
chmod $(FILEPERM) nhdat $(DATNODLB) ) chmod $(FILEPERM) nhdat $(DATNODLB) )
dofiles-nodlb: dofiles-nodlb:
# copy over the game files # copy over the game files
( cd dat ; cp $(DAT) $(HACKDIR) ) ( cd dat ; cp $(DAT) $(INSTDIR) )
# set up their permissions # set up their permissions
-( cd $(HACKDIR) ; $(CHOWN) $(GAMEUID) $(DAT) ; \ -( cd $(INSTDIR) ; $(CHOWN) $(GAMEUID) $(DAT) ; \
$(CHGRP) $(GAMEGRP) $(DAT) ; \ $(CHGRP) $(GAMEGRP) $(DAT) ; \
chmod $(FILEPERM) $(DAT) ) chmod $(FILEPERM) $(DAT) )
update: $(GAME) recover $(VARDAT) dungeon spec_levs update: $(GAME) recover $(VARDAT) dungeon spec_levs
# (don't yank the old version out from under people who're playing it) # (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 is also kept open and has the same problems over NFS
# (quest.dat may be inside nhdat if dlb is in use) # (quest.dat may be inside nhdat if dlb is in use)
-mv $(HACKDIR)/quest.dat $(HACKDIR)/quest.dat.old -mv $(INSTDIR)/quest.dat $(INSTDIR)/quest.dat.old
-mv $(HACKDIR)/nhdat $(HACKDIR)/nhdat.old -mv $(INSTDIR)/nhdat $(INSTDIR)/nhdat.old
# set up new versions of the game files # set up new versions of the game files
( $(MAKE) dofiles ) ( $(MAKE) dofiles )
# touch time-sensitive files # 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 # not all mkdirs have -p; those that don't will create a -p directory
-if test -n '$(SHELLDIR)'; then \ -if test -n '$(SHELLDIR)'; then \
mkdir -p $(SHELLDIR); fi mkdir -p $(SHELLDIR); fi
rm -rf $(HACKDIR) $(VARDIR) rm -rf $(INSTDIR) $(VARDIR)
-mkdir -p $(HACKDIR) $(VARDIR) $(VARDIR)/save -mkdir -p $(INSTDIR) $(VARDIR) $(VARDIR)/save
if test -d ./-p; then rmdir ./-p; fi if test -d ./-p; then rmdir ./-p; fi
-$(CHOWN) $(GAMEUID) $(HACKDIR) $(VARDIR) $(VARDIR)/save -$(CHOWN) $(GAMEUID) $(INSTDIR) $(VARDIR) $(VARDIR)/save
$(CHGRP) $(GAMEGRP) $(HACKDIR) $(VARDIR) $(VARDIR)/save $(CHGRP) $(GAMEGRP) $(INSTDIR) $(VARDIR) $(VARDIR)/save
# order counts here: # order counts here:
chmod $(DIRPERM) $(HACKDIR) chmod $(DIRPERM) $(INSTDIR)
chmod $(VARDIRPERM) $(VARDIR) $(VARDIR)/save chmod $(VARDIRPERM) $(VARDIR) $(VARDIR)/save
# set up the game files # set up the game files
( $(MAKE) dofiles ) ( $(MAKE) dofiles )

View File

@@ -13,10 +13,12 @@
PREFIX=$(wildcard ~)/nh/install PREFIX=$(wildcard ~)/nh/install
HACKDIR=$(PREFIX)/games/lib/$(GAME)dir HACKDIR=$(PREFIX)/games/lib/$(GAME)dir
SHELLDIR = $(PREFIX)/games 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 CFLAGS=-g -O -I../include -DNOTPARMDECL $(CFLAGS1) -DDLB
CFLAGS1=-DCOMPRESS=\"/bin/gzip\" -DCOMPRESS_EXTENSION=\".gz\" CFLAGS1=-DCOMPRESS=\"/bin/gzip\" -DCOMPRESS_EXTENSION=\".gz\"

View File

@@ -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

View File

@@ -13,10 +13,12 @@
PREFIX=$(wildcard ~)/nh/install PREFIX=$(wildcard ~)/nh/install
HACKDIR=$(PREFIX)/games/lib/$(GAME)dir HACKDIR=$(PREFIX)/games/lib/$(GAME)dir
SHELLDIR = $(PREFIX)/games 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;
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=-O -I../include -DNOTPARMDECL $(CFLAGS1) $(CFLAGS3) CFLAGS=-O -I../include -DNOTPARMDECL $(CFLAGS1) $(CFLAGS3)
CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\"

View File

@@ -72,7 +72,7 @@ WINOBJ += $(WINX11OBJ)
WINLIB += $(WINX11LIB) WINLIB += $(WINX11LIB)
LFLAGS=-L/usr/X11R6/lib LFLAGS=-L/usr/X11R6/lib
VARDATND = x11tiles NetHack.ad pet_mark.xbm 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 CFLAGS += -DX11_GRAPHICS
endif endif
@@ -107,6 +107,8 @@ ifdef WANT_SHARE_INSTALL
PREFIX:=/Users/$(GAMEUID) PREFIX:=/Users/$(GAMEUID)
SHELLDIR=$(PREFIX)/bin SHELLDIR=$(PREFIX)/bin
HACKDIR=$(PREFIX)/nethackdir HACKDIR=$(PREFIX)/nethackdir
INSTDIR=$(HACKDIR)
VARDIR=$(HACKDIR)
CHOWN=chown CHOWN=chown
CHGRP=chgrp CHGRP=chgrp
# We run sgid so the game has access to both HACKDIR and user preferences. # 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) ROOTCHECK= [[ `id -u` == 0 ]] || ( echo "Must run install with sudo."; exit 1)
# make sure we have group GAMEUID and group GAMEGRP # 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) 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 CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
else else
PREFIX:=$(wildcard ~) PREFIX:=$(wildcard ~)
SHELLDIR=$(PREFIX)/bin SHELLDIR=$(PREFIX)/bin
HACKDIR=$(PREFIX)/nethackdir HACKDIR=$(PREFIX)/nethackdir
INSTDIR=$(HACKDIR)
VARDIR=$(HACKDIR)
CHOWN=true CHOWN=true
CHGRP=true CHGRP=true
GAMEPERM = 0700 GAMEPERM = 0700

View File

@@ -99,7 +99,7 @@ WINOBJ += $(WINX11OBJ)
WINLIB += $(WINX11LIB) WINLIB += $(WINX11LIB)
LFLAGS=-L/usr/X11R6/lib LFLAGS=-L/usr/X11R6/lib
VARDATND = x11tiles NetHack.ad pet_mark.xbm 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 CFLAGS += -DX11_GRAPHICS -I/usr/X11R6/include
endif # WANT_WIN_X11 endif # WANT_WIN_X11
@@ -137,6 +137,8 @@ ifeq ($(GAMEUID),root)
PREFIX:=/Library/NetHack PREFIX:=/Library/NetHack
SHELLDIR=/usr/local/bin SHELLDIR=/usr/local/bin
HACKDIR=$(PREFIX)/nethackdir HACKDIR=$(PREFIX)/nethackdir
INSTDIR=$(HACKDIR)
VARDIR=$(HACKDIR)
CHOWN=chown CHOWN=chown
CHGRP=chgrp CHGRP=chgrp
# We run sgid so the game has access to both HACKDIR and user preferences. # We run sgid so the game has access to both HACKDIR and user preferences.
@@ -145,6 +147,8 @@ else # ! root
PREFIX:=/Users/$(GAMEUID) PREFIX:=/Users/$(GAMEUID)
SHELLDIR=$(PREFIX)/bin SHELLDIR=$(PREFIX)/bin
HACKDIR=$(PREFIX)/nethackdir HACKDIR=$(PREFIX)/nethackdir
INSTDIR=$(HACKDIR)
VARDIR=$(HACKDIR)
CHOWN=/usr/bin/true CHOWN=/usr/bin/true
CHGRP=/usr/bin/true CHGRP=/usr/bin/true
GAMEPERM = 0500 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 # 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 # 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) 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 CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
else ifdef WANT_SOURCE_INSTALL else ifdef WANT_SOURCE_INSTALL
PREFIX=$(abspath $(NHSROOT)) PREFIX=$(abspath $(NHSROOT))
# suppress nethack.sh # suppress nethack.sh
#SHELLDIR= #SHELLDIR=
HACKDIR=$(PREFIX)/playground HACKDIR=$(PREFIX)/playground
INSTDIR=$(HACKDIR)
VARDIR=$(HACKDIR)
CHOWN=/usr/bin/true CHOWN=/usr/bin/true
CHGRP=/usr/bin/true CHGRP=/usr/bin/true
GAMEPERM = 0700 GAMEPERM = 0700
@@ -174,6 +180,8 @@ else # !WANT_SOURCE_INSTALL
PREFIX:=$(wildcard ~) PREFIX:=$(wildcard ~)
SHELLDIR=$(PREFIX)/bin SHELLDIR=$(PREFIX)/bin
HACKDIR=$(PREFIX)/nethackdir HACKDIR=$(PREFIX)/nethackdir
INSTDIR=$(HACKDIR)
VARDIR=$(HACKDIR)
CHOWN=/usr/bin/true CHOWN=/usr/bin/true
CHGRP=/usr/bin/true CHGRP=/usr/bin/true
GAMEPERM = 0700 GAMEPERM = 0700
@@ -183,7 +191,7 @@ ifdef WANT_WIN_X11
# install nethack.rc as ~/.nethackrc if no ~/.nethackrc exists # install nethack.rc as ~/.nethackrc if no ~/.nethackrc exists
PREINSTALL= cp -n win/X11/nethack.rc ~/.nethackrc PREINSTALL= cp -n win/X11/nethack.rc ~/.nethackrc
endif # WANT_WIN_X11 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 CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
endif # !WANT_SOURCE_INSTALL endif # !WANT_SOURCE_INSTALL

View File

@@ -81,7 +81,7 @@ WINOBJ += $(WINX11OBJ)
WINLIB += $(WINX11LIB) WINLIB += $(WINX11LIB)
LFLAGS=-L/usr/X11R6/lib LFLAGS=-L/usr/X11R6/lib
VARDATND = x11tiles NetHack.ad pet_mark.xbm 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 CFLAGS += -DX11_GRAPHICS
endif # WANT_WIN_X11 endif # WANT_WIN_X11
@@ -119,6 +119,8 @@ ifeq ($(GAMEUID),root)
PREFIX:=/Library/NetHack PREFIX:=/Library/NetHack
SHELLDIR=/usr/local/bin SHELLDIR=/usr/local/bin
HACKDIR=$(PREFIX)/nethackdir HACKDIR=$(PREFIX)/nethackdir
INSTDIR=$(HACKDIR)
VARDIR=$(HACKDIR)
CHOWN=chown CHOWN=chown
CHGRP=chgrp CHGRP=chgrp
# We run sgid so the game has access to both HACKDIR and user preferences. # We run sgid so the game has access to both HACKDIR and user preferences.
@@ -127,6 +129,8 @@ else # ! root
PREFIX:=/Users/$(GAMEUID) PREFIX:=/Users/$(GAMEUID)
SHELLDIR=$(PREFIX)/bin SHELLDIR=$(PREFIX)/bin
HACKDIR=$(PREFIX)/nethackdir HACKDIR=$(PREFIX)/nethackdir
INSTDIR=$(HACKDIR)
VARDIR=$(HACKDIR)
CHOWN=touch CHOWN=touch
CHGRP=touch CHGRP=touch
GAMEPERM = 0500 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 # 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 # 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) 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 CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
else ifdef WANT_SOURCE_INSTALL else ifdef WANT_SOURCE_INSTALL
PREFIX=$(abspath $(NHSROOT)) PREFIX=$(abspath $(NHSROOT))
# suppress nethack.sh" # suppress nethack.sh"
#SHELLDIR= #SHELLDIR=
HACKDIR=$(PREFIX)/playground HACKDIR=$(PREFIX)/playground
INSTDIR=$(HACKDIR)
VARDIR=$(HACKDIR)
CHOWN=touch CHOWN=touch
CHGRP=touch CHGRP=touch
GAMEPERM = 0700 GAMEPERM = 0700
@@ -155,6 +161,8 @@ else # !WANT_SOURCE_INSTALL
PREFIX:=$(wildcard ~) PREFIX:=$(wildcard ~)
SHELLDIR=$(PREFIX)/bin SHELLDIR=$(PREFIX)/bin
HACKDIR=$(PREFIX)/nethackdir HACKDIR=$(PREFIX)/nethackdir
INSTDIR=$(HACKDIR)
VARDIR=$(HACKDIR)
CHOWN=true CHOWN=true
CHGRP=true CHGRP=true
GAMEPERM = 0700 GAMEPERM = 0700
@@ -164,7 +172,7 @@ ifdef WANT_WIN_X11
# install nethack.rc as ~/.nethackrc if no ~/.nethackrc exists # install nethack.rc as ~/.nethackrc if no ~/.nethackrc exists
PREINSTALL= cp -n win/X11/nethack.rc ~/.nethackrc PREINSTALL= cp -n win/X11/nethack.rc ~/.nethackrc
endif # WANT_WIN_X11 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 CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
endif # !WANT_SOURCE_INSTALL endif # !WANT_SOURCE_INSTALL

View File

@@ -98,7 +98,7 @@ WINOBJ += $(WINX11OBJ)
WINLIB += $(WINX11LIB) WINLIB += $(WINX11LIB)
LFLAGS=-L/usr/X11R6/lib LFLAGS=-L/usr/X11R6/lib
VARDATND = x11tiles NetHack.ad pet_mark.xbm 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 CFLAGS += -DX11_GRAPHICS
endif # WANT_WIN_X11 endif # WANT_WIN_X11
@@ -136,6 +136,8 @@ ifeq ($(GAMEUID),root)
PREFIX:=/Library/NetHack PREFIX:=/Library/NetHack
SHELLDIR=/usr/local/bin SHELLDIR=/usr/local/bin
HACKDIR=$(PREFIX)/nethackdir HACKDIR=$(PREFIX)/nethackdir
INSTDIR=$(HACKDIR)
VARDIR=$(HACKDIR)
CHOWN=chown CHOWN=chown
CHGRP=chgrp CHGRP=chgrp
# We run sgid so the game has access to both HACKDIR and user preferences. # We run sgid so the game has access to both HACKDIR and user preferences.
@@ -144,6 +146,8 @@ else # ! root
PREFIX:=/Users/$(GAMEUID) PREFIX:=/Users/$(GAMEUID)
SHELLDIR=$(PREFIX)/bin SHELLDIR=$(PREFIX)/bin
HACKDIR=$(PREFIX)/nethackdir HACKDIR=$(PREFIX)/nethackdir
INSTDIR=$(HACKDIR)
VARDIR=$(HACKDIR)
CHOWN=/usr/bin/true CHOWN=/usr/bin/true
CHGRP=/usr/bin/true CHGRP=/usr/bin/true
GAMEPERM = 0500 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 # 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 # 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) 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 CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
else ifdef WANT_SOURCE_INSTALL else ifdef WANT_SOURCE_INSTALL
PREFIX=$(abspath $(NHSROOT)) PREFIX=$(abspath $(NHSROOT))
# suppress nethack.sh # suppress nethack.sh
#SHELLDIR= #SHELLDIR=
HACKDIR=$(PREFIX)/playground HACKDIR=$(PREFIX)/playground
INSTDIR=$(HACKDIR)
VARDIR=$(HACKDIR)
CHOWN=/usr/bin/true CHOWN=/usr/bin/true
CHGRP=/usr/bin/true CHGRP=/usr/bin/true
GAMEPERM = 0700 GAMEPERM = 0700
@@ -173,6 +179,8 @@ else # !WANT_SOURCE_INSTALL
PREFIX:=$(wildcard ~) PREFIX:=$(wildcard ~)
SHELLDIR=$(PREFIX)/bin SHELLDIR=$(PREFIX)/bin
HACKDIR=$(PREFIX)/nethackdir HACKDIR=$(PREFIX)/nethackdir
INSTDIR=$(HACKDIR)
VARDIR=$(HACKDIR)
CHOWN=/usr/bin/true CHOWN=/usr/bin/true
CHGRP=/usr/bin/true CHGRP=/usr/bin/true
GAMEPERM = 0700 GAMEPERM = 0700
@@ -182,7 +190,7 @@ ifdef WANT_WIN_X11
# install nethack.rc as ~/.nethackrc if no ~/.nethackrc exists # install nethack.rc as ~/.nethackrc if no ~/.nethackrc exists
PREINSTALL= cp -n win/X11/nethack.rc ~/.nethackrc PREINSTALL= cp -n win/X11/nethack.rc ~/.nethackrc
endif # WANT_WIN_X11 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 CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
endif # !WANT_SOURCE_INSTALL endif # !WANT_SOURCE_INSTALL

View File

@@ -12,6 +12,8 @@
PREFIX=/usr PREFIX=/usr
HACKDIR=$(PREFIX)/games/lib/$(GAME)dir HACKDIR=$(PREFIX)/games/lib/$(GAME)dir
INSTDIR=$(HACKDIR)
VARDIR=$(HACKDIR)
SHELLDIR=$(PREFIX)/games SHELLDIR=$(PREFIX)/games
CFLAGS=-O -I../include CFLAGS=-O -I../include