Skip to content

Commit

Permalink
appveyor: Move from MinGW 32bit to msys64.
Browse files Browse the repository at this point in the history
AppVeyor is planning to remove support for MinGW 32bit soon.  And we
had a couple of incidents where it wasn't available already, so we
moved to a 'Previous' image.

Move to msys64 instead.

While at it making the CI scripts a little nicer, moving the non-Windows
parts of the preparation and build to separate files.

MSYS2 has its own version of python.  However, we do not support
building on Windows with non-Windows python build.  The main issue is
the delimiter symbol in PYTHONPATH.  In Windows version it has to be
';', while the python supplied with MSYS2 uses ':' as on Linux, while
we detect Windows and pass ';' during the build.  Renaming the binary,
so the Windows version is used.

Additionally switched to Python 3.12, 3.7 reached EoL some time back,
though it's still available in AppVeyor.

The stderr has to be redirected to stdout for scripts, because any
message on stderr is treated as fatal failure by PowerShell.

Scripts are running with 'set -e', so a failure of individual
commands will fail the script.

The OpenSSL download is still failing, but it is out of scope for
this change.

Acked-by: Alin Gabriel Serdean <[email protected]>
Signed-off-by: Ilya Maximets <[email protected]>
  • Loading branch information
igsilya committed Feb 12, 2024
1 parent b3fc822 commit 11b62f5
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 36 deletions.
17 changes: 17 additions & 0 deletions .ci/windows-build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash
set -ex

CONFIGURATION=$1

./boot.sh
./configure CC=build-aux/cccl LD="$(which link)" \
LIBS="-lws2_32 -lShlwapi -liphlpapi -lwbemuuid -lole32 -loleaut32" \
--prefix=C:/openvswitch/usr --localstatedir=C:/openvswitch/var \
--sysconfdir=C:/openvswitch/etc --with-pthread=c:/PTHREADS-BUILT/ \
--enable-ssl --with-openssl=C:/OpenSSL-Win64 \
--with-vstudiotarget="${CONFIGURATION}"

make -j4
make datapath_windows_analyze
make install
make windows_installer
11 changes: 11 additions & 0 deletions .ci/windows-prepare.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/bash
set -ex

mkdir -p /var/cache/pacman/pkg/
pacman -S --noconfirm --needed automake autoconf libtool make patch

# Use an MSVC linker and a Windows version of Python.
mv $(which link) $(which link)_copy
mv $(which python3) $(which python3)_copy

cd /c/pthreads4w-code && nmake all install
2 changes: 2 additions & 0 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ EXTRA_DIST = \
.ci/linux-prepare.sh \
.ci/osx-build.sh \
.ci/osx-prepare.sh \
.ci/windows-build.sh \
.ci/windows-prepare.sh \
.cirrus.yml \
.editorconfig \
.github/workflows/build-and-test.yml \
Expand Down
59 changes: 23 additions & 36 deletions appveyor.yml
Original file line number Diff line number Diff line change
@@ -1,60 +1,47 @@
version: 1.0.{build}
image: Previous Visual Studio 2019
image: Visual Studio 2019
branches:
only:
- master
configuration:
- Debug
- Release
clone_folder: C:\openvswitch_compile
shallow_clone: true
init:
- ps: $env:PATH ="C:\Python37;"+$env:PATH
- ps: New-Item -Type HardLink -Path "C:\Python37\python3.exe" -Value "C:\Python37\python.exe"
- ps: >-
- ps: $env:PATH ="C:\Python312-x64;"+$env:PATH
- ps: New-Item -Type HardLink -Path "C:\Python312-x64\python3.exe"
-Value "C:\Python312-x64\python.exe"
- ps: |
mkdir C:\ovs-build-downloads
mkdir C:\openvswitch\driver
$source = "https://slproweb.com/download/Win64OpenSSL-1_0_2u.exe"
$destination = "C:\ovs-build-downloads\Win64OpenSSL-1_0_2u.exe"
Invoke-WebRequest $source -OutFile $destination
cd C:\ovs-build-downloads
.\Win64OpenSSL-1_0_2u.exe /silent /verysilent /sp- /suppressmsgboxes
Start-Sleep -s 30
cd C:\openvswitch
git clone -q https://git.code.sf.net/p/pthreads4w/code c:\pthreads4w-code
python3 -m pip install pypiwin32 --disable-pip-version-check
cd C:\openvswitch_compile
- ps: git clone -q https://git.code.sf.net/p/pthreads4w/code c:\pthreads4w-code
- ps: python3 -m pip install pypiwin32 --disable-pip-version-check

