mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2024-12-30 20:23:46 +08:00
348 lines
No EOL
13 KiB
YAML
348 lines
No EOL
13 KiB
YAML
version: 3.0.1.{build}
|
|
image: Visual Studio 2019
|
|
clone_folder: C:\ProxSpace\pm3\proxmark
|
|
cache:
|
|
- C:\ps-cache -> appveyor.yml
|
|
environment:
|
|
proxspace_url: https://github.com/Gator96100/ProxSpace/archive/master.zip
|
|
proxspace_zip_file: \proxspace.zip
|
|
proxspace_zip_folder_name: ProxSpace-*
|
|
proxspace_path: C:\ProxSpace
|
|
proxspace_home_path: \ProxSpace\pm3
|
|
proxspace_cache_path: C:\ps-cache
|
|
wsl_git_path: C:\proxmark
|
|
APPVEYOR_SAVE_CACHE_ON_ERROR: true
|
|
|
|
init:
|
|
- ps: >-
|
|
$psversiontable
|
|
|
|
#Get-ChildItem Env:
|
|
|
|
$releasename=""
|
|
|
|
$env:APPVEYOR_REPO_COMMIT_SHORT = $env:APPVEYOR_REPO_COMMIT.Substring(0, 8)
|
|
|
|
if ($env:appveyor_repo_tag -match "true"){
|
|
$releasename=$env:APPVEYOR_REPO_TAG_NAME + "/"
|
|
}
|
|
|
|
$releasename+=$env:APPVEYOR_BUILD_VERSION + " [" + $env:APPVEYOR_REPO_COMMIT_SHORT + "]"
|
|
|
|
Write-Host "repository: $env:appveyor_repo_name branch:$env:APPVEYOR_REPO_BRANCH release: $releasename" -ForegroundColor Yellow
|
|
|
|
Add-AppveyorMessage -Message "[$env:APPVEYOR_REPO_COMMIT_SHORT]$env:appveyor_repo_name($env:APPVEYOR_REPO_BRANCH)" -Category Information -Details "repository: $env:appveyor_repo_name branch: $env:APPVEYOR_REPO_BRANCH release: $releasename"
|
|
|
|
# iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
|
clone_script:
|
|
- ps: >-
|
|
|
|
Function GitClone($Text, $Folder) {
|
|
Write-Host "$Text" -NoNewLine
|
|
if(-not $env:appveyor_pull_request_number) {
|
|
git clone -q --branch=$env:appveyor_repo_branch https://github.com/$env:appveyor_repo_name.git $Folder
|
|
cd $Folder
|
|
git checkout -qf $env:appveyor_repo_commit
|
|
} else {
|
|
git clone -q https://github.com/$env:appveyor_repo_name.git $Folder
|
|
cd $Folder
|
|
git fetch -q origin +refs/pull/$env:appveyor_pull_request_number/merge:
|
|
git checkout -qf FETCH_HEAD
|
|
}
|
|
Write-Host "[ OK ]" -ForegroundColor Green
|
|
}
|
|
|
|
$WSLjob = Start-Job -Name WSLInstall -ScriptBlock {
|
|
Function WSLExec($Text, $Cmd) {
|
|
Write-Host "$Text"
|
|
wsl -- bash -c $Cmd
|
|
Write-Host "$Text" -NoNewLine
|
|
Write-Host "[ OK ]" -ForegroundColor Green
|
|
}
|
|
|
|
$WSLInstallTime=[System.Environment]::TickCount
|
|
WSLExec "WSL update..." "sudo apt-get update 1>/dev/null"
|
|
WSLExec "WSL upgrade..." "sudo apt-get upgrade -y 1>/dev/null"
|
|
WSLExec "WSL cleanup..." "sudo apt-get auto-remove -y 1>/dev/null"
|
|
WSLExec "WSL install..." "sudo apt-get -y install --reinstall --no-install-recommends git ca-certificates build-essential pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev qtbase5-dev cmake 1>/dev/null"
|
|
WSLExec "WSL QT fix..." "sudo strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5"
|
|
Add-AppveyorMessage -Message "WSL setup took $(([System.Environment]::TickCount-$WSLInstallTime) / 1000) sec" -Category Information
|
|
New-Item -ItemType "file" -Path "C:\WSL-Finished.txt" -Force | Out-Null
|
|
}
|
|
|
|
$env:PSInstallTime=[System.Environment]::TickCount
|
|
|
|
Write-Host "ProxSpace: Removing folder..." -NoNewLine
|
|
|
|
cd \
|
|
|
|
Remove-Item -Recurse -Force -Path $env:proxspace_path -ErrorAction SilentlyContinue
|
|
|
|
Write-Host "[ OK ]" -ForegroundColor Green
|
|
|
|
Write-Host "ProxSpace: downloading..." -NoNewLine
|
|
|
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
|
|
|
Invoke-WebRequest "$env:proxspace_url" -outfile "$env:proxspace_zip_file"
|
|
|
|
Write-Host "[ OK ]" -ForegroundColor Green
|
|
|
|
Write-Host "ProxSpace: extracting..." -NoNewLine
|
|
|
|
Expand-Archive -LiteralPath "$env:proxspace_zip_file" -DestinationPath "\"
|
|
|
|
Remove-Item "$env:proxspace_zip_file"
|
|
|
|
Write-Host "[ OK ]" -ForegroundColor Green
|
|
|
|
Write-Host "ProxSpace: renaming folder..." -NoNewLine
|
|
|
|
Get-ChildItem -Path "\$env:proxspace_zip_folder_name" | Rename-Item -NewName (Split-Path $env:proxspace_path -Leaf)
|
|
|
|
Write-Host "[ OK ]" -ForegroundColor Gree
|
|
|
|
$psversion = (Select-String -Pattern 'PSVERSION=' -SimpleMatch -Path "$env:proxspace_path\msys2\ps\09-proxspace_setup.post").Line.Split("""")[1]
|
|
|
|
Write-Host "ProxSpace version: $psversion" -ForegroundColor Yellow
|
|
|
|
GitClone "ProxSpace: Cloning repository <$env:appveyor_repo_name> to $env:appveyor_build_folder ..." $env:appveyor_build_folder
|
|
|
|
GitClone "WSL: Cloning repository <$env:appveyor_repo_name> to $env:wsl_git_path ..." $env:wsl_git_path
|
|
|
|
|
|
install:
|
|
- ps: >-
|
|
|
|
Function ExecUpdate($Text, $firstStart) {
|
|
Write-Host "$Text"
|
|
|
|
$PSjob = Start-Job -Name PSInstall -ScriptBlock {
|
|
cd $env:proxspace_path
|
|
./runme64.bat -c "exit"
|
|
}
|
|
|
|
$StartTime=[System.Environment]::TickCount
|
|
Start-Sleep -s 10
|
|
while($true) {
|
|
if ($PSjob.State -eq 'Completed') {
|
|
Write-Host "$Text" -NoNewLine
|
|
Write-Host "[ OK ]" -ForegroundColor Green
|
|
break
|
|
}
|
|
|
|
if ($PSjob.State -eq 'Failed') {
|
|
Write-Host "$Text" -NoNewLine
|
|
Write-Host "[ Failed ]" -ForegroundColor Red
|
|
break
|
|
}
|
|
|
|
if ($firstStart -And (Test-Path "$env:proxspace_path\msys2\etc\pacman.conf.pacnew")) {
|
|
Start-Sleep -s 5
|
|
Stop-Job -Job $PSjob
|
|
Start-Sleep -s 5
|
|
Write-Host "$Text" -NoNewLine
|
|
Write-Host "Exit by pacman.conf" -ForegroundColor Green
|
|
break
|
|
}
|
|
|
|
if ([System.Environment]::TickCount-$StartTime -gt 1000000) {
|
|
Stop-Job -Job $PSjob
|
|
Write-Host "$Text" -NoNewLine
|
|
Write-host "Exit by timeout" -ForegroundColor Yellow
|
|
break
|
|
}
|
|
|
|
Start-Sleep -s 5
|
|
Receive-Job -Name WSLInstall -ErrorAction SilentlyContinue
|
|
}
|
|
#Receive-Job -Wait -Name PSInstall
|
|
}
|
|
|
|
Function GitClone($Text, $Folder) {
|
|
Write-Host "$Text" -NoNewLine
|
|
if(-not $env:appveyor_pull_request_number) {
|
|
git clone -q --branch=$env:appveyor_repo_branch https://github.com/$env:appveyor_repo_name.git $Folder
|
|
cd $Folder
|
|
git checkout -qf $env:appveyor_repo_commit
|
|
} else {
|
|
git clone -q https://github.com/$env:appveyor_repo_name.git $Folder
|
|
cd $Folder
|
|
git fetch -q origin +refs/pull/$env:appveyor_pull_request_number/merge:
|
|
git checkout -qf FETCH_HEAD
|
|
}
|
|
Write-Host "[ OK ]" -ForegroundColor Green
|
|
}
|
|
|
|
Write-Host "ProxSpace: move cache..." -NoNewLine
|
|
|
|
New-Item -ItemType Directory -Force -Path "$env:proxspace_path\msys2\var\cache\" | Out-Null
|
|
|
|
Copy-Item -Path "$env:proxspace_cache_path\*" -Destination "$env:proxspace_path\msys2\var\cache\" -Force -Recurse -ErrorAction SilentlyContinue
|
|
|
|
Write-Host "[ OK ]" -ForegroundColor Gree
|
|
|
|
ExecUpdate "ProxSpace: initial msys2 startup..." $true
|
|
|
|
ExecUpdate "ProxSpace: installing required packages..." $false
|
|
|
|
Add-AppveyorMessage -Message "ProxSpace download and update took $(([System.Environment]::TickCount-$env:PSInstallTime) / 1000) sec" -Category Information
|
|
|
|
build_script:
|
|
- ps: >-
|
|
|
|
$pmfolder = Split-Path $env:appveyor_build_folder -Leaf
|
|
|
|
Function ExecMinGWCmd($Cmd) {
|
|
cd $env:proxspace_path
|
|
./runme64.bat -c "cd $pmfolder && $Cmd"
|
|
}
|
|
|
|
Function ExecCheck($Name) {
|
|
$testspass = ($LASTEXITCODE -eq 0)
|
|
|
|
$global:TestsPassed=$testspass
|
|
|
|
if ($testspass) {
|
|
Add-AppveyorTest -Name $Name -Framework NUnit -Filename $Name -Outcome Passed -Duration "$([System.Environment]::TickCount-$TestTime)"
|
|
Write-Host "$Name [ OK ]" -ForegroundColor Green
|
|
} else {
|
|
Add-AppveyorTest -Name $Name -Framework NUnit -Filename $Name -Outcome Failed -Duration "$([System.Environment]::TickCount-$TestTime)"
|
|
Write-Host "$Name [ ERROR ]" -ForegroundColor Red
|
|
throw "Tests error."
|
|
}
|
|
}
|
|
|
|
$WSLjob = Start-Job -Name WSLCompile -ScriptBlock {
|
|
Function ExecWSLCmd($Cmd) {
|
|
cd $env:wsl_git_path
|
|
wsl -- bash -c $Cmd
|
|
}
|
|
|
|
Function ExecCheck($Name) {
|
|
$testspass = ($LASTEXITCODE -eq 0)
|
|
|
|
$global:TestsPassed=$testspass
|
|
|
|
if ($testspass) {
|
|
Add-AppveyorTest -Name $Name -Framework NUnit -Filename $Name -Outcome Passed -Duration "$([System.Environment]::TickCount-$TestTime)"
|
|
Write-Host "$Name [ OK ]" -ForegroundColor Green
|
|
} else {
|
|
Add-AppveyorTest -Name $Name -Framework NUnit -Filename $Name -Outcome Failed -Duration "$([System.Environment]::TickCount-$TestTime)"
|
|
Write-Host "$Name [ ERROR ]" -ForegroundColor Red
|
|
throw "Tests error."
|
|
}
|
|
}
|
|
|
|
#WSL: wait for installation to finish
|
|
if(!(Test-Path "C:\WSL-Finished.txt")){
|
|
Write-Host "Waiting for WSL installation to finish..." -NoNewLine
|
|
while(!(Test-Path "C:\WSL-Finished.txt")) {
|
|
Start-Sleep -s 5
|
|
}
|
|
Remove-Item -Force "C:\WSL-Finished.txt" -ErrorAction SilentlyContinue
|
|
Write-Host "$Name [ OK ]" -ForegroundColor Green
|
|
}
|
|
|
|
#Windows Subsystem for Linux (WSL)
|
|
Write-Host "---------- WSL make ----------" -ForegroundColor Yellow
|
|
$TestTime=[System.Environment]::TickCount
|
|
ExecWSLCmd "make clean;make V=1"
|
|
#some checks
|
|
if(!(Test-Path "$env:wsl_git_path\client\proxmark3")){
|
|
throw "Main file proxmark3 not exists."
|
|
}
|
|
|
|
ExecWSLCmd "make check"
|
|
ExecCheck "WSL make Tests"
|
|
Start-Sleep -s 2
|
|
Write-Host "---------- WSL btaddon ----------" -ForegroundColor Yellow
|
|
$TestTime=[System.Environment]::TickCount
|
|
ExecWSLCmd "make clean;make V=1 PLATFORM_EXTRAS=BTADDON"
|
|
ExecWSLCmd "make check"
|
|
ExecCheck "WSL BTaddon Tests"
|
|
Start-Sleep -s 2
|
|
Write-Host "---------- WSL make clean ----------" -ForegroundColor Yellow
|
|
ExecWSLCmd 'make clean'
|
|
Write-Host "---------- WSL cmake ----------" -ForegroundColor Yellow
|
|
$TestTime=[System.Environment]::TickCount
|
|
ExecWSLCmd 'mkdir -p client/build; cd client/build; cmake ..; make VERBOSE=1;'
|
|
Write-Host "---------- WSL cmake tests ----------" -ForegroundColor Yellow
|
|
ExecWSLCmd './tools/pm3_tests.sh --clientbin client/build/proxmark3 client'
|
|
ExecCheck "WSL cmake Tests"
|
|
}
|
|
|
|
#ProxSpace
|
|
|
|
Write-Host "ProxSpace: create new cache..." -NoNewLine
|
|
|
|
cd $env:proxspace_path
|
|
|
|
./runme64.bat -c "yes | pacman -Sc > /dev/null 2>&1"
|
|
|
|
Remove-Item -Recurse -Force -Path "$env:proxspace_cache_path" -ErrorAction SilentlyContinue
|
|
|
|
Move-Item -Path "$env:proxspace_path\msys2\var\cache" -Destination "$env:proxspace_cache_path" -Force
|
|
|
|
Write-Host "[ OK ]" -ForegroundColor Gree
|
|
|
|
Write-Host "---------- PS make ----------" -ForegroundColor Yellow
|
|
|
|
$TestTime=[System.Environment]::TickCount
|
|
|
|
ExecMinGWCmd "make clean;make V=1"
|
|
|
|
if(!(Test-Path "$env:proxspace_home_path\$pmfolder\client\proxmark3.exe")){
|
|
|
|
throw "Main file proxmark3.exe not exists."
|
|
|
|
}
|
|
|
|
ExecMinGWCmd 'make check'
|
|
|
|
ExecCheck "PS make Tests"
|
|
|
|
Write-Host "---------- PS btaddon ----------" -ForegroundColor Yellow
|
|
|
|
$TestTime=[System.Environment]::TickCount
|
|
|
|
ExecMinGWCmd 'make clean;make V=1 PLATFORM_EXTRAS=BTADDON'
|
|
|
|
ExecMinGWCmd 'make check'
|
|
|
|
ExecCheck "PS BTaddon Tests"
|
|
|
|
Write-Host "---------- PS make clean ----------" -ForegroundColor Yellow
|
|
|
|
ExecMinGWCmd 'make clean'
|
|
|
|
Write-Host "---------- PS cmake ----------" -ForegroundColor Yellow
|
|
|
|
$TestTime=[System.Environment]::TickCount
|
|
|
|
ExecMinGWCmd 'mkdir -p client/build; cd client/build; cmake -G""MSYS Makefiles"" ..; make VERBOSE=1;'
|
|
|
|
Write-Host "---------- PS cmake tests ----------" -ForegroundColor Yellow
|
|
|
|
ExecMinGWCmd './tools/pm3_tests.sh --clientbin client/build/proxmark3.exe client'
|
|
|
|
ExecCheck "PS cmake Tests"
|
|
|
|
Receive-Job -Wait -Name WSLInstall -ErrorAction SilentlyContinue
|
|
|
|
Receive-Job -Wait -Job $WSLjob
|
|
|
|
test_script:
|
|
- ps: >-
|
|
if ($global:TestsPassed) {
|
|
Write-Host "Tests [ OK ]" -ForegroundColor Green
|
|
} else {
|
|
Write-Host "Tests [ ERROR ]" -ForegroundColor Red
|
|
throw "Tests error."
|
|
}
|
|
on_success:
|
|
- ps: Write-Host "Build success..." -ForegroundColor Green
|
|
on_failure:
|
|
- ps: Write-Host "Build error." -ForegroundColor Red
|
|
on_finish:
|
|
- ps: # $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) |