From 9992f50ab453782de37cfde9d7e774bdd1360803 Mon Sep 17 00:00:00 2001 From: metif12 Date: Sun, 11 Oct 2026 12:11:31 +0330 Subject: [PATCH 1/2] build: stop excluding Windows ports from the collective build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Windows ignore_dirs list documented what Win32 GNU coreutils 8.32 ships, not what this repository cannot build. Three tools that were listed — ls, sync and timeout — compile and pass their tests on Windows, so the Windows CI job never built them at all, which is how the timeout bug that only broke Linux and macOS survived until someone diagnosed #237. The list is now what this repository genuinely cannot build on each platform, so those three are removed. The df, dir, vdir, install, nice and chmod ports also build on Windows and are removed too, but they only exist on open PRs, so they will not be built until those merge; that is a sequencing consequence rather than a mistake, and it is stated here so nobody reads this commit as claiming six more tools are covered on Windows today. --- build.vsh | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/build.vsh b/build.vsh index 9308ea4..7539bd1 100755 --- a/build.vsh +++ b/build.vsh @@ -9,34 +9,31 @@ struct Config { jobs int @[long: cpus; short: 'j'] } +// Which tools the collective build skips, per platform. +// +// This list used to mirror what Win32 GNU coreutils 8.32 shipped, which meant +// the six tools this repository ported for Windows anyway — df, dir, vdir, +// install, nice and chmod — were never built by the Windows CI job even though +// they compile and pass their tests there. The list is now what this repository +// actually cannot build on each platform, so a port that works on Windows is +// removed from it. const ignore_dirs = { 'windows': [ - // avoid *nix-dependent utils; the following are excluded - // from Win32 GNU coreutils 8.32: + // these need POSIX APIs Windows does not expose 'arch', 'chgrp', - 'chmod', 'chown', 'chroot', - 'df', - 'dir', 'groups', 'hostid', 'hostname', 'id', - 'install', - 'ls', - 'nice', 'pinky', 'stat', 'stdbuf', 'stty', - 'sync', - 'timeout', 'tty', - 'vdir', - // The following are excluded because utmp-dependent - // (and also not part of Win32 GNU coreutils): + // these are utmp-dependent (and also not part of Win32 GNU coreutils) 'uptime', 'users', 'who', @@ -44,6 +41,9 @@ const ignore_dirs = { 'nohup', ] 'macos': ['stat', 'sync', 'uptime'] + // Vinix shares the POSIX surface, so only uptime is excluded there: it + // reads the utmp database, which Vinix does not implement yet. + 'vinix': ['uptime'] }[user_os()] or { [] } unbuffer_stdout() From 04db6859a561117aee4c35847f8e871a6daca766 Mon Sep 17 00:00:00 2001 From: metif12 Date: Sat, 17 Oct 2026 12:21:25 +0330 Subject: [PATCH 2/2] build: leave the vinix exclusion list to the PR that adds the target --- build.vsh | 3 --- 1 file changed, 3 deletions(-) diff --git a/build.vsh b/build.vsh index 7539bd1..acaf23d 100755 --- a/build.vsh +++ b/build.vsh @@ -41,9 +41,6 @@ const ignore_dirs = { 'nohup', ] 'macos': ['stat', 'sync', 'uptime'] - // Vinix shares the POSIX surface, so only uptime is excluded there: it - // reads the utmp database, which Vinix does not implement yet. - 'vinix': ['uptime'] }[user_os()] or { [] } unbuffer_stdout()