Hi, * Chris Hofstaedtler <zeha@debian.org> [250221 11:57]:
Do you have some estimates from last releases of util-linux how many changes go into a release after rc1? Do you expect a big diff between rc1 and the final release?
Attached are two filtered debdiffs. The first one is from rc1 to final - util-linux_2.41-1-from-rc1.debdiff.filtered.gz
The second one is from rc2 to final - util-linux_2.41-1-from-rc2.debdiff.filtered.
The filtered diffs were produced using the following command. Currently we do not use meson to build, and the translation and manpage updates are filtered out.
debdiff util-linux_2.41~rc2-1.dsc util-linux_2.41-1.dsc | filterdiff -x '*/po*/*.po' -x '*/po*/*.pot' -x '*/*.[1358]' -x '*.adoc' -x '*/meson.build'
rc2 was in experimental since 2025-03-06. I've now uploaded the
final release to experimental.
Chris
Attachment:
util-linux_2.41-1-from-rc1.debdiff.filtered.gz
Description: application/gunzip
diff -Nru util-linux-2.41~rc2/ChangeLog util-linux-2.41/ChangeLog
--- util-linux-2.41~rc2/ChangeLog 2025-03-06 12:25:41.215978531 +0100
+++ util-linux-2.41/ChangeLog 2025-03-18 13:56:05.331195955 +0100
@@ -1,3 +1,3 @@
See version control history.
-https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/log?h=v2.41-rc2
+https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/log?h=v2.41
diff -Nru util-linux-2.41~rc2/config.h.in util-linux-2.41/config.h.in
--- util-linux-2.41~rc2/config.h.in 2025-03-06 12:20:59.472105026 +0100
+++ util-linux-2.41/config.h.in 2025-03-18 13:52:33.260910749 +0100
@@ -381,6 +381,9 @@
/* Define to 1 if you have the <linux/raw.h> header file. */
#undef HAVE_LINUX_RAW_H
+/* Define to 1 if you have the <linux/seccomp.h> header file. */
+#undef HAVE_LINUX_SECCOMP_H
+
/* Define to 1 if you have the <linux/securebits.h> header file. */
#undef HAVE_LINUX_SECUREBITS_H
diff -Nru util-linux-2.41~rc2/configure util-linux-2.41/configure
--- util-linux-2.41~rc2/configure 2025-03-06 12:20:58.808107899 +0100
+++ util-linux-2.41/configure 2025-03-18 13:52:32.593913806 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for util-linux 2.41-rc2.
+# Generated by GNU Autoconf 2.72 for util-linux 2.41.
#
# Report bugs to <kzak@redhat.com>.
#
@@ -614,8 +614,8 @@
# Identity of this package.
PACKAGE_NAME='util-linux'
PACKAGE_TARNAME='util-linux'
-PACKAGE_VERSION='2.41-rc2'
-PACKAGE_STRING='util-linux 2.41-rc2'
+PACKAGE_VERSION='2.41'
+PACKAGE_STRING='util-linux 2.41'
PACKAGE_BUGREPORT='kzak@redhat.com'
PACKAGE_URL='https://www.kernel.org/pub/linux/utils/util-linux/'
@@ -2131,7 +2131,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-'configure' configures util-linux 2.41-rc2 to adapt to many kinds of systems.
+'configure' configures util-linux 2.41 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -2202,7 +2202,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of util-linux 2.41-rc2:";;
+ short | recursive ) echo "Configuration of util-linux 2.41:";;
esac
cat <<\_ACEOF
@@ -2595,7 +2595,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-util-linux configure 2.41-rc2
+util-linux configure 2.41
generated by GNU Autoconf 2.72
Copyright (C) 2023 Free Software Foundation, Inc.
@@ -3205,7 +3205,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by util-linux $as_me 2.41-rc2, which was
+It was created by util-linux $as_me 2.41, which was
generated by GNU Autoconf 2.72. Invocation command line was
$ $0$ac_configure_args_raw
@@ -6051,7 +6051,7 @@
# Define the identity of the package.
PACKAGE='util-linux'
- VERSION='2.41-rc2'
+ VERSION='2.41'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -6612,7 +6612,7 @@
sub("-.*","",$3); print $3 ~ /^[0-9]+$/ ? $3 : 0}')
LIBBLKID_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE"
-LIBBLKID_DATE="06-Mar-2025"
+LIBBLKID_DATE="18-Mar-2025"
LIBBLKID_LT_MAJOR=1
LIBBLKID_LT_MINOR=1
LIBBLKID_LT_MICRO=0
@@ -25934,6 +25934,12 @@
printf "%s\n" "#define HAVE_LINUX_RAW_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "linux/seccomp.h" "ac_cv_header_linux_seccomp_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_seccomp_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_SECCOMP_H 1" >>confdefs.h
+
+fi
ac_fn_c_check_header_compile "$LINENO" "linux/securebits.h" "ac_cv_header_linux_securebits_h" "$ac_includes_default"
if test "x$ac_cv_header_linux_securebits_h" = xyes
then :
@@ -26506,6 +26512,7 @@
have_linux_mount_h=$ac_cv_header_linux_mount_h
have_linux_pr_h=$ac_cv_header_linux_pr_h
have_linux_raw_h=$ac_cv_header_linux_raw_h
+have_linux_seccomp_h=$ac_cv_header_linux_seccomp_h
have_linux_securebits_h=$ac_cv_header_linux_securebits_h
have_linux_version_h=$ac_cv_header_linux_version_h
have_linux_watchdog_h=$ac_cv_header_linux_watchdog_h
@@ -35445,6 +35452,33 @@
ul_haveone_setpriv=no
+ if test "x$have_linux_seccomp_h" = xyes; then
+ ul_haveone_setpriv=yes
+ fi
+
+ case $enable_setpriv:$ul_haveone_setpriv in #(
+ no:*)
+ build_setpriv=no ;;
+ yes:yes)
+ build_setpriv=yes ;;
+ yes:*)
+ as_fn_error $? "setpriv selected, but required linux/seccomp.h header file not available" "$LINENO" 5;;
+ check:yes)
+ build_setpriv=yes ;;
+ check:*)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: linux/seccomp.h header file not found; not building setpriv" >&5
+printf "%s\n" "$as_me: WARNING: linux/seccomp.h header file not found; not building setpriv" >&2;}
+ build_setpriv=no ;;
+ esac
+ fi
+
+
+
+
+ if test "x$build_setpriv" != xno; then
+
+ ul_haveone_setpriv=no
+
if test "x$have_linux_securebits_h" = xyes; then
ul_haveone_setpriv=yes
fi
@@ -38120,6 +38154,33 @@
esac
fi
+
+
+
+ if test "x$build_enosys" != xno; then
+
+ ul_haveone_enosys=no
+
+ if test "x$have_linux_seccomp_h" = xyes; then
+ ul_haveone_enosys=yes
+ fi
+
+ case $enable_enosys:$ul_haveone_enosys in #(
+ no:*)
+ build_enosys=no ;;
+ yes:yes)
+ build_enosys=yes ;;
+ yes:*)
+ as_fn_error $? "enosys selected, but required linux/seccomp.h header file not available" "$LINENO" 5;;
+ check:yes)
+ build_enosys=yes ;;
+ check:*)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: linux/seccomp.h header file not found; not building enosys" >&5
+printf "%s\n" "$as_me: WARNING: linux/seccomp.h header file not found; not building enosys" >&2;}
+ build_enosys=no ;;
+ esac
+ fi
+
if test "x$build_enosys" = xyes
then :
@@ -47157,7 +47218,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by util-linux $as_me 2.41-rc2, which was
+This file was extended by util-linux $as_me 2.41, which was
generated by GNU Autoconf 2.72. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -47226,7 +47287,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-util-linux config.status 2.41-rc2
+util-linux config.status 2.41
configured by $0, generated by GNU Autoconf 2.72,
with options \\"\$ac_cs_config\\"
diff -Nru util-linux-2.41~rc2/configure.ac util-linux-2.41/configure.ac
--- util-linux-2.41~rc2/configure.ac 2025-03-06 12:14:41.865690098 +0100
+++ util-linux-2.41/configure.ac 2025-03-18 13:50:51.818370378 +0100
@@ -29,7 +29,7 @@
dnl libblkid version
LIBBLKID_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE"
-LIBBLKID_DATE="06-Mar-2025"
+LIBBLKID_DATE="18-Mar-2025"
LIBBLKID_LT_MAJOR=1
LIBBLKID_LT_MINOR=1
LIBBLKID_LT_MICRO=0
@@ -349,6 +349,7 @@
linux/nsfs.h \
linux/pr.h \
linux/raw.h \
+ linux/seccomp.h \
linux/securebits.h \
linux/tiocl.h \
linux/version.h \
@@ -515,6 +516,7 @@
have_linux_mount_h=$ac_cv_header_linux_mount_h
have_linux_pr_h=$ac_cv_header_linux_pr_h
have_linux_raw_h=$ac_cv_header_linux_raw_h
+have_linux_seccomp_h=$ac_cv_header_linux_seccomp_h
have_linux_securebits_h=$ac_cv_header_linux_securebits_h
have_linux_version_h=$ac_cv_header_linux_version_h
have_linux_watchdog_h=$ac_cv_header_linux_watchdog_h
@@ -1704,6 +1706,7 @@
)
UL_BUILD_INIT([setpriv])
UL_REQUIRES_LINUX([setpriv])
+UL_REQUIRES_HAVE([setpriv], [linux_seccomp_h], [linux/seccomp.h header file])
UL_REQUIRES_HAVE([setpriv], [linux_securebits_h], [linux/securebits.h header file])
UL_REQUIRES_HAVE([setpriv], [linux_capability_h], [linux/capability.h header file])
UL_REQUIRES_HAVE([setpriv], [cap_ng], [libcap-ng library])
@@ -2021,6 +2024,7 @@
UL_BUILD_INIT([enosys])
UL_REQUIRES_LINUX([enosys])
UL_REQUIRES_HAVE([enosys], [linux_audit_h], [linux/audit.h header file])
+UL_REQUIRES_HAVE([enosys], [linux_seccomp_h], [linux/seccomp.h header file])
AS_IF([test "x$build_enosys" = xyes], [
AC_MSG_CHECKING([for valid audit arch])
AC_COMPILE_IFELSE(
diff -Nru util-linux-2.41~rc2/debian/changelog util-linux-2.41/debian/changelog
--- util-linux-2.41~rc2/debian/changelog 2025-03-06 13:30:32.000000000 +0100
+++ util-linux-2.41/debian/changelog 2025-03-18 17:26:32.000000000 +0100
@@ -1,3 +1,12 @@
+util-linux (2.41-1) experimental; urgency=medium
+
+ * New upstream release.
+ * d/control: put myself directly into the Maintainer field
+ * Refresh patches
+ * Update list of installed localized manpages
+
+ -- Chris Hofstaedtler <zeha@debian.org> Tue, 18 Mar 2025 17:26:32 +0100
+
util-linux (2.41~rc2-1) experimental; urgency=medium
* New upstream release candidate.
diff -Nru util-linux-2.41~rc2/debian/control util-linux-2.41/debian/control
--- util-linux-2.41~rc2/debian/control 2025-03-06 13:30:32.000000000 +0100
+++ util-linux-2.41/debian/control 2025-03-18 17:26:32.000000000 +0100
@@ -34,9 +34,7 @@
libedit-dev,
Section: utils
Priority: required
-Maintainer: util-linux packagers <util-linux@packages.debian.org>
-Uploaders:
- Chris Hofstaedtler <zeha@debian.org>,
+Maintainer: Chris Hofstaedtler <zeha@debian.org>
Standards-Version: 4.7.0
Rules-Requires-Root: no
Vcs-Browser: https://salsa.debian.org/debian/util-linux
diff -Nru util-linux-2.41~rc2/debian/patches/debian/man-getopt-examples.patch util-linux-2.41/debian/patches/debian/man-getopt-examples.patch
--- util-linux-2.41~rc2/debian/patches/debian/man-getopt-examples.patch 2025-03-06 13:30:32.000000000 +0100
+++ util-linux-2.41/debian/patches/debian/man-getopt-examples.patch 2025-03-18 17:26:32.000000000 +0100
@@ -9,7 +9,7 @@
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/misc-utils/getopt.1 b/misc-utils/getopt.1
-index a4a5f42..f9adf28 100644
+index 73a407b..0e2f9c4 100644
--- a/misc-utils/getopt.1
+++ b/misc-utils/getopt.1
@@ -155,7 +155,7 @@ In compatibility mode, leading \*(Aq\fB\-\fP\*(Aq and \*(Aq\fB+\fP\*(Aq characte
diff -Nru util-linux-2.41~rc2/debian/util-linux-locales.install util-linux-2.41/debian/util-linux-locales.install
--- util-linux-2.41~rc2/debian/util-linux-locales.install 2025-03-06 13:30:32.000000000 +0100
+++ util-linux-2.41/debian/util-linux-locales.install 2025-03-18 17:26:32.000000000 +0100
@@ -5,6 +5,7 @@
<!nodoc> debian/tmp/usr/share/man/*/man1/col.1
<!nodoc> debian/tmp/usr/share/man/*/man1/colcrt.1
<!nodoc> debian/tmp/usr/share/man/*/man1/colrm.1
+<!nodoc> debian/tmp/usr/share/man/*/man1/column.1
<!nodoc> debian/tmp/usr/share/man/*/man1/hexdump.1
<!nodoc> debian/tmp/usr/share/man/*/man1/look.1
<!nodoc> debian/tmp/usr/share/man/*/man1/ul.1
@@ -14,6 +15,7 @@
<!nodoc> debian/tmp/usr/share/man/*/man1/renice.1
[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/script.1
[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/scriptlive.1
+[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/scriptreplay.1
<!nodoc> debian/tmp/usr/share/man/*/man1/wall.1
# eject
@@ -24,9 +26,27 @@
<!nodoc> debian/tmp/usr/share/man/*/man8/fdisk.8
<!nodoc> debian/tmp/usr/share/man/*/man8/sfdisk.8
+# lastlog2
+<!nodoc> debian/tmp/usr/share/man/*/man8/lastlog2.8
+
# libblkid-dev
<!nodoc> debian/tmp/usr/share/man/*/man3/libblkid.3
+# liblastlog2-dev
+<!nodoc> debian/tmp/usr/share/man/*/man3/lastlog2.3
+<!nodoc> debian/tmp/usr/share/man/*/man3/ll2_import_lastlog.3
+<!nodoc> debian/tmp/usr/share/man/*/man3/ll2_read_all.3
+<!nodoc> debian/tmp/usr/share/man/*/man3/ll2_read_entry.3
+<!nodoc> debian/tmp/usr/share/man/*/man3/ll2_remove_entry.3
+<!nodoc> debian/tmp/usr/share/man/*/man3/ll2_update_login_time.3
+<!nodoc> debian/tmp/usr/share/man/*/man3/ll2_write_entry.3
+
+# libpam-lastlog2
+<!nodoc> debian/tmp/usr/share/man/*/man8/pam_lastlog2.8
+
+# login
+[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/newgrp.1
+
# mount
<!nodoc> debian/tmp/usr/share/man/*/man5/fstab.5
<!nodoc> debian/tmp/usr/share/man/*/man8/losetup.8
@@ -48,6 +68,8 @@
<!nodoc> debian/tmp/usr/share/man/*/man1/hardlink.1
[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/ionice.1
<!nodoc> debian/tmp/usr/share/man/*/man1/ipcs.1
+<!nodoc> debian/tmp/usr/share/man/*/man1/ipcmk.1
+<!nodoc> debian/tmp/usr/share/man/*/man1/ipcrm.1
[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/lscpu.1
[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/lsipc.1
[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/lslocks.1
@@ -58,8 +80,10 @@
<!nodoc> debian/tmp/usr/share/man/*/man1/mountpoint.1
<!nodoc> debian/tmp/usr/share/man/*/man1/namei.1
[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/nsenter.1
+[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/prlimit.1
<!nodoc> debian/tmp/usr/share/man/de/man1/rename.1 => /usr/share/man/de/man1/rename.ul.1
<!nodoc> debian/tmp/usr/share/man/fr/man1/rename.1 => /usr/share/man/fr/man1/rename.ul.1
+<!nodoc> debian/tmp/usr/share/man/pl/man1/rename.1 => /usr/share/man/pl/man1/rename.ul.1
<!nodoc> debian/tmp/usr/share/man/ro/man1/rename.1 => /usr/share/man/ro/man1/rename.ul.1
<!nodoc> debian/tmp/usr/share/man/sr/man1/rename.1 => /usr/share/man/sr/man1/rename.ul.1
<!nodoc> debian/tmp/usr/share/man/uk/man1/rename.1 => /usr/share/man/uk/man1/rename.ul.1
@@ -68,11 +92,14 @@
[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/pipesz.1
[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/setpriv.1
<!nodoc> debian/tmp/usr/share/man/*/man1/setsid.1
+<!nodoc> debian/tmp/usr/share/man/*/man1/setterm.1
<!nodoc> debian/tmp/usr/share/man/*/man1/su.1
[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/taskset.1
[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/uclampset.1
+[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/unshare.1
<!nodoc> debian/tmp/usr/share/man/*/man1/whereis.1
<!nodoc> debian/tmp/usr/share/man/*/man5/adjtime_config.5
+<!nodoc> debian/tmp/usr/share/man/*/man5/scols-filter.5
<!nodoc> debian/tmp/usr/share/man/*/man5/terminal-colors.d.5
<!nodoc> debian/tmp/usr/share/man/*/man8/agetty.8
[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man8/blkdiscard.8
@@ -114,6 +141,9 @@
[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man8/zramctl.8
# util-linux-extra
+[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/bits.1
+[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/coresched.1
+[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/enosys.1
[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/exch.1
[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/fadvise.1
[linux-any] <!nodoc> debian/tmp/usr/share/man/*/man1/fincore.1
diff -Nru util-linux-2.41~rc2/disk-utils/raw.8.deps util-linux-2.41/disk-utils/raw.8.deps
--- util-linux-2.41~rc2/disk-utils/raw.8.deps 2025-03-06 12:25:40.809980136 +0100
+++ util-linux-2.41/disk-utils/raw.8.deps 2025-03-18 13:56:04.909196953 +0100
@@ -1 +1 @@
-/home/proj-me/util-linux/util-linux/util-linux-2.41-rc2/disk-utils/raw.8: /home/proj-me/util-linux/util-linux/man-common/help-version.adoc /home/proj-me/util-linux/util-linux/man-common/bugreports.adoc /home/proj-me/util-linux/util-linux/man-common/footer.adoc
\ No newline at end of file
+/home/proj-me/util-linux/util-linux/util-linux-2.41/disk-utils/raw.8: /home/proj-me/util-linux/util-linux/man-common/help-version.adoc /home/proj-me/util-linux/util-linux/man-common/bugreports.adoc /home/proj-me/util-linux/util-linux/man-common/footer.adoc
\ No newline at end of file
diff -Nru util-linux-2.41~rc2/Documentation/releases/v2.41-ReleaseNotes util-linux-2.41/Documentation/releases/v2.41-ReleaseNotes
--- util-linux-2.41~rc2/Documentation/releases/v2.41-ReleaseNotes 2025-03-06 12:13:49.190911078 +0100
+++ util-linux-2.41/Documentation/releases/v2.41-ReleaseNotes 2025-03-18 13:48:52.997908724 +0100
@@ -121,6 +121,7 @@
- add defines for m68k, sh (by Chris Hofstaedtler)
autotools:
+ - add missing meson.build files (by Karel Zak)
- Fix use of mq_open and mq_close (by Samuel Thibault)
- remove tools/git-tp-sync-man (by Karel Zak)
- fix po-man discheck (by Karel Zak)
@@ -189,6 +190,7 @@
- bump actions/checkout from 1 to 4 (by dependabot[bot])
build-sys:
+ - update release dates (by Karel Zak)
- keep the most recent version in NEWS (by Karel Zak)
- update version dates (by Karel Zak)
- build sample-mount-overwrite only on Linux (by Pino Toscano)
@@ -257,6 +259,9 @@
column.1.adoc:
- Fix spelling and improve option descriptions (by Nejc Bertoncelj)
+{configure.ac,meson.build}:
+ - conditionally build {enosys,setpriv} if seccomp is present #3280 (by Thomas Devoogdt)
+
coresched:
- add bash completions (by Thijs Raymakers)
- Manage core scheduling cookies for tasks (by Thijs Raymakers)
@@ -275,6 +280,7 @@
- fsck.8.adoc - fix email typo (by Geoffrey Casper)
docs:
+ - update v2.41-rc2-ReleaseNotes (by Karel Zak)
- fix typo in v2.41-ReleaseNotes (by Chris Hofstaedtler)
- add v2.41-ReleaseNotes (by Karel Zak)
- reduce and freeze NEWS file (by Karel Zak)
@@ -307,6 +313,10 @@
- add "overwrite" argument to env_list_setenv() (by Karel Zak)
- save parsed variables into ul_env_list (by Karel Zak)
+exch:
+ - cosmetic code changes (by Karel Zak)
+ - fix compile error if renameat2 is not present (by Thomas Devoogdt)
+
fadvise:
- fix a typo of an option name in the bash completion rule (by Masatake YAMATO)
@@ -408,6 +418,7 @@
- check blocksize when display data (by Karel Zak)
hwclock:
+ - avoid dereferencing a pointer [coverity scan] (by Karel Zak)
- Support GNU Hurd (by Zhaoming Luo)
- Remove ioperm declare as it causes nested extern declare warning (by Zhaoming Luo)
- cleanup save_adjtime() (by Karel Zak)
@@ -416,6 +427,7 @@
- initialize parser variables (by Karel Zak)
include:
+ - use public domain for colors.{c,h} and xalloc.h (by Karel Zak)
- add functions to implement --hyperlink (by Karel Zak)
- Include <unistd.h> in pidfd-utils.h for syscall() (by Xi Ruoyao)
- introduce seccomp.h (by Thomas Weißschuh)
@@ -461,6 +473,9 @@
ipcrm:
- simplify code (by Yang Kun)
+irqtop,lsirq:
+ - set up locale path, so messages get actually translated (by Benno Schulenberg)
+
jsonwrt:
- add ul_jsonwrt_flush (by Thomas Weißschuh)
@@ -539,10 +554,12 @@
- introduce ul_jsonwrt_empty() (by Karel Zak)
liblastlog2:
+ - (test) fix memory leak in failed test [coverity scan] (by Karel Zak)
- tests provide fallback PATH_MAX definition (by Pino Toscano)
- Improved sqlite3 error handling (by Stefan Schubert)
libmount:
+ - remove possible leak in mnt_context_guess_srcpath_fstype() [coverity scan] (by Karel Zak)
- add support for STATMOUNT_SB_SOURCE (by Karel Zak)
- fix table_init_listmount() (by Karel Zak)
- fix use-after free, etc. [coverity scan] (by Karel Zak)
@@ -712,6 +729,7 @@
- fix FD leak (by Karel Zak)
lscpu:
+ - New Arm part numbers (by Jeremy Linton)
- skip frequencies of 0 MHz when getting minmhz (by Ricardo Neri)
- make three column descriptions more grammatical (by Benno Schulenberg)
- Add FUJITSU aarch64 MONAKA cpupart (by Emi, Kisanuki)
@@ -729,6 +747,9 @@
- restructure op-mode printing (by Thomas Weißschuh)
lsfd:
+ - (man) fix a typo (by Masatake YAMATO)
+ - initialize struct stat [coverity scan] (by Karel Zak)
+ - (man) fix a typo (by Masatake YAMATO)
- remove C++ comment (by Karel Zak)
- support AF_VSOCK sockets (by Masatake YAMATO)
- don't enable hyperlinks for deleted files (by Masatake YAMATO)
@@ -805,6 +826,8 @@
- fix buffer overflow (by Karel Zak)
lslogins:
+ - fix typo (by Karel Zak)
+ - remove possible memory leaks [coverity scan] (by Karel Zak)
- don't ignore stat error (by Thorsten Kukuk)
lsmem:
@@ -851,6 +874,7 @@
- remove ability to compile with fchmod(S_IWOTH) (by Karel Zak)
meson:
+ - bring hexdump in line with others (by Christian Hesse)
- demote two libraries to library (by Rosen Penev)
- generate man page translations (by Jordan Williams)
- use files() for man page source files (by Jordan Williams)
@@ -964,6 +988,8 @@
- update note regarding swapfile creation (by Mike Yuan)
more:
+ - remove a duplicate call of setlocale() (by Benno Schulenberg)
+ - fix repeat command (by Karel Zak)
- fix compilation (by Yang Kun)
- make sure we have data on stderr (by Karel Zak)
- remove second check for EOF (#2714) (by Thorsten Kukuk)
@@ -1000,6 +1026,13 @@
- make sure cmdline[] not overflow [coverity scan] (by Karel Zak)
po:
+ - update uk.po (from translationproject.org) (by Yuri Chornoivan)
+ - update ro.po (from translationproject.org) (by Remus-Gabriel Chelu)
+ - update pl.po (from translationproject.org) (by Jakub Bogusz)
+ - update nl.po (from translationproject.org) (by Benno Schulenberg)
+ - update ko.po (from translationproject.org) (by Seong-ho Cho)
+ - update hr.po (from translationproject.org) (by Božidar Putanec)
+ - update fr.po (from translationproject.org) (by Frédéric Marchal)
- merge changes (by Karel Zak)
- update nl.po (from translationproject.org) (by Benno Schulenberg)
- update es.po (from translationproject.org) (by Antonio Ceballos Roa)
@@ -1025,6 +1058,12 @@
po-man:
- merge changes (by Karel Zak)
+ - add pl.po (from translationproject.org) (by Michał Kułach)
+ - update uk.po (from translationproject.org) (by Yuri Chornoivan)
+ - update ro.po (from translationproject.org) (by Remus-Gabriel Chelu)
+ - update fr.po (from translationproject.org) (by Frédéric Marchal)
+ - fix typos in configuration (by Karel Zak)
+ - merge changes (by Karel Zak)
- merge changes (by Karel Zak)
- update uk.po (from translationproject.org) (by Yuri Chornoivan)
- update sr.po (from translationproject.org) (by Мирослав Николић)
@@ -1112,6 +1151,7 @@
- Include strings.h header for strncasecmp function (by Jordan Williams)
su:
+ - (man) fix duplicate asterisk (by Gaël PORTAY)
- use lib/env.c for --whitelist-environment (by Karel Zak)
- fix use after free in run_shell (by Tanish Yadav)
@@ -1125,6 +1165,10 @@
swapoff:
- avoid being killed by OOM (by Karel Zak)
+swapon:
+ - remove unnecessary variable usage (by Karel Zak)
+ - make options --help and --version override --summary (by Benno Schulenberg)
+
sys-utils:
- remove redundant comparison in read_hypervisor_dmi in lscpu-virt.c (by Anton Moryakov)
- warns if mqueue fs is not mounted (by Prasanna Paithankar)
@@ -1136,6 +1180,9 @@
- (setpriv) fix potential memory leak (by Maks Mishin)
- hwclock-rtc fix pointer usage (by Karthikeyan Krishnasamy)
+sys-utils/chmem:
+ - fix typo. (by WanBingjiang)
+
sys-utils/irq-common:
- fix SPDX typos (by Karel Zak)
@@ -1149,6 +1196,9 @@
- fix --help typo (foregound > foreground) + alignment (by Emanuele Torre)
- make -f work (by Emanuele Torre)
+terminal-colors.d:
+ - support NO_COLOR (by Karel Zak)
+
term-utils:
- make pointer arrays const (by Max Kellermann)
@@ -1163,6 +1213,7 @@
- (cosmetic) remove whitespaces between a function and its arguments (by Masatake YAMATO)
tests:
+ - update lsmem outputs (by Karel Zak)
- (lsns/nsfs) consider the cases that lsns returns multiple paths (by Masatake YAMATO)
- (lsns/nsfs) check test_sysinfo helper (by Masatake YAMATO)
- improve test_sysinfo to check for NS_GET_NSTYPE usability (by Karel Zak)
@@ -1234,6 +1285,9 @@
- (lsfd) add a case testing ERROR type appeared in TYPE column (by Masatake YAMATO)
- (test_mkfds::mmap) new factory (by Masatake YAMATO)
+test_sysinfo:
+ - remove memory lea [coverity scan] (by Karel Zak)
+
textual:
- make two incorrect synopses identical to a better one (by Benno Schulenberg)
- fix three misspellings of "unsupported" (by Benno Schulenberg)
@@ -1254,7 +1308,11 @@
- depend on systemd... (by Christian Hesse)
- add and install for uuidd, generate /run/uuidd & /var/lib/libuuid (by Christian Hesse)
+tools:
+ - add SPDX-License-Identifier (by Karel Zak)
+
tools/git-grouped-log:
+ - sort output (by Karel Zak)
- add from master branch (by Karel Zak)
tools/git-tp-sync:
@@ -1270,6 +1328,12 @@
tools/git-tp-sync-man:
- remove obsolete script (by Karel Zak)
+tools/git-version-bump:
+ - add from master branch (by Karel Zak)
+
+tools/poman-translate:
+ - fix to work outside on source dir (by Karel Zak)
+
treewide:
- use scols printf api where possible (by Robin Jarry)
- use fgetc() instead of getc() (by Thomas Weißschuh)
@@ -1278,6 +1342,8 @@
- Document loop destroy behavior (by Stanislav Brabec)
unshare:
+ - fix typo in --map-groups=subids map name [coverity scan] (by Karel Zak)
+ - make strings more robust (by Karel Zak)
- in usage text, reshuffle options into somewhat related groups (by Benno Schulenberg)
- don't mark " (by " and ":" as part of the placeholders|Benno Schulenberg)
- use single asterisks around long options, double around values (by Benno Schulenberg)
@@ -1305,6 +1371,9 @@
- add support for RFC9562 UUIDs (by Thomas Weißschuh)
- only report type/version for DCE variant (by Thomas Weißschuh)
+various:
+ - (man) list --help and --version last among the options (by Benno Schulenberg)
+
wall:
- always use utmp as fallback (by Karel Zak)
- check sysconf() returnvalue (by Karel Zak)
@@ -1338,6 +1407,7 @@
- add COMP-RATIO column (by Karel Zak)
Misc:
+ - Use ipc_stat::cgid for the column COL_CGID. (by Koutheir Attouchi)
- remove duplicate includes (by Karel Zak)
- Defined macros for POSIX IPC compilation and removed path buffer. (by Prasanna Paithankar)
- Fix CodeQL warning (by Prasanna Paithankar)
diff -Nru util-linux-2.41~rc2/include/colors.h util-linux-2.41/include/colors.h
--- util-linux-2.41~rc2/include/colors.h 2025-02-26 13:27:07.503597179 +0100
+++ util-linux-2.41/include/colors.h 2025-03-18 12:52:41.657620085 +0100
@@ -1,8 +1,9 @@
/*
- * SPDX-License-Identifier: LGPL-2.1-or-later
+ * No copyright is claimed. This code is in the public domain; do with
+ * it what you wish.
*
- * Copyright (C) 2012 Ondrej Oprala <ooprala@redhat.com>
- * Copyright (C) 2012-2014 Karel Zak <kzak@redhat.com>
+ * Authors: 2012 Ondrej Oprala <ooprala@redhat.com>
+ * 2012-2025 Karel Zak <kzak@redhat.com>
*
* This file may be distributed under the terms of the
* GNU Lesser General Public License.
diff -Nru util-linux-2.41~rc2/include/xalloc.h util-linux-2.41/include/xalloc.h
--- util-linux-2.41~rc2/include/xalloc.h 2025-02-26 13:27:07.506597167 +0100
+++ util-linux-2.41/include/xalloc.h 2025-03-18 12:52:41.657620085 +0100
@@ -1,11 +1,9 @@
/*
- * SPDX-License-Identifier: LGPL-2.1-or-later
+ * No copyright is claimed. This code is in the public domain; do with
+ * it what you wish.
*
- * Copyright (C) 2010 Davidlohr Bueso <dave@gnu.org>
- * Copyright (C) 2010-2022 Karel Zak <kzak@redhat.com>
- *
- * This file may be redistributed under the terms of the
- * GNU Lesser General Public License.
+ * Authors 2010 Davidlohr Bueso <dave@gnu.org>
+ * 2010-2025 Karel Zak <kzak@redhat.com>
*
* General memory allocation wrappers for malloc, realloc, calloc and strdup
*/
diff -Nru util-linux-2.41~rc2/lib/colors.c util-linux-2.41/lib/colors.c
--- util-linux-2.41~rc2/lib/colors.c 2025-02-26 13:27:07.507597163 +0100
+++ util-linux-2.41/lib/colors.c 2025-03-18 12:52:41.811619376 +0100
@@ -1,8 +1,9 @@
/*
- * SPDX-License-Identifier: LGPL-2.1-or-later
+ * No copyright is claimed. This code is in the public domain; do with
+ * it what you wish.
*
- * Copyright (C) 2012 Ondrej Oprala <ooprala@redhat.com>
- * Copyright (C) 2012-2014 Karel Zak <kzak@redhat.com>
+ * Authors: 2012 Ondrej Oprala <ooprala@redhat.com>
+ * 2012-2025 Karel Zak <kzak@redhat.com>
*
* This file may be distributed under the terms of the
* GNU Lesser General Public License.
@@ -600,7 +601,9 @@
cc->mode = mode;
if (cc->mode == UL_COLORMODE_UNDEF
+ && getenv("NO_COLOR") == NULL
&& (ready = colors_terminal_is_ready())) {
+
int rc = colors_read_configuration(cc);
if (rc)
cc->mode = UL_COLORMODE_DEFAULT;
diff -Nru util-linux-2.41~rc2/libblkid/docs/version.xml util-linux-2.41/libblkid/docs/version.xml
--- util-linux-2.41~rc2/libblkid/docs/version.xml 2025-03-06 12:21:09.771061885 +0100
+++ util-linux-2.41/libblkid/docs/version.xml 2025-03-18 13:52:49.680836400 +0100
@@ -1 +1 @@
-2.41-rc2
+2.41
diff -Nru util-linux-2.41~rc2/libfdisk/docs/version.xml util-linux-2.41/libfdisk/docs/version.xml
--- util-linux-2.41~rc2/libfdisk/docs/version.xml 2025-03-06 12:21:09.808061729 +0100
+++ util-linux-2.41/libfdisk/docs/version.xml 2025-03-18 13:52:49.735836151 +0100
@@ -1 +1 @@
-2.41-rc2
+2.41
diff -Nru util-linux-2.41~rc2/liblastlog2/src/tests/tst_write_read_user.c util-linux-2.41/liblastlog2/src/tests/tst_write_read_user.c
--- util-linux-2.41~rc2/liblastlog2/src/tests/tst_write_read_user.c 2025-02-26 13:27:07.520597110 +0100
+++ util-linux-2.41/liblastlog2/src/tests/tst_write_read_user.c 2025-03-17 12:21:53.060758315 +0100
@@ -42,6 +42,7 @@
test_args (struct ll2_context *context, const char *user, int64_t ll_time,
const char *tty, const char *rhost, const char *service)
{
+ int rc = 1;
char *error = NULL;
int64_t res_time;
char *res_tty = NULL;
@@ -54,7 +55,7 @@
free (error);
} else
fprintf (stderr, "ll2_write_entry failed\n");
- return 1;
+ goto done;
}
if (ll2_read_entry (context, user, &res_time, &res_tty, &res_rhost, &res_service, &error) != 0) {
@@ -63,42 +64,42 @@
free (error);
} else
fprintf (stderr, "Unknown error reading database %s", context->lastlog2_path);
- return 1;
+ goto done;
}
if (ll_time != res_time) {
fprintf (stderr, "Wrong time: got %lld, expect %lld\n",
(long long int)res_time, (long long int)ll_time);
- return 1;
+ goto done;
}
if ((tty == NULL && res_tty != NULL) ||
(tty != NULL && res_tty == NULL) ||
(tty != NULL && res_tty != NULL && strcmp (tty, res_tty) != 0)) {
fprintf (stderr, "Wrong tty: got %s, expect %s\n", tty, res_tty);
- return 1;
+ goto done;
}
if ((rhost == NULL && res_rhost != NULL) ||
(rhost != NULL && res_rhost == NULL) ||
(rhost != NULL && res_rhost != NULL && strcmp (rhost, res_rhost) != 0)) {
fprintf (stderr, "Wrong rhost: got %s, expect %s\n", rhost, res_rhost);
- return 1;
+ goto done;
}
if ((service == NULL && res_service != NULL) ||
(service != NULL && res_service == NULL) ||
(service != NULL && res_service != NULL && strcmp (service, res_service) != 0)) {
fprintf (stderr, "Wrong service: got %s, expect %s\n", service, res_service);
- return 1;
+ goto done;
}
-
+ rc = 0;
+done:
free (res_tty);
free (res_rhost);
free (res_service);
-
- return 0;
+ return rc;
}
int
diff -Nru util-linux-2.41~rc2/libmount/docs/version.xml util-linux-2.41/libmount/docs/version.xml
--- util-linux-2.41~rc2/libmount/docs/version.xml 2025-03-06 12:21:09.844061578 +0100
+++ util-linux-2.41/libmount/docs/version.xml 2025-03-18 13:52:49.790835902 +0100
@@ -1 +1 @@
-2.41-rc2
+2.41
diff -Nru util-linux-2.41~rc2/libmount/src/context.c util-linux-2.41/libmount/src/context.c
--- util-linux-2.41~rc2/libmount/src/context.c 2025-02-26 13:27:07.522597102 +0100
+++ util-linux-2.41/libmount/src/context.c 2025-03-17 12:21:53.055758334 +0100
@@ -2023,8 +2023,11 @@
struct libmnt_opt *opt;
const char *allowed;
- if (!ol)
+ if (!ol) {
+ free(*type);
+ *type = NULL;
return -ENOMEM;
+ }
opt = mnt_optlist_get_named(ol,
"X-mount.auto-fstypes", cxt->map_userspace);
diff -Nru util-linux-2.41~rc2/libmount/src/hook_loopdev.c util-linux-2.41/libmount/src/hook_loopdev.c
--- util-linux-2.41~rc2/libmount/src/hook_loopdev.c 2025-02-26 13:27:07.523597098 +0100
+++ util-linux-2.41/libmount/src/hook_loopdev.c 2025-03-17 12:21:53.055758334 +0100
@@ -458,6 +458,7 @@
rc = mnt_context_guess_srcpath_fstype(cxt, &autotype);
if (rc) {
+ free(autotype);;
DBG(CXT, ul_debugobj(cxt, "failed to guess regfile FS type [rc=%d]", rc));
return 0;
}
diff -Nru util-linux-2.41~rc2/libsmartcols/docs/version.xml util-linux-2.41/libsmartcols/docs/version.xml
--- util-linux-2.41~rc2/libsmartcols/docs/version.xml 2025-03-06 12:21:09.881061423 +0100
+++ util-linux-2.41/libsmartcols/docs/version.xml 2025-03-18 13:52:49.846835648 +0100
@@ -1 +1 @@
-2.41-rc2
+2.41
diff -Nru util-linux-2.41~rc2/login-utils/lslogins.c util-linux-2.41/login-utils/lslogins.c
--- util-linux-2.41~rc2/login-utils/lslogins.c 2025-02-26 13:27:07.529597074 +0100
+++ util-linux-2.41/login-utils/lslogins.c 2025-03-17 12:22:56.229513271 +0100
@@ -838,13 +838,15 @@
while (n < ncolumns) {
switch (columns[n++]) {
case COL_USER:
- user->login = xstrdup(pwd->pw_name);
+ if (!user->login)
+ user->login = xstrdup(pwd->pw_name);
break;
case COL_UID:
user->uid = pwd->pw_uid;
break;
case COL_GROUP:
- user->group = xstrdup(grp->gr_name);
+ if (!grp->gr_name)
+ user->group = xstrdup(grp->gr_name);
break;
case COL_GID:
user->gid = pwd->pw_gid;
@@ -856,15 +858,20 @@
err(EXIT_FAILURE, _("failed to get supplementary groups"));
break;
case COL_HOME:
- user->homedir = xstrdup(pwd->pw_dir);
+ if (!user->homedir)
+ user->homedir = xstrdup(pwd->pw_dir);
break;
case COL_SHELL:
- user->shell = xstrdup(pwd->pw_shell);
+ if (!user->shell)
+ user->shell = xstrdup(pwd->pw_shell);
break;
case COL_GECOS:
- user->gecos = xstrdup(pwd->pw_gecos);
+ if (!user->gecos)
+ user->gecos = xstrdup(pwd->pw_gecos);
break;
case COL_LAST_LOGIN:
+ if (user->last_login)
+ break;
if (user_wtmp) {
time = user_wtmp->ut_tv.tv_sec;
user->last_login = make_time(ctl->time_mode, time);
@@ -876,6 +883,8 @@
}
break;
case COL_LAST_TTY:
+ if (user->last_tty)
+ break;
user->last_tty = xcalloc(1, sizeof(user_wtmp->ut_line) + 1);
if (user_wtmp) {
mem2strcpy(user->last_tty, user_wtmp->ut_line,
@@ -885,6 +894,8 @@
get_lastlog(ctl, user->uid, user->login, user->last_tty, LASTLOG_LINE);
break;
case COL_LAST_HOSTNAME:
+ if (user->last_hostname)
+ break;
user->last_hostname = xcalloc(1, sizeof(user_wtmp->ut_host) + 1);
if (user_wtmp) {
mem2strcpy(user->last_hostname, user_wtmp->ut_host,
@@ -894,13 +905,13 @@
get_lastlog(ctl, user->uid, user->login, user->last_hostname, LASTLOG_HOST);
break;
case COL_FAILED_LOGIN:
- if (user_btmp) {
+ if (!user->failed_login && user_btmp) {
time = user_btmp->ut_tv.tv_sec;
user->failed_login = make_time(ctl->time_mode, time);
}
break;
case COL_FAILED_TTY:
- if (user_btmp) {
+ if (!user->failed_tty && user_btmp) {
user->failed_tty = xmalloc(sizeof(user_btmp->ut_line) + 1);
mem2strcpy(user->failed_tty, user_btmp->ut_line,
sizeof(user_btmp->ut_line),
@@ -972,11 +983,11 @@
access(_PATH_VAR_NOLOGIN, F_OK) == 0;
break;
case COL_PWD_WARN:
- if (shadow && shadow->sp_warn >= 0)
+ if (!user->pwd_warn && shadow && shadow->sp_warn >= 0)
xasprintf(&user->pwd_warn, "%ld", shadow->sp_warn);
break;
case COL_PWD_EXPIR:
- if (shadow && shadow->sp_expire >= 0)
+ if (!user->pwd_expire && shadow && shadow->sp_expire >= 0)
user->pwd_expire = make_time(ctl->time_mode == TIME_ISO ?
TIME_ISO_SHORT : ctl->time_mode,
shadow->sp_expire * 86400);
@@ -985,17 +996,17 @@
/* sp_lstchg is specified in days, showing hours
* (especially in non-GMT timezones) would only serve
* to confuse */
- if (shadow)
+ if (!user->pwd_ctime && shadow)
user->pwd_ctime = make_time(ctl->time_mode == TIME_ISO ?
TIME_ISO_SHORT : ctl->time_mode,
shadow->sp_lstchg * 86400);
break;
case COL_PWD_CTIME_MIN:
- if (shadow && shadow->sp_min > 0)
+ if (!user->pwd_ctime_min && shadow && shadow->sp_min > 0)
xasprintf(&user->pwd_ctime_min, "%ld", shadow->sp_min);
break;
case COL_PWD_CTIME_MAX:
- if (shadow && shadow->sp_max > 0)
+ if (!user->pwd_ctime_max && shadow && shadow->sp_max > 0)
xasprintf(&user->pwd_ctime_max, "%ld", shadow->sp_max);
break;
case COL_SELINUX:
@@ -1006,8 +1017,8 @@
break;
case COL_NPROCS:
#ifdef __linux__
-
- xasprintf(&user->nprocs, "%d", get_nprocs(pwd->pw_uid));
+ if (!user->nprocs)
+ xasprintf(&user->nprocs, "%d", get_nprocs(pwd->pw_uid));
#endif
break;
default:
diff -Nru util-linux-2.41~rc2/lsfd-cmd/lsfd.c util-linux-2.41/lsfd-cmd/lsfd.c
--- util-linux-2.41~rc2/lsfd-cmd/lsfd.c 2025-02-26 13:27:07.531597066 +0100
+++ util-linux-2.41/lsfd-cmd/lsfd.c 2025-03-18 13:42:56.568315681 +0100
@@ -872,7 +872,7 @@
bool sockets_only)
{
char sym[PATH_MAX] = { '\0' };
- struct stat sb;
+ struct stat sb = { .st_mode = 0 };
struct file *f, *prev;
if (ul_path_readlink(pc, sym, sizeof(sym), name) < 0)
@@ -963,7 +963,7 @@
uint64_t start, end, offset, ino;
unsigned long major, minor;
enum association assoc = ASSOC_MEM;
- struct stat sb;
+ struct stat sb = { .st_mode = 0 };
struct file *f, *prev;
char *path, modestr[5];
dev_t devno;
diff -Nru util-linux-2.41~rc2/Makefile.am util-linux-2.41/Makefile.am
--- util-linux-2.41~rc2/Makefile.am 2025-02-26 13:27:07.494597216 +0100
+++ util-linux-2.41/Makefile.am 2025-03-13 10:17:02.557989997 +0100
@@ -132,23 +132,29 @@
tools/meson-make-manpage-stub.sh \
tools/meson-make-symlink.sh \
\
+ disk-utils/meson.build \
include/meson.build \
libblkid/meson.build \
+ libfdisk/meson.build \
+ liblastlog2/man/meson.build \
+ liblastlog2/meson.build \
+ lib/meson.build \
libmount/meson.build \
libmount/python/meson.build \
- misc-utils/meson.build \
libsmartcols/meson.build \
- text-utils/meson.build \
- po/meson.build \
- po-man/meson.build \
- lib/meson.build \
+ libuuid/man/meson.build \
libuuid/meson.build \
- liblastlog2/meson.build \
+ login-utils/meson.build \
+ lsfd-cmd/meson.build \
+ man-common/meson.build \
+ misc-utils/meson.build \
+ pam_lastlog2/man/meson.build \
+ po-man/meson.build \
+ po/meson.build \
+ schedutils/meson.build \
sys-utils/meson.build \
- libfdisk/meson.build \
term-utils/meson.build \
- disk-utils/meson.build \
- login-utils/meson.build
+ text-utils/meson.build
# pylibmountexec module must be installed after usrlib_exec libraries,
# otherwise the libtool relink step will fail to find libmount.la and
diff -Nru util-linux-2.41~rc2/Makefile.in util-linux-2.41/Makefile.in
--- util-linux-2.41~rc2/Makefile.in 2025-03-06 12:21:00.701099953 +0100
+++ util-linux-2.41/Makefile.in 2025-03-18 13:52:34.538904994 +0100
@@ -6076,13 +6076,17 @@
tests/expected tests/functions.sh tests/commands.sh \
tests/run.sh tests/ts meson.build meson_options.txt \
tools/meson-make-manpage-stub.sh tools/meson-make-symlink.sh \
- include/meson.build libblkid/meson.build libmount/meson.build \
- libmount/python/meson.build misc-utils/meson.build \
- libsmartcols/meson.build text-utils/meson.build po/meson.build \
- po-man/meson.build lib/meson.build libuuid/meson.build \
- liblastlog2/meson.build sys-utils/meson.build \
- libfdisk/meson.build term-utils/meson.build \
- disk-utils/meson.build login-utils/meson.build \
+ disk-utils/meson.build include/meson.build \
+ libblkid/meson.build libfdisk/meson.build \
+ liblastlog2/man/meson.build liblastlog2/meson.build \
+ lib/meson.build libmount/meson.build \
+ libmount/python/meson.build libsmartcols/meson.build \
+ libuuid/man/meson.build libuuid/meson.build \
+ login-utils/meson.build lsfd-cmd/meson.build \
+ man-common/meson.build misc-utils/meson.build \
+ pam_lastlog2/man/meson.build po-man/meson.build po/meson.build \
+ schedutils/meson.build sys-utils/meson.build \
+ term-utils/meson.build text-utils/meson.build \
$(PATHFILES:=.in) $(ADOCFILES_COMMON) $(am__append_733) \
$(am__append_736)
CLEANFILES = $(am__append_367) errnos.h errnos.h.deps \
diff -Nru util-linux-2.41~rc2/misc-utils/exch.c util-linux-2.41/misc-utils/exch.c
--- util-linux-2.41~rc2/misc-utils/exch.c 2025-02-26 13:27:07.533597057 +0100
+++ util-linux-2.41/misc-utils/exch.c 2025-03-10 14:50:08.752436411 +0100
@@ -26,13 +26,21 @@
# define RENAME_EXCHANGE (1 << 1)
#endif
-#if !defined(HAVE_RENAMEAT2) && defined(SYS_renameat2)
-static inline int renameat2(int olddirfd, const char *oldpath,
- int newdirfd, const char *newpath, unsigned int flags)
+static inline int rename_exchange(const char *oldpath, const char *newpath)
{
- return syscall (SYS_renameat2, olddirfd, oldpath, newdirfd, newpath, flags);
-}
+ int rc;
+
+#if defined(HAVE_RENAMEAT2)
+ rc = renameat2(AT_FDCWD, oldpath, AT_FDCWD, newpath, RENAME_EXCHANGE);
+#elif defined(SYS_renameat2)
+ rc = syscall(SYS_renameat2,
+ AT_FDCWD, oldpath, AT_FDCWD, newpath, RENAME_EXCHANGE);
+#else
+ rc = -1;
+ errno = ENOSYS;
#endif
+ return rc;
+}
static void __attribute__((__noreturn__)) usage(void)
{
@@ -54,7 +62,6 @@
int main(int argc, char **argv)
{
int c;
- int rc;
static const struct option longopts[] = {
{ "version", no_argument, NULL, 'V' },
@@ -85,11 +92,11 @@
errtryhelp(EXIT_FAILURE);
}
- rc = renameat2(AT_FDCWD, argv[optind],
- AT_FDCWD, argv[optind + 1], RENAME_EXCHANGE);
- if (rc)
+ if (rename_exchange(argv[optind], argv[optind + 1]) != 0) {
warn(_("failed to exchange \"%s\" and \"%s\""),
argv[optind], argv[optind + 1]);
+ return EXIT_FAILURE;
+ }
- return rc == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
+ return EXIT_SUCCESS;
}
diff -Nru util-linux-2.41~rc2/NEWS util-linux-2.41/NEWS
--- util-linux-2.41~rc2/NEWS 2025-03-06 12:14:41.862690110 +0100
+++ util-linux-2.41/NEWS 2025-03-18 13:50:51.815370392 +0100
@@ -1,4 +1,4 @@
-util-linux 2.41-rc2: Mar 06 2025 (the latest and greatest!)
+util-linux 2.41: Mar 18 2025 (the latest and greatest!)
The most recent version (on the first line) may be used as a fallback for
the ./tools/git-version-gen script.
Binary files /tmp/V9THXohMgV/util-linux-2.41~rc2/po/fr.gmo and /tmp/ZUgpLkWXkM/util-linux-2.41/po/fr.gmo differ
Binary files /tmp/V9THXohMgV/util-linux-2.41~rc2/po/hr.gmo and /tmp/ZUgpLkWXkM/util-linux-2.41/po/hr.gmo differ
Binary files /tmp/V9THXohMgV/util-linux-2.41~rc2/po/ko.gmo and /tmp/ZUgpLkWXkM/util-linux-2.41/po/ko.gmo differ
Binary files /tmp/V9THXohMgV/util-linux-2.41~rc2/po/nl.gmo and /tmp/ZUgpLkWXkM/util-linux-2.41/po/nl.gmo differ
Binary files /tmp/V9THXohMgV/util-linux-2.41~rc2/po/pl.gmo and /tmp/ZUgpLkWXkM/util-linux-2.41/po/pl.gmo differ
Binary files /tmp/V9THXohMgV/util-linux-2.41~rc2/po/ro.gmo and /tmp/ZUgpLkWXkM/util-linux-2.41/po/ro.gmo differ
Binary files /tmp/V9THXohMgV/util-linux-2.41~rc2/po/uk.gmo and /tmp/ZUgpLkWXkM/util-linux-2.41/po/uk.gmo differ
diff -Nru util-linux-2.41~rc2/po-man/po4a.cfg util-linux-2.41/po-man/po4a.cfg
--- util-linux-2.41~rc2/po-man/po4a.cfg 2025-02-26 13:27:07.556596964 +0100
+++ util-linux-2.41/po-man/po4a.cfg 2025-03-18 13:43:57.618086044 +0100
@@ -1,4 +1,4 @@
-[po4a_langs] cs de es fr ko pt_BR ro sr uk
+[po4a_langs] cs de es fr ko pl pt_BR ro sr uk
[po4a_paths] util-linux-man.pot $lang:$lang.po
[type:asciidoc] ../man-common/bugreports.adoc $lang:$lang/man-common/bugreports.adoc opt:"--keep 0"
diff -Nru util-linux-2.41~rc2/sys-utils/chmem.c util-linux-2.41/sys-utils/chmem.c
--- util-linux-2.41~rc2/sys-utils/chmem.c 2025-02-26 13:27:07.634596647 +0100
+++ util-linux-2.41/sys-utils/chmem.c 2025-03-10 14:51:10.016191026 +0100
@@ -367,7 +367,7 @@
int c, rc;
static const struct option longopts[] = {
- {"block", no_argument, NULL, 'b'},
+ {"blocks", no_argument, NULL, 'b'},
{"disable", no_argument, NULL, 'd'},
{"enable", no_argument, NULL, 'e'},
{"help", no_argument, NULL, 'h'},
diff -Nru util-linux-2.41~rc2/sys-utils/hwclock-rtc.c util-linux-2.41/sys-utils/hwclock-rtc.c
--- util-linux-2.41~rc2/sys-utils/hwclock-rtc.c 2025-02-26 13:27:07.635596642 +0100
+++ util-linux-2.41/sys-utils/hwclock-rtc.c 2025-03-17 12:21:53.078758245 +0100
@@ -431,6 +431,9 @@
{
const struct hwclock_param *param = &hwclock_params[0];
+ if (!alias)
+ return 1;
+
while (param->name) {
if (!strcmp(alias, param->name)) {
*value = param->id;
diff -Nru util-linux-2.41~rc2/sys-utils/irqtop.c util-linux-2.41/sys-utils/irqtop.c
--- util-linux-2.41~rc2/sys-utils/irqtop.c 2025-03-06 12:13:49.294910641 +0100
+++ util-linux-2.41/sys-utils/irqtop.c 2025-03-18 13:42:56.678315267 +0100
@@ -391,6 +391,9 @@
};
setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+ close_stdout_atexit();
parse_args(&ctl, &out, argc, argv);
diff -Nru util-linux-2.41~rc2/sys-utils/lscpu-arm.c util-linux-2.41/sys-utils/lscpu-arm.c
--- util-linux-2.41~rc2/sys-utils/lscpu-arm.c 2025-02-26 13:27:07.637596634 +0100
+++ util-linux-2.41/sys-utils/lscpu-arm.c 2025-03-10 14:50:28.311358057 +0100
@@ -93,10 +93,14 @@
{ 0xd80, "Cortex-A520" },
{ 0xd81, "Cortex-A720" },
{ 0xd82, "Cortex-X4" },
+ { 0xd83, "Neoverse-V3AE" },
{ 0xd84, "Neoverse-V3" },
{ 0xd85, "Cortex-X925" },
{ 0xd87, "Cortex-A725" },
+ { 0xd88, "Cortex-A520AE" },
+ { 0xd89, "Cortex-A720AE" },
{ 0xd8e, "Neoverse-N3" },
+ { 0xd8f, "Cortex-A320" },
{ -1, "unknown" },
};
diff -Nru util-linux-2.41~rc2/sys-utils/lsipc.c util-linux-2.41/sys-utils/lsipc.c
--- util-linux-2.41~rc2/sys-utils/lsipc.c 2025-02-26 13:27:07.637596634 +0100
+++ util-linux-2.41/sys-utils/lsipc.c 2025-03-17 12:29:55.819883683 +0100
@@ -926,7 +926,7 @@
rc = scols_line_refer_data(ln, n, arg);
break;
case COL_CGID:
- rc = scols_line_sprintf(ln, n, "%u", p->msg_perm.cuid);
+ rc = scols_line_sprintf(ln, n, "%u", p->msg_perm.cgid);
break;
case COL_CGROUP:
arg = get_groupname(&gr, p->msg_perm.cgid);
diff -Nru util-linux-2.41~rc2/sys-utils/lsirq.c util-linux-2.41/sys-utils/lsirq.c
--- util-linux-2.41~rc2/sys-utils/lsirq.c 2025-03-06 12:13:49.294910641 +0100
+++ util-linux-2.41/sys-utils/lsirq.c 2025-03-18 13:42:56.679315263 +0100
@@ -105,6 +105,9 @@
int softirq = 0;
setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+ close_stdout_atexit();
while ((c = getopt_long(argc, argv, "no:s:t:C:ShJPV", longopts, NULL)) != -1) {
err_exclusive_options(c, longopts, excl, excl_st);
diff -Nru util-linux-2.41~rc2/sys-utils/swapon.c util-linux-2.41/sys-utils/swapon.c
--- util-linux-2.41~rc2/sys-utils/swapon.c 2025-02-26 13:27:07.640596622 +0100
+++ util-linux-2.41/sys-utils/swapon.c 2025-03-17 12:19:15.138370990 +0100
@@ -145,6 +145,7 @@
no_heading, /* toggle --show headers */
raw, /* toggle --show alignment */
show, /* display --show information */
+ summarize, /* display summary of swap use */
verbose; /* be chatty */
};
@@ -965,8 +966,8 @@
ctl.fix_page_size = 1;
break;
case 's': /* status report */
- status = display_summary();
- return status;
+ ctl.summarize = 1;
+ break;
case 'v': /* be chatty */
ctl.verbose = 1;
break;
@@ -1007,6 +1008,9 @@
}
argv += optind;
+ if (ctl.summarize)
+ return display_summary();
+
if (ctl.show || (!ctl.all && !numof_labels() && !numof_uuids() && *argv == NULL)) {
if (!ctl.ncolumns) {
/* default columns */
@@ -1016,8 +1020,7 @@
ctl.columns[ctl.ncolumns++] = COL_USED;
ctl.columns[ctl.ncolumns++] = COL_PRIO;
}
- status = show_table(&ctl);
- return status;
+ return show_table(&ctl);
}
if (ctl.props.no_fail && !ctl.all) {
diff -Nru util-linux-2.41~rc2/sys-utils/unshare.c util-linux-2.41/sys-utils/unshare.c
--- util-linux-2.41~rc2/sys-utils/unshare.c 2025-03-04 19:14:02.601173534 +0100
+++ util-linux-2.41/sys-utils/unshare.c 2025-03-17 13:57:12.789532733 +0100
@@ -737,7 +737,7 @@
flags = strrchr(interp, ':');
- return strchr(flags, 'F') != NULL;
+ return flags && strchr(flags, 'F') != NULL;
}
static void load_interp(const char *binfmt_mnt, const char *interp)
@@ -1005,7 +1005,7 @@
insert_map_range(&groupmap,
read_subid_range(_PATH_SUBGID, real_euid, 0));
else if (!strcmp(optarg, "subids"))
- insert_map_range(&usermap,
+ insert_map_range(&groupmap,
read_subid_range(_PATH_SUBGID, real_euid, 1));
else if (!strcmp(optarg, "all"))
read_kernel_map(&groupmap, _PATH_PROC_GIDMAP);
diff -Nru util-linux-2.41~rc2/.tarball-version util-linux-2.41/.tarball-version
--- util-linux-2.41~rc2/.tarball-version 2025-03-06 12:25:41.213978539 +0100
+++ util-linux-2.41/.tarball-version 2025-03-18 13:56:05.329195960 +0100
@@ -1 +1 @@
-2.41-rc2
+2.41
diff -Nru util-linux-2.41~rc2/tests/helpers/test_sysinfo.c util-linux-2.41/tests/helpers/test_sysinfo.c
--- util-linux-2.41~rc2/tests/helpers/test_sysinfo.c 2025-03-05 14:17:30.356392119 +0100
+++ util-linux-2.41/tests/helpers/test_sysinfo.c 2025-03-17 12:21:53.049758357 +0100
@@ -215,6 +215,7 @@
{
char * h = xgethostname();
printf("%s\n", h);
+ free(h);
return 0;
}
diff -Nru util-linux-2.41~rc2/text-utils/more.c util-linux-2.41/text-utils/more.c
--- util-linux-2.41~rc2/text-utils/more.c 2025-02-26 13:27:07.722596289 +0100
+++ util-linux-2.41/text-utils/more.c 2025-03-17 12:24:23.810173287 +0100
@@ -1684,6 +1684,9 @@
continue;
if (cmd.key == more_kc_repeat_previous)
cmd = ctl->previous_command;
+ else
+ ctl->previous_command = cmd;
+
switch (cmd.key) {
case more_kc_backwards:
if (ctl->no_tty_in) {
@@ -1849,7 +1852,6 @@
fflush(NULL);
break;
}
- ctl->previous_command = cmd;
if (done) {
cmd.key = more_kc_unknown_command;
break;
@@ -2095,7 +2097,6 @@
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
close_stdout_atexit();
- setlocale(LC_ALL, "");
/* Auto set no scroll on when binary is called page */
if (!(strcmp(program_invocation_short_name, "page")))
diff -Nru util-linux-2.41~rc2/tools/git-tp-sync util-linux-2.41/tools/git-tp-sync
--- util-linux-2.41~rc2/tools/git-tp-sync 2025-03-06 12:13:49.294910641 +0100
+++ util-linux-2.41/tools/git-tp-sync 2025-03-18 13:42:56.679315263 +0100
@@ -1,20 +1,17 @@
#!/bin/bash
#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
# git-tp-sync - downloads the latest PO files from translationproject.org
# and commits changes to your GIT repository.
#
# Copyright (C) 2007-2025 Karel Zak <kzak@redhat.com>
#
-# This file is free software; you can redistribute it and/or modify
+# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
-# This file is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
declare -A TP_PROJECTS
# Define local directories and project names on TP.org
diff -Nru util-linux-2.41~rc2/tools/git-version-gen util-linux-2.41/tools/git-version-gen
--- util-linux-2.41~rc2/tools/git-version-gen 2025-03-06 12:13:49.294910641 +0100
+++ util-linux-2.41/tools/git-version-gen 2025-03-18 13:42:56.680315260 +0100
@@ -1,4 +1,7 @@
#!/bin/sh
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
# Print a version string.
scriptversion=2011-02-19.19; # UTC
diff -Nru util-linux-2.41~rc2/tools/poman-translate.sh util-linux-2.41/tools/poman-translate.sh
--- util-linux-2.41~rc2/tools/poman-translate.sh 2025-02-26 13:27:07.724596281 +0100
+++ util-linux-2.41/tools/poman-translate.sh 2025-03-17 12:16:24.077000919 +0100
@@ -90,13 +90,16 @@
PO4A_TRANSLATE_ONLY_FLAGS=()
for LOCALE in "${LOCALES[@]}"; do
for ADOC in "${ADOCS[@]}"; do
- if [[ ! " ${PO4ACFG_TRANSLATIONS[*]} " =~ .*${ADOC}[[:space:]] ]]; then
- echo "Untranslated: $LOCALE: $ADOC"
- continue
+ if [[ "$ADOC" == *"/man-common/manpage-stub.adoc" ]]; then
+ continue
+ fi
+ ADOC_NAME=$(basename "$ADOC")
+ if [[ ! " ${PO4ACFG_TRANSLATIONS[*]} " =~ .*${ADOC_NAME}[[:space:]] ]]; then
+ echo "unconfigured in $PO4ACFG: $ADOC"
+ continue
fi
PO4A_TRANSLATE_ONLY_FLAGS+=("--translate-only")
- ADOC_NAME=$(basename "$ADOC")
- if [[ "$ADOC" == *"/man-common/"* ]]; then
+ if [[ "$ADOC" == *"/man-common/"* ]]; then
PO4A_TRANSLATE_ONLY_FLAGS+=("$LOCALE/man-common/$ADOC_NAME")
else
MANADOCS+=("$LOCALE/$ADOC_NAME")
diff -Nru util-linux-2.41~rc2/.version util-linux-2.41/.version
--- util-linux-2.41~rc2/.version 2025-03-06 12:21:11.388055098 +0100
+++ util-linux-2.41/.version 2025-03-18 13:52:51.337828894 +0100
@@ -1 +1 @@
-2.41-rc2
+2.41