svn commit: r336640 - head/share/mk
Ian Lepore
ian at freebsd.org
Mon Jul 23 16:22:02 UTC 2018
On Mon, 2018-07-23 at 16:11 +0000, Brad Davis wrote:
> 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(____)
> +____:
> +# List of directory variable names to install. Each variable name's value
> +# must be a full path. If non-default permissions are desired, _MODE,
> +# _OWN, and _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
>
Having a variable named DIRS seems like asking for name clashes with
peoples' existing makefiles (people do use the freebsd build
infrastructure to build out-of-tree code). Could it be named maybe
CREATEDIRS (taking a precedent-clue from CLEANDIRS)?
-- Ian
More information about the svn-src-all
mailing list