Lgtm. Thank you so much Ilya Acked-by: Alin-Gabriel Serdean <aserd...@ovn.org>
> > On 1 Mar 2024, at 22:10, Ilya Maximets <i.maxim...@ovn.org> wrote: > > OpenSSL 1.0.2u is long deprecated and not available for download. > So, our CI never actually downloads it and uses whatever is in the > OpenSSL-Win64 folder provided by AppVeyor. Luckily, it happens to > be OpenSSL 1.0.2u today. > > The oldest supported version of OpenSSL upstream today is 3.0. > And it is an LTS version. 3.1 and 3.2 are not LTS. > > Use OpenSSL 3.0 for testing instead. > > This commit does a few things to achieve that: > > 1. Removes the folder provided by AppVeyor. This way we will fail > the build if something goes wrong instead of silently using > OpenSSL version provided by AppVeyor. > > 2. Obtains the JSON description of available releases and downloads > the latest minor version of OpenSSL 3.0 64-bit. With this approach > we should not need to update the download link that frequently. > New minor releases will be picked up automatically. They should > not have any breaking changes, so should be fine to use in CI. > OpenSSL 3.0 is supported until at least Sep 2026. > > The JSON file is an official file referenced on the: > https://slproweb.com/products/Win32OpenSSL.html > So, it should be safe to use. > > 3. Executes the downloaded installer with 'Start-Process -Wait' to > properly wait for installation to finish instead of just sleeping > for 30 seconds. > > 4. Caches the downloaded installer, so we're not downloading 300 MB > on each CI run as that is not nice to do. We know the hash of the > latest version, so we will re-download only when the binary changes, > i.e. on a new minor release. > > For the cache to work we need to introduce the 'install' phase, > because caches are populated after 'init', but before 'install'. > Alternatively, we could have just renamed 'init' to 'install', > but I think it's a little nicer to have separate phases, and we > can also move 'windows-prepare.sh' to the install phase. > > Cache is also invalidated whenever appveyor.yml changes. > > Acked-by: Simon Horman <ho...@ovn.org> > Signed-off-by: Ilya Maximets <i.maxim...@ovn.org> > --- > appveyor.yml | 52 ++++++++++++++++++++++++++++++++++++++++++---------- > 1 file changed, 42 insertions(+), 10 deletions(-) > > diff --git a/appveyor.yml b/appveyor.yml > index 373f01a43..29cc44d6c 100644 > --- a/appveyor.yml > +++ b/appveyor.yml > @@ -8,28 +8,60 @@ configuration: > - Release > clone_folder: C:\openvswitch_compile > shallow_clone: true > + > init: > - 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" > + > +cache: > +- C:\ovs-build-downloads -> appveyor.yml > + > +install: > - ps: | > - mkdir C:\ovs-build-downloads > + Remove-Item -Recurse -Force -Path C:/OpenSSL-Win64 > + New-Item -ItemType Directory -Force -Path C:\ovs-build-downloads > + > + # Find and download the latest stable OpenSSl 3.0. > + $URL = > "https://raw.githubusercontent.com/slproweb/opensslhashes/master/win32_openssl_hashes.json" > + $webData = (Invoke-WebRequest -Uri $URL).content | ConvertFrom-Json > + $source = ($webData.files.PSObject.Properties | Where-Object { > + $_.Value.basever -match "3.0.*" -and > + $_.Value.bits -eq "64" -and > + $_.Value.arch -eq "INTEL" -and > + $_.Value.installer -eq "exe" -and > + -not $_.Value.light > + } | Select-Object Value).PSObject.Properties.Value > + > + Write-Host "Latest OpenSSL 3.0:" ($source | Format-List | Out-String) > + > + $destination = "C:\ovs-build-downloads\Win64OpenSSL.exe" > + if (Test-Path $destination) { > + $fileHash = (Get-FileHash $destination -Algorithm > SHA256).Hash.ToLower() > + if ($fileHash -ne $source.sha256) { > + Write-Host "Cache miss:" $fileHash "!=" $source.sha256 > + Remove-Item -Path $destination > + } > + } > > - $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 > + if (Test-Path $destination) { > + Write-Host "Using cached:" $destination > + } else { > + Write-Host "Downloading:" $source.url > + Invoke-WebRequest $source.url -OutFile $destination > + } > + > + Write-Host "Installing:" $destination > + Start-Process -FilePath $destination ` > + -ArgumentList "/silent /verysilent /sp- /suppressmsgboxes" -Wait > > - cd C:\ovs-build-downloads > - .\Win64OpenSSL-1_0_2u.exe /silent /verysilent /sp- /suppressmsgboxes > - Start-Sleep -s 30 > - 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"' > - ps: C:\msys64\msys2_shell.cmd -here -defterm -no-start -use-full-path -c > ".ci/windows-prepare.sh 2>&1" > + > +build_script: > - 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 > -- > 2.43.0 > _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev