Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Jul 2018 16:11:03 +0000 (UTC)
From:      Brad Davis <brd@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r336640 - head/share/mk
Message-ID:  <201807231611.w6NGB3gh074167@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: brd
Date: Mon Jul 23 16:11:03 2018
New Revision: 336640
URL: https://svnweb.freebsd.org/changeset/base/336640

Log:
  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

Added:
  head/share/mk/bsd.dirs.mk   (contents, props changed)
Modified:
  head/share/mk/bsd.README

Modified: head/share/mk/bsd.README
==============================================================================
--- head/share/mk/bsd.README	Mon Jul 23 15:36:55 2018	(r336639)
+++ head/share/mk/bsd.README	Mon Jul 23 16:11:03 2018	(r336640)
@@ -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
@@ -291,6 +292,18 @@ CFLAGS		Flags to the compiler when creating C objects.
 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

Added: head/share/mk/bsd.dirs.mk
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/mk/bsd.dirs.mk	Mon Jul 23 16:11:03 2018	(r336640)
@@ -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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201807231611.w6NGB3gh074167>