-
-
Notifications
You must be signed in to change notification settings - Fork 6.3k
[RFC] win: build: make ci/build.ps1 work without Appveyor #8405
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Fixing the Notes:
|
I don't follow. Did the change to |
It didn't fail but I don't know how to make cmake copy the nvim-qt runtime directory such that, in the Since I don't want to second-guess which directory nvim-qt runtime files are, I'm running
|
cmake warnings are "transferred" to the next cmake invocation so the functional tests always fails on my machine. Not sure if this is cmake or msbuild. I'm getting the same warnings as the passing MSVC builds on Appveyor and the warnings are from building Neovim. Are there cmake cache files/directories that I have to delete? Anyway, skipping the tests, only cpack is failing because of |
this? Lines 124 to 128 in e121b1d
we do not explicitly set CPACK_CMAKE_GENERATOR as far as I know. |
Yes. I'll deal with that later. Debugging the following failures on my machine
|
Is there a convenient way to query for admin privs other than |
You mean from vim? Not that I know of. Try-and-fail is a fine approach, as you mentioned. |
@justinmk Does cmake still have an issue with sh/bash in |
I copied only the shim because I don't know how to copy the entire runtime/ for nvim-qt. Feedback is appreciated. In the meantime, I'll work on more path checks and adding a mingw fallback if Visual Studio is not installed. |
It was only a problem when building with mingw, it comes from f53c825. Only @equalsraf knows why. If it doesn't cause a problem, maybe it's not a problem anymore.
Ok. But I'm confused, how is that related to the gui shim? Aren't those tests already passing on master? |
They were skipped because Windows doesnt have gzip and mkfifo by default. Appveyor has them because of Git. I have them in my PATH because I install Git in a different folder so the build script didnt remove sh from PATH on my machine. sh is not a problem in MSVC build. |
https://github.com/Kitware/CMake/blob/master/Modules/CMakeMinGWFindMake.cmake unsets |
Having issues compiling LuaJIT because of sjlj exceptions. Not sure if it's caused by |
cmake requires Building LuaJIT on Mingw must omit |
4d8a8bd
to
fa42155
Compare
@janlazo How about installing |
@erw7 I'll test Ninja after going through all the affected dependencies. |
662c03c
to
53882e8
Compare
Is there a mingw compiler that uses seh exception for LuaJIT? I don't know how to force it for gcc so I'm leaving this PR as RFC for now. |
I don't know how to answer that, maybe @jszakmeister @jamessan or some other build expert can help. |
eb61acc
to
ba1647e
Compare
makedeps.bat was included to conveniently build |
|
||
# Build third-party dependencies | ||
$mingwPackages = @('gcc', 'make', 'cmake', 'perl', 'diffutils', 'unibilium').ForEach({ | ||
@('mingw', 'w64', $arch, $_) -join '-' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The old code was more obvious. Is there a functional need for this change?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No. I was testing the pattern so I can conveniently add gcc, make, ninja. I prefer joining arrays than 'mingw-w64-' + $arch + '-' + $_
and all packages had the same naming pattern.
$env:PATH = "C:\msys64\usr\bin;$env:PATH" | ||
& "C:\msys64\mingw$bits\bin\mingw32-make.exe" -C $(Convert-Path ..\src\nvim\testdir) VERBOSE=1 | ||
# Old tests | ||
if (Test-Path "C:\msys64\mingw$bits\bin\mingw32-make.exe") { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems like my old comment still applies. If Test-Path
fails on appveyor we don't want the build to silently continue. We want it to fail loudly.
What exactly do you use |
@justinmk I want a convenient script to run everything and
|
`MinGW Makefiles` build needs it if sh.exe is in PATH.
Build with MSVC if $env:CONFIGURATION is unset. Add codepath for Ninja generator on MinGW build. Check git, python, ruby paths from Appveyor to not break $env:PATH. Run codecov and oldtests if mingw is installed Stop the build if any cmdlet fails or a program returns a terminating error. Force all (script) local variables to be set before using them.
gcc enables sjlj exceptions but they're not native on Windows.
I can't reproduce the error for xgettext on MSVC_64. It could be a path escaping issue with one of the arguments if it uses cmd.exe. MINGW_32 is completely broken because of msvcrt.dll. gdb detects stack buffer overrun on ntdll.dll. How did mingw (32-bit) build before? |
Make the powershell build script not depend on Appveyor environment.