Makefile.inc1: Fix INSTALLEXTRAKERNELS for one-kernel case

If BUILDKERNELS contains a single kernel, and NO_INSTALLEXTRAKERNELS=no,
then ${BUILDKERNELS:[2..-1]} returns the first kernel in the list and
that kernel ends up in both INSTALLKERNEL and INSTALLEXTRAKERNELS.

This breaks the package build because it means we generate that package
twice, once with an incorrect install path of /boot/kernel.NAME instead
of /boot/kernel.

Only set INSTALLEXTRAKERNELS if we're building at least two kernels.

Fixes:	2c0e9a76c1 ("Makefile.inc1: Make NO_INSTALLKERNEL less of a hack")
Reviewed by:	jrtc27
Sponsored by:	https://www.patreon.com/bsdivy
Differential Revision:	https://reviews.freebsd.org/D54539
This commit is contained in:
Lexi Winter
2026-01-06 01:48:04 +00:00
parent f224591746
commit 0b298e314a
+3 -1
View File
@@ -1844,10 +1844,12 @@ NO_INSTALLEXTRAKERNELS?= no
.if ${NO_INSTALLEXTRAKERNELS} != "yes"
.if defined(NO_INSTALLKERNEL)
INSTALLEXTRAKERNELS= ${BUILDKERNELS}
.else
.elif ${BUILDKERNELS:[#]} > 1
# First kernel is installed separately by INSTALLKERNEL, typically to
# /boot/kernel, rather than to a config-suffixed directory.
INSTALLEXTRAKERNELS= ${BUILDKERNELS:[2..-1]}
.else
INSTALLEXTRAKERNELS=
.endif
.endif