git: df90aeac24c9 - main - Fix build with -DNO_ROOT

From: Fernando Apesteguía <fernape_at_FreeBSD.org>
Date: Fri, 26 Nov 2021 11:52:24 UTC
The branch main has been updated by fernape (doc, ports committer):

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

commit df90aeac24c9d3621f294e6638a31499b56f4f6b
Author:     Fernando Apesteguía <fernape@FreeBSD.org>
AuthorDate: 2021-11-26 10:55:50 +0000
Commit:     Fernando Apesteguía <fernape@FreeBSD.org>
CommitDate: 2021-11-26 11:51:08 +0000

    Fix build with -DNO_ROOT
    
    The inclusion of 0a0f7486413c broke the build with the -DNO_ROOT option.
    Specifically, that commit adds some relative paths (with `..`) to METALOG
    that make other tools using that log, fail afterwards (tar, makefs...).
    
    It's been argued[1] if this is really something mtree(8) should handle more
    graciously. In the meantime, fix the breakage but changing the order in which
    the links are created: first in the parent directory, then in the
    architecture-specific one.
    
    We keep the architecture-specific directories an the links to the parent
    directories. This is something that we might want to change in the future.
    
    This commit is based on a concept patch by avg@.
    
    [1] https://lists.freebsd.org/archives/dev-commits-src-all/2021-November/index.html
    
    Reported by: bapt@, emaste@
    Approved by: avg@
    Fixes: 0a0f7486413c
    Differential Revision: https://reviews.freebsd.org/D33126
---
 share/man/man4/man4.aarch64/Makefile | 26 ++++++++++++++++----------
 share/man/man4/man4.arm/Makefile     | 10 ++++++----
 share/man/man4/man4.i386/Makefile    | 10 ++++++----
 share/man/man4/man4.powerpc/Makefile | 10 ++++++----
 usr.sbin/Makefile.amd64              |  5 +++++
 usr.sbin/apm/Makefile                |  4 ----
 6 files changed, 39 insertions(+), 26 deletions(-)

diff --git a/share/man/man4/man4.aarch64/Makefile b/share/man/man4/man4.aarch64/Makefile
index 6d0e427e6b28..d1fbced3b0a8 100644
--- a/share/man/man4/man4.aarch64/Makefile
+++ b/share/man/man4/man4.aarch64/Makefile
@@ -4,6 +4,17 @@
 
 MAN=	\
 	armv8crypto.4 \
+	enetc.4 \
+	felix.4 \
+	rk_gpio.4 \
+	rk_grf.4 \
+	rk_i2c.4 \
+	rk_pinctrl.4 \
+
+# Install manpages shared with arm only if not installing manpages
+# for all architectures, otherwise arm takes care of installing them.
+.if !empty(MAN_ARCH) && ${MAN_ARCH} != "all"
+MAN+=	\
 	aw_gpio.4 \
 	aw_mmc.4 \
 	aw_rtc.4 \
@@ -11,18 +22,13 @@ MAN=	\
 	aw_spi.4 \
 	aw_syscon.4 \
 	bcm283x_pwm.4 \
-	enetc.4 \
-	felix.4 \
-	rk_gpio.4 \
-	rk_grf.4 \
-	rk_i2c.4 \
-	rk_pinctrl.4 \
 
-# Link files to the parent directory
+.endif
+
+# Link files to the architecture directory.
+_ARCH_SUBDIR=aarch64
 .for _manpage in ${MAN}
-MLINKS+=${_manpage} ../${_manpage}
+MLINKS+=${_manpage} ${_ARCH_SUBDIR}/${_manpage}
 .endfor
 
-MANSUBDIR=/aarch64
-
 .include <bsd.prog.mk>
diff --git a/share/man/man4/man4.arm/Makefile b/share/man/man4/man4.arm/Makefile
index 2ac8dbb5fd81..76146f4ebdb7 100644
--- a/share/man/man4/man4.arm/Makefile
+++ b/share/man/man4/man4.arm/Makefile
@@ -18,11 +18,13 @@ MAN=	\
 MLINKS= imx_wdog.4 imxwdt.4
 MLINKS+= mge.4 if_mge.4
 
