aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordundargoc <33953936+dundargoc@users.noreply.github.com>2022-05-16 00:59:58 +0200
committerGitHub <noreply@github.com>2022-05-15 15:59:58 -0700
commitf8af81445bb48966d54f4a956842d935d009d275 (patch)
tree59fe07ee345a223818a50d514f6aba5102eb4f49
parent59ba66d1ab64be1b01154d0cab7f8af9fe02e93d (diff)
downloadrneovim-f8af81445bb48966d54f4a956842d935d009d275.tar.gz
rneovim-f8af81445bb48966d54f4a956842d935d009d275.tar.bz2
rneovim-f8af81445bb48966d54f4a956842d935d009d275.zip
ci: remove mingw job #18580
Unnecessary CI builds increase the change of spurious failures, which are costly noise. Of course, we should fix all legitimate bugs, but we also cannot micro-manage every platform, so there needs to be a clear motivation for the CI builds that we maintain. Reasons against maintaining a mingw CI job: 1. The windows mingw build is slow. 2. Failures: - https://github.com/neovim/neovim/issues/18494 - https://github.com/neovim/neovim/issues/18495 3. The mingw artifact is 10x bigger than the windows MSVC artifact: https://github.com/neovim/neovim/issues/10560 4. Our releases publish the MSVC (not mingw) artifact for Windows users: https://github.com/neovim/neovim/releases 5. Non-MSVCRT has limitations documented by libuv: http://docs.libuv.org/en/v1.x/process.html > On Windows file descriptors greater than 2 are available to the child process only if the child processes uses the MSVCRT runtime. Closes https://github.com/neovim/neovim/issues/18551
-rw-r--r--.github/workflows/ci.yml11
-rw-r--r--CMakeLists.txt13
-rw-r--r--ci/build.ps177
-rw-r--r--cmake/FindLuaJit.cmake2
-rw-r--r--third-party/CMakeLists.txt9
-rw-r--r--third-party/cmake/BuildLibuv.cmake13
-rw-r--r--third-party/cmake/BuildLua.cmake2
-rw-r--r--third-party/cmake/BuildLuajit.cmake51
-rw-r--r--third-party/cmake/BuildLuarocks.cmake16
-rw-r--r--third-party/cmake/BuildLuv.cmake11
-rw-r--r--third-party/cmake/BuildMsgpack.cmake13
11 files changed, 23 insertions, 195 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index c60473d541..9a98c6097c 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -236,21 +236,16 @@ jobs:
env:
DEPS_BUILD_DIR: ${{ format('{0}/nvim-deps', github.workspace) }}
DEPS_PREFIX: ${{ format('{0}/nvim-deps/usr', github.workspace) }}
-
- strategy:
- fail-fast: false
- matrix:
- config: [ MINGW_64-gcov, MSVC_64 ]
- name: windows (${{ matrix.config }})
+ name: windows (MSVC_64)
steps:
- uses: actions/checkout@v2
- uses: actions/cache@v2
with:
path: ${{ env.DEPS_BUILD_DIR }}
- key: ${{ matrix.config }}-${{ hashFiles('third-party\**') }}
+ key: ${{ hashFiles('third-party\**') }}
- name: Run CI
run: powershell ci\build.ps1
env:
- CONFIGURATION: ${{ matrix.config }}
+ CONFIGURATION: MSVC_64
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 409face71c..19c81ffcbe 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -108,14 +108,7 @@ endif()
option(ENABLE_LIBINTL "enable libintl" ON)
option(ENABLE_LIBICONV "enable libiconv" ON)
-if (MINGW)
- # Disable LTO by default as it may not compile
- # See https://github.com/Alexpux/MINGW-packages/issues/3516
- # and https://github.com/neovim/neovim/pull/8654#issuecomment-402316672
- option(ENABLE_LTO "enable link time optimization" OFF)
-else()
- option(ENABLE_LTO "enable link time optimization" ON)
-endif()
+option(ENABLE_LTO "enable link time optimization" ON)
message(STATUS "CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}")
@@ -322,10 +315,6 @@ else()
endif()
endif()
-if(MINGW)
- # Use POSIX compatible stdio in Mingw
- add_definitions(-D__USE_MINGW_ANSI_STDIO)
-endif()
if(WIN32)
# Windows Vista is the minimum supported version
add_definitions(-D_WIN32_WINNT=0x0600)
diff --git a/ci/build.ps1 b/ci/build.ps1
index 533e5804c9..99f66f7de2 100644
--- a/ci/build.ps1
+++ b/ci/build.ps1
@@ -40,55 +40,14 @@ if (-Not (Test-Path -PathType container $env:DEPS_BUILD_DIR)) {
write-host "cache dir $($env:DEPS_BUILD_DIR) size: $(Get-ChildItem $env:DEPS_BUILD_DIR -recurse | Measure-Object -property length -sum | Select -expand sum)"
}
-if ($compiler -eq 'MINGW') {
- if ($bits -eq 32) {
- $arch = 'i686'
- }
- elseif ($bits -eq 64) {
- $arch = 'x86_64'
- }
- if ($compileOption -eq 'gcov') {
- $nvimCmakeVars['USE_GCOV'] = 'ON'
- $uploadToCodecov = $true
- $env:GCOV = "C:\msys64\mingw$bits\bin\gcov"
-
- # Setup/build Lua coverage.
- $env:USE_LUACOV = 1
- $env:BUSTED_ARGS = "--coverage"
- }
- # These are native MinGW builds, but they use the toolchain inside
- # MSYS2, this allows using all the dependencies and tools available
- # in MSYS2, but we cannot build inside the MSYS2 shell.
- $cmakeGenerator = 'Ninja'
- $cmakeGeneratorArgs = '-v'
- $mingwPackages = @('ninja', 'cmake', 'diffutils').ForEach({
- "mingw-w64-$arch-$_"
- })
-
- # Add MinGW to the PATH
- $env:PATH = "C:\msys64\mingw$bits\bin;$env:PATH"
-
- # Avoid pacman "warning" which causes non-zero return code. https://github.com/open62541/open62541/issues/2068
- & C:\msys64\usr\bin\mkdir -p /var/cache/pacman/pkg
-
- # Build third-party dependencies
- C:\msys64\usr\bin\bash -lc "pacman --verbose --noconfirm -Syu" ; exitIfFailed
- # Update again in case updating pacman changes pacman.conf
- C:\msys64\usr\bin\bash -lc "pacman --verbose --noconfirm -Syu" ; exitIfFailed
- C:\msys64\usr\bin\bash -lc "pacman --verbose --noconfirm --needed -S $mingwPackages" ; exitIfFailed
-}
-elseif ($compiler -eq 'MSVC') {
- $cmakeGeneratorArgs = '/verbosity:normal'
- $cmakeGenerator = 'Visual Studio 16 2019'
-}
-
-if ($compiler -eq 'MSVC') {
- $installationPath = vswhere.exe -latest -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath
- if ($installationPath -and (test-path "$installationPath\Common7\Tools\vsdevcmd.bat")) {
- & "${env:COMSPEC}" /s /c "`"$installationPath\Common7\Tools\vsdevcmd.bat`" -arch=x${bits} -no_logo && set" | foreach-object {
- $name, $value = $_ -split '=', 2
- set-content env:\"$name" $value
- }
+$cmakeGeneratorArgs = '/verbosity:normal'
+$cmakeGenerator = 'Visual Studio 16 2019'
+
+$installationPath = vswhere.exe -latest -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath
+if ($installationPath -and (test-path "$installationPath\Common7\Tools\vsdevcmd.bat")) {
+ & "${env:COMSPEC}" /s /c "`"$installationPath\Common7\Tools\vsdevcmd.bat`" -arch=x${bits} -no_logo && set" | foreach-object {
+ $name, $value = $_ -split '=', 2
+ set-content env:\"$name" $value
}
}
@@ -111,14 +70,10 @@ function convertToCmakeArgs($vars) {
}
cd $env:DEPS_BUILD_DIR
-if ($compiler -eq 'MSVC') {
- if ($bits -eq 32) {
- cmake -G $cmakeGenerator -A Win32 $(convertToCmakeArgs($depsCmakeVars)) "$buildDir/third-party/" ; exitIfFailed
- } else {
- cmake -G $cmakeGenerator -A x64 $(convertToCmakeArgs($depsCmakeVars)) "$buildDir/third-party/" ; exitIfFailed
- }
+if ($bits -eq 32) {
+ cmake -G $cmakeGenerator -A Win32 $(convertToCmakeArgs($depsCmakeVars)) "$buildDir/third-party/" ; exitIfFailed
} else {
- cmake -G $cmakeGenerator $(convertToCmakeArgs($depsCmakeVars)) "$buildDir/third-party/" ; exitIfFailed
+ cmake -G $cmakeGenerator -A x64 $(convertToCmakeArgs($depsCmakeVars)) "$buildDir/third-party/" ; exitIfFailed
}
cmake --build . --config $cmakeBuildType -- $cmakeGeneratorArgs ; exitIfFailed
cd $buildDir
@@ -126,14 +81,10 @@ cd $buildDir
# Build Neovim
mkdir build
cd build
-if ($compiler -eq 'MSVC') {
- if ($bits -eq 32) {
- cmake -G $cmakeGenerator -A Win32 $(convertToCmakeArgs($nvimCmakeVars)) .. ; exitIfFailed
- } else {
- cmake -G $cmakeGenerator -A x64 $(convertToCmakeArgs($nvimCmakeVars)) .. ; exitIfFailed
- }
+if ($bits -eq 32) {
+ cmake -G $cmakeGenerator -A Win32 $(convertToCmakeArgs($nvimCmakeVars)) .. ; exitIfFailed
} else {
- cmake -G $cmakeGenerator $(convertToCmakeArgs($nvimCmakeVars)) .. ; exitIfFailed
+ cmake -G $cmakeGenerator -A x64 $(convertToCmakeArgs($nvimCmakeVars)) .. ; exitIfFailed
}
cmake --build . --config $cmakeBuildType -- $cmakeGeneratorArgs ; exitIfFailed
.\bin\nvim --version ; exitIfFailed
diff --git a/cmake/FindLuaJit.cmake b/cmake/FindLuaJit.cmake
index 72795afefd..c904347f6a 100644
--- a/cmake/FindLuaJit.cmake
+++ b/cmake/FindLuaJit.cmake
@@ -17,8 +17,6 @@ find_path(LUAJIT_INCLUDE_DIR luajit.h
if(MSVC)
list(APPEND LUAJIT_NAMES lua51)
-elseif(MINGW)
- list(APPEND LUAJIT_NAMES libluajit libluajit-5.1)
else()
list(APPEND LUAJIT_NAMES luajit-5.1)
endif()
diff --git a/third-party/CMakeLists.txt b/third-party/CMakeLists.txt
index 21d1f7906a..36965a2e98 100644
--- a/third-party/CMakeLists.txt
+++ b/third-party/CMakeLists.txt
@@ -93,15 +93,6 @@ if(CMAKE_GENERATOR MATCHES "Makefiles")
set(MAKE_PRG "$(MAKE)")
endif()
-if(MINGW AND CMAKE_GENERATOR MATCHES "Ninja")
- find_program(MAKE_PRG NAMES mingw32-make)
- if(NOT MAKE_PRG)
- message(FATAL_ERROR "GNU Make for mingw32 is required to build the dependencies.")
- else()
- message(STATUS "Found GNU Make for mingw32: ${MAKE_PRG}")
- endif()
-endif()
-
if(CMAKE_C_COMPILER_ARG1)
set(DEPS_C_COMPILER "${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_ARG1}")
else()
diff --git a/third-party/cmake/BuildLibuv.cmake b/third-party/cmake/BuildLibuv.cmake
index 42650308a8..9d0707201f 100644
--- a/third-party/cmake/BuildLibuv.cmake
+++ b/third-party/cmake/BuildLibuv.cmake
@@ -45,24 +45,11 @@ if(UNIX)
CONFIGURE_COMMAND ${UNIX_CFGCMD} MAKE=${MAKE_PRG}
INSTALL_COMMAND ${MAKE_PRG} V=1 install)
-elseif(MINGW AND CMAKE_CROSSCOMPILING)
- # Build libuv for the host
- BuildLibuv(TARGET libuv_host
- CONFIGURE_COMMAND sh ${DEPS_BUILD_DIR}/src/libuv_host/autogen.sh && ${DEPS_BUILD_DIR}/src/libuv_host/configure --with-pic --disable-shared --prefix=${HOSTDEPS_INSTALL_DIR} CC=${HOST_C_COMPILER}
- INSTALL_COMMAND ${MAKE_PRG} V=1 install)
-
- # Build libuv for the target
- BuildLibuv(
- CONFIGURE_COMMAND ${UNIX_CFGCMD} --host=${CROSS_TARGET}
- INSTALL_COMMAND ${MAKE_PRG} V=1 install)
-
elseif(WIN32)
set(UV_OUTPUT_DIR ${DEPS_BUILD_DIR}/src/libuv/${CMAKE_BUILD_TYPE})
if(MSVC)
set(BUILD_SHARED ON)
- elseif(MINGW)
- set(BUILD_SHARED OFF)
else()
message(FATAL_ERROR "Trying to build libuv in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}")
endif()
diff --git a/third-party/cmake/BuildLua.cmake b/third-party/cmake/BuildLua.cmake
index a40cb7dcb2..02f762234b 100644
--- a/third-party/cmake/BuildLua.cmake
+++ b/third-party/cmake/BuildLua.cmake
@@ -39,8 +39,6 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
set(LUA_TARGET freebsd)
elseif(CMAKE_SYSTEM_NAME MATCHES "BSD")
set(CMAKE_LUA_TARGET bsd)
-elseif(CMAKE_SYSTEM_NAME MATCHES "^MINGW")
- set(CMAKE_LUA_TARGET mingw)
else()
if(UNIX)
set(LUA_TARGET posix)
diff --git a/third-party/cmake/BuildLuajit.cmake b/third-party/cmake/BuildLuajit.cmake
index e02d7fe609..9c0a6cfba2 100644
--- a/third-party/cmake/BuildLuajit.cmake
+++ b/third-party/cmake/BuildLuajit.cmake
@@ -76,57 +76,6 @@ if(UNIX)
CC=${DEPS_C_COMPILER} PREFIX=${DEPS_INSTALL_DIR}
${DEPLOYMENT_TARGET})
-elseif(MINGW AND CMAKE_CROSSCOMPILING)
-
- # Build luajit for the host
- BuildLuaJit(TARGET luajit_host
- CONFIGURE_COMMAND ""
- BUILD_COMMAND ""
- INSTALL_COMMAND ${INSTALLCMD_UNIX}
- CC=${HOST_C_COMPILER} PREFIX=${HOSTDEPS_INSTALL_DIR})
-
- # Build luajit for the target
- BuildLuaJit(
- # Similar to Unix + cross - fPIC
- INSTALL_COMMAND
- ${MAKE_PRG} PREFIX=${DEPS_INSTALL_DIR}
- BUILDMODE=static install
- TARGET_SYS=${CMAKE_SYSTEM_NAME}
- CROSS=${CROSS_TARGET}-
- HOST_CC=${HOST_C_COMPILER} HOST_CFLAGS=${HOST_C_FLAGS}
- HOST_LDFLAGS=${HOST_EXE_LINKER_FLAGS}
- FILE_T=luajit.exe
- Q=
- INSTALL_TSYMNAME=luajit.exe)
-
-elseif(MINGW)
-
- if(CMAKE_GENERATOR MATCHES "Ninja")
- set(LUAJIT_MAKE_PRG ${MAKE_PRG})
- else()
- set(LUAJIT_MAKE_PRG ${CMAKE_MAKE_PROGRAM})
- endif()
- BuildLuaJit(BUILD_COMMAND ${LUAJIT_MAKE_PRG} CC=${DEPS_C_COMPILER}
- PREFIX=${DEPS_INSTALL_DIR}
- CFLAGS+=-DLUA_USE_APICHECK
- CFLAGS+=-funwind-tables
- CCDEBUG+=-g
- BUILDMODE=static
- # Build a DLL too
- COMMAND ${LUAJIT_MAKE_PRG} CC=${DEPS_C_COMPILER} BUILDMODE=dynamic
-
- INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/bin
- COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/luajit.exe ${DEPS_INSTALL_DIR}/bin
- COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/lua51.dll ${DEPS_INSTALL_DIR}/bin
- COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/lib
- # Luarocks searches for lua51.dll in lib
- COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/lua51.dll ${DEPS_INSTALL_DIR}/lib
- COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/libluajit.a ${DEPS_INSTALL_DIR}/lib
- COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/include/luajit-2.1
- COMMAND ${CMAKE_COMMAND} -DFROM_GLOB=${DEPS_BUILD_DIR}/src/luajit/src/*.h -DTO=${DEPS_INSTALL_DIR}/include/luajit-2.1 -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyFilesGlob.cmake
- COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/bin/lua/jit
- COMMAND ${CMAKE_COMMAND} -E copy_directory ${DEPS_BUILD_DIR}/src/luajit/src/jit ${DEPS_INSTALL_DIR}/bin/lua/jit
- )
elseif(MSVC)
BuildLuaJit(
diff --git a/third-party/cmake/BuildLuarocks.cmake b/third-party/cmake/BuildLuarocks.cmake
index 244d1d9fb8..98783d533e 100644
--- a/third-party/cmake/BuildLuarocks.cmake
+++ b/third-party/cmake/BuildLuarocks.cmake
@@ -56,7 +56,7 @@ endif()
# Defaults to 5.1 for bundled LuaJIT/Lua.
set(LUA_VERSION "5.1")
-if(UNIX OR (MINGW AND CMAKE_CROSSCOMPILING))
+if(UNIX)
if(USE_BUNDLED_LUAJIT)
list(APPEND LUAROCKS_OPTS
@@ -94,13 +94,9 @@ if(UNIX OR (MINGW AND CMAKE_CROSSCOMPILING))
CONFIGURE_COMMAND ${DEPS_BUILD_DIR}/src/luarocks/configure
--prefix=${HOSTDEPS_INSTALL_DIR} --force-config ${LUAROCKS_OPTS}
INSTALL_COMMAND ${MAKE_PRG} -j1 bootstrap)
-elseif(MSVC OR MINGW)
+elseif(MSVC)
- if(MINGW)
- set(COMPILER_FLAG /MW)
- elseif(MSVC)
- set(COMPILER_FLAG /MSVC)
- endif()
+ set(COMPILER_FLAG /MSVC)
# Ignore USE_BUNDLED_LUAJIT - always ON for native Win32
BuildLuarocks(INSTALL_COMMAND install.bat /FORCECONFIG /NOREG /NOADMIN /Q /F
@@ -123,9 +119,6 @@ list(APPEND THIRD_PARTY_DEPS luarocks)
if(USE_BUNDLED_LUAJIT)
add_dependencies(luarocks luajit)
- if(MINGW AND CMAKE_CROSSCOMPILING)
- add_dependencies(luarocks luajit_host)
- endif()
elseif(USE_BUNDLED_LUA)
add_dependencies(luarocks lua)
endif()
@@ -196,9 +189,6 @@ if(USE_BUNDLED_BUSTED)
set(LUV_DEPS luacheck)
if(USE_BUNDLED_LUV)
list(APPEND LUV_DEPS luv-static lua-compat-5.3)
- if(MINGW AND CMAKE_CROSSCOMPILING)
- list(APPEND LUV_DEPS libuv_host)
- endif()
set(LUV_ARGS "CFLAGS=-O0 -g3 -fPIC")
if(USE_BUNDLED_LIBUV)
list(APPEND LUV_ARGS LIBUV_DIR=${HOSTDEPS_INSTALL_DIR})
diff --git a/third-party/cmake/BuildLuv.cmake b/third-party/cmake/BuildLuv.cmake
index 99822249c2..001f5a325a 100644
--- a/third-party/cmake/BuildLuv.cmake
+++ b/third-party/cmake/BuildLuv.cmake
@@ -91,16 +91,7 @@ if(USE_BUNDLED_LIBUV)
-DCMAKE_PREFIX_PATH=${DEPS_INSTALL_DIR})
endif()
-if(MINGW AND CMAKE_CROSSCOMPILING)
- get_filename_component(TOOLCHAIN ${CMAKE_TOOLCHAIN_FILE} REALPATH)
- set(LUV_CONFIGURE_COMMAND
- ${LUV_CONFIGURE_COMMAND_COMMON}
- # Pass toolchain
- -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN}
- "-DCMAKE_C_FLAGS:STRING=${LUV_INCLUDE_FLAGS} -D_WIN32_WINNT=0x0600"
- # Hack to avoid -rdynamic in Mingw
- -DCMAKE_SHARED_LIBRARY_LINK_C_FLAGS="")
-elseif(MSVC)
+if(MSVC)
set(LUV_CONFIGURE_COMMAND
${LUV_CONFIGURE_COMMAND_COMMON}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
diff --git a/third-party/cmake/BuildMsgpack.cmake b/third-party/cmake/BuildMsgpack.cmake
index f66a3bdd32..a89c1e34d0 100644
--- a/third-party/cmake/BuildMsgpack.cmake
+++ b/third-party/cmake/BuildMsgpack.cmake
@@ -42,18 +42,7 @@ set(MSGPACK_CONFIGURE_COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/msgpack
set(MSGPACK_BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE})
set(MSGPACK_INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE})
-if(MINGW AND CMAKE_CROSSCOMPILING)
- get_filename_component(TOOLCHAIN ${CMAKE_TOOLCHAIN_FILE} REALPATH)
- set(MSGPACK_CONFIGURE_COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/msgpack
- -DMSGPACK_BUILD_TESTS=OFF
- -DMSGPACK_BUILD_EXAMPLES=OFF
- -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
- # Pass toolchain
- -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN}
- -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
- # Hack to avoid -rdynamic in Mingw
- -DCMAKE_SHARED_LIBRARY_LINK_C_FLAGS="")
-elseif(MSVC)
+if(MSVC)
# Same as Unix without fPIC
set(MSGPACK_CONFIGURE_COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/msgpack
-DMSGPACK_BUILD_TESTS=OFF