Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 Nov 2023 20:53:00 GMT
From:      "Simon J. Gerraty" <sjg@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 0a45a7e99fc3 - main - Fix share/zoneinfo for DIRDEPS_BUILD
Message-ID:  <202311202053.3AKKr0kW074287@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by sjg:

URL: https://cgit.FreeBSD.org/src/commit/?id=0a45a7e99fc3061e91732ad88671721e95082d5e

commit 0a45a7e99fc3061e91732ad88671721e95082d5e
Author:     Simon J. Gerraty <sjg@FreeBSD.org>
AuthorDate: 2023-11-20 20:51:25 +0000
Commit:     Simon J. Gerraty <sjg@FreeBSD.org>
CommitDate: 2023-11-20 20:52:43 +0000

    Fix share/zoneinfo for DIRDEPS_BUILD
    
    The tranditional build makes multiple passes through the tree.
    The DIRDEPS_BUILD visits each directory only once per architecture,
    thus makefiles should be able to everything they need in a single pass.
    
    The use of TZS!= when doing make(*install*)
    only works if the directory has previously been visited to do zoneinfo
    since before the zoneinfo target is run TZS will be empty.
    
    To fix this, have the zoneinfo target capture the list of files to
    zoneinfo, and install-zoneinfo use that list.
    Rename that target to zonefiles - since that is now what it does.
    
    This is more efficient - we only gather the list of zones when it is
    likely to have changed, and allows the makefile to do everything in a
    single pass.
    
    Reviewed by:    stevek
    Differential Revision:  https://reviews.freebsd.org/D42624
---
 share/zoneinfo/Makefile        | 28 +++++++++++-----------------
 share/zoneinfo/Makefile.depend |  1 -
 2 files changed, 11 insertions(+), 18 deletions(-)

diff --git a/share/zoneinfo/Makefile b/share/zoneinfo/Makefile
index 60ae1f76f5b5..d4b37ce991aa 100644
--- a/share/zoneinfo/Makefile
+++ b/share/zoneinfo/Makefile
@@ -78,9 +78,9 @@ TZBUILDSUBDIRS=	\
 TZBUILDSUBDIRS+= US Mexico Chile Canada Brazil
 
 .if !defined(_SKIP_BUILD)
-all: zoneinfo
+all: zonefiles
 .endif
-META_TARGETS+=	zoneinfo install-zoneinfo
+META_TARGETS+=	zonefiles install-zoneinfo
 
 #
 # Produce “fat” zoneinfo files for backward compatibility.
@@ -89,33 +89,27 @@ ZICFLAGS?=	-b fat
 
 .if ${MK_DIRDEPS_BUILD} == "yes"
 ZIC= ${STAGE_HOST_OBJTOP}/usr/sbin/zic
+# we do everything in a single visit
+install-zoneinfo: zonefiles
 .endif
 
-zoneinfo: ${TDATA}
+zonefiles: ${TDATA}
 	mkdir -p ${TZBUILDDIR}
 	(cd ${TZBUILDDIR}; mkdir -p ${TZBUILDSUBDIRS})
 	(umask 022; cd ${.CURDIR}; \
 	${ZIC:Uzic} -D -d ${TZBUILDDIR} ${ZICFLAGS} -m ${NOBINMODE} \
 	    ${LEAPFILE} ${TZFILES})
-
-#
-# Sort TZS to ensure they are the same every build. find -s might
-# be a shorter way to express this, but it's non-portable. Any
-# differences between the two don't matter for this purpose.
-#
-.if make(*install*)
-TZS!= cd ${TZBUILDDIR} && find * -type f | LC_ALL=C sort
-.endif
+	(cd ${TZBUILDDIR} && find * -type f | LC_ALL=C sort) > ${.TARGET}
 
 beforeinstall: install-zoneinfo
 install-zoneinfo:
 	mkdir -p ${DESTDIR}/usr/share/zoneinfo
 	(cd ${DESTDIR}/usr/share/zoneinfo;  mkdir -p ${TZBUILDSUBDIRS})
-.for f in ${TZS}
-	${INSTALL} ${TAG_ARGS} \
-	    -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \
-	    ${TZBUILDDIR}/${f} ${DESTDIR}/usr/share/zoneinfo/${f}
-.endfor
+	for f in `cat zonefiles`; do \
+		${INSTALL} ${TAG_ARGS} \
+		    -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \
+		    ${TZBUILDDIR}/$${f} ${DESTDIR}/usr/share/zoneinfo/$${f}; \
+	done
 	${INSTALL} ${TAG_ARGS} -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \
 	    ${CONTRIBDIR}/zone.tab ${DESTDIR}/usr/share/zoneinfo/
 	${INSTALL} ${TAG_ARGS} -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \
diff --git a/share/zoneinfo/Makefile.depend b/share/zoneinfo/Makefile.depend
index 777ef7ba01c5..141855c83ab0 100644
--- a/share/zoneinfo/Makefile.depend
+++ b/share/zoneinfo/Makefile.depend
@@ -1,7 +1,6 @@
 # Autogenerated - do NOT edit!
 
 DIRDEPS = \
-	usr.bin/xinstall.host \
 	usr.sbin/zic.host \
 
 



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