From 796cf6f6e15a893a7d1bac7e5ee4d2bc2dc6e962aa2cc9ff5ded0fa96061971c Mon Sep 17 00:00:00 2001
From: Jan Engelhardt <jengelh@inai.de>
Date: Thu, 4 Apr 2024 22:34:28 +0000
Subject: [PATCH] Accepting request 1164989 from home:kukuk:cleanup

- Update to release 2.40
  * Add lastlog2
  * agetty: Load autologin user from agetty.autologin credential
  * agetty: use get_terminal_default_type()
  * agetty: use sd_get_sessions() for number of users (#2088)
  * blockdev: add support for BLKGETZONESZ
  * cfdisk: ask y/n before wipe
  * cfdisk: properly handle out-of-order partitions during resize
  * chcpu: document limitations of -g
  * chsh: use libeconf to read /etc/shells
  * column: fix -l
  * column: fix memory leak
  * dmesg: fix FD leak
  * dmesg: fix delta calculation
  * dmesg: fix wrong size calculation
  * dmesg: support reading kmsg format from file
  * enosys: a new small command to make syscalls fail with ENOSYS
  * exch: new command to atomically exchanges paths between two files
  * fdisk: add support for partition resizing
  * fdisk: remove usage of VLA
  * fincore: add --output-all
  * findmnt: add --list-columns
  * findmnt: add -I, --dfi options for imitating the output of df -i
  * findmnt: add inode-related columns for implementing "df -i" like output
  * hexdump: add '--one-byte-hex' format option
  * hwclock: add support for RTC_VL_READ/RTC_VL_CLR ioctls
  * login: initialize noauth from login.noauth credential
  * lsblk: add --filter
  * lsblk: add --highlight
  * lsblk: add --list-columns

OBS-URL: https://build.opensuse.org/request/show/1164989
OBS-URL: https://build.opensuse.org/package/show/Base:System/util-linux?expand=0&rev=552
---
 ...ibblkid-try-LUKS2-first-when-probing.patch |  44 ---
 skip-lsfd-tests-PR2888.patch                  |  60 +++
 tests-increase-delay-for-waitpid-test.patch   |  36 --
 use-logind-not-utmp.patch                     | 357 ------------------
 util-linux-2.39.3.tar.sign                    |  16 -
 util-linux-2.39.3.tar.xz                      |   3 -
 util-linux-2.40.tar.sign                      |  16 +
 util-linux-2.40.tar.xz                        |   3 +
 util-linux-fix-tests-with-64k-pagesize.patch  | 276 --------------
 util-linux.changes                            |  54 +++
 util-linux.spec                               |  80 +++-
 11 files changed, 203 insertions(+), 742 deletions(-)
 delete mode 100644 0001-Revert-libblkid-try-LUKS2-first-when-probing.patch
 create mode 100644 skip-lsfd-tests-PR2888.patch
 delete mode 100644 tests-increase-delay-for-waitpid-test.patch
 delete mode 100644 use-logind-not-utmp.patch
 delete mode 100644 util-linux-2.39.3.tar.sign
 delete mode 100644 util-linux-2.39.3.tar.xz
 create mode 100644 util-linux-2.40.tar.sign
 create mode 100644 util-linux-2.40.tar.xz
 delete mode 100644 util-linux-fix-tests-with-64k-pagesize.patch

diff --git a/0001-Revert-libblkid-try-LUKS2-first-when-probing.patch b/0001-Revert-libblkid-try-LUKS2-first-when-probing.patch
deleted file mode 100644
index da6b46a..0000000
--- a/0001-Revert-libblkid-try-LUKS2-first-when-probing.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 93ba7961779789217a1f814ce3110ff8c040c8c3 Mon Sep 17 00:00:00 2001
-From: Fabian Vogt <fvogt@suse.de>
-Date: Wed, 12 Jul 2023 15:48:27 +0200
-Subject: [PATCH] Revert "libblkid: try LUKS2 first when probing"
-References: https://github.com/util-linux/util-linux/pull/2373
-
-mdadm superblocks before 1.1 are placed at the end of the device, which
-means that the data contained inside the array starts at offset 0. For
-LUKS inside MD, blkid falsely detects this as plain LUKS instead of a
-linux_raid_member. This causes e.g. dracut to not assemble the array
-during boot and system startup fails.
-
-This reverts commit b8889c0a214aeb3dd47bf1ab280fe5534b64d2aa.
----
- libblkid/src/superblocks/superblocks.c | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
-
-diff --git a/libblkid/src/superblocks/superblocks.c b/libblkid/src/superblocks/superblocks.c
-index fb0392707..c7789a15b 100644
---- a/libblkid/src/superblocks/superblocks.c
-+++ b/libblkid/src/superblocks/superblocks.c
-@@ -94,11 +94,6 @@ static int blkid_probe_set_usage(blkid_probe pr, int usage);
-  */
- static const struct blkid_idinfo *idinfos[] =
- {
--	/* In case the volume is locked with OPAL we are going to get
--	 * an I/O error when reading past the LUKS header, so try it
--	 * first. */
--	&luks_idinfo,
--
- 	/* RAIDs */
- 	&linuxraid_idinfo,
- 	&ddfraid_idinfo,
-@@ -124,6 +119,7 @@ static const struct blkid_idinfo *idinfos[] =
- 	&snapcow_idinfo,
- 	&verity_hash_idinfo,
- 	&integrity_idinfo,
-+	&luks_idinfo,
- 	&vmfs_volume_idinfo,
- 	&ubi_idinfo,
- 	&vdo_idinfo,
--- 
-2.41.0
-
diff --git a/skip-lsfd-tests-PR2888.patch b/skip-lsfd-tests-PR2888.patch
new file mode 100644
index 0000000..9363695
--- /dev/null
+++ b/skip-lsfd-tests-PR2888.patch
@@ -0,0 +1,60 @@
+From f98a4c12b366ae2b5e01fa30d72eef34f3bab681 Mon Sep 17 00:00:00 2001
+From: Masatake YAMATO <yamato@redhat.com>
+Date: Tue, 2 Apr 2024 06:34:40 +0900
+Subject: [PATCH 2/2] tests: (test_mkfds::sockdiag) verify the recieved message
+ to detect whether the socket is usable or not
+
+Close #2822.
+
+Signed-off-by: Masatake YAMATO <yamato@redhat.com>
+---
+ tests/helpers/test_mkfds.c | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+diff --git a/tests/helpers/test_mkfds.c b/tests/helpers/test_mkfds.c
+index 39427ba09a..4b138c2efd 100644
+--- a/tests/helpers/test_mkfds.c
++++ b/tests/helpers/test_mkfds.c
+@@ -3200,6 +3200,25 @@ static int send_diag_request(int diagsd, void *req, size_t req_size)
+ 	return 0;
+ }
+ 
++static int recv_diag_request(int diagsd)
++{
++	__attribute__((aligned(sizeof(void *)))) uint8_t buf[8192];
++	const struct nlmsghdr *h;
++	int r = recvfrom(diagsd, buf, sizeof(buf), 0, NULL, NULL);;
++	if (r < 0)
++		return errno;
++
++	h = (void *)buf;
++	if (!NLMSG_OK(h, (size_t)r))
++		return -1;
++
++	if (h->nlmsg_type == NLMSG_ERROR) {
++		struct nlmsgerr *e = (struct nlmsgerr *)NLMSG_DATA(h);
++		return - e->error;
++	}
++	return 0;
++}
++
+ static void *make_sockdiag(const struct factory *factory, struct fdesc fdescs[],
+ 			   int argc, char ** argv)
+ {
+@@ -3243,6 +3262,16 @@ static void *make_sockdiag(const struct factory *factory, struct fdesc fdescs[],
+ 		err(EXIT_FAILURE, "failed in sendmsg()");
+ 	}
+ 
++	e = recv_diag_request(diagsd);
++	if (e != 0) {
++		close (diagsd);
++		if (e == ENOENT)
++			err(EXIT_ENOENT, "failed in recvfrom()");
++		if (e > 0)
++			err(EXIT_FAILURE, "failed in recvfrom()");
++		if (e < 0)
++			errx(EXIT_FAILURE, "failed in recvfrom() => -1");
++	}
+ 
+ 	if (diagsd != fdescs[0].fd) {
+ 		if (dup2(diagsd, fdescs[0].fd) < 0) {
diff --git a/tests-increase-delay-for-waitpid-test.patch b/tests-increase-delay-for-waitpid-test.patch
deleted file mode 100644
index 2538ff6..0000000
--- a/tests-increase-delay-for-waitpid-test.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 4524f5d6b7d90684f2b205e472cd65a682d5fab5 Mon Sep 17 00:00:00 2001
-From: Goldwyn Rodrigues <rgoldwyn@suse.de>
-Date: Wed, 29 Nov 2023 11:36:23 -0600
-Subject: [PATCH] tests: increase delay for waitpid test
-References: bsc#1217651
-
-In some test executions on s390x, the waitpid test fails because 1
-gets printed before 2.
-
-[  557s] --- /home/abuild/rpmbuild/BUILD/util-linux-2.39.2/tests/expected/misc/waitpid-normal	2023-06-14 09:11:15.910887765 +0000
-[  557s] +++ /home/abuild/rpmbuild/BUILD/util-linux-2.39.2/tests/output/misc/waitpid-normal	2023-11-27 23:30:30.406675022 +0000
-[  557s] @@ -1,4 +1,4 @@
-[  557s]  3
-[  557s] -2
-[  557s]  1
-[  557s] +2
-[  557s]  4
-
-Increase the time to print 1, so the test numbers are printed in
-expected order.
-
-Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
-
-diff --git a/tests/ts/misc/waitpid b/tests/ts/misc/waitpid
-index daed74fe0..904222c05 100755
---- a/tests/ts/misc/waitpid
-+++ b/tests/ts/misc/waitpid
-@@ -24,7 +24,7 @@ ts_check_test_command "$TS_CMD_WAITPID"
- 
- ts_init_subtest normal
- 
--(sleep 0.2; echo 1 >> "$TS_OUTPUT") &
-+(sleep 0.5; echo 1 >> "$TS_OUTPUT") &
- BG1="$!"
- 
- (sleep 0.1; echo 2 >> "$TS_OUTPUT") &
diff --git a/use-logind-not-utmp.patch b/use-logind-not-utmp.patch
deleted file mode 100644
index fdf36ac..0000000
--- a/use-logind-not-utmp.patch
+++ /dev/null
@@ -1,357 +0,0 @@
-From: Thorsten Kukuk <kukuk@suse.com>
-Date: 2023-08-17 08:03:09+0000
-References: https://github.com/util-linux/util-linux/pull/2100
-
-diff --git a/configure.ac b/configure.ac
-index d631b062d2..17d3ab703b 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -2491,6 +2491,7 @@ AS_IF([test "x$with_systemd" != xno], [
-     [*:yes],
-        AC_DEFINE([HAVE_LIBSYSTEMD], [1], [Define if libsystemd is available])
-        AC_DEFINE([USE_SYSTEMD], [1], [Define if systemd support is wanted ])
-+       AC_CHECK_DECLS([sd_session_get_username], [], [], [#include <systemd/sd-login.h>])
-   )
- ])
- AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$have_systemd" = xyes])
-diff --git a/term-utils/Makemodule.am b/term-utils/Makemodule.am
-index 07004d43ca..1542320422 100644
---- a/term-utils/Makemodule.am
-+++ b/term-utils/Makemodule.am
-@@ -98,6 +98,10 @@ dist_noinst_DATA += term-utils/wall.1.adoc
- wall_CFLAGS = $(SUID_CFLAGS) $(AM_CFLAGS)
- wall_LDFLAGS = $(SUID_LDFLAGS) $(AM_LDFLAGS)
- wall_LDADD = $(LDADD) libcommon.la
-+if HAVE_SYSTEMD
-+wall_LDADD += $(SYSTEMD_LIBS)
-+wall_CFLAGS += $(SYSTEMD_CFLAGS)
-+endif
- if USE_TTY_GROUP
- if MAKEINSTALL_DO_CHOWN
- install-exec-hook-wall::
-diff --git a/term-utils/wall.c b/term-utils/wall.c
-index c601d3e5b7..313b1bdee5 100644
---- a/term-utils/wall.c
-+++ b/term-utils/wall.c
-@@ -61,6 +61,11 @@
- #include <sys/types.h>
- #include <grp.h>
- 
-+#if defined(USE_SYSTEMD) && HAVE_DECL_SD_SESSION_GET_USERNAME == 1
-+# include <systemd/sd-login.h>
-+# include <systemd/sd-daemon.h>
-+#endif
-+
- #include "nls.h"
- #include "xalloc.h"
- #include "strutils.h"
-@@ -246,6 +251,37 @@ int main(int argc, char **argv)
- 
- 	iov.iov_base = mbuf;
- 	iov.iov_len = mbufsize;
-+#if defined(USE_SYSTEMD) && HAVE_DECL_SD_SESSION_GET_USERNAME == 1
-+	if (sd_booted() > 0) {
-+		char **sessions_list;
-+		int sessions;
-+
-+		sessions = sd_get_sessions(&sessions_list);
-+		if (sessions < 0)
-+			errx(EXIT_FAILURE, _("error getting sessions: %s"),
-+	             		strerror(-sessions));
-+
-+		for (int i = 0; i < sessions; i++) {
-+			char *name, *tty;
-+			int r;
-+
-+			if ((r = sd_session_get_username(sessions_list[i], &name)) < 0)
-+				errx(EXIT_FAILURE, _("get user name failed: %s"), strerror (-r));
-+
-+			if (!(group_buf && !is_gr_member(name, group_buf))) {
-+				if (sd_session_get_tty(sessions_list[i], &tty) >= 0) {
-+					if ((p = ttymsg(&iov, 1, tty, timeout)) != NULL)
-+						warnx("%s", p);
-+
-+					free(tty);
-+				}
-+			}
-+			free(name);
-+			free(sessions_list[i]);
-+		}
-+		free(sessions_list);
-+	} else {
-+#endif
- 	while((utmpptr = getutxent())) {
- 		if (!utmpptr->ut_user[0])
- 			continue;
-@@ -269,6 +305,9 @@ int main(int argc, char **argv)
- 			warnx("%s", p);
- 	}
- 	endutxent();
-+#if defined(USE_SYSTEMD) && HAVE_DECL_SD_SESSION_GET_USERNAME == 1
-+	}
-+#endif
- 	free(mbuf);
- 	free_group_workspace(group_buf);
- 	exit(EXIT_SUCCESS);
-
-From e915e6baeba3cbce154336a4f1f24a8be93e85ae Mon Sep 17 00:00:00 2001
-From: Thorsten Kukuk <kukuk@suse.com>
-Date: Wed, 31 May 2023 08:57:01 +0200
-Subject: [PATCH 2/3] agetty: use sd_get_sessions() for number of users (#2088)
-
----
- term-utils/Makemodule.am |  4 ++++
- term-utils/agetty.c      | 28 ++++++++++++++++++++++------
- 2 files changed, 26 insertions(+), 6 deletions(-)
-
-diff --git a/term-utils/Makemodule.am b/term-utils/Makemodule.am
-index 1542320422..b7037fb116 100644
---- a/term-utils/Makemodule.am
-+++ b/term-utils/Makemodule.am
-@@ -58,6 +58,10 @@ endif
- if HAVE_ECONF
- agetty_LDADD += -leconf
- endif
-+if HAVE_SYSTEMD
-+agetty_LDADD += $(SYSTEMD_LIBS)
-+agetty_CFLAGS = $(SYSTEMD_CFLAGS)
-+endif
- endif # BUILD_AGETTY
- 
- 
-diff --git a/term-utils/agetty.c b/term-utils/agetty.c
-index cf8725537b..6bc3e5b5a8 100644
---- a/term-utils/agetty.c
-+++ b/term-utils/agetty.c
-@@ -73,6 +73,11 @@
- # endif
- #endif
- 
-+#ifdef USE_SYSTEMD
-+# include <systemd/sd-daemon.h>
-+# include <systemd/sd-login.h>
-+#endif
-+
- #ifdef __linux__
- #  include <sys/kd.h>
- #  define USE_SYSLOG
-@@ -2864,12 +2869,23 @@ static void output_special_char(struct issue *ie,
- 	case 'U':
- 	{
- 		int users = 0;
--		struct utmpx *ut;
--		setutxent();
--		while ((ut = getutxent()))
--			if (ut->ut_type == USER_PROCESS)
--				users++;
--		endutxent();
-+#ifdef USE_SYSTEMD
-+		if (sd_booted() > 0) {
-+			users = sd_get_sessions(NULL);
-+			if (users < 0)
-+				users = 0;
-+		} else {
-+#endif
-+			users = 0;
-+			struct utmpx *ut;
-+			setutxent();
-+			while ((ut = getutxent()))
-+				if (ut->ut_type == USER_PROCESS)
-+					users++;
-+			endutxent();
-+#ifdef USE_SYSTEMD
-+		}
-+#endif
- 		if (c == 'U')
- 			fprintf(ie->output, P_("%d user", "%d users", users), users);
- 		else
-
-From 5c62c27001467f3ef0baaa66ae4e3bb80a0298a6 Mon Sep 17 00:00:00 2001
-From: Thorsten Kukuk <kukuk@suse.com>
-Date: Wed, 31 May 2023 09:00:09 +0200
-Subject: [PATCH 3/3] write: query logind for list of users with tty (#2088)
-
----
- term-utils/Makemodule.am |   4 ++
- term-utils/write.c       | 130 +++++++++++++++++++++++++++++++++++----
- 2 files changed, 123 insertions(+), 11 deletions(-)
-
-diff --git a/term-utils/Makemodule.am b/term-utils/Makemodule.am
-index b7037fb116..1efe1c57e3 100644
---- a/term-utils/Makemodule.am
-+++ b/term-utils/Makemodule.am
-@@ -126,6 +126,10 @@ write_SOURCES = term-utils/write.c
- write_CFLAGS = $(SUID_CFLAGS) $(AM_CFLAGS)
- write_LDFLAGS = $(SUID_LDFLAGS) $(AM_LDFLAGS)
- write_LDADD = $(LDADD) libcommon.la
-+if HAVE_SYSTEMD
-+write_LDADD += $(SYSTEMD_LIBS)
-+write_CFLAGS += $(SYSTEMD_CFLAGS)
-+endif
- 
- if USE_TTY_GROUP
- if MAKEINSTALL_DO_CHOWN
-diff --git a/term-utils/write.c b/term-utils/write.c
-index 8b86e9a9d5..8aa450d563 100644
---- a/term-utils/write.c
-+++ b/term-utils/write.c
-@@ -59,6 +59,11 @@
- #include <unistd.h>
- #include <utmpx.h>
- 
-+#if defined(USE_SYSTEMD) && HAVE_DECL_SD_SESSION_GET_USERNAME == 1
-+# include <systemd/sd-login.h>
-+# include <systemd/sd-daemon.h>
-+#endif
-+
- #include "c.h"
- #include "carefulputc.h"
- #include "closestream.h"
-@@ -131,19 +136,56 @@ static int check_utmp(const struct write_control *ctl)
- {
- 	struct utmpx *u;
- 	int res = 1;
--
--	utmpxname(_PATH_UTMP);
--	setutxent();
--
--	while ((u = getutxent())) {
--		if (strncmp(ctl->dst_login, u->ut_user, sizeof(u->ut_user)) == 0 &&
--		    strncmp(ctl->dst_tty_name, u->ut_line, sizeof(u->ut_line)) == 0) {
--			res = 0;
--			break;
-+#if defined(USE_SYSTEMD) && HAVE_DECL_SD_SESSION_GET_USERNAME == 1
-+	if (sd_booted() > 0) {
-+		char **sessions_list;
-+		int sessions = sd_get_sessions(&sessions_list);
-+		if (sessions < 0)
-+			errx(EXIT_FAILURE, _("error getting sessions: %s"),
-+				strerror(-sessions));
-+
-+		for (int i = 0; i < sessions; i++) {
-+
-+			char *name, *tty;
-+			int r;
-+
-+			if ((r = sd_session_get_username(sessions_list[i], &name)) < 0)
-+				errx(EXIT_FAILURE, _("get user name failed: %s"), strerror (-r));
-+			if (sd_session_get_tty(sessions_list[i], &tty) < 0) {
-+				free(name);
-+				continue;
-+			}
-+
-+			if  (strcmp(ctl->dst_login, name) == 0 &&
-+					strcmp(ctl->dst_tty_name, tty) == 0) {
-+				free(name);
-+				free(tty);
-+				res = 0;
-+				break;
-+			}
-+			free(name);
-+			free(tty);
-+		}
-+		for (int i = 0; i < sessions; i++)
-+			free(sessions_list[i]);
-+		free(sessions_list);
-+	} else {
-+#endif
-+		utmpxname(_PATH_UTMP);
-+		setutxent();
-+
-+		while ((u = getutxent())) {
-+			if (strncmp(ctl->dst_login, u->ut_user, sizeof(u->ut_user)) == 0 &&
-+		    		strncmp(ctl->dst_tty_name, u->ut_line, sizeof(u->ut_line)) == 0) {
-+				res = 0;
-+				break;
-+			}
- 		}
--	}
- 
--	endutxent();
-+		endutxent();
-+#if defined(USE_SYSTEMD) && HAVE_DECL_SD_SESSION_GET_USERNAME == 1
-+	}
-+#endif
- 	return res;
- }
- 
-@@ -163,6 +205,69 @@ static void search_utmp(struct write_control *ctl)
- 	struct utmpx *u;
- 	time_t best_atime = 0, tty_atime;
- 	int num_ttys = 0, valid_ttys = 0, tty_writeable = 0, user_is_me = 0;
-+
-+#if defined(USE_SYSTEMD) && HAVE_DECL_SD_SESSION_GET_USERNAME == 1
-+	if (sd_booted() > 0) {
-+		char path[256];
-+		char **sessions_list;
-+		int sessions = sd_get_sessions(&sessions_list);
-+		if (sessions < 0)
-+			errx(EXIT_FAILURE, _("error getting sessions: %s"),
-+			     strerror(-sessions));
-+
-+		for (int i = 0; i < sessions; i++) {
-+			char *name, *tty;
-+			int r;
-+
-+			if ((r = sd_session_get_username(sessions_list[i], &name)) < 0)
-+				errx(EXIT_FAILURE, _("get user name failed: %s"), strerror (-r));
-+
-+			if  (strcmp(ctl->dst_login, name) != 0) {
-+				free(name);
-+				continue;
-+			}
-+
-+			if (sd_session_get_tty(sessions_list[i], &tty) < 0) {
-+				free(name);
-+				continue;
-+			}
-+
-+			num_ttys++;
-+			snprintf(path, sizeof(path), "/dev/%s", tty);
-+			if (check_tty(path, &tty_writeable, &tty_atime, 0)) {
-+				/* bad term? skip */
-+				free(name);
-+				free(tty);
-+				continue;
-+			}
-+			if (ctl->src_uid && !tty_writeable) {
-+				/* skip ttys with msgs off */
-+				free(name);
-+				free(tty);
-+				continue;
-+			}
-+			if (strcmp(tty, ctl->src_tty_name) == 0) {
-+				user_is_me = 1;
-+				free(name);
-+				free(tty);
-+				/* don't write to yourself */
-+				continue;
-+			}
-+			valid_ttys++;
-+			if (best_atime < tty_atime) {
-+				best_atime = tty_atime;
-+				free(ctl->dst_tty_path);
-+				ctl->dst_tty_path = xstrdup(path);
-+				ctl->dst_tty_name = ctl->dst_tty_path + 5;
-+			}
-+			free(name);
-+			free(tty);
-+		}
-+		for (int i = 0; i < sessions; i++)
-+			free(sessions_list[i]);
-+		free(sessions_list);
-+	} else {
-+#endif
- 	char path[sizeof(u->ut_line) + 6];
- 
- 	utmpxname(_PATH_UTMP);
-@@ -197,6 +302,9 @@ static void search_utmp(struct write_control *ctl)
- 	}
- 
- 	endutxent();
-+#if defined(USE_SYSTEMD) && HAVE_DECL_SD_SESSION_GET_USERNAME == 1
-+	}
-+#endif
- 	if (num_ttys == 0)
- 		errx(EXIT_FAILURE, _("%s is not logged in"), ctl->dst_login);
- 	if (valid_ttys == 0) {
diff --git a/util-linux-2.39.3.tar.sign b/util-linux-2.39.3.tar.sign
deleted file mode 100644
index e9c061b..0000000
--- a/util-linux-2.39.3.tar.sign
+++ /dev/null
@@ -1,16 +0,0 @@
------BEGIN PGP SIGNATURE-----
-
-iQIzBAABCAAdFiEEsMZNFDAcxu+u32Dk5LcdXuw5woQFAmVuLVMACgkQ5LcdXuw5
-woTWRg/+KBoZc5EjgFEUQMGzblNyuqrvcFqCbhEcoaEEMtEKPrQGVZgwgs+SZcel
-n0ygCOes7M/nNmAvn4dVM8sZRvEPKjdRFErmghNuWKfZLbE9szadNcnPunmzZ1Nc
-Cd2E1R6bo0B5X3tZ4ISW3keAnWKlnRucPIrW2qZiWT36LfJT4s9vZ/dyAnJ3eAtQ
-aFgUVMWRwDFYYr79iXq6Wq60bHbxw1HT+KrpoLEkjIXN+DmuSffVQfjmCpamT1UH
-oGgUGDhrUFr8XRUC0q07n1CxxgirjlR+KeLDiNAXuzGTWK2naBYCtCwGJpxM5Dvd
-cyKenmCC1Ie+cl9m3w7MfP7WgtoPogpttEiZ1lsLJcDEbeuAu1z+O/B52YwOi7O3
-WLpe6bqW/dQsAljC6q2UMZrwnRjK7Zr5CwkTlV/o0DuCmAidcoXEZAcVQDvY1H6k
-uYD9NFtQotS0ufOFH08AJxBYWVznbmiNG7NdGeMm/ysfe807fQYD25FYhP4/r4jt
-k6qWnfDrt9OooFNx6e7s2cBZSkTmJzJ8nxGv0a4WgOhZ6hnLpx/Cv2RIpux5DeMq
-wOuWuMDF9lOVWiv6iWiuy8shQ+hGF4+riFy8LfqJZf94wqZmp0tA8CHKFSDI99iC
-ci4tz2MEpQqeVeEx1sd18DRjkXycs5Wmy7ZAUtqnR1rUxKbhVLo=
-=4wcm
------END PGP SIGNATURE-----
diff --git a/util-linux-2.39.3.tar.xz b/util-linux-2.39.3.tar.xz
deleted file mode 100644
index 813c9b0..0000000
--- a/util-linux-2.39.3.tar.xz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7b6605e48d1a49f43cc4b4cfc59f313d0dd5402fa40b96810bd572e167dfed0f
-size 8526168
diff --git a/util-linux-2.40.tar.sign b/util-linux-2.40.tar.sign
new file mode 100644
index 0000000..4157924
--- /dev/null
+++ b/util-linux-2.40.tar.sign
@@ -0,0 +1,16 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQIzBAABCAAdFiEEsMZNFDAcxu+u32Dk5LcdXuw5woQFAmYECuEACgkQ5LcdXuw5
+woTCTg/9HwvHA+Gzd1rMO4UakgavnNqxzFP0rcC5HTTPHHX7rXLWVtd4u2pjStCt
+EWodiy7doRRuVOAKwn93nygt/m22w23omfODdTWejCAX1ALx00LliiySkFDFWUlY
+angRDG4p8nyLn03I3XBAWEvcWa7OIM4ddXlEuWSTNHTeBWSzCs0be0bbFgws2m/p
+ejqo7CAHXNVx4lbtsgLQgemAkr6WhALxPEcBrXj2V/rwYF8a/uwnWK3AfGDaTeoK
+DeYYsgWGkQdsPL3GDPiDttYtO9sJC8THvEOA1l0pzRyA0lI4hRbcqTXD+kvLGrZq
+csk5dprZ+CvejmBtagymQoSfAEJH0b6rKBmzJYhgbKreM8byy51sQ4pmUVAB/pBz
+MGAtj7PAAwcrot3CC5whMHsnB77qx0xBDlxrc+3BUKgZBiVhqe55gVGh2LnLdgCa
+rAVA3QhjgZlvuH/EsVJIv0cCIBMpYTyUJLDW1Or1CLDKAl+nR2Xu9X9Hj5sXc3In
+k9oU6i8/DOi1EZWJqwhf4nFZMFHgwgkHHaOXDLwlTTCFN11pOrEAnxRcsC/319Za
+RlfMhX56J+GYhmFW8I5OxRrvS6PInZ4WZ/1+Qzdmas/nqBGbnctZGqv3bF/Cp/qQ
+KAYTcaGqvjURmM9vcRWKjW33ZtGkD8JDrt1DvC3yQ/R/h+/Hy6I=
+=7ZO0
+-----END PGP SIGNATURE-----
diff --git a/util-linux-2.40.tar.xz b/util-linux-2.40.tar.xz
new file mode 100644
index 0000000..940fbf8
--- /dev/null
+++ b/util-linux-2.40.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d57a626081f9ead02fa44c63a6af162ec19c58f53e993f206ab7c3a6641c2cd7
+size 8762888
diff --git a/util-linux-fix-tests-with-64k-pagesize.patch b/util-linux-fix-tests-with-64k-pagesize.patch
deleted file mode 100644
index 3996bae..0000000
--- a/util-linux-fix-tests-with-64k-pagesize.patch
+++ /dev/null
@@ -1,276 +0,0 @@
-From 8b36444f447949c3ab477f2c43b45a94c30ee7bf Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de>
-Date: Sun, 21 May 2023 21:42:14 +0200
-Subject: [PATCH 1/4] fadvise: (test) dynamically calculate expected test
- values
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
----
- tests/ts/fadvise/drop | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/tests/ts/fadvise/drop b/tests/ts/fadvise/drop
-index 7c7eee5dc..86c0d5b0a 100755
---- a/tests/ts/fadvise/drop
-+++ b/tests/ts/fadvise/drop
-@@ -16,7 +16,7 @@ ts_check_prog "sleep"
- ts_cd "$TS_OUTDIR"
- 
- FILE="ddtest"
--BS=4k
-+BS=4096
- COUNT=8
- 
- FILE_FS="$("$TS_CMD_FINDMNT" -nr -o FSTYPE -T "$PWD")"
-@@ -41,22 +41,22 @@ create_file() {
-     echo
- 
-     create_file
--    echo "offset: 8192"
--    "$TS_CMD_FADVISE" -o 8192 "$FILE"
-+    echo "offset: $(( 2 * $BS ))"
-+    "$TS_CMD_FADVISE" -o $(( 2 * $BS )) "$FILE"
-     echo status: $?
-     "$TS_CMD_FINCORE" "$FILE"
-     echo
- 
-     create_file
--    echo "length: 16384"
--    "$TS_CMD_FADVISE" -l 16384 "$FILE"
-+    echo "length: $(( 4 * $BS ))"
-+    "$TS_CMD_FADVISE" -l $(( 4 * $BS )) "$FILE"
-     echo status: $?
-     "$TS_CMD_FINCORE" "$FILE"
-     echo
- 
-     create_file
--    echo "offset: 8192, length: 16384 fd: 42"
--    "$TS_CMD_FADVISE" -o 8192 -l 16384 --fd 42 42<"$FILE"
-+    echo "offset: $(( 2 * $BS )), length: $(( 4 * $BS )) fd: 42"
-+    "$TS_CMD_FADVISE" -o $(( 2 * $BS )) -l $(( 4 * $BS )) --fd 42 42<"$FILE"
-     echo status: $?
-     "$TS_CMD_FINCORE" "$FILE"
-     echo
--- 
-2.40.0
-
-
-From e5009e773fc801eca887dd43b721cd1b1aa327be Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de>
-Date: Sun, 21 May 2023 21:43:38 +0200
-Subject: [PATCH 2/4] fadvise: (tests) factor out calls to "fincore"
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This will make it easier to pass argument later.
-
-Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
----
- tests/ts/fadvise/drop | 14 +++++++++-----
- 1 file changed, 9 insertions(+), 5 deletions(-)
-
-diff --git a/tests/ts/fadvise/drop b/tests/ts/fadvise/drop
-index 86c0d5b0a..8869b7da4 100755
---- a/tests/ts/fadvise/drop
-+++ b/tests/ts/fadvise/drop
-@@ -28,37 +28,41 @@ create_file() {
-     dd if=/dev/zero of="$FILE" bs=$BS count=$COUNT conv=fsync >& /dev/null
- }
- 
-+do_fincore() {
-+    "$TS_CMD_FINCORE" "$FILE"
-+}
-+
- {
-     create_file
--    "$TS_CMD_FINCORE" "$FILE"
-+    do_fincore
-     echo
- 
-     create_file
-     echo "whole file"
-     "$TS_CMD_FADVISE" "$FILE"
-     echo status: $?
--    "$TS_CMD_FINCORE" "$FILE"
-+    do_fincore
-     echo
- 
-     create_file
-     echo "offset: $(( 2 * $BS ))"
-     "$TS_CMD_FADVISE" -o $(( 2 * $BS )) "$FILE"
-     echo status: $?
--    "$TS_CMD_FINCORE" "$FILE"
-+    do_fincore
-     echo
- 
-     create_file
-     echo "length: $(( 4 * $BS ))"
-     "$TS_CMD_FADVISE" -l $(( 4 * $BS )) "$FILE"
-     echo status: $?
--    "$TS_CMD_FINCORE" "$FILE"
-+    do_fincore
-     echo
- 
-     create_file
-     echo "offset: $(( 2 * $BS )), length: $(( 4 * $BS )) fd: 42"
-     "$TS_CMD_FADVISE" -o $(( 2 * $BS )) -l $(( 4 * $BS )) --fd 42 42<"$FILE"
-     echo status: $?
--    "$TS_CMD_FINCORE" "$FILE"
-+    do_fincore
-     echo
- 
-     rm "$FILE"
--- 
-2.40.0
-
-
-From 33980996d0b429fc59c40f8352633c0a21a0f96a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de>
-Date: Sun, 21 May 2023 21:44:20 +0200
-Subject: [PATCH 3/4] fadvise: (test) don't compare fincore page counts
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-These depend on the machines pagesize and are therefore not a good
-comparision.
-
-Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
----
- tests/expected/fadvise/drop | 20 ++++++++++----------
- tests/ts/fadvise/drop       |  2 +-
- 2 files changed, 11 insertions(+), 11 deletions(-)
-
-diff --git a/tests/expected/fadvise/drop b/tests/expected/fadvise/drop
-index f2360b56f..25f23e050 100644
---- a/tests/expected/fadvise/drop
-+++ b/tests/expected/fadvise/drop
-@@ -1,23 +1,23 @@
--  RES PAGES SIZE FILE
--  32K     8  32K ddtest
-+  RES SIZE FILE
-+  32K  32K ddtest
- 
- whole file
- status: 0
--RES PAGES SIZE FILE
-- 0B     0  32K ddtest
-+RES SIZE FILE
-+ 0B  32K ddtest
- 
- offset: 8192
- status: 0
--RES PAGES SIZE FILE
-- 8K     2  32K ddtest
-+RES SIZE FILE
-+ 8K  32K ddtest
- 
- length: 16384
- status: 0
--  RES PAGES SIZE FILE
--  16K     4  32K ddtest
-+  RES SIZE FILE
-+  16K  32K ddtest
- 
- offset: 8192, length: 16384 fd: 42
- status: 0
--  RES PAGES SIZE FILE
--  16K     4  32K ddtest
-+  RES SIZE FILE
-+  16K  32K ddtest
- 
-diff --git a/tests/ts/fadvise/drop b/tests/ts/fadvise/drop
-index 8869b7da4..6c4298e87 100755
---- a/tests/ts/fadvise/drop
-+++ b/tests/ts/fadvise/drop
-@@ -29,7 +29,7 @@ create_file() {
- }
- 
- do_fincore() {
--    "$TS_CMD_FINCORE" "$FILE"
-+    "$TS_CMD_FINCORE" -o RES,SIZE,FILE "$FILE"
- }
- 
- {
--- 
-2.40.0
-
-
-From c0f31b79f5d1c665cdc057fb32f4d161d28aa5b2 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de>
-Date: Sun, 21 May 2023 21:45:10 +0200
-Subject: [PATCH 4/4] fadvise: (test) test with 64k blocks
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This will allow the tests to also pass on systems with 64k pagesizes.
-
-Closes #2249
-Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
----
- tests/expected/fadvise/drop | 26 +++++++++++++-------------
- tests/ts/fadvise/drop       |  2 +-
- 2 files changed, 14 insertions(+), 14 deletions(-)
-
-diff --git a/tests/expected/fadvise/drop b/tests/expected/fadvise/drop
-index 25f23e050..e7bb26b6e 100644
---- a/tests/expected/fadvise/drop
-+++ b/tests/expected/fadvise/drop
-@@ -1,23 +1,23 @@
--  RES SIZE FILE
--  32K  32K ddtest
-+  RES  SIZE FILE
-+ 512K  512K ddtest
- 
- whole file
- status: 0
--RES SIZE FILE
-- 0B  32K ddtest
-+RES  SIZE FILE
-+ 0B  512K ddtest
- 
--offset: 8192
-+offset: 131072
- status: 0
--RES SIZE FILE
-- 8K  32K ddtest
-+  RES  SIZE FILE
-+ 128K  512K ddtest
- 
--length: 16384
-+length: 262144
- status: 0
--  RES SIZE FILE
--  16K  32K ddtest
-+  RES  SIZE FILE
-+ 256K  512K ddtest
- 
--offset: 8192, length: 16384 fd: 42
-+offset: 131072, length: 262144 fd: 42
- status: 0
--  RES SIZE FILE
--  16K  32K ddtest
-+  RES  SIZE FILE
-+ 256K  512K ddtest
- 
-diff --git a/tests/ts/fadvise/drop b/tests/ts/fadvise/drop
-index 6c4298e87..45dcb9110 100755
---- a/tests/ts/fadvise/drop
-+++ b/tests/ts/fadvise/drop
-@@ -16,7 +16,7 @@ ts_check_prog "sleep"
- ts_cd "$TS_OUTDIR"
- 
- FILE="ddtest"
--BS=4096
-+BS=65536
- COUNT=8
- 
- FILE_FS="$("$TS_CMD_FINDMNT" -nr -o FSTYPE -T "$PWD")"
--- 
-2.40.0
-
diff --git a/util-linux.changes b/util-linux.changes
index 5b8ba48..d4e3321 100644
--- a/util-linux.changes
+++ b/util-linux.changes
@@ -1,3 +1,57 @@
+-------------------------------------------------------------------
+Thu Apr  4 12:27:18 UTC 2024 - Thorsten Kukuk <kukuk@suse.com>
+
+- Update to release 2.40
+  * Add lastlog2
+  * agetty: Load autologin user from agetty.autologin credential
+  * agetty: use get_terminal_default_type()
+  * agetty: use sd_get_sessions() for number of users (#2088)
+  * blockdev: add support for BLKGETZONESZ
+  * cfdisk: ask y/n before wipe
+  * cfdisk: properly handle out-of-order partitions during resize
+  * chcpu: document limitations of -g
+  * chsh: use libeconf to read /etc/shells
+  * column: fix -l
+  * column: fix memory leak
+  * dmesg: fix FD leak
+  * dmesg: fix delta calculation
+  * dmesg: fix wrong size calculation
+  * dmesg: support reading kmsg format from file
+  * enosys: a new small command to make syscalls fail with ENOSYS
+  * exch: new command to atomically exchanges paths between two files
+  * fdisk: add support for partition resizing
+  * fdisk: remove usage of VLA
+  * fincore: add --output-all
+  * findmnt: add --list-columns
+  * findmnt: add -I, --dfi options for imitating the output of df -i
+  * findmnt: add inode-related columns for implementing "df -i" like output
+  * hexdump: add '--one-byte-hex' format option
+  * hwclock: add support for RTC_VL_READ/RTC_VL_CLR ioctls
+  * login: initialize noauth from login.noauth credential
+  * lsblk: add --filter
+  * lsblk: add --highlight
+  * lsblk: add --list-columns
+  * lsclocks: new command to show clocks
+  * lscpu: even more Arm part numbers
+  * mkfs.minix: handle 64bit time on 32bit system
+  * mkswap: implement --file
+  * mkswap: implement --offset
+  * mount: add --map-users and --map-groups convenience options
+  * nsenter: add option `-c` to join the cgroup of target process
+  * setarch: add riscv64/riscv32 support
+  * setpgid: new command to run a program in a new process group
+  * uuidd: add cont_clock persistence
+  * uuidgen: add option --count
+  * wall: query logind for list of users with tty (#2088)
+  * write: query logind for list of users with tty (#2088)
+  * libuuid: improved support for 64-bit time
+- skip-lsfd-tests-PR2888.patch: skip some lsfd tests which OBS does
+  not support (https://github.com/util-linux/util-linux/issues/2822)
+- use-logind-not-utmp.patch: removed, accepted upstream
+- tests-increase-delay-for-waitpid-test.patch: removed, upstreamed
+- 0001-Revert-libblkid-try-LUKS2-first-when-probing.patch: reverted upstream
+- util-linux-fix-tests-with-64k-pagesize.patch: was a backport
+
 -------------------------------------------------------------------
 Fri Feb  9 17:56:16 UTC 2024 - Stanislav Brabec <sbrabec@suse.com>
 
diff --git a/util-linux.spec b/util-linux.spec
index 7dbce33..a4359e7 100644
--- a/util-linux.spec
+++ b/util-linux.spec
@@ -20,7 +20,7 @@
 
 # Parts description:
 # core: libraries, all binaries except those dependent on libsystemd
-# systemd: binaries dependent on systemd, man pages (generator is dependent on ruby)
+# systemd: binaries dependent on systemd or sqlite3, man pages (generator is dependent on ruby)
 # python: Python bindings
 
 %if "%{flavor}" == ""
@@ -85,11 +85,11 @@ Group:          Development/Languages/Python
 %endif
 # ulbuild == python
 
-Version:        2.39.3
+Version:        2.40
 Release:        0
 License:        GPL-2.0-or-later
 URL:            https://www.kernel.org/pub/linux/utils/util-linux/
-Source:         https://www.kernel.org/pub/linux/utils/util-linux/v2.39/util-linux-%{version}.tar.xz
+Source:         https://www.kernel.org/pub/linux/utils/util-linux/v2.40/util-linux-%{version}.tar.xz
 Source2:        util-linux-login_defs-check.sh
 Source3:        util-linux-rpmlintrc
 Source7:        baselibs.conf
@@ -107,10 +107,7 @@ Patch0:         make-sure-sbin-resp-usr-sbin-are-in-PATH.diff
 Patch1:         libmount-print-a-blacklist-hint-for-unknown-filesyst.patch
 Patch2:         Add-documentation-on-blacklisted-modules-to-mount-8-.patch
 Patch3:         util-linux-bash-completion-su-chsh-l.patch
-Patch4:         0001-Revert-libblkid-try-LUKS2-first-when-probing.patch
-Patch5:         util-linux-fix-tests-with-64k-pagesize.patch
-Patch6:         use-logind-not-utmp.patch
-Patch7:         tests-increase-delay-for-waitpid-test.patch
+Patch4:         skip-lsfd-tests-PR2888.patch
 
 BuildRequires:  audit-devel
 BuildRequires:  bc
@@ -132,7 +129,7 @@ BuildRequires:  utempter-devel
 %endif
 BuildRequires:  zlib-devel
 Requires(post): permissions
-Requires(verify):permissions
+Requires(verify): permissions
 # util-linux is part of VMInstall, but we can well build without it
 # Helps shorten a cycle and eliminate a bootstrap issue
 #!BuildIgnore:  util-linux
@@ -148,12 +145,16 @@ BuildRequires:  libudev-devel
 BuildRequires:  socat
 BuildRequires:  systemd-rpm-macros
 BuildRequires:  pkgconfig(libsystemd)
+BuildRequires:  pkgconfig(sqlite3)
 BuildRequires:  rubygem(asciidoctor)
 Supplements:    (util-linux and systemd)
 # Split-provides for upgrade from SLE < 12 and openSUSE <= 13.1
 Provides:       util-linux:/bin/logger
 # man pages were moved to -systemd subpackage with 2.38.x (SLE15 SP6, Leap 15.6)
 Conflicts:      util-linux < 2.38
+# lastlog2 got merged into util-linux 2.40
+Provides:       lastlog2 = %{version}-%{release}
+Obsoletes:      lastlog2 <= 1.3.1
 %systemd_requires
 %endif
 # ulsubset == systemd
@@ -368,6 +369,27 @@ unique IDs (UUIDs).
 %endif
 # ulsubset == core
 
+%if "%ulsubset" == "systemd"
+%package -n liblastlog2-2
+Summary:        Library to report most recent login of users
+License:        BSD-2-Clause
+Group:          System/Libraries
+
+%description -n liblastlog2-2
+The liblastlog2 library provides various interfaces to read, write or modify the lastlog 2 database.
+
+%package -n liblastlog2-devel
+Summary:        Development files for the lastlog2 library
+License:        BSD-2-Clause
+Group:          Development/Libraries/C and C++
+Requires:       liblastlog2-2 = %{version}
+
+%description -n liblastlog2-devel
+Files to develop applications using the liblastlog2 library.
+
+%endif
+# ulsubset == systemd
+
 ####################
 # Systemd packages #
 ####################
@@ -377,7 +399,7 @@ Summary:        Tools for writing to TTYs
 License:        BSD-3-Clause
 Requires(pre):  group(tty)
 Requires(post): permissions
-Requires(verify):permissions
+Requires(verify): permissions
 Provides:       util-linux:%{_bindir}/mesg
 Provides:       util-linux:%{_bindir}/wall
 Provides:       util-linux:%{_bindir}/write
@@ -450,7 +472,7 @@ configure_options+="--without-python "
 # ulbuild == base
 
 %if "%ulsubset" == "core"
-configure_options+="--without-systemd "
+configure_options+="--without-systemd --disable-liblastlog2"
 %endif
 # ulsubset == core
 
@@ -651,6 +673,12 @@ ln -sf /sbin/service %{buildroot}%{_sbindir}/rcfstrim
 %endif
 # ulsubset == core, ulbuild == base
 
+%if "%ulsubset" == "systemd"
+# No *.la packages
+rm -r %{buildroot}%{_pam_moduledir}/*.la
+%endif
+# ulsubset == systemd
+
 %endif
 # ulbuild == base
 
@@ -853,6 +881,10 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
 %post -n util-linux-tty-tools
 %set_permissions %{_bindir}/wall %{_bindir}/write
 
+%post -n liblastlog2-2 -p /sbin/ldconfig
+
+%postun -n liblastlog2-2 -p /sbin/ldconfig
+
 %endif
 %dnl # ulsubset == systemd, pre & post
 %dnl
@@ -947,6 +979,8 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
 %core %{_bindir}/colrm
 %core %{_bindir}/column
 %core %{_bindir}/dmesg
+%core %{_bindir}/enosys
+%core %{_bindir}/exch
 %core %{_bindir}/fadvise
 %core %{_bindir}/fallocate
 %core %{_bindir}/fincore
@@ -980,6 +1014,7 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
 %endif
 # ul_extra_bin_sbin
 
+%core %{_bindir}/lsclocks
 %core %{_bindir}/lscpu
 %core %{_bindir}/lsfd
 %core %{_bindir}/lsipc
@@ -1001,6 +1036,7 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
 %core %{_bindir}/scriptlive
 %core %{_bindir}/scriptreplay
 %core %{_bindir}/setarch
+%core %{_bindir}/setpgid
 %core %{_bindir}/setpriv
 %core %{_bindir}/setsid
 %core %{_bindir}/taskset
@@ -1155,7 +1191,9 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
 %core %{_mandir}/man1/colrm.1.gz
 %core %{_mandir}/man1/column.1.gz
 %core %{_mandir}/man1/dmesg.1.gz
+%core %{_mandir}/man1/enosys.1.gz
 %core %{_mandir}/man1/eject.1.gz
+%core %{_mandir}/man1/exch.1.gz
 %core %{_mandir}/man1/fadvise.1.gz
 %core %{_mandir}/man1/fallocate.1.gz
 %core %{_mandir}/man1/fincore.1.gz
@@ -1179,6 +1217,7 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
 %core %{_mandir}/man1/login.1.gz
 %core %{_mandir}/man1/look.1.gz
 %core %{_mandir}/man1/lscpu.1.gz
+%core %{_mandir}/man1/lsclocks.1.gz
 %core %{_mandir}/man1/lsfd.1.gz
 %core %{_mandir}/man1/lsipc.1.gz
 %core %{_mandir}/man1/lsirq.1.gz
@@ -1199,6 +1238,7 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
 %core %{_mandir}/man1/script.1.gz
 %core %{_mandir}/man1/scriptlive.1.gz
 %core %{_mandir}/man1/scriptreplay.1.gz
+%core %{_mandir}/man1/setpgid.1.gz
 %core %{_mandir}/man1/setterm.1.gz
 %core %{_mandir}/man1/taskset.1.gz
 %core %{_mandir}/man1/ul.1.gz
@@ -1214,6 +1254,7 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
 %core %{_mandir}/man1/waitpid.1.gz
 %core %{_mandir}/man5/adjtime_config.5.gz
 %core %{_mandir}/man5/fstab.5.gz
+%core %{_mandir}/man5/scols-filter.5.gz
 %core %{_mandir}/man5/terminal-colors.d.5.gz
 %core %{_mandir}/man8/addpart.8.gz
 %core %{_mandir}/man8/agetty.8.gz
@@ -1314,14 +1355,19 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
 # ul_extra_bin_sbin
 
 %{_bindir}/findmnt
+%{_bindir}/lastlog2
 %{_bindir}/logger
 %{_bindir}/lsblk
 %{_bindir}/lslogins
+%{_pam_moduledir}/pam_lastlog2.so
 
 %{_mandir}/man8/findmnt.8.gz
+%{_mandir}/man8/lastlog2.8.gz
 %{_mandir}/man1/logger.1.gz
 %{_mandir}/man8/lsblk.8.gz
 %{_mandir}/man1/lslogins.1.gz
+%{_mandir}/man8/pam_lastlog2.8.gz
+%{_unitdir}/lastlog2-import.service
 
 # Exclude core binaries bash-completion
 %exclude %{_datadir}/bash-completion/completions/addpart
@@ -1342,6 +1388,8 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
 %exclude %{_datadir}/bash-completion/completions/delpart
 %exclude %{_datadir}/bash-completion/completions/dmesg
 %exclude %{_datadir}/bash-completion/completions/eject
+%exclude %{_datadir}/bash-completion/completions/enosys
+%exclude %{_datadir}/bash-completion/completions/exch
 %exclude %{_datadir}/bash-completion/completions/fallocate
 %exclude %{_datadir}/bash-completion/completions/fadvise
 %exclude %{_datadir}/bash-completion/completions/fdformat
@@ -1369,6 +1417,7 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
 %exclude %{_datadir}/bash-completion/completions/ldattach
 %exclude %{_datadir}/bash-completion/completions/look
 %exclude %{_datadir}/bash-completion/completions/losetup
+%exclude %{_datadir}/bash-completion/completions/lsclocks
 %exclude %{_datadir}/bash-completion/completions/lscpu
 %exclude %{_datadir}/bash-completion/completions/lsipc
 %exclude %{_datadir}/bash-completion/completions/lsirq
@@ -1402,6 +1451,7 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
 %exclude %{_datadir}/bash-completion/completions/scriptlive
 %exclude %{_datadir}/bash-completion/completions/scriptreplay
 %exclude %{_datadir}/bash-completion/completions/setarch
+%exclude %{_datadir}/bash-completion/completions/setpgid
 %exclude %{_datadir}/bash-completion/completions/setpriv
 %exclude %{_datadir}/bash-completion/completions/setsid
 %exclude %{_datadir}/bash-completion/completions/setterm
@@ -1426,6 +1476,7 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
 %exclude %{_datadir}/bash-completion/completions/zramctl
 
 %{_datadir}/bash-completion/completions/findmnt
+%{_datadir}/bash-completion/completions/lastlog2
 %{_datadir}/bash-completion/completions/logger
 %{_datadir}/bash-completion/completions/lsblk
 %{_datadir}/bash-completion/completions/lslogins
@@ -1602,6 +1653,15 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
 %{_datadir}/bash-completion/completions/write
 %{_datadir}/bash-completion/completions/mesg
 
+%files -n liblastlog2-2
+%{_libdir}/liblastlog2.so.2
+%{_libdir}/liblastlog2.so.2.*
+
+%files -n liblastlog2-devel
+%{_libdir}/liblastlog2.so
+%{_mandir}/man3/lastlog2.3.gz
+%{_mandir}/man3/ll2_*
+
 %endif
 # ulsubset == systemd