VX
Build and use Vertex Linux's selectable BSD-oriented multicall userland.
VX bundles a growing set of FreeBSD-derived userland tools into one Linux binary. Applets are selected either by the first argument to vx or by the command name in argv[0] when the binary is reached through an installed symlink.
Note: The available command set is decided at build time. A default build enables every applet, while
-Dutilscan produce a smaller purpose-built binary.
Invocation model
Call an applet as a vx subcommand:
vx grep pattern file
vx find . -name '*.c'
vx depmod -a
Installed symlinks expose the traditional command names:
grep pattern file
find . -name '*.c'
depmod -a
When invoked without an applet, vx prints its usage and the applets compiled into that binary. An unknown applet is rejected before dispatch.
Included applets
The current default build registers these applets:
| Category | Applets |
|---|---|
| Patching and differences | patch, diff, cmp, diff3, sdiff |
| Search and traversal | grep, egrep, fgrep, rgrep, find, xargs, which |
| Compression | gzip, gunzip, zcat, gzcat, uncompress |
| PCI inspection | lspci, setpci |
| Kernel modules | depmod |
Several command names share one implementation. The gzip applet handles gzip, gunzip, zcat, gzcat, and uncompress; the grep applet handles the full grep command family.
Select utilities at build time
VX uses Meson and enables all utilities by default:
meson setup builddir
meson compile -C builddir
meson test -C builddir
Build only a selected subset with -Dutils:
meson setup builddir -Dutils=grep,find,xargs
meson compile -C builddir
meson test -C builddir
The selection controls the compiled source set, dispatch table, installed command symlinks, man pages, and registered tests. An empty selection is rejected; use all for the complete build.
Optional build dependencies
Dependencies are required only when their related applets are enabled.
| Applet group | Additional dependencies |
|---|---|
gzip | zlib and liblzma |
find | ACL library and yacc or Bison |
depmod | zlib, libzstd, and liblzma |
PCI utilities share the local PCI support code. All BSD-derived translation units are built with the Linux compatibility header force-included.
Installed commands and supporting scripts
Meson installs selected applet names as symlinks to vx. Gzip builds also install the companion scripts zdiff, zforce, zmore, znew, gzexe, zgrep, and zless, plus aliases for zcmp, zegrep, and zfgrep.
Man pages are installed only for enabled utilities. This keeps reduced builds consistent across the executable, command surface, tests, and documentation.
Test coverage
meson test runs shell-based tests only for enabled applets. The current suite covers:
- patch and the diff family
- which, grep, find, and xargs
- gzip
- lspci and setpci
- depmod
The test harness exposes the newly built binary through the VX environment variable so each test exercises the selected multicall executable directly.
Behavior and compatibility
VX intentionally preserves BSD behavior where it differs from GNU userland. It uses compatibility shims for BSD APIs and types that are not provided directly by Linux libc.
- Scripts that depend on GNU-specific flags should be checked against the corresponding VX applet.
- Applet availability must not be assumed when using a reduced
-Dutilsbuild. - PCI and kernel-module tools are part of the same deterministic multicall dispatch model as the traditional userland commands.