--- sys/unix/Makefile.top.orig 2023-05-16 21:33:58 UTC +++ sys/unix/Makefile.top @@ -25,15 +25,15 @@ NHSROOT=. GAME = xnethack # GAME = nethack.prg #GAMEUID = games -#GAMEGRP = bin +GAMEGRP = games # Permissions - some places use setgid instead of setuid, for instance. # See also the option "SECURE" in include/config.h. -#GAMEPERM = 04755 +GAMEPERM = 02755 FILEPERM = 0644 # VARFILEPERM = 0644 EXEPERM = 0755 -DIRPERM = 0755 +DIRPERM = 0775 # VARDIRPERM = 0755 # VARDIR may also appear in unixconf.h as "VAR_PLAYGROUND" else HACKDIR @@ -44,10 +44,12 @@ DIRPERM = 0755 # keep (if there is, you'll have to do the installation by hand or # modify the install commands below). #HACKDIR = $(PREFIX)/games/lib/$(GAME)dir -#VARDIR = $(HACKDIR) +HACKDIR = %%HACKDIR%% +INSTDIR = ${HACKDIR} +VARDIR = $(HACKDIR) # Where nethack.sh is installed (as 'nethack'). # If this is not defined, the shell wrapper script is not used. -#SHELLDIR = $(PREFIX)/games +SHELLDIR = $(PREFIX)/bin # Extra data files depending upon the interface(s) built into nethack. # per discussion in Install.X11 and Install.Qt @@ -62,7 +64,7 @@ DIRPERM = 0755 # X11 with GRAPHIC_TOMBSTONE (requires 'xpm'): # VARDATND = x11tiles NetHack.ad pet_mark.xbm pilemark.xbm rip.xpm # both X11 and Qt: -# VARDATND = x11tiles nhtiles.bmp NetHack.ad pet_mark.xbm pilemark.xbm rip.xpm +VARDATND = x11tiles nhtiles.bmp NetHack.ad pet_mark.xbm pilemark.xbm rip.xpm # Qt without X11; assumes GRAPHIC_TOMBSTONE: # VARDATND = nhtiles.bmp pet_mark.xbm pilemark.xbm rip.xpm @@ -136,13 +138,11 @@ $(TOPLUALIB): $(LUATOP)/liblua.a @( if test -d lib/lua ; then true ; else mkdir -p lib/lua ; fi ) cp $(LUATOP)/liblua.a $@ -include/nhlua.h: $(TOPLUALIB) +include/nhlua.h: echo '/* nhlua.h - generated by top Makefile */' > $@ - @echo '#include "../$(LUAHEADERS)/lua.h"' >> $@ - @sed -e '/(lua_error)/!d' -e '/(lua_error)/s/;/ NORETURN;/1' \ - < $(LUAHEADERS)/lua.h >> $@ - @echo '#include "../$(LUAHEADERS)/lualib.h"' >> $@ - @echo '#include "../$(LUAHEADERS)/lauxlib.h"' >> $@ + @echo '#include ' >> $@ + @echo '#include ' >> $@ + @echo '#include ' >> $@ @echo '/*nhlua.h*/' >> $@ # LUATESTTARGET is this by default lib/lua-$(LUA_VERSION)/src/lua.h: @@ -273,39 +273,22 @@ dofiles: -e '}' \ -e '$$s/.*/nodlb/p' < dat/options` ; \ $(MAKE) dofiles-$${target-nodlb} - cp src/$(GAME) $(INSTDIR) - cp util/recover $(INSTDIR) - -if test -n '$(SHELLDIR)'; then rm -f $(SHELLDIR)/$(GAME); fi - if test -n '$(SHELLDIR)'; then \ + cp src/$(GAME) ${DESTDIR}$(INSTDIR)/$(GAME) + cp util/recover ${DESTDIR}$(INSTDIR) + -if test -n '${DESTDIR}$(SHELLDIR)'; then rm -f ${DESTDIR}$(SHELLDIR)/$(GAME); fi + if test -n '${DESTDIR}$(SHELLDIR)'; then \ sed -e 's;/usr/games/lib/nethackdir;$(HACKDIR);' \ -e 's;HACKDIR/nethack;HACKDIR/$(GAME);' \ < sys/unix/nethack.sh \ - > $(SHELLDIR)/$(GAME) ; fi -# set up their permissions - -( cd $(INSTDIR) ; $(CHOWN) $(GAMEUID) $(GAME) recover ; \ - $(CHGRP) $(GAMEGRP) $(GAME) 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 + > ${DESTDIR}$(SHELLDIR)/$(GAME) ; fi dofiles-dlb: check-dlb - ( cd dat ; cp nhdat $(DATNODLB) $(INSTDIR) ) -# set up their permissions - -( cd $(INSTDIR) ; $(CHOWN) $(GAMEUID) nhdat $(DATNODLB) ; \ - $(CHGRP) $(GAMEGRP) nhdat $(DATNODLB) ; \ - chmod $(FILEPERM) nhdat $(DATNODLB) ) + ( cd dat ; cp nhdat $(DATNODLB) ${DESTDIR}$(INSTDIR) ) dofiles-nodlb: # copy over the game files - ( cd dat ; cp $(DAT) $(INSTDIR) ) -# set up their permissions - -( cd $(INSTDIR) ; $(CHOWN) $(GAMEUID) $(DAT) ; \ - $(CHGRP) $(GAMEGRP) $(DAT) ; \ - chmod $(FILEPERM) $(DAT) ) + ( cd dat ; cp $(DAT) ${DESTDIR}$(INSTDIR) ) + # # This is not part of the dependency build hierarchy. # It requires an explicit "make fetch-Lua". @@ -342,25 +325,17 @@ install: rootcheck $(GAME) recover $(VARDAT) spec_levs true; $(PREINSTALL) # set up the directories # 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 $(INSTDIR) $(VARDIR) - -mkdir -p $(INSTDIR) $(VARDIR) $(VARDIR)/save $(VARDIR)/whereis + -if test -n '${DESTDIR}$(SHELLDIR)'; then \ + mkdir -p ${DESTDIR}$(SHELLDIR); fi + rm -rf ${DESTDIR}$(INSTDIR) ${DESTDIR}$(VARDIR) + -mkdir -p ${DESTDIR}$(INSTDIR) ${DESTDIR}$(VARDIR)/save ${DESTDIR}$(VARDIR)/whereis if test -d ./-p; then rmdir ./-p; fi - -$(CHOWN) $(GAMEUID) $(INSTDIR) $(VARDIR) $(VARDIR)/save $(VARDIR)/whereis - $(CHGRP) $(GAMEGRP) $(INSTDIR) $(VARDIR) $(VARDIR)/save $(VARDIR)/whereis # order counts here: - chmod $(DIRPERM) $(INSTDIR) - chmod $(VARDIRPERM) $(VARDIR) $(VARDIR)/save $(VARDIR)/whereis # set up the game files ( $(MAKE) dofiles ) # set up some additional files - touch $(VARDIR)/perm $(VARDIR)/record $(VARDIR)/logfile $(VARDIR)/xlogfile \ - $(VARDIR)/livelog - -( cd $(VARDIR) ; $(CHOWN) $(GAMEUID) perm record logfile xlogfile livelog ; \ - $(CHGRP) $(GAMEGRP) perm record logfile xlogfile livelog ; \ - chmod $(VARFILEPERM) perm record logfile xlogfile livelog ) - true; $(POSTINSTALL) + touch ${DESTDIR}$(VARDIR)/perm ${DESTDIR}$(VARDIR)/record \ + ${DESTDIR}$(VARDIR)/logfile ${DESTDIR}$(VARDIR)/xlogfile ${DESTDIR}$(VARDIR)/livelog # and a reminder @echo You may also want to reinstall the man pages via the doc Makefile.