On 8/28/25 08:10, Matteo Riondato wrote:


On Aug 27, 2025, at 4:12 PM, John Baldwin <[email protected]> wrote:

The branch main has been updated by jhb:

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

commit 557cc0f350e758a223dffe8bca359de9fc2642b2
Author:     John Baldwin <[email protected]>
AuthorDate: 2025-08-27 20:11:54 +0000
Commit:     John Baldwin <[email protected]>
CommitDate: 2025-08-27 20:11:54 +0000

    bsd.man.mk: Handle MANSRC.{TARGET} for MK_MANCOMPRESS=no and empty 
MANBUILDCAT

    Reviewed by:    kevans
    Fixes:          65f60d715fd9 ("bsd.man.mk: Add a MANSRC.{TARGET} variable")
    Sponsored by:   Chelsio Communications
    Differential Revision:  https://reviews.freebsd.org/D52181
---

This did not fix the breakage of buildworld I reported. I had to disable 
“WITHOUT_MANCOMPRESS=y” from src.conf to make buildworld complete.

Locally for me it fixed libutil++ (which is what you reported), and while I also
tried a library that did not use MANSRC (libutil), something else must be going
on.

Once I’ve done a successful buildworld with “WITHOUT_MANCOMPRESS=y” disabled, I 
tried to buildworld with “WITHOUT_MANCOMPRESS=y” enabled, and it failed again, 
at:

make[3]: don't know how to make apmd.8. Stop

(detailed message below)

I have “WITHOUT_APM=y” in src.conf, so I don’t know why it is trying to build 
ampd.8.

Hmm, that is because of this in usr.sbin/Makefile which I think is quite wrong
(it probably installs the manpage twice on i386 (and possibly in different 
packages?)
which would break pkgbase if we were building packages for i386):

# Add architecture-specific manpages
# to be included anyway
MAN=   apmd/apmd.8 \
       nvram/nvram.8

I tried without specifying “-j50”, with “WITHOUT_MANCOMPRESS=y” enabled, and it 
stopped at:

make[4]: don't know how to make vi.1. Stop

This is similar to the above in that it has a relative pathname with a 
subdirectory:

MAN=    ${SRCDIR}/man/vi.1

Most of the existing logic in bsd.man.mk uses :T, but perhaps the rule this 
commit added
needs to not use :T when defining the target in the !MANSRC case.

The patch below fixes a manual 'make WITHOUT_MANCOMPRESS=yes' in usr.bin/vi in 
a buildenv
for me and I think would fix the apmd.8 case as well.

diff --git a/share/mk/bsd.man.mk b/share/mk/bsd.man.mk
index 768879b64e60..a2c34eff9e3e 100644
--- a/share/mk/bsd.man.mk
+++ b/share/mk/bsd.man.mk
@@ -169,14 +169,16 @@ ${__target}: ${MANSRC.${__page:T}:U${__page}}
 .endfor
 .else
 .for __page in ${${__group}}
+.if defined(MANSRC.${__page:T})
 .for __target in ${__page:T:S/:/\:/g}
 all-man: ${__target}
-.if defined(MANSRC.${__page:T})
 CLEANFILES+=   ${__target}
 ${__target}: ${MANSRC.${__page:T}}
        ${CP} ${.ALLSRC} ${.TARGET}
-.endif
 .endfor
+.else
+all-man: ${__page}
+.endif
 .endfor
 .endif
 .endif

(In a related note, I don't really understand the nested for loops used in much 
of bsd.man.mk,
once you do 'for page in group' page will already be a single word so the 'for 
target in page'
will always just be a single iteration IIUC.  Is it just a convenient way to 
define __target as
a temporary variable?)

--
John Baldwin


Reply via email to