From owner-svn-src-all@freebsd.org Mon Jul 23 16:22:02 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 979F5104F660 for ; Mon, 23 Jul 2018 16:22:02 +0000 (UTC) (envelope-from ian@freebsd.org) Received: from pmta2.delivery6.ore.mailhop.org (pmta2.delivery6.ore.mailhop.org [54.200.129.228]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1F24C83932 for ; Mon, 23 Jul 2018 16:22:01 +0000 (UTC) (envelope-from ian@freebsd.org) X-MHO-RoutePath: aGlwcGll X-MHO-User: 86286fa7-8e94-11e8-904b-1d2e466b3c59 X-Report-Abuse-To: https://support.duocircle.com/support/solutions/articles/5000540958-duocircle-standard-smtp-abuse-information X-Originating-IP: 67.177.211.60 X-Mail-Handler: DuoCircle Outbound SMTP Received: from ilsoft.org (unknown [67.177.211.60]) by outbound2.ore.mailhop.org (Halon) with ESMTPSA id 86286fa7-8e94-11e8-904b-1d2e466b3c59; Mon, 23 Jul 2018 16:21:59 +0000 (UTC) Received: from rev (rev [172.22.42.240]) by ilsoft.org (8.15.2/8.15.2) with ESMTP id w6NGLxul013374; Mon, 23 Jul 2018 10:21:59 -0600 (MDT) (envelope-from ian@freebsd.org) Message-ID: <1532362918.1344.145.camel@freebsd.org> Subject: Re: svn commit: r336640 - head/share/mk From: Ian Lepore To: Brad Davis , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Date: Mon, 23 Jul 2018 10:21:58 -0600 In-Reply-To: <201807231611.w6NGB3gh074167@repo.freebsd.org> References: <201807231611.w6NGB3gh074167@repo.freebsd.org> Content-Type: text/plain; charset="ISO-8859-1" X-Mailer: Evolution 3.18.5.1 FreeBSD GNOME Team Port Mime-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jul 2018 16:22:02 -0000 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