On 7/23/18 9:11 AM, 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(__<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}
This echo is funky. Seems like it wanted to display the actual dirname rather than the internal variable name for it, but it's also just not needed since there's an INSTALL on the next line that shows. > ~/git/freebsd/secure/usr.sbin/sshd # make install DESTDIR=/tmp/blah > install -s -o root -g wheel -m 555 sshd /tmp/blah/usr/sbin/sshd > install -o root -g wheel -m 444 sshd.debug > /tmp/blah/usr/lib/debug/usr/sbin/sshd.debug > installing DIRS CONFSDIR > install -d -m 0755 -o root -g wheel /tmp/blah/etc/ssh > install -o root -g wheel -m 444 sshd.8.gz /tmp/blah/usr/share/man/man8/ > install -o root -g wheel -m 444 sshd_config.5.gz > /tmp/blah/usr/share/man/man5/ ... > + ${INSTALL} ${${dir}TAG_ARGS} -d -m ${${dir}_MODE} -o ${${dir}_OWN} \ > + -g ${${dir}_GRP} ${${dir}_FLAG} ${DESTDIR}${${dir}} > +. endif > + > +realinstall: installdirs-${dir} > +. endfor > + > +.endif > -- Regards, Bryan Drewery
signature.asc
Description: OpenPGP digital signature