The currently used version 1.6.20 of pv does not show the progress
bar if no controlling terminal is set. Added a patch which restores
previous behavior of pv as in version 1.6.6.
Tested with pv in the busybox initscript of GyroidOS which is
running on /dev/console (which has no controlling tty). With this
fix, we get the progress bar back on /dev/console as before.
This was also submitted upstream but dangling since several Months:
https://github.com/a-j-wood/pv/pull/64
Signed-off-by: Michael Weiß <[email protected]>
---
...e-error-of-tcgetpgrp-in-pv_in_foregr.patch | 38 +++++++++++++++++++
meta-oe/recipes-support/pv/pv_1.6.20.bb | 1 +
2 files changed, 39 insertions(+)
create mode 100644
meta-oe/recipes-support/pv/pv/0001-pv-display-handle-error-of-tcgetpgrp-in-pv_in_foregr.patch
diff --git
a/meta-oe/recipes-support/pv/pv/0001-pv-display-handle-error-of-tcgetpgrp-in-pv_in_foregr.patch
b/meta-oe/recipes-support/pv/pv/0001-pv-display-handle-error-of-tcgetpgrp-in-pv_in_foregr.patch
new file mode 100644
index 000000000..3c364dcc4
--- /dev/null
+++
b/meta-oe/recipes-support/pv/pv/0001-pv-display-handle-error-of-tcgetpgrp-in-pv_in_foregr.patch
@@ -0,0 +1,38 @@
+From c5cd932fb08e7ce90cdbf9ae6c5cc7e65ac0738e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Michael=20Wei=C3=9F?= <[email protected]>
+Date: Tue, 9 May 2023 20:00:26 +0200
+Subject: [PATCH] pv/display: handle error of tcgetpgrp() in pv_in_foreground()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Show pv progress bar even if no terminal is set, e.g., in a busybox
+init script. The description of pv_in_forground() states it will
+return true "if we aren't outputting to a terminal". However, this
+is not the case since tcgetpgrg() will return an error and set ERRNO
+to ENOTTY if the output fd is not an tty. We now handle this error
+correctly and pv_in_foreground() returns also true in that case.
+
+Signed-off-by: Michael Weiß <[email protected]>
+---
+ src/pv/display.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/pv/display.c b/src/pv/display.c
+index aff643b..8d1f4c9 100644
+--- a/src/pv/display.c
++++ b/src/pv/display.c
+@@ -48,6 +48,10 @@ bool pv_in_foreground(void)
+
+ our_process_group = getpgrp();
+ tty_process_group = tcgetpgrp(STDERR_FILENO);
++
++ if (tty_process_group == -1 && errno == ENOTTY)
++ return true;
++
+ if (our_process_group == tty_process_group)
+ return true;
+
+--
+2.30.2
+
diff --git a/meta-oe/recipes-support/pv/pv_1.6.20.bb
b/meta-oe/recipes-support/pv/pv_1.6.20.bb
index 867a621d1..6d449a945 100644
--- a/meta-oe/recipes-support/pv/pv_1.6.20.bb
+++ b/meta-oe/recipes-support/pv/pv_1.6.20.bb
@@ -5,6 +5,7 @@ LICENSE = "Artistic-2.0"
LIC_FILES_CHKSUM = "file://doc/COPYING;md5=9c50db2589ee3ef10a9b7b2e50ce1d02"
SRC_URI = "https://www.ivarch.com/programs/sources/${BP}.tar.bz2 \
+
file://0001-pv-display-handle-error-of-tcgetpgrp-in-pv_in_foregr.patch \
file://run-ptest \
"
SRC_URI[sha256sum] =
"e831951eff0718fba9b1ef286128773b9d0e723e1fbfae88d5a3188814fdc603"
--
2.30.2
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#103855):
https://lists.openembedded.org/g/openembedded-devel/message/103855
Mute This Topic: https://lists.openembedded.org/mt/100116400/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-