add dirs-perms.500 and a default build change
The directories and permissions portion of the linux.500 and macOS.500
hints files and their included files has been consolidated to
dirs-perms.500.
The builder can edit that one file now, to identify
the folders that will be utilised as part of the build.
Alternatively, you can set those folders and permissions in a
make.perms file in the top of the NetHack folder tree and
they should take precedence over the ones in dirs-perms.500
because dirs-perms.500 uses '?=' variable assignment, which
means "set the value of the variable if no value has been set."
* NOTE: BUILD CHANGE *
This also makes WANT_SOURCE_INSTALL=1 the default over
WANT_SHARED_INSTALL=1, if neither is explicitly set.
The new default is the safer and less-impacting default,
but it will change where things get installed over earlier
Makefile builds. You can be explicit with WANT_SHARED_INSTALL=1
in your make command to get that..
These are the differences between the two:
make WANT_SHARED_INSTALL=1 Place the results of the install/update portion
of the build into a shared area on a multiuser
system.
make WANT_SOURCE_INSTALL=1 Place the results of the install/update portion
of the build into a subfolder of the source
tree, rather than in a system-wide shared area.
Also note that the macOS hints file behaves slightly differntly depending
on whether WANT_SOURCE_INSTALL=1 was set versus letting it be the default.
That's not new, it behaved that way before.
This commit is contained in:
@@ -73,13 +73,15 @@ make WANT_ASAN=1 Include support for the address sanitizer in the
|
|||||||
make WANT_UBSAN=1 Include support for the undefined behaviour
|
make WANT_UBSAN=1 Include support for the undefined behaviour
|
||||||
sanitizer in the build.
|
sanitizer in the build.
|
||||||
|
|
||||||
make WANT_SHARE_INSTALL=1 Place the results of the install/update portion
|
make WANT_SHARED_INSTALL=1 Place the results of the install/update portion
|
||||||
of the build into a shared area on a multiuser
|
of the build into a shared area on a multiuser
|
||||||
system.
|
system.
|
||||||
|
|
||||||
make WANT_SOURCE_INSTALL=1 Place the results of the install/update portion
|
make WANT_SOURCE_INSTALL=1 Place the results of the install/update portion
|
||||||
of the build into a subfolder of the source
|
of the build into a subfolder of the source
|
||||||
tree, rather than in a system-wide shared area.
|
tree, rather than in a system-wide shared area.
|
||||||
|
(This is now the default if WANT_SHARED_INSTALL=1
|
||||||
|
wasn't specified)
|
||||||
|
|
||||||
make WANT_NHUUID=1 Include support for a unique game identifier.
|
make WANT_NHUUID=1 Include support for a unique game identifier.
|
||||||
On Linux, libuuid and its headers must be installed
|
On Linux, libuuid and its headers must be installed
|
||||||
|
|||||||
@@ -0,0 +1,123 @@
|
|||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# NetHack 5.0 directories.500 $NHDT-Date: 1668359835 2022/11/13 17:17:15 $ $NHDT-Branch: NetHack-5.0 $
|
||||||
|
|
||||||
|
ifndef WANT_SHARED_INSTALL
|
||||||
|
PREFIX=$(abspath $(NHSROOT))
|
||||||
|
SOURCEINSTALL=1
|
||||||
|
|
||||||
|
# -----------------------------------------
|
||||||
|
# This is for the Linux source tree install
|
||||||
|
# -----------------------------------------
|
||||||
|
ifeq "$(WHICH_OS)" "Linux"
|
||||||
|
|
||||||
|
HACKDIR ?=$(PREFIX)/playground
|
||||||
|
INSTDIR ?=$(HACKDIR)
|
||||||
|
VARDIR ?=$(HACKDIR)
|
||||||
|
|
||||||
|
GAMEPERM ?= 0700
|
||||||
|
VARFILEPERM ?= 0600
|
||||||
|
VARDIRPERM ?= 0700
|
||||||
|
|
||||||
|
else # macOS
|
||||||
|
#
|
||||||
|
# -----------------------------------------
|
||||||
|
# This is for the macOS source tree install
|
||||||
|
# -----------------------------------------
|
||||||
|
#
|
||||||
|
# The macOS setup sets things up two different
|
||||||
|
# ways, depending on whether an explicit
|
||||||
|
# WANT_SOURCE_INSTALL=1 was given, or not.
|
||||||
|
ifdef WANT_SOURCE_INSTALL
|
||||||
|
|
||||||
|
HACKDIR ?=$(PREFIX)/playground
|
||||||
|
CHOWN ?=/usr/bin/true
|
||||||
|
CHGRP ?=/usr/bin/true
|
||||||
|
|
||||||
|
GAMEPERM ?= 0700
|
||||||
|
VARFILEPERM ?= 0600
|
||||||
|
VARDIRPERM ?= 0700
|
||||||
|
else # WANT_SOURCE_INSTALL not expressed
|
||||||
|
PREFIX:=$(wildcard ~)
|
||||||
|
SHELLDIR ?=$(PREFIX)/bin
|
||||||
|
HACKDIR ?=$(PREFIX)/nethackdir
|
||||||
|
CHOWN ?=/usr/bin/true
|
||||||
|
CHGRP ?=/usr/bin/true
|
||||||
|
GAMEPERM ?= 0700
|
||||||
|
VARFILEPERM ?= 0600
|
||||||
|
VARDIRPERM ?= 0700
|
||||||
|
|
||||||
|
endif # WANT_SOURCE_INSTALL
|
||||||
|
|
||||||
|
INSTDIR ?=$(HACKDIR)
|
||||||
|
VARDIR ?=$(HACKDIR)
|
||||||
|
|
||||||
|
endif # macOS
|
||||||
|
endif # not WANT_SHARED_INSTALL
|
||||||
|
|
||||||
|
ifneq "$(SOURCEINSTALL)" "1"
|
||||||
|
ifdef WANT_SHARED_INSTALL
|
||||||
|
ifeq "$(WHICH_OS)" "Linux"
|
||||||
|
# -----------------------------------------
|
||||||
|
# This is for the Linux system-wide install
|
||||||
|
# -----------------------------------------
|
||||||
|
|
||||||
|
PREFIX ?=$(wildcard ~)/nh/install
|
||||||
|
HACKDIR ?=$(PREFIX)/games/lib/nethackdir
|
||||||
|
SHELLDIR ?= $(PREFIX)/games
|
||||||
|
INSTDIR ?=$(HACKDIR)
|
||||||
|
VARDIR ?=$(HACKDIR)
|
||||||
|
MANDIR ?=/usr/share/man/man6
|
||||||
|
|
||||||
|
VARDIRPERM ?= 0755
|
||||||
|
VARFILEPERM ?= 0600
|
||||||
|
GAMEPERM ?= 0755
|
||||||
|
|
||||||
|
# ----------------------------------
|
||||||
|
# End of Linux system-wide install
|
||||||
|
# ----------------------------------
|
||||||
|
|
||||||
|
else # macOS
|
||||||
|
# ------------------------------------------------
|
||||||
|
# This is for the macOS system-wide shared install
|
||||||
|
# ------------------------------------------------
|
||||||
|
|
||||||
|
# if $GAMEUID is root, we install into roughly
|
||||||
|
# proper Mac locations, otherwise we install
|
||||||
|
# into ~/nethackdir
|
||||||
|
|
||||||
|
ifeq ($(GAMEUID),root)
|
||||||
|
PREFIX:=/Library/NetHack
|
||||||
|
SHELLDIR ?=/usr/local/bin
|
||||||
|
HACKDIR ?=$(PREFIX)/nethackdir
|
||||||
|
MANDIR ?=/usr/local/share/man/man6
|
||||||
|
CHOWN ?=chown
|
||||||
|
CHGRP ?=chgrp
|
||||||
|
# We run sgid so the game has access to both HACKDIR
|
||||||
|
# and user preferences
|
||||||
|
GAMEPERM ?=02755
|
||||||
|
|
||||||
|
else # ! root
|
||||||
|
PREFIX:=/Users/$(GAMEUID)
|
||||||
|
SHELLDIR ?=$(PREFIX)/bin
|
||||||
|
HACKDIR ?=$(PREFIX)/Library/NetHack/nethackdir
|
||||||
|
CHOWN ?=/usr/bin/true
|
||||||
|
CHGRP ?=/usr/bin/true
|
||||||
|
GAMEPERM ?= 0500
|
||||||
|
endif # ! root
|
||||||
|
|
||||||
|
INSTDIR ?=$(HACKDIR)
|
||||||
|
VARDIR ?=$(HACKDIR)
|
||||||
|
|
||||||
|
VARFILEPERM ?= 0664
|
||||||
|
VARDIRPERM ?= 0775
|
||||||
|
|
||||||
|
# ---------------------------------------
|
||||||
|
# End of macOS system-wide shared install
|
||||||
|
# --------------------------------------
|
||||||
|
endif # WHICH_OS?
|
||||||
|
endif # WANT_SHARED_INSTALL
|
||||||
|
endif # SOURCEINSTALL != 1
|
||||||
|
|
||||||
|
#end of dirs-perms.500
|
||||||
|
#--------------------------------------
|
||||||
|
|
||||||
+18
-27
@@ -12,14 +12,9 @@
|
|||||||
# And let us know about it.
|
# And let us know about it.
|
||||||
#
|
#
|
||||||
|
|
||||||
#-PRE
|
#-PRE xxxx
|
||||||
# linux.500 hints file provides a single-user build for Linux (such
|
|
||||||
# as Ubuntu focal).
|
|
||||||
|
|
||||||
# note: '#-INCLUDE' is not just a comment
|
|
||||||
# multiw-1.500 contains sections 1 to 2
|
|
||||||
#-INCLUDE multiw-1.500
|
|
||||||
|
|
||||||
|
WHICH_OS=Linux
|
||||||
HINTSVERSION := 500
|
HINTSVERSION := 500
|
||||||
|
|
||||||
ifdef MAKEFILE_TOP
|
ifdef MAKEFILE_TOP
|
||||||
@@ -28,16 +23,29 @@ ifeq ($(MAKELEVEL),0)
|
|||||||
PRECHECK+=checkmakefiles
|
PRECHECK+=checkmakefiles
|
||||||
# all files included from this hints file get listed
|
# all files included from this hints file get listed
|
||||||
# in HINTSINCLNAMES (without suffix and without a path)
|
# in HINTSINCLNAMES (without suffix and without a path)
|
||||||
HINTSINCLNAMES := compiler cross-pre1 cross-pre2 cross-post \
|
HINTSINCLNAMES := dirs-perms \
|
||||||
|
compiler cross-pre1 cross-pre2 cross-post \
|
||||||
gbdates-pre gbdates-post \
|
gbdates-pre gbdates-post \
|
||||||
|
linuxdistro \
|
||||||
multiw-1 multiw-2 misc \
|
multiw-1 multiw-2 misc \
|
||||||
multisnd1-pre multisnd2-pre multisnd-post
|
multisnd1-pre multisnd2-pre multisnd-post \
|
||||||
|
response
|
||||||
HINTSINCLFILES := $(addsuffix .$(HINTSVERSION), $(HINTSINCLNAMES))
|
HINTSINCLFILES := $(addsuffix .$(HINTSVERSION), $(HINTSINCLNAMES))
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
#-INCLUDE linuxdistro.500
|
# linux.500 hints file provides a single-user build for Linux (such
|
||||||
|
# as Ubuntu focal).
|
||||||
|
|
||||||
|
# note: '#-INCLUDE' is not just a comment
|
||||||
|
# multiw-1.500 contains sections 1 to 2
|
||||||
|
#-INCLUDE multiw-1.500
|
||||||
|
|
||||||
|
# note: '#-INCLUDE' is not just a comment
|
||||||
|
# it pulls in the contents of dirs-perms.500
|
||||||
|
#-INCLUDE dirs-perms.500
|
||||||
|
|
||||||
|
#-INCLUDE linuxdistro.500
|
||||||
|
|
||||||
ifndef LIBXPM
|
ifndef LIBXPM
|
||||||
LIBXPM= -L/opt/X11/lib -lXpm
|
LIBXPM= -L/opt/X11/lib -lXpm
|
||||||
@@ -523,27 +531,10 @@ SYSCONFENSURE = (if ! test -f $(INSTDIR)/sysconf ; then \
|
|||||||
chmod $(VARFILEPERM) $(INSTDIR)/sysconf; fi );
|
chmod $(VARFILEPERM) $(INSTDIR)/sysconf; fi );
|
||||||
|
|
||||||
ifdef WANT_SOURCE_INSTALL
|
ifdef WANT_SOURCE_INSTALL
|
||||||
PREFIX=$(abspath $(NHSROOT))
|
|
||||||
#SHELLDIR=
|
|
||||||
HACKDIR=$(PREFIX)/playground
|
|
||||||
GAMEPERM = 0700
|
|
||||||
VARFILEPERM = 0600
|
|
||||||
VARDIRPERM = 0700
|
|
||||||
CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
|
CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
|
||||||
MOREALL=$(MAKE) install
|
MOREALL=$(MAKE) install
|
||||||
else #!WANT_SOURCE_INSTALL
|
|
||||||
#PREFIX=/usr
|
|
||||||
PREFIX=$(wildcard ~)/nh/install
|
|
||||||
HACKDIR=$(PREFIX)/games/lib/nethackdir
|
|
||||||
SHELLDIR = $(PREFIX)/games
|
|
||||||
VARDIRPERM = 0755
|
|
||||||
VARFILEPERM = 0600
|
|
||||||
GAMEPERM = 0755
|
|
||||||
endif #?WANT_SOURCE_INSTALL
|
endif #?WANT_SOURCE_INSTALL
|
||||||
|
|
||||||
INSTDIR=$(HACKDIR)
|
|
||||||
VARDIR = $(HACKDIR)
|
|
||||||
|
|
||||||
ifdef MAKEFILE_TOP
|
ifdef MAKEFILE_TOP
|
||||||
TESTGDBPATH=/usr/bin/gdb
|
TESTGDBPATH=/usr/bin/gdb
|
||||||
POSTINSTALL+= test -f $(TESTGDBPATH) || \
|
POSTINSTALL+= test -f $(TESTGDBPATH) || \
|
||||||
|
|||||||
+18
-51
@@ -17,24 +17,32 @@
|
|||||||
# macOS hints file
|
# macOS hints file
|
||||||
#
|
#
|
||||||
|
|
||||||
# note: '#-INCLUDE' is not just a comment; multiw-1 contains sections 1 to 2
|
WHICH_OS=macOS
|
||||||
#-INCLUDE multiw-1.500
|
|
||||||
|
|
||||||
HINTSVERSION := 500
|
HINTSVERSION := 500
|
||||||
|
|
||||||
ifdef MAKEFILE_TOP
|
ifdef MAKEFILE_TOP
|
||||||
|
LUA_VERSION=5.4.8
|
||||||
ifeq ($(MAKELEVEL),0)
|
ifeq ($(MAKELEVEL),0)
|
||||||
PRECHECK+=checkmakefiles
|
PRECHECK+=checkmakefiles
|
||||||
# all files included from this hints file get listed
|
# all files included from this hints file get listed
|
||||||
# in HINTSINCLNAMES (without suffix and without a path)
|
# in HINTSINCLNAMES (without suffix and without a path)
|
||||||
HINTSINCLNAMES := compiler cross-pre1 cross-pre2 cross-post \
|
HINTSINCLNAMES := dirs-perms \
|
||||||
|
compiler cross-pre1 cross-pre2 cross-post \
|
||||||
gbdates-pre gbdates-post \
|
gbdates-pre gbdates-post \
|
||||||
multiw-1 multiw-2 misc \
|
multiw-1 multiw-2 misc \
|
||||||
multisnd1-pre multisnd2-pre multisnd-post
|
multisnd1-pre multisnd2-pre multisnd-post \
|
||||||
|
response
|
||||||
HINTSINCLFILES := $(addsuffix .$(HINTSVERSION), $(HINTSINCLNAMES))
|
HINTSINCLFILES := $(addsuffix .$(HINTSVERSION), $(HINTSINCLNAMES))
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# note: '#-INCLUDE' is not just a comment; multiw-1 contains sections 1 to 2
|
||||||
|
#-INCLUDE multiw-1.500
|
||||||
|
|
||||||
|
# note: '#-INCLUDE' is not just a comment
|
||||||
|
# it pulls in the contents of dirs-perms.500
|
||||||
|
#-INCLUDE dirs-perms.500
|
||||||
|
|
||||||
ifneq "$(USEMACPORTS)" "1"
|
ifneq "$(USEMACPORTS)" "1"
|
||||||
HAVE_HOMEBREW := $(shell expr `which -s brew; echo $$?` = 0)
|
HAVE_HOMEBREW := $(shell expr `which -s brew; echo $$?` = 0)
|
||||||
endif
|
endif
|
||||||
@@ -368,31 +376,11 @@ override LUA2NHTOP = ../..
|
|||||||
override LUAMAKEFLAGS=$(LUAFLAGS)
|
override LUAMAKEFLAGS=$(LUAFLAGS)
|
||||||
endif # GITSUBMODULES
|
endif # GITSUBMODULES
|
||||||
|
|
||||||
ifdef WANT_SHARE_INSTALL
|
ifdef WANT_SHARED_INSTALL
|
||||||
|
|
||||||
#ifdef MAKEFILE_SRC
|
#ifdef MAKEFILE_SRC
|
||||||
#$(info WANT_SOURCE_INSTALL = $(WANT_SOURCE_INSTALL), WANT_SHARE_INSTALL = $(WANT_SHARE_INSTALL))
|
#$(info WANT_SOURCE_INSTALL = $(WANT_SOURCE_INSTALL), WANT_SHARED_INSTALL = $(WANT_SHARED_INSTALL))
|
||||||
#endif
|
#endif
|
||||||
# if $GAMEUID is root, we install into roughly proper Mac locations, otherwise
|
|
||||||
# we install into ~/nethackdir
|
|
||||||
ifeq ($(GAMEUID),root)
|
|
||||||
PREFIX:=/Library/NetHack
|
|
||||||
SHELLDIR=/usr/local/bin
|
|
||||||
HACKDIR=$(PREFIX)/nethackdir
|
|
||||||
CHOWN=chown
|
|
||||||
CHGRP=chgrp
|
|
||||||
# We run sgid so the game has access to both HACKDIR and user preferences.
|
|
||||||
GAMEPERM = 02755
|
|
||||||
else # ! root
|
|
||||||
PREFIX:=/Users/$(GAMEUID)
|
|
||||||
SHELLDIR=$(PREFIX)/bin
|
|
||||||
HACKDIR=$(PREFIX)/Library/NetHack/nethackdir
|
|
||||||
CHOWN=/usr/bin/true
|
|
||||||
CHGRP=/usr/bin/true
|
|
||||||
GAMEPERM = 0500
|
|
||||||
endif # ! root
|
|
||||||
VARFILEPERM = 0664
|
|
||||||
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)
|
||||||
# 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
|
||||||
@@ -409,17 +397,8 @@ PREINSTALL= . sys/unix/hints/macosx.sh user2 $(GAMEUID); \
|
|||||||
else ifdef WANT_SOURCE_INSTALL
|
else ifdef WANT_SOURCE_INSTALL
|
||||||
|
|
||||||
#ifdef MAKEFILE_SRC
|
#ifdef MAKEFILE_SRC
|
||||||
#$(info WANT_SOURCE_INSTALL = $(WANT_SOURCE_INSTALL), WANT_SHARE_INSTALL = $(WANT_SHARE_INSTALL))
|
#$(info WANT_SOURCE_INSTALL = $(WANT_SOURCE_INSTALL), WANT_SHARED_INSTALL = $(WANT_SHARED_INSTALL))
|
||||||
#endif
|
#endif
|
||||||
PREFIX=$(abspath $(NHSROOT))
|
|
||||||
# suppress nethack.sh
|
|
||||||
#SHELLDIR=
|
|
||||||
HACKDIR=$(PREFIX)/playground
|
|
||||||
CHOWN=/usr/bin/true
|
|
||||||
CHGRP=/usr/bin/true
|
|
||||||
GAMEPERM = 0700
|
|
||||||
VARFILEPERM = 0600
|
|
||||||
VARDIRPERM = 0700
|
|
||||||
POSTINSTALL+= sys/unix/hints/macosx.sh editsysconf sys/unix/sysconf $(HACKDIR)/sysconf;
|
POSTINSTALL+= sys/unix/hints/macosx.sh editsysconf sys/unix/sysconf $(HACKDIR)/sysconf;
|
||||||
|
|
||||||
# We can use "make all" to build the whole thing - but it misses some things:
|
# We can use "make all" to build the whole thing - but it misses some things:
|
||||||
@@ -429,17 +408,8 @@ CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
|
|||||||
else # !WANT_SOURCE_INSTALL
|
else # !WANT_SOURCE_INSTALL
|
||||||
|
|
||||||
#ifdef MAKEFILE_SRC
|
#ifdef MAKEFILE_SRC
|
||||||
#$(info WANT_SOURCE_INSTALL = $(WANT_SOURCE_INSTALL), WANT_SHARE_INSTALL = $(WANT_SHARE_INSTALL))
|
#$(info WANT_SOURCE_INSTALL = $(WANT_SOURCE_INSTALL), WANT_SHARED_INSTALL = $(WANT_SHARED_INSTALL))
|
||||||
#endif
|
#endif
|
||||||
PREFIX:=$(wildcard ~)
|
|
||||||
SHELLDIR=$(PREFIX)/bin
|
|
||||||
HACKDIR=$(PREFIX)/nethackdir
|
|
||||||
CHOWN=/usr/bin/true
|
|
||||||
CHGRP=/usr/bin/true
|
|
||||||
GAMEPERM = 0700
|
|
||||||
VARFILEPERM = 0600
|
|
||||||
VARDIRPERM = 0700
|
|
||||||
|
|
||||||
ifdef ($(WANT_DEFAULT),X11)
|
ifdef ($(WANT_DEFAULT),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 || true;
|
PREINSTALL+= cp -n win/X11/nethack.rc ~/.nethackrc || true;
|
||||||
@@ -451,10 +421,7 @@ POSTINSTALL+= sys/unix/hints/macosx.sh editsysconf sys/unix/sysconf $(HACKDIR)/s
|
|||||||
$(CHGRP) $(GAMEGRP) $(HACKDIR)/sysconf; \
|
$(CHGRP) $(GAMEGRP) $(HACKDIR)/sysconf; \
|
||||||
chmod $(VARFILEPERM) $(HACKDIR)/sysconf;
|
chmod $(VARFILEPERM) $(HACKDIR)/sysconf;
|
||||||
|
|
||||||
endif # !WANT_SHARE_INSTALL
|
endif # !WANT_SHARED_INSTALL
|
||||||
|
|
||||||
INSTDIR=$(HACKDIR)
|
|
||||||
VARDIR=$(HACKDIR)
|
|
||||||
|
|
||||||
SYSCONFCREATE = sys/unix/hints/macosx.sh editsysconf sys/unix/sysconf $(HACKDIR)/sysconf
|
SYSCONFCREATE = sys/unix/hints/macosx.sh editsysconf sys/unix/sysconf $(HACKDIR)/sysconf
|
||||||
SYSCONFINSTALL = $(SYSCONFCREATE) && \
|
SYSCONFINSTALL = $(SYSCONFCREATE) && \
|
||||||
|
|||||||
Reference in New Issue
Block a user