build_script:
- '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"'
- C:\MinGW\msys\1.0\bin\bash -lc "echo \"C:/MinGW /mingw\" > /etc/fstab"
- C:\MinGW\msys\1.0\bin\bash -lc "mv /bin/link.exe /bin/link_copy.exe"
# Build pthreads
- C:\MinGW\msys\1.0\bin\bash -lc "cd /c/pthreads4w-code && nmake all install"
- C:\MinGW\msys\1.0\bin\bash -lc "cd /c/openvswitch_compile && ./boot.sh"
- C:\MinGW\msys\1.0\bin\bash -lc "cd /c/openvswitch_compile && ./configure CC=build-aux/cccl LD=\"`which link`\" LIBS=\"-lws2_32 -lShlwapi -liphlpapi -lwbemuuid -lole32 -loleaut32\" --prefix=C:/openvswitch/usr --localstatedir=C:/openvswitch/var --sysconfdir=C:/openvswitch/etc --with-pthread=c:/PTHREADS-BUILT/ --enable-ssl --with-openssl=C:/OpenSSL-Win64 --with-vstudiotarget=\"%CONFIGURATION%\""
- C:\MinGW\msys\1.0\bin\bash -lc "cd /c/openvswitch_compile && make -j 4"
- C:\MinGW\msys\1.0\bin\bash -lc "cd /c/openvswitch_compile && make datapath_windows_analyze"
- C:\MinGW\msys\1.0\bin\bash -lc "cd /c/openvswitch_compile && make install"
- C:\MinGW\msys\1.0\bin\bash -lc "cd /c/openvswitch_compile && make windows_installer"
- cp C:\PTHREADS-BUILT\bin\pthreadVC3.dll C:\openvswitch\usr\bin
- cp C:\PTHREADS-BUILT\bin\pthreadVC3.dll C:\openvswitch\usr\sbin
- ps: cp C:\openvswitch_compile\datapath-windows\x64\Win10$env:CONFIGURATION\package\* C:\openvswitch\driver
- ps: cp C:\openvswitch_compile\datapath-windows\x64\Win10$env:CONFIGURATION\package.cer C:\openvswitch\driver
- ps: cp C:\openvswitch_compile\datapath-windows\misc\* C:\openvswitch\driver
- cp c:\openvswitch_compile\windows\ovs-windows-installer\bin\x64\Release\OpenvSwitch.msi c:\OpenvSwitch-%CONFIGURATION%.msi
- ps: C:\msys64\msys2_shell.cmd -here -defterm -no-start -use-full-path -c
".ci/windows-prepare.sh 2>&1"
- ps: C:\msys64\msys2_shell.cmd -here -defterm -no-start -use-full-path -c
".ci/windows-build.sh $env:CONFIGURATION 2>&1"
- ps: cp C:\PTHREADS-BUILT\bin\pthreadVC3.dll C:\openvswitch\usr\bin
- ps: cp C:\PTHREADS-BUILT\bin\pthreadVC3.dll C:\openvswitch\usr\sbin
- ps: mkdir C:\openvswitch\driver
- ps: cp datapath-windows\x64\Win10$env:CONFIGURATION\package\* C:\openvswitch\driver
- ps: cp datapath-windows\x64\Win10$env:CONFIGURATION\package.cer C:\openvswitch\driver
- ps: cp datapath-windows\misc\* C:\openvswitch\driver
- ps: cp windows\ovs-windows-installer\bin\x64\Release\OpenvSwitch.msi
c:\OpenvSwitch-$env:CONFIGURATION.msi

after_build:
- ps: 7z a C:\ovs-master-$env:CONFIGURATION.zip C:\openvswitch
- ps: Push-AppveyorArtifact C:\ovs-master-$env:CONFIGURATION.zip
- ps: Push-AppveyorArtifact C:\OpenvSwitch-$env:CONFIGURATION.msi
- ps: 7z a C:\ovs-master-$env:CONFIGURATION.zip C:\openvswitch
- ps: Push-AppveyorArtifact C:\ovs-master-$env:CONFIGURATION.zip
- ps: Push-AppveyorArtifact C:\OpenvSwitch-$env:CONFIGURATION.msi

0 comments on commit 11b62f5

Please sign in to comment.