On 3/1/24 22:29, Alin Serdean wrote:
> Lgtm.  Thank you so much Ilya
> 
> Acked-by: Alin-Gabriel Serdean <[email protected]>

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 <[email protected]> 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 <[email protected]>
>> Signed-off-by: Ilya Maximets <[email protected]>
>> ---
>> 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
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to