From: Adrian Neftali Sanchez <lutgaru@gmail.com>
To: tools@linux.kernel.org
Cc: konstantin@linuxfoundation.org,
Adrian Neftali Sanchez <lutgaru@gmail.com>
Subject: [RFC PATCH 00/13] b4: add native Windows support
Date: Sat, 25 Apr 2026 12:49:28 -0700 [thread overview]
Message-ID: <20260425194943.1499-1-lutgaru@gmail.com> (raw)
Hello everyone,
This series aims to provide native Windows support for b4.
While Linux remains the primary environment for kernel development, many
contributors find themselves on Windows systems due to corporate
policies, hardware constraints, or environments where WSL and virtual
machines are restricted or unavailable. Enabling b4 to run natively
allows these contributors to participate in patch review and mailing
list workflows more efficiently.
The changes focus on platform-neutral path handling, encoding
consistency, and process management. Key highlights:
- Portability: Replaced POSIX-specific assumptions (UID/GID, path
separators, and shell execution) with cross-platform equivalents.
- Stability: Fixed race conditions in the TUI worker and added
defensive guards for widget mounting, which became more apparent
under Windows' asynchronous I/O model (IocpProactor).
- Testing: Added ci.ps1 to allow local validation of the full
quality-gate pipeline on Windows.
The entire test suite (900+ tests) was validated on Windows 11. While
some minor UI timing flakiness persists in the test environment due to
console latency, the core functionality is stable and ready for use.
I am open to maintaining the Windows-specific execution paths and
addressing any regressions that may arise on this platform.
Signed-off-by: Adrian Neftali Sanchez <lutgaru@gmail.com>
Adrian Neftali Sanchez (13):
tests: specify UTF-8 encoding when opening files in text mode
tests: use os.path.join/normpath for portable path assertions
b4: add cross-platform username resolution in _setup_user_config
b4: resolve platform-native data and cache directories
b4: normalise git-reported absolute paths with os.path.normpath
b4: select platform-appropriate default pager
ez: use portable uid/gid accessors in write_to_tar
tui: The _suspend_to_shell function assumes a POSIX environment,
relying on $SHELL and shell-specific arguments (e.g., --rcfile) that
are invalid on Windows.
tests: replace NamedTemporaryFile with tmp_path in patatt fixture
pyproject: add Windows operating-system classifier
ci: add ci.ps1 for running the quality-gate pipeline on Windows
review_tui: write git tracking commit before updating DB
review_tui: guard against unmounted diff-viewer In certain
asynchronous contexts or during rapid UI transitions, _show_content
may be invoked before the diff-viewer widget has been fully mounted
in the DOM. This is particularly reproducible in headless test
environments and on platforms with slower console I/O
initialization.
ci.ps1 | 15 ++++++++
pyproject.toml | 1 +
src/b4/__init__.py | 22 +++++++++---
src/b4/ez.py | 4 +--
src/b4/review_tui/_review_app.py | 8 ++++-
src/b4/review_tui/_tracking_app.py | 24 ++++++++-----
src/b4/tui/_common.py | 58 ++++++++++++++++--------------
src/tests/test___init__.py | 2 +-
src/tests/test_patatt.py | 31 ++++++++++------
src/tests/test_review_tracking.py | 2 +-
src/tests/test_three_way_merge.py | 2 +-
11 files changed, 113 insertions(+), 56 deletions(-)
create mode 100644 ci.ps1
--
2.45.0.windows.1
next reply other threads:[~2026-04-25 19:49 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-25 19:49 Adrian Neftali Sanchez [this message]
2026-04-25 19:49 ` [RFC PATCH 01/13] tests: specify UTF-8 encoding when opening files in text mode Adrian Neftali Sanchez
2026-04-25 19:49 ` [RFC PATCH 02/13] tests: use os.path.join/normpath for portable path assertions Adrian Neftali Sanchez
2026-04-25 19:49 ` [RFC PATCH 03/13] b4: add cross-platform username resolution in _setup_user_config Adrian Neftali Sanchez
2026-04-25 19:49 ` [RFC PATCH 04/13] b4: resolve platform-native data and cache directories Adrian Neftali Sanchez
2026-04-25 19:49 ` [RFC PATCH 05/13] b4: normalise git-reported absolute paths with os.path.normpath Adrian Neftali Sanchez
2026-04-25 19:49 ` [RFC PATCH 06/13] b4: select platform-appropriate default pager Adrian Neftali Sanchez
2026-04-25 19:49 ` [RFC PATCH 07/13] ez: use portable uid/gid accessors in write_to_tar Adrian Neftali Sanchez
2026-04-25 19:49 ` [RFC PATCH 08/13] tui: The _suspend_to_shell function assumes a POSIX environment, relying on $SHELL and shell-specific arguments (e.g., --rcfile) that are invalid on Windows Adrian Neftali Sanchez
2026-04-25 19:49 ` [RFC PATCH 09/13] tests: replace NamedTemporaryFile with tmp_path in patatt fixture Adrian Neftali Sanchez
2026-04-25 19:49 ` [RFC PATCH 10/13] pyproject: add Windows operating-system classifier Adrian Neftali Sanchez
2026-04-25 19:49 ` [RFC PATCH 11/13] ci: add ci.ps1 for running the quality-gate pipeline on Windows Adrian Neftali Sanchez
2026-04-25 19:49 ` [RFC PATCH 12/13] review_tui: write git tracking commit before updating DB Adrian Neftali Sanchez
2026-04-25 19:49 ` [RFC PATCH 13/13] review_tui: guard against unmounted diff-viewer In certain asynchronous contexts or during rapid UI transitions, _show_content may be invoked before the diff-viewer widget has been fully mounted in the DOM. This is particularly reproducible in headless test environments and on platforms with slower console I/O initialization Adrian Neftali Sanchez
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=20260425194943.1499-1-lutgaru@gmail.com \
--to=lutgaru@gmail.com \
--cc=konstantin@linuxfoundation.org \
--cc=tools@linux.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox