Re: git: fc43a1b6842a - stable/14 - tzsetup: symlink /etc/localtime instead of copying

From: Herbert J. Skuhra <herbert_at_gojira.at>
Date: Fri, 30 Aug 2024 07:04:04 UTC
On Tue, 27 Aug 2024 10:09:00 +0200, "Herbert J. Skuhra" wrote:
> 
> On Thu, 08 Aug 2024 06:35:38 +0200, "Sean C. Farley" wrote:
> > 
> > On Thu, 1 Aug 2024, Ed Maste wrote:
> > 
> > > The branch stable/14 has been updated by emaste:
> > > 
> > > URL: https://cgit.FreeBSD.org/src/commit/?id=fc43a1b6842afa806dfd7ba48de5bece63d04456
> > > 
> > > commit fc43a1b6842afa806dfd7ba48de5bece63d04456
> > > Author:     Ed Maste <emaste@FreeBSD.org>
> > > AuthorDate: 2022-10-14 16:44:35 +0000
> > > Commit:     Ed Maste <emaste@FreeBSD.org>
> > > CommitDate: 2024-08-01 15:11:45 +0000
> > > 
> > >    tzsetup: symlink /etc/localtime instead of copying
> > > 
> > >    Using a symlink means that new timezone data (installed by an errata
> > >    update, say) will be usable without having to be copied again.
> > > 
> > >    Reviewed by:    bapt, kevans, philip
> > >    Sponsored by:   The FreeBSD Foundation
> > >    Differential Revision: https://reviews.freebsd.org/D37005
> > > 
> > >    (cherry picked from commit 5e16809c953f4cd19fadb1767469dec319de0353)
> > 
> > I ran across an issue with this when using "etcupdate -D" to update a
> > jail from the host.  "tzsetup -r -C /tmp/chroot", as called by
> > etcupdate, prepends the path of the chroot to the link which breaks
> > things inside the jail.
> 
> I have this issue whenerver I update jails with 'make installworld
> DESTDIR=$X'. Will this be fixed or reverted (at least) in stable/14?
> Or works as expected? 

Maybe:

diff --git a/usr.sbin/tzsetup/tzsetup.c b/usr.sbin/tzsetup/tzsetup.c
index 617de4efb765..38d7ccf5e00c 100644
--- a/usr.sbin/tzsetup/tzsetup.c
+++ b/usr.sbin/tzsetup/tzsetup.c
@@ -884,7 +884,7 @@ main(int argc, char **argv)
        } else {
                sprintf(path_zonetab, "%s/%s", chrootenv, _PATH_ZONETAB);
                sprintf(path_iso3166, "%s/%s", chrootenv, _PATH_ISO3166);
-               sprintf(path_zoneinfo, "%s/%s", chrootenv, _PATH_ZONEINFO);
+               sprintf(path_zoneinfo, "%s", _PATH_ZONEINFO);
                sprintf(path_localtime, "%s/%s", chrootenv, _PATH_LOCALTIME);
                sprintf(path_db, "%s/%s", chrootenv, _PATH_DB);
                sprintf(path_wall_cmos_clock, "%s/%s", chrootenv,


--
Herbert