summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-14 21:15:16 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-14 21:15:16 +0000
commit76d1ac955e8467cf5ddba500281248623a024b5a (patch)
tree5bb0db0ffa9da69915b5b95ba433352156293739
parentReleasing progress-linux version 2.40-1~progress7.99u1. (diff)
downloadutil-linux-76d1ac955e8467cf5ddba500281248623a024b5a.tar.xz
util-linux-76d1ac955e8467cf5ddba500281248623a024b5a.zip
Merging debian version 2.40-2.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
-rw-r--r--debian/changelog13
-rw-r--r--debian/control5
-rw-r--r--debian/patches/debian/tests-mark-lsfd-tests-failing-in-sbuild.patch36
-rw-r--r--debian/patches/series2
-rw-r--r--debian/patches/upstream/lsfd-add-LSFD_DEBUG-env-var-for-debugging.patch231
-rw-r--r--debian/patches/upstream/tests-test_mkfds-sockdiag-verify-the-recived-message.patch56
-rwxr-xr-xdebian/util-linux-extra.postinst15
-rwxr-xr-xdebian/util-linux-extra.preinst16
8 files changed, 337 insertions, 37 deletions
diff --git a/debian/changelog b/debian/changelog
index 24e0e7d..663c4df 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,14 @@
+util-linux (2.40-2) experimental; urgency=medium
+
+ * Add upstream patch for lsfd sockdiag test
+ * Build fdisk package even for stage1
+ fdisk is a build dependency of systemd. Therefore it is useful to have it in
+ the stage1 build, which is used to build systemd later on.
+ * Improve recent util-linux(-extra) moves.
+ Update Breaks/Replaces. Add protective diversions for usrmerged binaries.
+
+ -- Chris Hofstaedtler <zeha@debian.org> Tue, 02 Apr 2024 14:03:51 +0200
+
util-linux (2.40-1~progress7.99u1) graograman-backports; urgency=medium
* Uploading to graograman-backports, remaining changes:
@@ -33,7 +44,7 @@ util-linux (2.40-1) experimental; urgency=medium
* d/control: Remove unused and seemingly invalid `Section: base`
* d/control: Fix two typos in the description
* d/control: Bump dh-sequence-zz-debputy-rrr dependency
- The automatic relationship substvars feature did not work prior to to
+ The automatic relationship substvars feature did not work prior to
0.1.23.
* Remove unnecessary relationship substvars, handled by debputy
diff --git a/debian/control b/debian/control
index a6c23c8..ecc1737 100644
--- a/debian/control
+++ b/debian/control
@@ -174,7 +174,6 @@ Description: extra utilities from 4.4BSD-Lite
Package: fdisk
Architecture: any
-Build-Profiles: <!stage1>
Section: utils
Priority: important
Recommends:
@@ -467,10 +466,10 @@ Architecture: any
Build-Profiles: <!stage1>
Section: utils
Replaces:
- util-linux (<< 2.38~)
+ util-linux (<< 2.40-0~)
Breaks:
initscripts (<< 3.08-2~),
- util-linux (<< 2.38~)
+ util-linux (<< 2.40-0~)
Priority: standard
Multi-Arch: foreign
Description: interactive login tools
diff --git a/debian/patches/debian/tests-mark-lsfd-tests-failing-in-sbuild.patch b/debian/patches/debian/tests-mark-lsfd-tests-failing-in-sbuild.patch
index df27cbb..9c1f754 100644
--- a/debian/patches/debian/tests-mark-lsfd-tests-failing-in-sbuild.patch
+++ b/debian/patches/debian/tests-mark-lsfd-tests-failing-in-sbuild.patch
@@ -1,27 +1,11 @@
From: Chris Hofstaedtler <zeha@debian.org>
Date: Thu, 29 Feb 2024 23:22:41 +0100
-Subject: tests: mark some lsfd as failing in sbuild
+Subject: tests: mark lsfd mkfds-socketpair as failing in sbuild
---
- tests/ts/lsfd/mkfds-inotify | 3 +++
- tests/ts/lsfd/mkfds-socketpair | 3 +++
- tests/ts/lsfd/mkfds-unix-stream-requiring-sockdiag | 3 +++
- 3 files changed, 9 insertions(+)
+ tests/ts/lsfd/mkfds-socketpair | 3 +++
+ 1 file changed, 3 insertions(+)
-diff --git a/tests/ts/lsfd/mkfds-inotify b/tests/ts/lsfd/mkfds-inotify
-index a44fd77..05f2c00 100755
---- a/tests/ts/lsfd/mkfds-inotify
-+++ b/tests/ts/lsfd/mkfds-inotify
-@@ -25,6 +25,9 @@ ts_check_test_command "$TS_CMD_FINDMNT"
- ts_check_prog "stat"
- ts_check_prog "sed"
-
-+# fails for unknown reasons in sbuild, https://github.com/util-linux/util-linux/issues/2819
-+TS_KNOWN_FAIL="yes"
-+
- ts_cd "$TS_OUTDIR"
-
- PID=
diff --git a/tests/ts/lsfd/mkfds-socketpair b/tests/ts/lsfd/mkfds-socketpair
index 3ef60c7..b1003e9 100755
--- a/tests/ts/lsfd/mkfds-socketpair
@@ -36,17 +20,3 @@ index 3ef60c7..b1003e9 100755
ts_cd "$TS_OUTDIR"
lsfd_check_sockdiag "unix"
-diff --git a/tests/ts/lsfd/mkfds-unix-stream-requiring-sockdiag b/tests/ts/lsfd/mkfds-unix-stream-requiring-sockdiag
-index 6189d0d..04c985a 100755
---- a/tests/ts/lsfd/mkfds-unix-stream-requiring-sockdiag
-+++ b/tests/ts/lsfd/mkfds-unix-stream-requiring-sockdiag
-@@ -21,6 +21,9 @@ TS_DESC="UNIX stream sockets"
- ts_init "$*"
- ts_skip_qemu_user
-
-+# fails for unknown reasons in sbuild, https://github.com/util-linux/util-linux/issues/2822
-+TS_KNOWN_FAIL="yes"
-+
- . "$TS_SELF/lsfd-functions.bash"
-
- ts_check_test_command "$TS_CMD_LSFD"
diff --git a/debian/patches/series b/debian/patches/series
index d6b3f2d..5b35dd8 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -4,5 +4,7 @@ debian/hardlink-tests-known-failed.patch
debian/lsfd-usrbin.patch
debian/sensible-pager.patch
debian/tests-mark-lsfd-tests-failing-in-sbuild.patch
+upstream/lsfd-add-LSFD_DEBUG-env-var-for-debugging.patch
+upstream/tests-test_mkfds-sockdiag-verify-the-recived-message.patch
progress-linux/0001-agetty-prompt.patch
progress-linux/0002-login-prompt.patch
diff --git a/debian/patches/upstream/lsfd-add-LSFD_DEBUG-env-var-for-debugging.patch b/debian/patches/upstream/lsfd-add-LSFD_DEBUG-env-var-for-debugging.patch
new file mode 100644
index 0000000..32a1687
--- /dev/null
+++ b/debian/patches/upstream/lsfd-add-LSFD_DEBUG-env-var-for-debugging.patch
@@ -0,0 +1,231 @@
+From: Masatake YAMATO <yamato@redhat.com>
+Date: Sat, 30 Mar 2024 18:47:03 +0900
+Subject: lsfd: add LSFD_DEBUG env var for debugging
+
+Signed-off-by: Masatake YAMATO <yamato@redhat.com>
+---
+ misc-utils/lsfd-sock-xinfo.c | 51 ++++++++++++++++++++++++++++++++++++++------
+ misc-utils/lsfd.c | 10 +++++++++
+ misc-utils/lsfd.h | 15 +++++++++++++
+ 3 files changed, 70 insertions(+), 6 deletions(-)
+
+diff --git a/misc-utils/lsfd-sock-xinfo.c b/misc-utils/lsfd-sock-xinfo.c
+index a293806..71be41a 100644
+--- a/misc-utils/lsfd-sock-xinfo.c
++++ b/misc-utils/lsfd-sock-xinfo.c
+@@ -179,9 +179,12 @@ static void load_sock_xinfo_no_nsswitch(struct netns *nsobj)
+ load_xinfo_from_proc_packet(netns);
+
+ diagsd = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_SOCK_DIAG);
++ DBG(ENDPOINTS, ul_debug("made a diagnose socket [fd=%d; %s]", diagsd,
++ (diagsd >= 0)? "successful": strerror(errno)));
+ if (diagsd >= 0) {
+ load_xinfo_from_diag_unix(diagsd, netns);
+ close(diagsd);
++ DBG(ENDPOINTS, ul_debug("close the diagnose socket"));
+ }
+
+ if (nsobj)
+@@ -337,6 +340,7 @@ static void send_diag_request(int diagsd, void *req, size_t req_size,
+ bool (*cb)(ino_t, size_t, void *),
+ ino_t netns)
+ {
++ int r;
+ struct sockaddr_nl nladdr = {
+ .nl_family = AF_NETLINK,
+ };
+@@ -361,30 +365,45 @@ static void send_diag_request(int diagsd, void *req, size_t req_size,
+
+ __attribute__((aligned(sizeof(void *)))) uint8_t buf[8192];
+
+- if (sendmsg(diagsd, &mhd, 0) < 0)
++ r = sendmsg(diagsd, &mhd, 0);
++ DBG(ENDPOINTS, ul_debug("sendmsg [rc=%d; %s]",
++ r, (r >= 0)? "successful": strerror(errno)));
++ if (r < 0)
+ return;
+
+ for (;;) {
+ const struct nlmsghdr *h;
+- int r = recvfrom(diagsd, buf, sizeof(buf), 0, NULL, NULL);
++ r = recvfrom(diagsd, buf, sizeof(buf), 0, NULL, NULL);
++ DBG(ENDPOINTS, ul_debug("recvfrom [rc=%d; %s]",
++ r, (r >= 0)? "successful": strerror(errno)));
+ if (r < 0)
+ return;
+
+ h = (void *) buf;
++ DBG(ENDPOINTS, ul_debug(" OK: %d", NLMSG_OK(h, (size_t)r)));
+ if (!NLMSG_OK(h, (size_t)r))
+ return;
+
+ for (; NLMSG_OK(h, (size_t)r); h = NLMSG_NEXT(h, r)) {
+- if (h->nlmsg_type == NLMSG_DONE)
++ if (h->nlmsg_type == NLMSG_DONE) {
++ DBG(ENDPOINTS, ul_debug(" DONE"));
+ return;
+- if (h->nlmsg_type == NLMSG_ERROR)
++ }
++ if (h->nlmsg_type == NLMSG_ERROR) {
++ struct nlmsgerr *e = (struct nlmsgerr *)NLMSG_DATA(h);
++ DBG(ENDPOINTS, ul_debug(" ERROR: %s",
++ strerror(- e->error)));
+ return;
++ }
+
+ if (h->nlmsg_type == SOCK_DIAG_BY_FAMILY) {
++ DBG(ENDPOINTS, ul_debug(" FAMILY"));
+ if (!cb(netns, h->nlmsg_len, NLMSG_DATA(h)))
+ return;
+ }
++ DBG(ENDPOINTS, ul_debug(" NEXT"));
+ }
++ DBG(ENDPOINTS, ul_debug(" OK: 0"));
+ }
+ }
+
+@@ -639,6 +658,8 @@ static void load_xinfo_from_proc_unix(ino_t netns_inode)
+ FILE *unix_fp;
+
+ unix_fp = fopen("/proc/net/unix", "r");
++ DBG(ENDPOINTS, ul_debug("open /proc/net/unix [fp=%p; %s]", unix_fp,
++ unix_fp? "successful": strerror(errno)));
+ if (!unix_fp)
+ return;
+
+@@ -655,13 +676,18 @@ static void load_xinfo_from_proc_unix(ino_t netns_inode)
+ unsigned long inode;
+ struct unix_xinfo *ux;
+ char path[UNIX_LINE_LEN + 1] = { 0 };
++ int r;
+
++ DBG(ENDPOINTS, ul_debug(" line: %s", line));
+
+- if (sscanf(line, "%*x: %*x %*x %" SCNx64 " %x %x %lu %"
++ r = sscanf(line, "%*x: %*x %*x %" SCNx64 " %x %x %lu %"
+ stringify_value(UNIX_LINE_LEN) "[^\n]",
+- &flags, &type, &st, &inode, path) < 4)
++ &flags, &type, &st, &inode, path);
++ DBG(ENDPOINTS, ul_debug(" scanf: %d", r));
++ if (r < 4)
+ continue;
+
++ DBG(ENDPOINTS, ul_debug(" inode: %lu", inode));
+ if (inode == 0)
+ continue;
+
+@@ -675,10 +701,12 @@ static void load_xinfo_from_proc_unix(ino_t netns_inode)
+ ux->st = st;
+ xstrncpy(ux->path, path, sizeof(ux->path));
+
++ DBG(ENDPOINTS, ul_debug(" path: %s", ux->path));
+ add_sock_info(&ux->sock);
+ }
+
+ out:
++ DBG(ENDPOINTS, ul_debug("close /proc/net/unix"));
+ fclose(unix_fp);
+ }
+
+@@ -712,6 +740,9 @@ static bool handle_diag_unix(ino_t netns __attribute__((__unused__)),
+
+ if (diag->udiag_family != AF_UNIX)
+ return false;
++ DBG(ENDPOINTS, ul_debug(" UNIX"));
++ DBG(ENDPOINTS, ul_debug(" LEN: %zu (>= %zu)", nlmsg_len,
++ (size_t)(NLMSG_LENGTH(sizeof(*diag)))));
+
+ if (nlmsg_len < NLMSG_LENGTH(sizeof(*diag)))
+ return false;
+@@ -719,21 +750,29 @@ static bool handle_diag_unix(ino_t netns __attribute__((__unused__)),
+ inode = (ino_t)diag->udiag_ino;
+ xinfo = get_sock_xinfo(inode);
+
++ DBG(ENDPOINTS, ul_debug(" inode: %llu", (unsigned long long)inode));
++ DBG(ENDPOINTS, ul_debug(" xinfo: %p", xinfo));
++
+ if (xinfo == NULL)
+ /* The socket is found in the diag response
+ but not in the proc fs. */
+ return true;
+
++ DBG(ENDPOINTS, ul_debug(" xinfo->class == &unix_xinfo_class: %d",
++ xinfo->class == &unix_xinfo_class));
+ if (xinfo->class != &unix_xinfo_class)
+ return true;
+ unix_xinfo = (struct unix_xinfo *)xinfo;
+
+ rta_len = nlmsg_len - NLMSG_LENGTH(sizeof(*diag));
++ DBG(ENDPOINTS, ul_debug(" rta_len: %zu", rta_len));
+ for (struct rtattr *attr = (struct rtattr *)(diag + 1);
+ RTA_OK(attr, rta_len);
+ attr = RTA_NEXT(attr, rta_len)) {
+ size_t len = RTA_PAYLOAD(attr);
+
++ DBG(ENDPOINTS, ul_debug(" len = %2zu, type: %d",
++ rta_len, attr->rta_type));
+ switch (attr->rta_type) {
+ case UNIX_DIAG_NAME:
+ unix_refill_name(xinfo, RTA_DATA(attr), len);
+diff --git a/misc-utils/lsfd.c b/misc-utils/lsfd.c
+index 771daef..4786d1d 100644
+--- a/misc-utils/lsfd.c
++++ b/misc-utils/lsfd.c
+@@ -84,6 +84,14 @@ static int kcmp(pid_t pid1 __attribute__((__unused__)),
+
+ #include "lsfd.h"
+
++UL_DEBUG_DEFINE_MASK(lsfd);
++UL_DEBUG_DEFINE_MASKNAMES(lsfd) = UL_DEBUG_EMPTY_MASKNAMES;
++
++static void lsfd_init_debug(void)
++{
++ __UL_INIT_DEBUG_FROM_ENV(lsfd, LSFD_DEBUG_, 0, LSFD_DEBUG);
++}
++
+ /*
+ * /proc/$pid/mountinfo entries
+ */
+@@ -2271,6 +2279,8 @@ int main(int argc, char *argv[])
+ { NULL, 0, NULL, 0 },
+ };
+
++ lsfd_init_debug();
++
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+diff --git a/misc-utils/lsfd.h b/misc-utils/lsfd.h
+index 1859dc7..e646758 100644
+--- a/misc-utils/lsfd.h
++++ b/misc-utils/lsfd.h
+@@ -28,7 +28,11 @@
+ #include <sys/stat.h>
+ #include <dirent.h>
+ #include <inttypes.h>
++#include <stdio.h>
++#include <string.h>
++#include <stdlib.h>
+
++#include "debug.h"
+ #include "libsmartcols.h"
+ #include "list.h"
+ #include "nls.h"
+@@ -36,6 +40,17 @@
+ #include "strutils.h"
+ #include "xalloc.h"
+
++/*
++ * debug
++ */
++UL_DEBUG_DECLARE_MASK(lsfd);
++
++#define LSFD_DEBUG_INIT (1 << 1)
++#define LSFD_DEBUG_ENDPOINTS (1 << 2)
++#define LSFD_DEBUG_ALL 0xFFFF
++
++#define DBG(m, x) __UL_DBG(lsfd, LSFD_DEBUG_, m, x)
++
+ /*
+ * column IDs
+ */
diff --git a/debian/patches/upstream/tests-test_mkfds-sockdiag-verify-the-recived-message.patch b/debian/patches/upstream/tests-test_mkfds-sockdiag-verify-the-recived-message.patch
new file mode 100644
index 0000000..efd9063
--- /dev/null
+++ b/debian/patches/upstream/tests-test_mkfds-sockdiag-verify-the-recived-message.patch
@@ -0,0 +1,56 @@
+From: Masatake YAMATO <yamato@redhat.com>
+Date: Tue, 2 Apr 2024 06:34:40 +0900
+Subject: tests: (test_mkfds::sockdiag) verify the recived message
+
+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 39427ba..4b138c2 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/debian/util-linux-extra.postinst b/debian/util-linux-extra.postinst
new file mode 100755
index 0000000..82923bd
--- /dev/null
+++ b/debian/util-linux-extra.postinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+
+# begin-remove-after: released:trixie
+if test "$1" = upgrade || test "$1" = install; then
+ dpkg-divert --no-rename --package util-linux-extra --divert /sbin/fsck.cramfs.usr-is-merged --add /sbin/fsck.cramfs
+ dpkg-divert --no-rename --package util-linux-extra --divert /sbin/fsck.minix.usr-is-merged --add /sbin/fsck.minix
+ dpkg-divert --no-rename --package util-linux-extra --divert /sbin/mkfs.bfs.usr-is-merged --add /sbin/mkfs.bfs
+ dpkg-divert --no-rename --package util-linux-extra --divert /sbin/mkfs.cramfs.usr-is-merged --add /sbin/mkfs.cramfs
+ dpkg-divert --no-rename --package util-linux-extra --divert /sbin/mkfs.minix.usr-is-merged --add /sbin/mkfs.minix
+fi
+# end-remove-after
+
+#DEBHELPER#
diff --git a/debian/util-linux-extra.preinst b/debian/util-linux-extra.preinst
new file mode 100755
index 0000000..edd6522
--- /dev/null
+++ b/debian/util-linux-extra.preinst
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+set -e
+
+# begin-remove-after: released:trixie
+if test "$1" = configure; then
+ dpkg-divert --no-rename --package util-linux-extra --divert /sbin/fsck.cramfs.usr-is-merged --remove /sbin/fsck.cramfs
+ dpkg-divert --no-rename --package util-linux-extra --divert /sbin/fsck.minix.usr-is-merged --remove /sbin/fsck.minix
+ dpkg-divert --no-rename --package util-linux-extra --divert /sbin/mkfs.bfs.usr-is-merged --remove /sbin/mkfs.bfs
+ dpkg-divert --no-rename --package util-linux-extra --divert /sbin/mkfs.cramfs.usr-is-merged --remove /sbin/mkfs.cramfs
+ dpkg-divert --no-rename --package util-linux-extra --divert /sbin/mkfs.minix.usr-is-merged --remove /sbin/mkfs.minix
+fi
+# end-remove-after
+
+#DEBHELPER#
+