-# Link files to the parent directory
+# Link files to the architecture directory
+_ARCH_SUBDIR=arm
+.for _manpage _link in ${MLINKS}
+MLINKS+=${_link} ${_ARCH_SUBDIR}/${_link}
+.endfor
 .for _manpage in ${MAN}
-MLINKS+=${_manpage} ../${_manpage}
+MLINKS+=${_manpage} ${_ARCH_SUBDIR}/${_manpage}
 .endfor
 
-MANSUBDIR=/arm
-
 .include <bsd.prog.mk>
diff --git a/share/man/man4/man4.i386/Makefile b/share/man/man4/man4.i386/Makefile
index e3d2e66ca78d..3dfc5f151f9f 100644
--- a/share/man/man4/man4.i386/Makefile
+++ b/share/man/man4/man4.i386/Makefile
@@ -21,11 +21,13 @@ MLINKS=	CPU_ELAN.4 CPU_SOEKRIS.4
 MLINKS+=pae.4 PAE.4
 MLINKS+=sbni.4 if_sbni.4
 
-# Link files to the parent directory
+# Link files to the architecture directory
+_ARCH_SUBDIR=i386
+.for _manpage _link in ${MLINKS}
+MLINKS+=${_link} ${_ARCH_SUBDIR}/${_link}
+.endfor
 .for _manpage in ${MAN}
-MLINKS+=${_manpage} ../${_manpage}
+MLINKS+=${_manpage} ${_ARCH_SUBDIR}/${_manpage}
 .endfor
 
-MANSUBDIR=/i386
-
 .include <bsd.prog.mk>
diff --git a/share/man/man4/man4.powerpc/Makefile b/share/man/man4/man4.powerpc/Makefile
index aa0e137fcedd..e6ade9778db3 100644
--- a/share/man/man4/man4.powerpc/Makefile
+++ b/share/man/man4/man4.powerpc/Makefile
@@ -15,11 +15,13 @@ MAN=	adb.4 \
 	snd_davbus.4 \
 	tsec.4
 
-# Link files to the parent directory
+# Link files to the architecture directory
+_ARCH_SUBDIR=powerpc
+.for _manpage _link in ${MLINKS}
+MLINKS+=${_link} ${_ARCH_SUBDIR}/${_link}
+.endfor
 .for _manpage in ${MAN}
-MLINKS+=${_manpage} ../${_manpage}
+MLINKS+=${_manpage} ${_ARCH_SUBDIR}/${_manpage}
 .endfor
 
-MANSUBDIR=/powerpc
-
 .include <bsd.prog.mk>
diff --git a/usr.sbin/Makefile.amd64 b/usr.sbin/Makefile.amd64
index d4d185414f41..1f15259eb1ac 100644
--- a/usr.sbin/Makefile.amd64
+++ b/usr.sbin/Makefile.amd64
@@ -2,11 +2,16 @@
 
 # mptable: broken (not 64 bit clean)
 # pnpinfo: crashes (not really useful anyway)
+_ARCH_SUBDIR=amd64
 .if ${MK_ACPI} != "no"
 SUBDIR+=	acpi
 .endif
 .if ${MK_APM} != "no"
 SUBDIR+=	apm
+# Link files to the architecture directory
+.for _manpage in ${:!/bin/sh -c "/bin/ls ${_ARCH_SUBDIR}/.8"!:E}
+MLINKS+=${_manpage} ${_ARCH_SUBDIR}/${_manpage}
+.endfor
 .endif
 .if ${MK_BHYVE} != "no"
 SUBDIR+=	bhyve
diff --git a/usr.sbin/apm/Makefile b/usr.sbin/apm/Makefile
index 27fa0c37d5cf..f52453c62522 100644
--- a/usr.sbin/apm/Makefile
+++ b/usr.sbin/apm/Makefile
@@ -5,10 +5,6 @@ MAN=	apm.8
 MLINKS=	apm.8 apmconf.8
 MANSUBDIR= /${MACHINE_CPUARCH}
 
-# Link files to the parent directory
-MLINKS+= apm.8 ../apm.8
-MLINKS+= apmconf.8 ../apmconf.8
-
 PACKAGE=apm
 
 .include <bsd.prog.mk>