util-linux: hack: add withPatches passthru

TODO (#409339): Remove this hack. We had to add it to avoid a mass rebuild
for the 25.05 release to fix Kubernetes. Once the staging cycle referenced
in the above PR completes, this passthru and all consumers of it should go away.
This commit is contained in:
Morgan Jones 2025-05-21 01:27:34 -07:00
parent 89d5efb589
commit 99e6554fea
No known key found for this signature in database
GPG key ID: 5C3EB94D198F1491
2 changed files with 53 additions and 2 deletions

View file

@ -0,0 +1,39 @@
From 7dbfe31a83f45d5aef2b508697e9511c569ffbc8 Mon Sep 17 00:00:00 2001
From: Karel Zak <kzak@redhat.com>
Date: Mon, 24 Mar 2025 14:31:05 +0100
Subject: [PATCH] libmount: fix --no-canonicalize regression
Fixes: https://github.com/util-linux/util-linux/issues/3474
Signed-off-by: Karel Zak <kzak@redhat.com>
---
libmount/src/context.c | 3 ---
sys-utils/mount.8.adoc | 2 +-
2 files changed, 1 insertion(+), 4 deletions(-)
diff --git a/libmount/src/context.c b/libmount/src/context.c
index 0323cb23d34..15a8ad3bbd0 100644
--- a/libmount/src/context.c
+++ b/libmount/src/context.c
@@ -530,9 +530,6 @@ int mnt_context_is_xnocanonicalize(
assert(cxt);
assert(type);
- if (mnt_context_is_nocanonicalize(cxt))
- return 1;
-
ol = mnt_context_get_optlist(cxt);
if (!ol)
return 0;
diff --git a/sys-utils/mount.8.adoc b/sys-utils/mount.8.adoc
index 4f23f8d1f0e..5103b91c578 100644
--- a/sys-utils/mount.8.adoc
+++ b/sys-utils/mount.8.adoc
@@ -756,7 +756,7 @@ Allow to make a target directory (mountpoint) if it does not exist yet. The opti
*X-mount.nocanonicalize*[**=**_type_]::
Allows disabling of canonicalization for mount source and target paths. By default, the `mount` command resolves all paths to their absolute paths without symlinks. However, this behavior may not be desired in certain situations, such as when binding a mount over a symlink, or a symlink over a directory or another symlink. The optional argument _type_ can be either "source" or "target" (mountpoint). If no _type_ is specified, then canonicalization is disabled for both types. This mount option does not affect the conversion of source tags (e.g. LABEL= or UUID=) and fstab processing.
+
-The command line option *--no-canonicalize* overrides this mount option and affects all path and tag conversions in all situations, but it does not modify flags for open_tree syscalls.
+The command-line option *--no-canonicalize* overrides this mount option and affects all path and tag conversions in all situations, but for backward compatibility, it does not modify open_tree syscall flags and does not allow the bind-mount over a symlink use case.
+
Note that *mount*(8) still sanitizes and canonicalizes the source and target paths specified on the command line by non-root users, regardless of the X-mount.nocanonicalize setting.

View file

@ -34,7 +34,7 @@
let
isMinimal = cryptsetupSupport == false && !nlsSupport && !ncursesSupport && !systemdSupport;
in
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalPackage: rec {
pname = "util-linux" + lib.optionalString isMinimal "-minimal";
version = "2.41";
@ -200,6 +200,18 @@ stdenv.mkDerivation rec {
'';
passthru = {
# TODO (#409339): Remove this hack. We had to add it to avoid a mass rebuild
# for the 25.05 release to fix Kubernetes. Once the staging cycle referenced
# in the above PR completes, this passthru and all consumers of it should go away.
withPatches = finalPackage.overrideAttrs (prev: {
patches = lib.unique (
prev.patches or [ ]
++ [
./fix-mount-regression.patch
]
);
});
updateScript = gitUpdater {
# No nicer place to find latest release.
url = "https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git";
@ -237,4 +249,4 @@ stdenv.mkDerivation rec {
];
priority = 6; # lower priority than coreutils ("kill") and shadow ("login" etc.) packages
};
}
})