$NetBSD: patch-ab,v 1.12 2011/06/01 11:20:29 wiz Exp $ Make configurable. --- sys/unix/Makefile.top.orig 2003-12-07 23:39:13.000000000 +0000 +++ sys/unix/Makefile.top @@ -14,18 +14,18 @@ # MAKE = make # make NetHack -PREFIX = /usr GAME = nethack # GAME = nethack.prg -GAMEUID = games -GAMEGRP = bin +GAMEUID = root +GAMEGRP = games # Permissions - some places use setgid instead of setuid, for instance # See also the option "SECURE" in include/config.h -GAMEPERM = 04755 +GAMEPERM = 2755 FILEPERM = 0644 +VARFILEPERM = 0664 EXEPERM = 0755 -DIRPERM = 0755 +DIRPERM = 0775 # GAMEDIR also appears in config.h as "HACKDIR". # VARDIR may also appear in unixconf.h as "VAR_PLAYGROUND" else GAMEDIR @@ -35,12 +35,12 @@ DIRPERM = 0755 # therefore there should not be anything in GAMEDIR that you want to keep # (if there is, you'll have to do the installation by hand or modify the # instructions) -GAMEDIR = $(PREFIX)/games/lib/$(GAME)dir -VARDIR = $(GAMEDIR) -SHELLDIR = $(PREFIX)/games +GAMEDIR ?= $(PREFIX)/share/$(GAME)dir340 +VARDIR ?= /var/games/nethack340 +SHELLDIR = $(PREFIX)/bin # per discussion in Install.X11 and Install.Qt -VARDATND = +VARDATND = pet_mark.xbm rip.xpm # VARDATND = x11tiles NetHack.ad pet_mark.xbm # VARDATND = x11tiles NetHack.ad pet_mark.xbm rip.xpm # for Atari/Gem @@ -64,8 +64,8 @@ VARDAT = $(VARDATD) $(VARDATND) # other permission-related reasons. If that happens, you may want to set the # command to "true", which is a no-op. Note that disabling chown or chgrp # will only work if setuid (or setgid) behavior is not desired or required. -CHOWN = chown -CHGRP = chgrp +CHOWN = : # chown +CHGRP = : # chgrp # # end of configuration @@ -87,9 +87,12 @@ DAT = $(DATNODLB) $(DATDLB) $(GAME): ( cd src ; $(MAKE) ) -all: $(GAME) recover Guidebook $(VARDAT) dungeon spec_levs check-dlb +all: $(GAME) datastuff @echo "Done." +datastuff: recover Guidebook $(VARDAT) dungeon spec_levs check-dlb + @echo "Data Sets Built." + # Note: many of the dependencies below are here to allow parallel make # to generate valid output @@ -99,20 +102,20 @@ Guidebook: manpages: ( cd doc ; $(MAKE) manpages ) -data: $(GAME) +data: # $(GAME) ( cd dat ; $(MAKE) data ) -rumors: $(GAME) +rumors: # $(GAME) ( cd dat ; $(MAKE) rumors ) -oracles: $(GAME) +oracles: # $(GAME) ( cd dat ; $(MAKE) oracles ) # Note: options should have already been made with make, but... -options: $(GAME) +options: # $(GAME) ( cd dat ; $(MAKE) options ) -quest.dat: $(GAME) +quest.dat: # $(GAME) ( cd dat ; $(MAKE) quest.dat ) spec_levs: dungeon @@ -120,22 +123,22 @@ spec_levs: dungeon ( cd dat ; $(MAKE) spec_levs ) ( cd dat ; $(MAKE) quest_levs ) -dungeon: $(GAME) +dungeon: # $(GAME) ( cd util ; $(MAKE) dgn_comp ) ( cd dat ; $(MAKE) dungeon ) -nhtiles.bmp: $(GAME) +nhtiles.bmp: # $(GAME) ( cd dat ; $(MAKE) nhtiles.bmp ) -x11tiles: $(GAME) +x11tiles: # $(GAME) ( cd util ; $(MAKE) tile2x11 ) ( cd dat ; $(MAKE) x11tiles ) -beostiles: $(GAME) +beostiles: # $(GAME) ( cd util ; $(MAKE) tile2beos ) ( cd dat ; $(MAKE) beostiles ) -NetHack.ad: $(GAME) +NetHack.ad: # $(GAME) ( cd dat ; $(MAKE) NetHack.ad ) pet_mark.xbm: @@ -150,7 +153,7 @@ mapbg.xpm: nhsplash.xpm: ( cd dat ; $(MAKE) nhsplash.xpm ) -nh16.img: $(GAME) +nh16.img: # $(GAME) ( cd util ; $(MAKE) tile2img.ttp ) ( cd dat ; $(MAKE) nh16.img ) @@ -172,7 +175,7 @@ dlb: # recover can be used when INSURANCE is defined in include/config.h # and the checkpoint option is true -recover: $(GAME) +recover: # $(GAME) ( cd util ; $(MAKE) recover ) dofiles: @@ -183,34 +186,31 @@ dofiles: -e '}' \ -e '$$s/.*/nodlb/p' < dat/options` ; \ $(MAKE) dofiles-$${target-nodlb} - cp src/$(GAME) $(GAMEDIR) - cp util/recover $(GAMEDIR) - -rm -f $(SHELLDIR)/$(GAME) - sed -e 's;/usr/games/lib/nethackdir;$(GAMEDIR);' \ + cp util/recover $(DESTDIR)$(PREFIX)/bin + -rm -f $(DESTDIR)$(SHELLDIR)/$(GAME) + sed -e 's;@GAMEDIR@;$(GAMEDIR);' \ -e 's;HACKDIR/nethack;HACKDIR/$(GAME);' \ + -e 's;@PREFIX@;$(PREFIX);' \ < sys/unix/nethack.sh \ - > $(SHELLDIR)/$(GAME) + > $(DESTDIR)$(SHELLDIR)/$(GAME) # set up their permissions - -( cd $(GAMEDIR) ; $(CHOWN) $(GAMEUID) $(GAME) recover ; \ - $(CHGRP) $(GAMEGRP) $(GAME) recover ) - chmod $(GAMEPERM) $(GAMEDIR)/$(GAME) - chmod $(EXEPERM) $(GAMEDIR)/recover - -$(CHOWN) $(GAMEUID) $(SHELLDIR)/$(GAME) - $(CHGRP) $(GAMEGRP) $(SHELLDIR)/$(GAME) - chmod $(EXEPERM) $(SHELLDIR)/$(GAME) + chmod $(EXEPERM) $(DESTDIR)$(PREFIX)/bin/recover + -$(CHOWN) $(GAMEUID) $(DESTDIR)$(SHELLDIR)/$(GAME) + $(CHGRP) $(GAMEGRP) $(DESTDIR)$(SHELLDIR)/$(GAME) + chmod $(EXEPERM) $(DESTDIR)$(SHELLDIR)/$(GAME) dofiles-dlb: check-dlb - ( cd dat ; cp nhdat $(DATNODLB) $(GAMEDIR) ) + ( cd dat ; cp nhdat $(DATNODLB) $(DESTDIR)$(GAMEDIR) ) # set up their permissions - -( cd $(GAMEDIR) ; $(CHOWN) $(GAMEUID) nhdat $(DATNODLB) ; \ + -( cd $(DESTDIR)$(GAMEDIR) ; $(CHOWN) $(GAMEUID) nhdat $(DATNODLB) ; \ $(CHGRP) $(GAMEGRP) nhdat $(DATNODLB) ; \ chmod $(FILEPERM) nhdat $(DATNODLB) ) dofiles-nodlb: # copy over the game files - ( cd dat ; cp $(DAT) $(GAMEDIR) ) + ( cd dat ; cp $(DAT) $(DESTDIR)$(GAMEDIR) ) # set up their permissions - -( cd $(GAMEDIR) ; $(CHOWN) $(GAMEUID) $(DAT) ; \ + -( cd $(DESTDIR)$(GAMEDIR) ; $(CHOWN) $(GAMEUID) $(DAT) ; \ $(CHGRP) $(GAMEGRP) $(DAT) ; \ chmod $(FILEPERM) $(DAT) ) @@ -230,26 +230,39 @@ update: $(GAME) recover $(VARDAT) dungeo # and a reminder @echo You may also want to install the man pages via the doc Makefile. -install: $(GAME) recover $(VARDAT) dungeon spec_levs +install-dat: recover $(VARDAT) dungeon spec_levs # set up the directories # not all mkdirs have -p; those that don't will create a -p directory - -mkdir -p $(SHELLDIR) - -rm -rf $(GAMEDIR) $(VARDIR) - -mkdir -p $(GAMEDIR) $(VARDIR) $(VARDIR)/save + -mkdir -p $(DESTDIR)$(SHELLDIR) + -mkdir -p $(DESTDIR)$(GAMEDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(VARDIR)/save -rmdir ./-p - -$(CHOWN) $(GAMEUID) $(GAMEDIR) $(VARDIR) $(VARDIR)/save - $(CHGRP) $(GAMEGRP) $(GAMEDIR) $(VARDIR) $(VARDIR)/save - chmod $(DIRPERM) $(GAMEDIR) $(VARDIR) $(VARDIR)/save + -$(CHOWN) $(GAMEUID) $(DESTDIR)$(GAMEDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(VARDIR)/save + $(CHGRP) $(DESTDIR)$(GAMEGRP) $(DESTDIR)$(GAMEDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(VARDIR)/save + chmod $(DIRPERM) $(DESTDIR)$(GAMEDIR) $(DESTDIR)$(VARDIR) + chmod 770 $(DESTDIR)$(VARDIR)/save # set up the game files ( $(MAKE) dofiles ) # set up some additional files - touch $(VARDIR)/perm $(VARDIR)/record $(VARDIR)/logfile - -( cd $(VARDIR) ; $(CHOWN) $(GAMEUID) perm record logfile ; \ + touch $(DESTDIR)$(VARDIR)/perm $(DESTDIR)$(VARDIR)/record $(DESTDIR)$(VARDIR)/logfile + -( cd $(DESTDIR)$(VARDIR) ; $(CHOWN) $(GAMEUID) perm record logfile ; \ $(CHGRP) $(GAMEGRP) perm record logfile ; \ - chmod $(FILEPERM) perm record logfile ) + chmod $(VARFILEPERM) perm record logfile ) + -touch -c $(DESTDIR)$(VARDIR)/bones* $(DESTDIR)$(VARDIR)/?lock* $(DESTDIR)$(VARDIR)/wizard* + -touch -c $(DESTDIR)$(VARDIR)/save/* + -mkdir -p $(DESTDIR)$(PREFIX)/share/doc/nethack + cp doc/Guidebook $(DESTDIR)$(PREFIX)/share/doc/nethack + $(CHOWN) $(GAMEUID):$(GAMEGRP) $(DESTDIR)$(PREFIX)/share/doc/nethack/Guidebook + chmod $(FILEPERM) $(DESTDIR)$(PREFIX)/share/doc/nethack/Guidebook # and a reminder @echo You may also want to reinstall the man pages via the doc Makefile. +binfiles: $(GAME) + mkdir -p $(DESTDIR)$(SHELLDIR) + mkdir -p $(DESTDIR)$(GAMEDIR) + cp src/$(GAME) $(DESTDIR)$(SHELLDIR)/$(GAME)$(GTYPE) + -( cd $(DESTDIR)$(GAMEDIR) ; $(CHOWN) $(GAMEUID) $(DESTDIR)$(SHELLDIR)/$(GAME)$(GTYPE) ; \ + $(CHGRP) $(GAMEGRP) $(DESTDIR)$(SHELLDIR)/$(GAME)$(GTYPE) ) + #chmod $(GAMEPERM) $(DESTDIR)$(SHELLDIR)/$(GAME)$(GTYPE) # 'make clean' removes all the .o files, but leaves around all the executables # and compiled data files