From: Babanpreet Singh <bbnpreetsingh@gmail.com>
To: bitbake-devel@lists.openembedded.org
Cc: Michael Opdenacker <michael.opdenacker@rootcommit.com>,
Babanpreet Singh <bbnpreetsingh@gmail.com>
Subject: [PATCH] prserv: add --status to list running servers
Date: Mon, 24 Aug 2026 04:50:11 +0000 [thread overview]
Message-ID: <20260824045011.7-1-bbnpreetsingh@gmail.com> (raw)
bitbake-prserv could start and stop a server but not say what is
running. Add --status: it reads every /tmp/PRServer_<ip>_<port>.pid,
reports each server as running (with its pid) or as a stale pidfile,
and exits 0 if at least one server is alive, 1 otherwise.
Extend the ScriptTests start/stop lifecycle with status checks in
both states.
[YOCTO #10865]
Signed-off-by: Babanpreet Singh <bbnpreetsingh@gmail.com>
---
bin/bitbake-prserv | 7 +++++++
lib/prserv/serv.py | 23 +++++++++++++++++++++++
lib/prserv/tests.py | 16 +++++++++++++++-
3 files changed, 45 insertions(+), 1 deletion(-)
diff --git a/bin/bitbake-prserv b/bin/bitbake-prserv
index c26362b2e..8413c585f 100755
--- a/bin/bitbake-prserv
+++ b/bin/bitbake-prserv
@@ -64,6 +64,11 @@ def main():
action="store_true",
help="stop daemon",
)
+ parser.add_argument(
+ "--status",
+ action="store_true",
+ help="list PR servers running on this machine",
+ )
parser.add_argument(
"--host",
help="ip address to bind",
@@ -102,6 +107,8 @@ def main():
)
elif args.stop:
ret=prserv.serv.stop_daemon(args.host, args.port)
+ elif args.status:
+ ret=prserv.serv.status_daemon()
else:
ret=parser.print_help()
return ret
diff --git a/lib/prserv/serv.py b/lib/prserv/serv.py
index e17588630..322c22a0f 100644
--- a/lib/prserv/serv.py
+++ b/lib/prserv/serv.py
@@ -388,6 +388,29 @@ def stop_daemon(host, port):
return 0
+def status_daemon():
+ import glob
+ running = 0
+ for pidfile in sorted(glob.glob(PIDPREFIX % ("*", "*"))):
+ root, _ = os.path.splitext(os.path.basename(pidfile))
+ parts = root.split("_")
+ ip, port = "_".join(parts[1:-1]), parts[-1]
+ try:
+ with open(pidfile) as pf:
+ pid = int(pf.readline().strip())
+ except (IOError, ValueError):
+ sys.stderr.write("Ignoring unreadable pidfile %s\n" % pidfile)
+ continue
+ if is_running(pid):
+ print("PRServer running at %s:%s (pid %s)" % (ip, port, pid))
+ running += 1
+ else:
+ print("Stale pidfile %s (pid %s not running)" % (pidfile, pid))
+ if not running:
+ print("No PRServer running.")
+ return 1
+ return 0
+
def is_running(pid):
try:
os.kill(pid, 0)
diff --git a/lib/prserv/tests.py b/lib/prserv/tests.py
index df0c00300..518d5c441 100644
--- a/lib/prserv/tests.py
+++ b/lib/prserv/tests.py
@@ -381,8 +381,22 @@ class ScriptTests(unittest.TestCase):
except subprocess.CalledProcessError as e:
self.fail("Failed to start bitbake-prserv: %s" % e.returncode)
- def test_2_stop_bitbake_prserv(self):
+ def test_2_status_bitbake_prserv(self):
+ result = subprocess.run([BIN_DIR / "bitbake-prserv", "--status"],
+ capture_output=True, text=True)
+ self.assertEqual(result.returncode, 0,
+ "Expected a running PRServer: %s" % result.stdout)
+ self.assertIn(":8585 (pid ", result.stdout)
+
+ def test_3_stop_bitbake_prserv(self):
try:
subprocess.check_call([BIN_DIR / "bitbake-prserv", "--stop"])
except subprocess.CalledProcessError as e:
self.fail("Failed to stop bitbake-prserv: %s" % e.returncode)
+
+ def test_4_status_stopped_bitbake_prserv(self):
+ result = subprocess.run([BIN_DIR / "bitbake-prserv", "--status"],
+ capture_output=True, text=True)
+ self.assertEqual(result.returncode, 1,
+ "Expected no running PRServer: %s" % result.stdout)
+ self.assertNotIn(":8585 (pid ", result.stdout)
--
2.43.0
next reply other threads:[~2026-08-24 4:50 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-24 4:50 Babanpreet Singh [this message]
2026-08-30 21:55 ` [PATCH] prserv: add --status to list running servers Babanpreet Singh
2026-09-07 19:58 ` [bitbake-devel] " Richard Purdie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260824045011.7-1-bbnpreetsingh@gmail.com \
--to=bbnpreetsingh@gmail.com \
--cc=bitbake-devel@lists.openembedded.org \
--cc=michael.opdenacker@rootcommit.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.