[Midnightbsd-cvs] src [8974] trunk: allow LOCAL_DIRS to install files in directories not found in the system mtree.
laffer1 at midnightbsd.org
laffer1 at midnightbsd.org
Thu Sep 29 13:36:54 EDT 2016
Revision: 8974
http://svnweb.midnightbsd.org/src/?rev=8974
Author: laffer1
Date: 2016-09-29 13:36:54 -0400 (Thu, 29 Sep 2016)
Log Message:
-----------
allow LOCAL_DIRS to install files in directories not found in the system mtree. tweak mtree
Modified Paths:
--------------
trunk/Makefile.inc1
trunk/etc/Makefile
Modified: trunk/Makefile.inc1
===================================================================
--- trunk/Makefile.inc1 2016-09-29 17:33:54 UTC (rev 8973)
+++ trunk/Makefile.inc1 2016-09-29 17:36:54 UTC (rev 8974)
@@ -12,8 +12,12 @@
# -DNO_KERNELOBJ do not run ${MAKE} obj in ${MAKE} buildkernel
# -DNO_PORTSUPDATE do not update ports in ${MAKE} update
# -DNO_DOCUPDATE do not update doc in ${MAKE} update
+# -DDB_FROM_SRC use the user/group databases in src/etc instead of
+# the system database when installing.
# -DNO_CTF do not run the DTrace CTF conversion tools on built objects
# LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list
+# LOCAL_MTREE="list of mtree files" to process to allow local directories
+# to be created before files are installed
# TARGET="machine" to crossbuild world for a different machine type
# TARGET_ARCH= may be required when a TARGET supports multiple endians
@@ -319,12 +323,13 @@
-DWITHOUT_BIND -DWITHOUT_MAN -DWITHOUT_INFO \
-DWITHOUT_HTML -DNO_CTF -DNO_LINT -ECC -ECXX -EAS -ELD \
DESTDIR=${LIB32TMP}
-LIB32IMAKE= ${LIB32WMAKE:NINSTALL=*:NDESTDIR=*:N_LDSCRIPTROOT=*} -DNO_INCS
+LIB32IMAKE= ${LIB32WMAKE:NINSTALL=*:NDESTDIR=*:N_LDSCRIPTROOT=*} -DNO_INCS \
+ ${IMAKE_INSTALL}
.endif
-# install stage
IMAKEENV= ${CROSSENV:N_LDSCRIPTROOT=*}
-IMAKE= ${IMAKEENV} ${MAKE} -f Makefile.inc1
+IMAKE= ${IMAKEENV} ${MAKE} -f Makefile.inc1 \
+ ${IMAKE_INSTALL} ${IMAKE_MTREE}
.if empty(.MAKEFLAGS:M-n)
IMAKEENV+= PATH=${STRICTTMPPATH}:${INSTALLTMP} \
LD_LIBRARY_PATH=${INSTALLTMP} \
@@ -333,6 +338,10 @@
.else
IMAKEENV+= PATH=${TMPPATH}:${INSTALLTMP}
.endif
+.if defined(DB_FROM_SRC)
+IMAKE_INSTALL= INSTALL="install -N ${.CURDIR}/etc"
+IMAKE_MTREE= MTREE_CMD="nmtree -N ${.CURDIR}/etc"
+.endif
# kernel stage
KMAKEENV= ${WMAKEENV}
@@ -388,6 +397,9 @@
mtree -deU -f ${.CURDIR}/etc/mtree/BIND.include.dist \
-p ${WORLDTMP}/usr/include >/dev/null
.endif
+.for _mtree in ${LOCAL_MTREE}
+ mtree -deU -f ${.CURDIR}/${_mtree} -p ${WORLDTMP} > /dev/null
+.endfor
_legacy:
@echo
@echo "--------------------------------------------------------------"
@@ -573,9 +585,11 @@
installcheck:
#
-# Require DESTDIR to be set if installing for a different architecture.
+# Require DESTDIR to be set if installing for a different architecture or
+# using the user/group database in the source tree.
#
-.if ${TARGET_ARCH} != ${MACHINE_ARCH} || ${TARGET} != ${MACHINE}
+.if ${TARGET_ARCH} != ${MACHINE_ARCH} || ${TARGET} != ${MACHINE} || \
+ defined(DB_FROM_SRC)
.if !make(distributeworld)
installcheck: installcheck_DESTDIR
installcheck_DESTDIR:
@@ -586,6 +600,7 @@
.endif
.endif
+.if !defined(DB_FROM_SRC)
#
# Check for missing UIDs/GIDs.
#
@@ -613,6 +628,7 @@
false; \
fi
.endfor
+.endif
#
# Required install tools to be saved in a scratch dir for safety.
@@ -624,10 +640,14 @@
_zoneinfo= zic tzsetup
.endif
+.if exists(/usr/sbin/nmtree)
+_nmtree_itools= nmtree
+.endif
+
ITOOLS= [ awk cap_mkdb cat chflags chmod chown \
date echo egrep find grep ${_install-info} \
- ln lockf make mkdir mtree mv pwd_mkdb rm sed sh sysctl \
- test true uname wc ${_zoneinfo}
+ ln lockf make mkdir mtree ${_nmtree_itools} mv pwd_mkdb \
+ rm sed sh sysctl test true uname wc ${_zoneinfo}
#
# distributeworld
@@ -682,7 +702,7 @@
.endfor
-mkdir ${DESTDIR}/${DISTDIR}/base
${_+_}cd ${.CURDIR}; ${IMAKE} distrib-dirs \
- DESTDIR=${DESTDIR}/${DISTDIR}/base
+ LOCAL_MTREE=${LOCAL_MTREE} DESTDIR=${DESTDIR}/${DISTDIR}/base
.endif
${_+_}cd ${.CURDIR}; ${IMAKE} re${.TARGET:S/world$//}; \
${IMAKEENV} rm -rf ${INSTALLTMP}
@@ -709,7 +729,8 @@
@echo "--------------------------------------------------------------"
@echo ">>> Making hierarchy"
@echo "--------------------------------------------------------------"
- ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 hierarchy
+ ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 \
+ LOCAL_MTREE=${LOCAL_MTREE} hierarchy
@echo
@echo "--------------------------------------------------------------"
@echo ">>> Installing everything"
@@ -730,7 +751,8 @@
.endif
distrib-dirs distribution:
- cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} ${.TARGET}
+ cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} \
+ ${IMAKE_INSTALL} ${IMAKE_MTREE} ${.TARGET}
#
# buildkernel and installkernel
@@ -878,7 +900,7 @@
@echo "--------------------------------------------------------------"
cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \
${CROSSENV} PATH=${TMPPATH} \
- ${MAKE} KERNEL=${INSTKERNNAME} ${.TARGET:S/kernel//}
+ ${MAKE} ${IMAKE_INSTALL} KERNEL=${INSTKERNNAME} ${.TARGET:S/kernel//}
distributekernel distributekernel.debug:
.if empty(INSTALLKERNEL)
@@ -1035,6 +1057,12 @@
usr.bin/yacc
.endif
+.if ${BOOTSTRAPPING} < 9002
+_nmtree= lib/libnetbsd \
+ usr.sbin/nmtree
+.endif
+
+
.if ${MK_BSNMP} != "no" && \
(${BOOTSTRAPPING} < 4015 || !exists(/usr/sbin/gensnmptree))
_gensnmptree= usr.sbin/bsnmpd/gensnmptree
@@ -1090,7 +1118,8 @@
usr.bin/xinstall \
${_gensnmptree} \
usr.sbin/config \
- ${_crunchgen}
+ ${_crunchgen} \
+ ${_nmtree}
${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \
cd ${.CURDIR}/${_tool}; \
${MAKE} DIRPRFX=${_tool}/ obj; \
@@ -1212,7 +1241,7 @@
# hierarchy - ensure that all the needed directories are present
#
hierarchy:
- cd ${.CURDIR}/etc; ${MAKE} distrib-dirs
+ cd ${.CURDIR}/etc; ${MAKE} LOCAL_MTREE=${LOCAL_MTREE} distrib-dirs
#
# libraries - build all libraries, and install them under ${DESTDIR}.
Modified: trunk/etc/Makefile
===================================================================
--- trunk/etc/Makefile 2016-09-29 17:33:54 UTC (rev 8973)
+++ trunk/etc/Makefile 2016-09-29 17:36:54 UTC (rev 8974)
@@ -289,26 +289,39 @@
${DESTDIR}/etc/nsswitch.conf
.endif
-distrib-dirs:
- mtree -eU ${MTREE_FOLLOWS_SYMLINKS} -f ${.CURDIR}/mtree/BSD.root.dist -p ${DESTDIR}/
- mtree -eU ${MTREE_FOLLOWS_SYMLINKS} -f ${.CURDIR}/mtree/BSD.var.dist -p ${DESTDIR}/var
- mtree -eU ${MTREE_FOLLOWS_SYMLINKS} -f ${.CURDIR}/mtree/BSD.usr.dist -p ${DESTDIR}/usr
- mtree -eU ${MTREE_FOLLOWS_SYMLINKS} -f ${.CURDIR}/mtree/BSD.include.dist \
- -p ${DESTDIR}/usr/include
+MTREE_CMD?= mtree
+
+MTREES= mtree/BSD.root.dist / \
+ mtree/BSD.var.dist /var \
+ mtree/BSD.usr.dist /usr \
+ mtree/BSD.include.dist /usr/include
.if ${MK_BIND_LIBS} != "no"
- mtree -deU ${MTREE_FOLLOWS_SYMLINKS} -f ${.CURDIR}/mtree/BIND.include.dist \
- -p ${DESTDIR}/usr/include
+MTREES+= mtree/BIND.include.dist /usr/include
.endif
.if ${MK_BIND_MTREE} != "no"
- mtree -deU ${MTREE_FOLLOWS_SYMLINKS} -f ${.CURDIR}/mtree/BIND.chroot.dist \
- -p ${DESTDIR}/var/named
+MTREES+= mtree/BIND.chroot.dist /var/named
.endif
.if ${MK_GROFF} != "no"
- mtree -deU ${MTREE_FOLLOWS_SYMLINKS} -f ${.CURDIR}/mtree/BSD.groff.dist -p ${DESTDIR}/usr
+MTREES+= mtree/BSD.groff.dist /usr
.endif
.if ${MK_SENDMAIL} != "no"
- mtree -deU ${MTREE_FOLLOWS_SYMLINKS} -f ${.CURDIR}/mtree/BSD.sendmail.dist -p ${DESTDIR}/
+MTREES+= mtree/BSD.sendmail.dist /
.endif
+.for mtree in ${LOCAL_MTREE}
+MTREES+= ../${mtree} /
+.endfor
+
+distrib-dirs:
+ @set ${MTREES}; \
+ while test $$# -ge 2; do \
+ m=${.CURDIR}/$$1; \
+ shift; \
+ d=${DESTDIR}$$1; \
+ shift; \
+ ${ECHO} ${MTREE_CMD} -deU ${MTREE_FOLLOWS_SYMLINKS} \
+ -f $$m -p $$d; \
+ ${MTREE_CMD} -deU ${MTREE_FOLLOWS_SYMLINKS} -f $$m -p $$d; \
+ done; true
cd ${DESTDIR}/; rm -f ${DESTDIR}/sys; ln -s usr/src/sys sys
cd ${DESTDIR}/usr/share/man/en.ISO8859-1; ln -sf ../man* .
cd ${DESTDIR}/usr/share/man/en.UTF-8; ln -sf ../man* .
More information about the Midnightbsd-cvs
mailing list