[RFC PATCH 00/13] b4: add native Windows support

Adrian Neftali Sanchez <[email protected]>
Newsgroups org.kernel.linux.tools
Message-ID <[email protected]>
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 <[email protected]>

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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.