Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ set(
set_property(CACHE CRYPTO_BACKEND PROPERTY STRINGS "OpenSSL" "WinCNG")

set(
OPENSSL_COMMIT_HASH "98acb6b02839c609ef5b837794e08d906d965335"
OPENSSL_COMMIT_HASH "11b7b6ea3b65a584e1d31408ed1bdb139465cffd"
CACHE STRING "Commit hash of the openssl repository. Also accepts branch names and tags. The use of commit hashes is strongly recommended to avoid pulling malicious code. Only used when CRYPTO_BACKEND is OpenSSL."
)

Expand All @@ -52,13 +52,13 @@ set(LIBSSH2_PUBLIC_KEY 27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(OUTPUT_NAME_SUFFIX "_64") # Append "_64" to the output name for 64-bit builds
set(OPENSSL_CONFIGURE_COMMAND perl Configure VC-WIN64A)
set(OPENSSL_LIBCRYPTO_FILE libcrypto-3-x64.dll)
set(OPENSSL_LIBSSL_FILE libssl-3-x64.dll)
set(OPENSSL_LIBCRYPTO_FILE libcrypto-4-x64.dll)
set(OPENSSL_LIBSSL_FILE libssl-4-x64.dll)
else()
set(OUTPUT_NAME_SUFFIX "") # No suffix for 32-bit builds
set(OPENSSL_CONFIGURE_COMMAND perl Configure VC-WIN32)
set(OPENSSL_LIBCRYPTO_FILE libcrypto-3${CMAKE_SHARED_LIBRARY_SUFFIX})
set(OPENSSL_LIBSSL_FILE libssl-3${CMAKE_SHARED_LIBRARY_SUFFIX})
set(OPENSSL_LIBCRYPTO_FILE libcrypto-4${CMAKE_SHARED_LIBRARY_SUFFIX})
set(OPENSSL_LIBSSL_FILE libssl-4${CMAKE_SHARED_LIBRARY_SUFFIX})
endif()

# Get libssh2 source code
Expand Down
166 changes: 84 additions & 82 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,87 +20,89 @@ pool:
variables:
libssh2.version: '1.11.1'
libssh2.commit: 'a312b43325e3383c865a87bb1d26cb52e3292641'
openssl.version: '3.6.2'
openssl.commit: 'fe686e15d84334b284f883118ed92f64b409b3aa'
openssl.version: '4.0.0'
openssl.commit: '11b7b6ea3b65a584e1d31408ed1bdb139465cffd'
DLL_CACHE_FOLDER: '$(System.DefaultWorkingDirectory)/Cache'

strategy:
matrix:
'x86-win-openssl-debug':
architecture: 'Win32'
backend: 'OpenSSL'
config: 'Debug'
'x86-win-openssl-release':
architecture: 'Win32'
backend: 'OpenSSL'
config: 'Release'

steps:
- task: Cache@2
displayName: 'Cache built DLLs'
inputs:
key: '"dlls" | "$(architecture)" | "$(backend)" | "$(config)" | "$(libssh2.commit)" | "$(openssl.commit)"'
path: '$(DLL_CACHE_FOLDER)'
cacheHitVar: CACHE_RESTORED
- task: CmdLine@2
displayName: 'Restore cache files'
condition: eq(variables.CACHE_RESTORED, 'true')
inputs:
script: |
if not exist "$(DLL_CACHE_FOLDER)\*.dll" (
echo "No cached DLLs found."
) else (
echo "Restoring cached DLLs..."
xcopy "$(DLL_CACHE_FOLDER)\*.dll" "$(Build.SourcesDirectory)\libssh2\" /Y /I
)
workingDirectory: '$(Build.SourcesDirectory)'
- task: CmdLine@2
displayName: 'Prepare build configurations'
condition: ne(variables.CACHE_RESTORED, 'true')
inputs:
script: cmake -B build/$(architecture) -S . -G "Visual Studio 17 2022" -A $(architecture) -DLIBSSH2_SOURCE=GitHub -DLIBSSH2_COMMIT_HASH=$(libssh2.commit) -DCRYPTO_BACKEND=$(backend) -DOPENSSL_COMMIT_HASH=$(openssl.commit)
workingDirectory: '$(Build.SourcesDirectory)'
- task: CmdLine@2
displayName: 'Build libraries'
condition: ne(variables.CACHE_RESTORED, 'true')
inputs:
script: cmake --build build/$(architecture) --config $(config)
workingDirectory: '$(Build.SourcesDirectory)'
- script: docker compose up -d --force-recreate
displayName: 'Start SSH server'
workingDirectory: '$(Build.SourcesDirectory)/docker'
- task: CmdLine@2
displayName: 'Restore packages'
inputs:
script: 'LabVIEWCLI -LabVIEWPath "%LabVIEW%\LabVIEW.exe" -AdditionalOperationDirectory "$(Build.SourcesDirectory)\Toolchain" -OperationName Restore -Configuration "$(Build.SourcesDirectory)\lvssh2-dev.vipc"'
workingDirectory: '$(Build.SourcesDirectory)'
- task: CmdLine@2
displayName: 'Run tests'
inputs:
script: 'LabVIEWCLI -LabVIEWPath "%LabVIEW%\LabVIEW.exe" -AdditionalOperationDirectory "$(Build.SourcesDirectory)\Toolchain" -OperationName Test -Project "$(Build.SourcesDirectory)\lvssh2.lvproj" -ResultsFolder "$(System.DefaultWorkingDirectory)\TestResults"'
workingDirectory: '$(Build.SourcesDirectory)'
- script: docker compose down
displayName: 'Stop SSH server'
workingDirectory: '$(Build.SourcesDirectory)/docker'
- publish: '$(System.DefaultWorkingDirectory)/docker/openssh-server/config/logs/openssh/current'
displayName: 'Publish SSH server logs'
artifact: server-log-($(Agent.JobName))
- task: PublishTestResults@2
displayName: 'Publish test results'
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '**/TEST-*.xml'
failTaskOnFailedTests: true
- task: PublishCodeCoverageResults@2
inputs:
summaryFileLocation: '**/COVERAGE-*.xml'
pathToSources: '$(System.DefaultWorkingDirectory)/src'
failIfCoverageEmpty: true
- task: CmdLine@2
displayName: 'Prepare cache files'
inputs:
script: |
if not exist "$(DLL_CACHE_FOLDER)" (
mkdir "$(DLL_CACHE_FOLDER)"
)
xcopy "$(Build.SourcesDirectory)\libssh2\*.dll" "$(DLL_CACHE_FOLDER)\" /Y /I
jobs:
- job: Test
timeoutInMinutes: 180 # Increase timeout to accomodate long build times for OpenSSL
strategy:
matrix:
'x86-win-openssl-debug':
architecture: 'Win32'
backend: 'OpenSSL'
config: 'Debug'
'x86-win-openssl-release':
architecture: 'Win32'
backend: 'OpenSSL'
config: 'Release'
steps:
- task: Cache@2
displayName: 'Cache built DLLs'
inputs:
key: '"dlls" | "$(architecture)" | "$(backend)" | "$(config)" | "$(libssh2.commit)" | "$(openssl.commit)"'
path: '$(DLL_CACHE_FOLDER)'
cacheHitVar: CACHE_RESTORED
- task: CmdLine@2
displayName: 'Restore cache files'
condition: eq(variables.CACHE_RESTORED, 'true')
inputs:
script: |
if not exist "$(DLL_CACHE_FOLDER)\*.dll" (
echo "No cached DLLs found."
) else (
echo "Restoring cached DLLs..."
xcopy "$(DLL_CACHE_FOLDER)\*.dll" "$(Build.SourcesDirectory)\libssh2\" /Y /I
)
workingDirectory: '$(Build.SourcesDirectory)'
- task: CmdLine@2
displayName: 'Prepare build configurations'
condition: ne(variables.CACHE_RESTORED, 'true')
inputs:
script: cmake -B build/$(architecture) -S . -G "Visual Studio 17 2022" -A $(architecture) -DLIBSSH2_SOURCE=GitHub -DLIBSSH2_COMMIT_HASH=$(libssh2.commit) -DCRYPTO_BACKEND=$(backend) -DOPENSSL_COMMIT_HASH=$(openssl.commit)
workingDirectory: '$(Build.SourcesDirectory)'
- task: CmdLine@2
displayName: 'Build libraries'
condition: ne(variables.CACHE_RESTORED, 'true')
inputs:
script: cmake --build build/$(architecture) --config $(config)
workingDirectory: '$(Build.SourcesDirectory)'
- script: docker compose up -d --force-recreate
displayName: 'Start SSH server'
workingDirectory: '$(Build.SourcesDirectory)/docker'
- task: CmdLine@2
displayName: 'Restore packages'
inputs:
script: 'LabVIEWCLI -LabVIEWPath "%LabVIEW%\LabVIEW.exe" -AdditionalOperationDirectory "$(Build.SourcesDirectory)\Toolchain" -OperationName Restore -Configuration "$(Build.SourcesDirectory)\lvssh2-dev.vipc"'
workingDirectory: '$(Build.SourcesDirectory)'
- task: CmdLine@2
displayName: 'Run tests'
inputs:
script: 'LabVIEWCLI -LabVIEWPath "%LabVIEW%\LabVIEW.exe" -AdditionalOperationDirectory "$(Build.SourcesDirectory)\Toolchain" -OperationName Test -Project "$(Build.SourcesDirectory)\lvssh2.lvproj" -ResultsFolder "$(System.DefaultWorkingDirectory)\TestResults"'
workingDirectory: '$(Build.SourcesDirectory)'
- script: docker compose down
displayName: 'Stop SSH server'
workingDirectory: '$(Build.SourcesDirectory)/docker'
- publish: '$(System.DefaultWorkingDirectory)/docker/openssh-server/config/logs/openssh/current'
displayName: 'Publish SSH server logs'
artifact: server-log-($(Agent.JobName))
- task: PublishTestResults@2
displayName: 'Publish test results'
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '**/TEST-*.xml'
failTaskOnFailedTests: true
- task: PublishCodeCoverageResults@2
inputs:
summaryFileLocation: '**/COVERAGE-*.xml'
pathToSources: '$(System.DefaultWorkingDirectory)/src'
failIfCoverageEmpty: true
- task: CmdLine@2
displayName: 'Prepare cache files'
inputs:
script: |
if not exist "$(DLL_CACHE_FOLDER)" (
mkdir "$(DLL_CACHE_FOLDER)"
)
xcopy "$(Build.SourcesDirectory)\libssh2\*.dll" "$(DLL_CACHE_FOLDER)\" /Y /I
2 changes: 1 addition & 1 deletion build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ for arch in "${build_archs[@]}"; do
cmake_cmd+=" -DCRYPTO_BACKEND=$crypto_backend"

if [[ "$crypto_backend" == "OpenSSL" ]]; then
cmake_cmd+=" -DOPENSSL_COMMIT_HASH=fe686e15d84334b284f883118ed92f64b409b3aa"
cmake_cmd+=" -DOPENSSL_COMMIT_HASH=11b7b6ea3b65a584e1d31408ed1bdb139465cffd"
fi

eval $cmake_cmd
Expand Down
Binary file modified libssh2/Link Dependencies.vi
Binary file not shown.
Binary file modified libssh2/libssh2_init_default.vi
Binary file not shown.
8 changes: 4 additions & 4 deletions lvssh2.lvproj
Original file line number Diff line number Diff line change
Expand Up @@ -147,11 +147,11 @@
<Item Name="libc.so.6" Type="Document" URL="libc.so.6">
<Property Name="NI.PreserveRelativePath" Type="Bool">true</Property>
</Item>
<Item Name="libcrypto-3-x64.dll" Type="Document" URL="../libssh2/libcrypto-3-x64.dll"/>
<Item Name="libcrypto-3.dll" Type="Document" URL="../libssh2/libcrypto-3.dll"/>
<Item Name="libcrypto-4-x64.dll" Type="Document" URL="../libssh2/libcrypto-4-x64.dll"/>
<Item Name="libcrypto-4.dll" Type="Document" URL="../libssh2/libcrypto-4.dll"/>
<Item Name="libssh2_64.dll" Type="Document" URL="../libssh2/libssh2_64.dll"/>
<Item Name="libssl-3-x64.dll" Type="Document" URL="../libssh2/libssl-3-x64.dll"/>
<Item Name="libssl-3.dll" Type="Document" URL="../libssh2/libssl-3.dll"/>
<Item Name="libssl-4-x64.dll" Type="Document" URL="../libssh2/libssl-4-x64.dll"/>
<Item Name="libssl-4.dll" Type="Document" URL="../libssh2/libssl-4.dll"/>
<Item Name="lvssh2_extensions_64.dll" Type="Document" URL="../libssh2/lvssh2_extensions_64.dll"/>
<Item Name="ws2_32.dll" Type="Document" URL="ws2_32.dll">
<Property Name="NI.PreserveRelativePath" Type="Bool">true</Property>
Expand Down