From nobody Wed Jan 03 04:48:19 2024 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4T4cfq5fLyz54cLR; Wed, 3 Jan 2024 04:48:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4T4cfq3zWZz3CJM; Wed, 3 Jan 2024 04:48:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1704257299; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XtKaIL24bcIRtJcNwEjjNtsyBvr7pJaqOfdvVjHyEsw=; b=yUq2HthXI9MH3u+t1xJtqwIzRMHPG9QnhvDwp/8sFj7IvJmC89BPTqjIdSiRTOBlZw6gkG WJhkg2VXR2mm8c5xN5W/dfFtCqXEhpBlEEuNLbLRgK/ARiVIy0dkZTM+lfBSkicvLov2ZE 5xLHqaEAbAziL2vU8UZcScwEcIVpw66fp0UzdqQzn2ok2uLuudvbL0gnPVuSkrZz4KJQxS 35wWRv7INnFveCZf3FDEpcoCnQqI/rkzzSUdMS5QBM3aoakvE1XJf6gajfA78vOf+2S76Q szDkG20YKCMDFubjstSTusp7KqL0hpZu7IKd794vHZtGVAe8/1J1zEdiOzj19A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1704257299; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XtKaIL24bcIRtJcNwEjjNtsyBvr7pJaqOfdvVjHyEsw=; b=JoCXRvJcAZYCV/jU9MFzjtgL6akDq1d0WkMSKMJLSSiTKsW1M4NqipT2fAB3rFizgEcYsy 7esm6j+06KT/bMi/qFHuhy9tt6d7zDvfUouj2s9QCqNO/5cvIRXKVmjR+dGKnmSJqeoXy8 FKcOSA6MXjSmTcpeaUKEPOPOEZLHS/E4RATlnjzEtMC9zeGe5yCytLIb43bmJsWlhAGbdQ mpX4DJdvZaBKX/q0ghqYYtp2GVnxXgJ562mLr7zNoch9THCUQIz7IHw9XLJwfUS3y1Vz9u 0EByaUS8K653nTTmH3xrfN8zk/9Tf2A/3XO1FSwbEzuyv6tnnX5dw59yYuaLoQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1704257299; a=rsa-sha256; cv=none; b=maBG8af6MV1JFbZ62TXTeinKvPRRHHJ0DTUyQSnOWKdZpeC3V+erK9AwkJCTKCNu2GrG+X kd13kDjKUf98JKW0ux8xNeM7wasiANHYhLVpaDwmPP7aNEEP3xtxR3zoxx/mHB0ThfTVjn +nFT1FC6C2W6kbSMv+sAmD3WmtbymIJ+CGZrM9u4ptZ9yQp32pt1fauYGvJfr2icOCnbV5 hiqOKuQvpleAEeJpgXnLcb88AEXZLxIlBSK+F9g1gWzR/2mSZxOGrwp+rclJLiSFVCjmQc MeTfIROHRyjq1n3ljX6jRioYtNBtt25AgjrWxs3v/2n3tuRlP8lofcsyOQs69A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4T4cfq2lczzWvD; Wed, 3 Jan 2024 04:48:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 4034mJaC026089; Wed, 3 Jan 2024 04:48:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 4034mJor026086; Wed, 3 Jan 2024 04:48:19 GMT (envelope-from git) Date: Wed, 3 Jan 2024 04:48:19 GMT Message-Id: <202401030448.4034mJor026086@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 1b959537ed3a - stable/13 - loader: lua: remove the default kernel if it doesn't exist List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 1b959537ed3a8d8dd300c8867fc0e34f062fafa9 Auto-Submitted: auto-generated The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=1b959537ed3a8d8dd300c8867fc0e34f062fafa9 commit 1b959537ed3a8d8dd300c8867fc0e34f062fafa9 Author: Kyle Evans AuthorDate: 2023-12-13 16:52:14 +0000 Commit: Kyle Evans CommitDate: 2024-01-03 04:47:27 +0000 loader: lua: remove the default kernel if it doesn't exist The `kernel` env var provides the default kernel, usually "kernel". It may be the case that the user doesn't have a "kernel" kernel, just "kernel.*" kernels, but have left `kernel` to the default because we autodetect entries by default anyways. If we're doing autodetection, take note of whether the default kernel exists or not and remove it from the list if it doesn't and we had found any other kernels. We avoid it in the #kernels == 1 case because something fishy has likely happened and we should just trust the configuration. Reviewed by: imp, manu Differential Revision: https://reviews.freebsd.org/D42967 (cherry picked from commit d04415c520b031fb8eb93cb252e4acee66149c87) --- stand/lua/core.lua | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/stand/lua/core.lua b/stand/lua/core.lua index 358705ac7ace..747f8c1f0fcf 100644 --- a/stand/lua/core.lua +++ b/stand/lua/core.lua @@ -204,17 +204,18 @@ function core.kernelList() return core.cached_kernels end - local k = loader.getenv("kernel") + local default_kernel = loader.getenv("kernel") local v = loader.getenv("kernels") local autodetect = loader.getenv("kernels_autodetect") or "" local kernels = {} local unique = {} local i = 0 - if k ~= nil then + + if default_kernel then i = i + 1 - kernels[i] = k - unique[k] = true + kernels[i] = default_kernel + unique[default_kernel] = true end if v ~= nil then @@ -242,6 +243,8 @@ function core.kernelList() return core.cached_kernels end + local present = {} + -- Automatically detect other bootable kernel directories using a -- heuristic. Any directory in /boot that contains an ordinary file -- named "kernel" is considered eligible. @@ -270,8 +273,25 @@ function core.kernelList() unique[file] = true end + present[file] = true + ::continue:: end + + -- If we found more than one kernel, prune the "kernel" specified kernel + -- off of the list if it wasn't found during traversal. If we didn't + -- actually find any kernels, we just assume that they know what they're + -- doing and leave it alone. + if default_kernel and not present[default_kernel] and #kernels > 1 then + for i = 1, #kernels do + if i == #kernels then + kernels[i] = nil + else + kernels[i] = kernels[i + 1] + end + end + end + core.cached_kernels = kernels return core.cached_kernels end