Merge branch 'master' into vaes512_ctr_patch #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Copyright 2021-2026 The OpenSSL Project Authors. All Rights Reserved. | |
| # | |
| # Licensed under the Apache License 2.0 (the "License"). You may not use | |
| # this file except in compliance with the License. You can obtain a copy | |
| # in the file LICENSE in the source distribution or at | |
| # https://www.openssl.org/source/license.html | |
| name: Windows GitHub CI | |
| on: [pull_request, push] | |
| permissions: | |
| contents: read | |
| jobs: | |
| shared: | |
| # Run a job for each of the specified target architectures: | |
| strategy: | |
| matrix: | |
| platform: | |
| - arch: amd64 | |
| os: windows-2022 | |
| config: enable-lms enable-fips | |
| vcvars: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat | |
| - arch: amd64 | |
| os: windows-2025 | |
| config: enable-lms enable-fips no-thread-pool no-quic | |
| vcvars: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat | |
| - arch: x86 | |
| os: windows-2022 | |
| config: no-fips enable-lms | |
| vcvars: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars32.bat | |
| runs-on: ${{ matrix.platform.os }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| persist-credentials: false | |
| - name: checkout fuzz/corpora submodule | |
| run: git submodule update --init --depth 1 fuzz/corpora | |
| - name: install nasm | |
| run: | | |
| choco install nasm ${{ matrix.platform.arch == 'x86' && '--x86' || '' }} | |
| "C:\Program Files${{ matrix.platform.arch == 'x86' && ' (x86)' || '' }}\NASM" | Out-File -FilePath "$env:GITHUB_PATH" -Append | |
| - name: install jom | |
| run: choco install jom | |
| - name: prepare the build directory | |
| run: mkdir _build | |
| - name: config | |
| working-directory: _build | |
| shell: cmd | |
| run: | | |
| call "${{ matrix.platform.vcvars }}" | |
| perl ..\Configure --banner=Configured --strict-warnings no-makedepend -DOSSL_WINCTX=openssl ${{ matrix.platform.config }} | |
| perl configdata.pm --dump | |
| - name: build | |
| working-directory: _build | |
| shell: cmd | |
| run: | | |
| call "${{ matrix.platform.vcvars }}" | |
| jom /j4 /S | |
| - name: download coreinfo | |
| run: | | |
| mkdir _build\coreinfo | |
| Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Coreinfo.zip" -outfile "_build\coreinfo\Coreinfo.zip" | |
| - name: Gather openssl version info | |
| working-directory: _build | |
| run: | | |
| apps/openssl.exe version -v | |
| apps/openssl.exe version -v | %{($_ -split '\s+')[1]} | |
| apps/openssl.exe version -v | %{($_ -split '\s+')[1] -replace '([0-9]+\.[0-9]+)(\..*)','$1'} | |
| echo "OSSL_VERSION=$(apps/openssl.exe version -v | %{($_ -split '\s+')[1] -replace '([0-9]+\.[0-9]+)(\..*)','$1'})" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append | |
| echo "OSSL_MAJOR=$(apps/openssl.exe version -v | %{($_ -split '\s+')[1] -replace '([0-9]+)\.[0-9]+(\..*)','$1'})" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append | |
| - name: Set registry keys | |
| working-directory: _build | |
| run: | | |
| echo ${Env:OSSL_VERSION} | |
| reg.exe add HKLM\SOFTWARE\OpenSSL-${Env:OSSL_VERSION}-openssl /v OPENSSLDIR /t REG_EXPAND_SZ /d TESTOPENSSLDIR /reg:32 | |
| reg.exe add HKLM\SOFTWARE\OpenSSL-${Env:OSSL_VERSION}-openssl /v MODULESDIR /t REG_EXPAND_SZ /d TESTOPENSSLDIR /reg:32 | |
| reg.exe query HKLM\SOFTWARE\OpenSSL-${Env:OSSL_VERSION}-openssl /v OPENSSLDIR /reg:32 | |
| - name: get cpu info | |
| working-directory: _build | |
| continue-on-error: true | |
| run: | | |
| 7z.exe x coreinfo/Coreinfo.zip | |
| ./Coreinfo64.exe -accepteula -f | |
| ./apps/openssl.exe version -c | |
| - name: Check platform symbol usage | |
| working-directory: _build | |
| shell: cmd | |
| run: | | |
| call "${{ matrix.platform.vcvars }}" | |
| perl ../util/checkplatformsyms.pl ../util/platform_symbols/windows-symbols.txt libcrypto-%OSSL_MAJOR%${{ matrix.platform.arch == 'amd64' && '-x64' || '' }}.dll ./libssl-%OSSL_MAJOR%${{ matrix.platform.arch == 'amd64' && '-x64' || '' }}.dll | |
| - name: test | |
| working-directory: _build | |
| shell: cmd | |
| run: | | |
| call "${{ matrix.platform.vcvars }}" | |
| jom test VERBOSE_FAILURE=yes TESTS=-test_fuzz* HARNESS_JOBS=4 | |
| - name: install | |
| # Run on 64 bit only as 32 bit is slow enough already | |
| if: ${{ matrix.platform.arch == 'amd64' }} | |
| working-directory: _build | |
| shell: cmd | |
| run: | | |
| call "${{ matrix.platform.vcvars }}" | |
| mkdir _dest | |
| jom /j4 install DESTDIR=_dest | |
| plain: | |
| runs-on: windows-2022 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| persist-credentials: false | |
| - name: checkout fuzz/corpora submodule | |
| run: git submodule update --init --depth 1 fuzz/corpora | |
| - name: prepare the build directory | |
| run: mkdir _build | |
| - name: install jom | |
| run: choco install jom | |
| - name: config | |
| working-directory: _build | |
| shell: cmd | |
| run: | | |
| call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
| perl ..\Configure --banner=Configured --strict-warnings enable-demos no-makedepend no-shared no-fips enable-md2 enable-rc5 enable-weak-ssl-ciphers enable-trace enable-crypto-mdebug -DOSSL_WINCTX=openssl VC-WIN64A-masm | |
| perl configdata.pm --dump | |
| - name: build | |
| working-directory: _build | |
| shell: cmd | |
| run: | | |
| call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
| jom /j4 /S | |
| - name: download coreinfo | |
| run: | | |
| mkdir _build\coreinfo | |
| Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Coreinfo.zip" -outfile "_build\coreinfo\Coreinfo.zip" | |
| - name: get cpu info | |
| working-directory: _build | |
| continue-on-error: true | |
| run: | | |
| 7z.exe x coreinfo/Coreinfo.zip | |
| ./Coreinfo64.exe -accepteula -f | |
| ./apps/openssl.exe version -c | |
| - name: test | |
| working-directory: _build | |
| shell: cmd | |
| run: | | |
| call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
| nmake test VERBOSE_FAILURE=yes HARNESS_JOBS=4 | |
| minimal: | |
| runs-on: windows-2022 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| persist-credentials: false | |
| - name: checkout fuzz/corpora submodule | |
| run: git submodule update --init --depth 1 fuzz/corpora | |
| - name: prepare the build directory | |
| run: mkdir _build | |
| - name: install jom | |
| run: choco install jom | |
| - name: config | |
| working-directory: _build | |
| shell: cmd | |
| run: | | |
| call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
| perl ..\Configure --banner=Configured --strict-warnings enable-demos no-makedepend no-bulk no-deprecated no-fips no-asm no-threads -DOPENSSL_SMALL_FOOTPRINT -DOSSL_WINCTX=openssl | |
| perl configdata.pm --dump | |
| - name: build | |
| working-directory: _build | |
| shell: cmd | |
| run: | | |
| call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
| jom /j4 /S | |
| - name: download coreinfo | |
| run: | | |
| mkdir _build\coreinfo | |
| Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Coreinfo.zip" -outfile "_build\coreinfo\Coreinfo.zip" | |
| - name: get cpu info | |
| working-directory: _build | |
| continue-on-error: true | |
| run: | | |
| 7z.exe x coreinfo/Coreinfo.zip | |
| ./Coreinfo64.exe -accepteula -f | |
| ./apps/openssl.exe version -c | |
| - name: test | |
| working-directory: _build | |
| shell: cmd | |
| run: | | |
| call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
| jom test VERBOSE_FAILURE=yes TESTS=-test_fuzz* HARNESS_JOBS=4 | |
| cygwin: | |
| # Run a job for each of the specified target architectures: | |
| strategy: | |
| matrix: | |
| os: | |
| - windows-2022 | |
| platform: | |
| - arch: win64 | |
| config: -DCMAKE_C_COMPILER=gcc --strict-warnings enable-demos no-fips | |
| # are we really learning sth new from win32? So let's save some CO2 for now disabling this | |
| # - arch: win32 | |
| # config: -DCMAKE_C_COMPILER=gcc --strict-warnings no-fips | |
| runs-on: ${{ matrix.os }} | |
| env: | |
| CYGWIN_NOWINPATH: 1 | |
| SHELLOPTS: igncr | |
| # Don't overwhelm github CI VMs: | |
| MAKE_PARAMS: -j 4 | |
| steps: | |
| # Checkout before cygwin can mess with PATH... | |
| - uses: actions/checkout@v6 | |
| with: | |
| persist-credentials: false | |
| - uses: cygwin/cygwin-install-action@f2009323764960f80959895c7bc3bb30210afe4d #v6 | |
| with: | |
| packages: perl git make gcc-core | |
| - name: Check repo | |
| run: cygcheck -V | |
| - name: Full cygcheck status | |
| run: cygcheck -s -v -r -h | |
| # Activate this if checkout action fails: | |
| # - name: Clone repo | |
| # run: bash -c "pwd && git clone --branch ${{ github.ref_name }} --depth 1 https://github.com/${{ github.repository }}.git" | |
| - name: Full build | |
| shell: bash | |
| run: | | |
| gcc --version | |
| ./config ${{ matrix.platform.config }} | |
| make $MAKE_PARAMS | |
| # Disable testing for now. TBD: Need local cygwin installation to debug . | |
| # - name: Run openssl tests | |
| # run: bash -c "cd openssl && make V=1 test" | |
| mingw64: | |
| runs-on: ubuntu-latest | |
| env: | |
| CC: x86_64-w64-mingw32-gcc | |
| CXX: x86_64-w64-mingw32-g++ | |
| AR: x86_64-w64-mingw32-ar | |
| RANLIB: x86_64-w64-mingw32-ranlib | |
| RC: x86_64-w64-mingw32-windres | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| persist-credentials: false | |
| - name: install MINGW64 | |
| run: sudo apt-get install -y mingw-w64 | |
| - name: config | |
| # Once fixed, enable strict-warnings | |
| # run: ./config --strict-warnings --banner=Configured mingw64 | |
| run: ./config --banner=Configured mingw64 | |
| - name: make | |
| run: make -j4 -s | |
| msys2-mingw64: | |
| runs-on: windows-latest | |
| env: | |
| MSYSTEM: UCRT64 | |
| CHERE_INVOKING: 'yes' | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| persist-credentials: false | |
| - name: install MSYS2 | |
| run: | | |
| $url = 'https://github.com/msys2/msys2-installer/releases/download/nightly-x86_64/msys2-base-x86_64-latest.sfx.exe' | |
| (New-Object System.Net.WebClient).DownloadFile($url, 'msys2.exe') | |
| # Remove preinstalled MSYS2 | |
| if (Test-Path C:\msys64) { Remove-Item -Recurse -Force C:\msys64 } | |
| .\msys2.exe -y -oC:\ | |
| Remove-Item msys2.exe | |
| - name: update MSYS2 | |
| run: | | |
| C:\msys64\usr\bin\bash.exe -lc ' ' | |
| # Update core and then normal update | |
| C:\msys64\usr\bin\bash.exe -lc 'pacman --noconfirm -Syuu' | |
| C:\msys64\usr\bin\bash.exe -lc 'pacman --noconfirm -Syuu' | |
| - name: install dependencies | |
| run: C:\msys64\usr\bin\bash.exe -lc 'pacman --noconfirm -S --needed perl git make mingw-w64-ucrt-x86_64-gcc' | |
| - name: config | |
| # Once fixed, enable strict-warnings | |
| # run: C:\msys64\usr\bin\bash.exe -lc './config --strict-warnings --banner=Configured mingw64' | |
| run: C:\msys64\usr\bin\bash.exe -lc './config --banner=Configured mingw64' | |
| - name: make | |
| run: C:\msys64\usr\bin\bash.exe -lc 'make -j4 -s' | |
| # Tests are broken for now | |
| # - name: test | |
| # run: C:\msys64\usr\bin\bash.exe -lc 'make test' |