That’s understandable, I think we should be fine for now and if someone asks 
for a backport we can address it then.

Thank you again for all the work you put into this!

Alin

> 
> On 4 Mar 2024, at 23:44, Ilya Maximets <i.maxim...@ovn.org> wrote:
> 
> On 3/1/24 22:29, Alin Serdean wrote:
>> Lgtm.  Thank you so much Ilya
>> 
>> Acked-by: Alin-Gabriel Serdean <aserd...@ovn.org>
> 
> Thanks, Alin and Simon!
> 
> I applied the set now.
> 
> Also backported patches 2 and 3 to branch-3.3, since they are bug fixes
> and 3.3 is planned to be our next LTS.  We may backport further, but
> I'm a little hesitant to do so since we don't have CI for stable branches
> and no-one complained so far.  Let me know if you think we should backport
> further, I can do that.
> 
> Best regards, Ilya Maximets.
> 
>> 
>>> 
>>>> 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

Reply via email to