Add the initial DIRS infrastructure for creating directories with the

necessary owner, group, mode and flags.

Approved by:	bapt (mentor)
Differential Revision:	https://reviews.freebsd.org/D16405
This commit is contained in:
Brad Davis 2018-07-23 16:11:03 +00:00
parent 2559473944
commit a9e8c5c4b0
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=336640
2 changed files with 55 additions and 0 deletions

View File

@ -22,6 +22,7 @@ bsd.confs.mk - install of configuration files
bsd.cpu.mk - sets CPU/arch-related variables (included from sys.mk)
bsd.crunchgen.mk - building crunched binaries using crunchgen(1)
bsd.dep.mk - handle Makefile dependencies
bsd.dirs.mk - handle directory creation
bsd.doc.mk - building troff system documents
bsd.endian.mk - TARGET_ENDIAN=1234(little) or 4321 (big) for target
bsd.files.mk - install of general purpose files
@ -292,6 +293,18 @@ CLEANDIRS Additional files (CLEANFILES) and directories (CLEANDIRS) to
CLEANFILES remove during clean and cleandir targets. "rm -rf" and
"rm -f" are used, respectively.
DIRS A list of variables referring to directories. For example:
DIRS+= FOO
FOO= /usr/share/foo
Owner, Group, Mode and Flags are handled by FOO_OWN,
FOO_GRP, FOO_MODE and FOO_FLAGS, respectively.
This allows FILESDIR to be set to FOO, and the directory
will be created before the files are installed and the
dependencies will be set correctly.
DPADD Additional dependencies for the program. Usually used for
libraries. For example, to depend on the compatibility and
utility libraries use:

42
share/mk/bsd.dirs.mk Normal file
View File

@ -0,0 +1,42 @@
# $FreeBSD$
#
# Directory permissions management.
.if !target(__<bsd.dirs.mk>__)
__<bsd.dirs.mk>__:
# List of directory variable names to install. Each variable name's value
# must be a full path. If non-default permissions are desired, <DIR>_MODE,
# <DIR>_OWN, and <DIR>_GRP may be specified.
DIRS?=
. for dir in ${DIRS:O:u}
. if defined(${dir}) && !empty(${dir})
# Set default permissions for a directory
${dir}_MODE?= 0755
${dir}_OWN?= root
${dir}_GRP?= wheel
. if defined(${dir}_FLAGS) && !empty(${dir}_FLAGS)
${dir}_FLAG= -f ${${dir}_FLAGS}
. endif
. if defined(NO_ROOT)
. if !defined(${dir}TAGS) || ! ${${dir}TAGS:Mpackage=*}
${dir}TAGS+= package=${${dir}PACKAGE:Uruntime}
. endif
${dir}TAG_ARGS= -T ${${dir}TAGS:[*]:S/ /,/g}
. endif
installdirs: installdirs-${dir}
installdirs-${dir}: ${DESTDIR}${${dir}}
${DESTDIR}${${dir}}:
@${ECHO} installing DIRS ${dir}
${INSTALL} ${${dir}TAG_ARGS} -d -m ${${dir}_MODE} -o ${${dir}_OWN} \
-g ${${dir}_GRP} ${${dir}_FLAG} ${DESTDIR}${${dir}}
. endif
realinstall: installdirs-${dir}
. endfor
.endif