summaryrefslogtreecommitdiffstats
path: root/ci
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--ci/appveyor.bat114
-rw-r--r--ci/build-snd-dummy.sh19
-rw-r--r--ci/config.mk.clang-12.sed3
-rw-r--r--ci/config.mk.clang.sed2
-rw-r--r--ci/config.mk.gcc.sed1
-rw-r--r--ci/config.mk.sed3
-rw-r--r--ci/if_ver-1.vim25
-rw-r--r--ci/if_ver-2.vim8
-rw-r--r--ci/if_ver-cmd.vim12
-rw-r--r--ci/load-snd-dummy.sh8
-rw-r--r--ci/setup-xvfb.sh17
11 files changed, 212 insertions, 0 deletions
diff --git a/ci/appveyor.bat b/ci/appveyor.bat
new file mode 100644
index 0000000..5498769
--- /dev/null
+++ b/ci/appveyor.bat
@@ -0,0 +1,114 @@
+@echo off
+:: Batch file for building/testing Vim on AppVeyor
+set target=%1
+
+setlocal ENABLEDELAYEDEXPANSION
+cd %APPVEYOR_BUILD_FOLDER%
+
+:: Python3
+set PYTHON3_VER=311
+set PYTHON3_RELEASE=3.11.1
+set PYTHON3_URL=https://www.python.org/ftp/python/%PYTHON3_RELEASE%/python-%PYTHON3_RELEASE%-amd64.exe
+set PYTHON3_DIR=C:\python%PYTHON3_VER%-x64
+
+set "VSWHERE=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
+
+if exist "%VSWHERE%" (
+ for /f "usebackq delims=" %%i in (
+ `"%VSWHERE%" -products * -latest -property installationPath`
+ ) do (
+ set "VCVARSALL=%%i\VC\Auxiliary\Build\vcvarsall.bat"
+ )
+)
+
+if not exist "%VCVARSALL%" (
+ set "VCVARSALL=%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
+)
+call "%VCVARSALL%" x64
+
+goto %target%
+echo Unknown build target.
+exit 1
+
+:: ----------------------------------------------------------------------------
+:install
+@echo on
+if not exist downloads mkdir downloads
+
+:: Python 3
+if not exist %PYTHON3_DIR% (
+ call :downloadfile %PYTHON3_URL% downloads\python3.exe
+ cmd /c start /wait downloads\python3.exe /quiet TargetDir=%PYTHON3_DIR% ^
+ Include_pip=0 Include_tcltk=0 Include_test=0 Include_tools=0 ^
+ AssociateFiles=0 Shortcuts=0 Include_doc=0 Include_launcher=0 ^
+ InstallLauncherAllUsers=0
+)
+@echo off
+goto :eof
+
+:: ----------------------------------------------------------------------------
+:build
+
+cd src
+
+echo "Building MSVC 64bit console Version"
+nmake -f Make_mvc.mak CPU=AMD64 ^
+ OLE=no GUI=no IME=yes ICONV=yes DEBUG=no ^
+ FEATURES=%FEATURE%
+if not exist vim.exe (
+ echo Build failure.
+ exit 1
+)
+
+:: build MSVC huge version with python and channel support
+:: GUI needs to be last, so that testing works
+echo "Building MSVC 64bit GUI Version"
+if "%FEATURE%" == "HUGE" (
+ nmake -f Make_mvc.mak CPU=AMD64 ^
+ OLE=no GUI=yes IME=yes ICONV=yes DEBUG=no POSTSCRIPT=yes ^
+ PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON=C:\Python27-x64 ^
+ PYTHON3_VER=%PYTHON3_VER% DYNAMIC_PYTHON3=yes PYTHON3=%PYTHON3_DIR% ^
+ FEATURES=%FEATURE%
+) ELSE (
+ nmake -f Make_mvc.mak CPU=AMD64 ^
+ OLE=no GUI=yes IME=yes ICONV=yes DEBUG=no ^
+ FEATURES=%FEATURE%
+)
+if not exist gvim.exe (
+ echo Build failure.
+ exit 1
+)
+.\gvim -u NONE -c "redir @a | ver |0put a | wq" ver_msvc.txt || exit 1
+
+echo "version output MSVC console"
+.\vim --version || exit 1
+echo "version output MSVC GUI"
+type ver_msvc.txt || exit 1
+
+goto :eof
+
+:: ----------------------------------------------------------------------------
+:test
+@echo on
+cd src/testdir
+:: Testing with MSVC gvim
+path %PYTHON3_DIR%;%PATH%
+nmake -f Make_mvc.mak VIMPROG=..\gvim
+nmake -f Make_mvc.mak clean
+:: Testing with MSVC console version
+nmake -f Make_mvc.mak VIMPROG=..\vim
+
+@echo off
+goto :eof
+
+:: ----------------------------------------------------------------------------
+:downloadfile
+:: call :downloadfile <URL> <localfile>
+if not exist %2 (
+ curl -f -L %1 -o %2
+)
+if ERRORLEVEL 1 (
+ rem Retry once.
+ curl -f -L %1 -o %2 || exit 1
+)
+@goto :eof
diff --git a/ci/build-snd-dummy.sh b/ci/build-snd-dummy.sh
new file mode 100644
index 0000000..a2380b4
--- /dev/null
+++ b/ci/build-snd-dummy.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+set -eu
+
+LINUX_VERSION=$(uname -r | cut -d. -f1-2)
+LINUX_ARCHIVE_FILE=v${LINUX_VERSION}.tar.gz
+LINUX_SOURCE_DIR=linux-${LINUX_VERSION}
+
+mkdir -p "${TMPDIR}"
+cd "${TMPDIR}"
+
+wget -q "https://github.com/torvalds/linux/archive/${LINUX_ARCHIVE_FILE}"
+
+tar -xf "${LINUX_ARCHIVE_FILE}" "${LINUX_SOURCE_DIR}/sound"
+cd "${LINUX_SOURCE_DIR}/sound"
+
+CC=gcc make -C "/lib/modules/$(uname -r)/build" M="${PWD}" CONFIG_SOUND=m CONFIG_SND=m CONFIG_SND_PCM=m CONFIG_SND_DUMMY=m modules
+
+mkdir -p "${SND_DUMMY_DIR}"
+cp soundcore.ko core/snd.ko core/snd-pcm.ko drivers/snd-dummy.ko "${SND_DUMMY_DIR}"
diff --git a/ci/config.mk.clang-12.sed b/ci/config.mk.clang-12.sed
new file mode 100644
index 0000000..810b723
--- /dev/null
+++ b/ci/config.mk.clang-12.sed
@@ -0,0 +1,3 @@
+# Clang 12 (or Apple clang 13) and later makes a warning '-Wcompound-token-split-by-macro' enable by default.
+/^PERL_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=compound-token-split-by-macro/
+/^RUBY_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=compound-token-split-by-macro/
diff --git a/ci/config.mk.clang.sed b/ci/config.mk.clang.sed
new file mode 100644
index 0000000..9dc271c
--- /dev/null
+++ b/ci/config.mk.clang.sed
@@ -0,0 +1,2 @@
+/^CFLAGS[[:blank:]]*=/s/$/ -Wno-error=missing-field-initializers/
+/^RUBY_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unknown-attributes -Wno-error=ignored-attributes/
diff --git a/ci/config.mk.gcc.sed b/ci/config.mk.gcc.sed
new file mode 100644
index 0000000..f46e488
--- /dev/null
+++ b/ci/config.mk.gcc.sed
@@ -0,0 +1 @@
+/^CFLAGS[[:blank:]]*=/s/$/ -Wno-error=maybe-uninitialized/
diff --git a/ci/config.mk.sed b/ci/config.mk.sed
new file mode 100644
index 0000000..51e7ec9
--- /dev/null
+++ b/ci/config.mk.sed
@@ -0,0 +1,3 @@
+/^CFLAGS[[:blank:]]*=/s/$/ -Wall -Wextra -Wshadow -Werror/
+/^PERL_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-function/
+/^RUBY_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-parameter/
diff --git a/ci/if_ver-1.vim b/ci/if_ver-1.vim
new file mode 100644
index 0000000..adc40a7
--- /dev/null
+++ b/ci/if_ver-1.vim
@@ -0,0 +1,25 @@
+" Print all interface versions for Ubuntu. Part 1.
+
+if 1
+ execute 'source' expand('<sfile>:h') .. '/if_ver-cmd.vim'
+
+ echo "*** Interface versions ***\n"
+
+ echo 'Lua:'
+ PrintVer lua print(vim.lua_version, jit and "(LuaJIT)" or "")
+
+ echo 'MzScheme:'
+ PrintVer mzscheme (display (version))
+
+ echo 'Perl:'
+ PrintVer perl print $^V
+
+ echo 'Ruby:'
+ PrintVer ruby print RUBY_VERSION
+
+ echo 'Tcl:'
+ PrintVer tcl puts [info patchlevel]
+
+ echo 'Python 2:'
+ PrintVer python print sys.version
+endif
diff --git a/ci/if_ver-2.vim b/ci/if_ver-2.vim
new file mode 100644
index 0000000..83e80e4
--- /dev/null
+++ b/ci/if_ver-2.vim
@@ -0,0 +1,8 @@
+" Print py3 interface versions for Ubuntu. Part 2.
+
+if 1
+ execute 'source' expand('<sfile>:h') .. '/if_ver-cmd.vim'
+
+ echo 'Python 3:'
+ PrintVer python3 print(sys.version)
+endif
diff --git a/ci/if_ver-cmd.vim b/ci/if_ver-cmd.vim
new file mode 100644
index 0000000..ac5d82a
--- /dev/null
+++ b/ci/if_ver-cmd.vim
@@ -0,0 +1,12 @@
+" Provide 'PrintVer' command to print the interface versions.
+
+func s:print_ver(lang, ...)
+ if has(a:lang)
+ exec a:lang join(a:000)
+ else
+ echo 'N/A'
+ endif
+ echo ''
+endfunc
+
+command -nargs=+ PrintVer call <SID>print_ver(<f-args>)
diff --git a/ci/load-snd-dummy.sh b/ci/load-snd-dummy.sh
new file mode 100644
index 0000000..b0101b0
--- /dev/null
+++ b/ci/load-snd-dummy.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+set -e
+
+if ! modprobe snd-dummy; then
+ # snd-dummy is contained in linux-modules-extra (if exists)
+ apt-get install -yq --no-install-suggests --no-install-recommends "linux-modules-extra-$(uname -r)"
+ modprobe snd-dummy
+fi
diff --git a/ci/setup-xvfb.sh b/ci/setup-xvfb.sh
new file mode 100644
index 0000000..cfc0f97
--- /dev/null
+++ b/ci/setup-xvfb.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+set -e
+
+apt-get install -y xvfb
+
+cat <<EOT >/etc/systemd/system/xvfb.service
+[Unit]
+Description=X Virtual Frame Buffer Service
+After=network.target
+[Service]
+ExecStart=/usr/bin/Xvfb :99 -screen 0 1024x768x24
+[Install]
+WantedBy=multi-user.target
+EOT
+
+systemctl enable xvfb.service
+systemctl start xvfb.service