mirror of
https://github.com/vlang/v.git
synced 2025-09-13 14:32:26 +03:00
make.bat: fix use of make.bat
from v up
(#16348)
* .editorconfig: fix EOL for BAT files * make.bat: fix use of `make.bat` from `v up` - use move semantics, instead of replace, for `v` executable updates - fixes [#16184](https://github.com/vlang/v/issues/16184) # [why] `v up` updates the executable by directly calling `make.bat`, awaiting the result, which keeps an open file handle to it's own executable file. `make.bat` compiles and, crucially, attempts to directly replace that `v` executable. But, in WinOS, files with open file handles cannot be deleted/replaced, so the `make` then fails. The other key point is that, although WinOS files with open file handles can't be deleted/replaced, they _can be moved/renamed_. Thus, the technique that most self-updating WinOS executables use is to move the current executable to some alternate name (ie, *v_old.exe*) and then move the newly updated executable to the original location (ie, *v.exe*). The next invocation of the "original" executable will then run the updated version. Note, this technique also works correctly for direct invocations of `make.bat`.
This commit is contained in:
parent
407bb6641f
commit
c015f15d8d
2 changed files with 38 additions and 28 deletions
|
@ -10,6 +10,10 @@ trim_trailing_whitespace = true
|
|||
indent_style = tab
|
||||
indent_size = 4
|
||||
|
||||
[*.{bat,cmd}]
|
||||
# BAT/CMD ~ DOS/Win requires BAT/CMD files to have CRLF EOLNs
|
||||
end_of_line = crlf
|
||||
|
||||
[*.{yml,yaml}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue