mirror of
https://github.com/Cheviiot/Vintner.git
synced 2026-08-03 15:57:24 +00:00
Run wrapped tools directly as vintner <tool> ..., no PATH needed
`vintner cl ...`, `vintner msbuild ...`, etc. now work without adding <dest>/bin/<arch> to PATH or relying on the same-directory symlinks `install` sets up there. wrapper.Run gained an explicit binDir parameter (empty string preserves the existing os.Executable()-based self-location for the ordinary multi-call/symlink case) so cmd/vintner's new runTool can point it at a resolved toolchain directory instead. Resolution order: VINTNER_BIN if set (same meaning as `env --bin` - point it at a <dest>/bin/<arch> directory directly, for a non-default --dest or a specific architecture), else <defaultToolchainDir>/bin/ <hostArch> - the layout a plain `vintner download && vintner install` with no --dest override produces. A missing toolchain gets a clear error pointing at both fixes, rather than bubbling up whatever wineenv.Load's env.json error looks like. Also fixed shell completion falling out of sync with the actual tool list: the bash/zsh scripts previously hand-copied tool/flag names (and had already gone stale once - --with-dxsdk was missing from the download flag completions since it was added). The tool name list is now generated from wrapper.ToolNames() instead of hand-maintained, and both scripts now complete tool names too, so `vintner <TAB>` suggests `cl`, `link`, `msbuild`, etc. alongside the management subcommands. Verified end-to-end with a minimal PATH (/usr/bin:/bin only, no toolchain dir on it at all): `vintner cl /nologo hello.c` compiled successfully, and `vintner msbuild -t:Rebuild ...` rebuilt the same real KMDF driver verified earlier this session - both via the default ~/.vintner/bin/<hostArch> resolution, no VINTNER_BIN override needed.
This commit is contained in:
@@ -21,6 +21,7 @@ approach: download the real MSVC/WinSDK, wrap the compiler under Wine.
|
||||
- [Installation](#installation)
|
||||
- [Quick start](#quick-start)
|
||||
- [Commands](#commands)
|
||||
- [Invoking tools without PATH](#invoking-tools-without-path)
|
||||
- [Building drivers (WDK)](#building-drivers-wdk)
|
||||
- [Building against D3DX9 (DirectX SDK)](#building-against-d3dx9-directx-sdk)
|
||||
- [Automated/scripted builds](#automatedscripted-builds)
|
||||
@@ -102,6 +103,9 @@ export PATH=~/.vintner/bin/x64:$PATH
|
||||
cl /nologo /EHsc hello.cpp
|
||||
```
|
||||
|
||||
Don't want to touch PATH? Skip step 3 and run tools through vintner
|
||||
directly instead - see [Invoking tools without PATH](#invoking-tools-without-path).
|
||||
|
||||
## Commands
|
||||
|
||||
```
|
||||
@@ -132,6 +136,24 @@ package id or through `--with-*`. `--print-deps-tree` prints the
|
||||
dependency tree of whatever would actually be selected — honoring every
|
||||
other flag — without downloading anything.
|
||||
|
||||
## Invoking tools without PATH
|
||||
|
||||
`cl`, `link`, `msbuild`, and the rest also work as `vintner <tool>
|
||||
[args...]`, with no need to add `<dest>/bin/<arch>` to `PATH` or rely on
|
||||
the symlinks `install` sets up there:
|
||||
|
||||
```bash
|
||||
vintner cl /nologo /EHsc hello.cpp
|
||||
vintner msbuild MyProject.sln
|
||||
```
|
||||
|
||||
Resolves the toolchain to use from `VINTNER_BIN` if set (same meaning as
|
||||
`env --bin`: point it at a `<dest>/bin/<arch>` directory directly — useful
|
||||
for a non-default `--dest`, or to pick a specific architecture when more
|
||||
than one is installed), otherwise defaults to
|
||||
`~/.vintner/bin/<host-arch>`, the layout a plain `vintner download &&
|
||||
vintner install` with no `--dest` override produces.
|
||||
|
||||
## Building drivers (WDK)
|
||||
|
||||
`--with-wdk` also fetches the Windows Driver Kit: headers, import libs,
|
||||
|
||||
Reference in New Issue
Block a user