Skip to content

Commit

Permalink
[Dev] add powershell for setup (#3343)
Browse files Browse the repository at this point in the history
* add powershell for setup
testing: @WGB5445
  • Loading branch information
LemonHX authored Apr 15, 2022
1 parent ab7eb86 commit 8bee59b
Show file tree
Hide file tree
Showing 8 changed files with 187 additions and 10 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ jobs:
command: test
args: -p starcoin-move-prover
- name: check changed files
run: bash ./scripts/changed-files.sh
run: bash ./scripts/changed_files.sh
- name: integration test dev environment
env:
RUST_LOG: info
Expand Down
31 changes: 31 additions & 0 deletions scripts/auto_rerun_test.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
$STARCOIN_DIR = (get-item $PSScriptRoot).parent.FullName
$TEST_RESULT_FILE="$STARCOIN_DIR/target/debug/test_result.txt"
$TEST_RESULT_FAILED_FILE="$STARCOIN_DIR/target/debug/test_result_failed.txt"
Write-Host "Starcoin root dir: $STARCOIN_DIR"

$env:RUSTFLAGS="-Ccodegen-units=1 -Copt-level=0"
$env:RUSTC_BOOTSTRAP=1
$env:RUST_MIN_STACK=8*1024*1024
$env:RUST_LOG="OFF"
$env:RUST_BACKTRACE=0
cargo xtest --exclude starcoin-move-prover -j 15 -- --test-threads=10 --color never --format pretty | Tee-Object "$TEST_RESULT_FILE"

$failed_tests=Select-String -Pattern 'test .* \.\.\. FAILED' -Path "./target/debug/test_result.txt" -AllMatche
Write-Host "All failed tests are redirected to file: $TEST_RESULT_FAILED_FILE" -ForegroundColor Green
$failed_tests > "$TEST_RESULT_FAILED_FILE"

Write-Host "Retring failed test cases" -ForegroundColor Green
$env:RUST_LOG="DEBUG"
$env:RUST_BACKTRACE="FULL"
$case_status=0
$failed_tests | ForEach-Object {
$test=$_ -split ' '
$test=$test[1]
Write-Host "Rerunning test failed case: $test" -ForegroundColor Red
cargo xtest -j 15 "$test" -- --test-threads=1 --nocapture
if ($LASTEXITCODE -ne 0) {
$case_status=$LASTEXITCODE
Write-Host "Test case $test failed with $case_status" -ForegroundColor Red
}
}
exit $case_status
5 changes: 5 additions & 0 deletions scripts/changed_files.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
$diff=$(git diff)
Write-Host "$diff"

$changed_files=$(git status --porcelain)
Write-Host "$changed_files"
File renamed without changes.
16 changes: 16 additions & 0 deletions scripts/check_commit.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
$STARCOIN_DIR = (get-item $PSScriptRoot).parent.FullName

# cargo fmt check
cargo fmt -- --check
# cargo clippy check
cargo clippy --all-targets -- -D warnings
# generate stdlib
cargo run -p stdlib
# generate genesis
cargo run -p starcoin-genesis
# generate rpc schema document
cargo run -p starcoin-rpc-api -- -d ./rpc/generated_rpc_schema
# test config file
cargo test -p starcoin-config test_example_config_compact
# check changed files
. "${STARCOIN_DIR}/scripts/changed_files.ps1"
2 changes: 1 addition & 1 deletion scripts/check_commit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ cargo run -p starcoin-rpc-api -- -d ./rpc/generated_rpc_schema
# test config file
cargo test -p starcoin-config test_example_config_compact
# check changed files
"${STARCOIN_DIR}"/scripts/changed-files.sh
"${STARCOIN_DIR}"/scripts/changed_files.sh
133 changes: 133 additions & 0 deletions scripts/dev_setup.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
<#
.SYNOPSIS
Usage:
Installs or updates necessary dev tools for starcoinorg/starcoin.
-p update environment variables only
-t install build tools
-y installs or updates Move prover tools: z3, cvc5, dotnet, boogie
-dir <path> - directory to install to
.DESCRIPTION
helper for setting up starcoin development environment
#>
param(
[Parameter()]
[Alias('p')]
[switch]$INSTALL_PROFILE,

[Parameter()]
[Alias('t')]
[switch]$INSTALL_BUILD_TOOLS,

[Parameter()]
[Alias('y')]
[switch]$INSTALL_PROVER,

[Parameter()]
[Alias('dir')]
[string]$INSTALL_DIR="${HOME}\.starcoin_deps"
)



$Z3_VERSION="4.8.13"
$CVC5_VERSION="1.0.0"
$BOOGIE_VERSION="2.9.6"

Write-Host "INSTALL_PROFILE=$INSTALL_PROFILE"
Write-Host "INSTALL_BUILD_TOOLS=$INSTALL_BUILD_TOOLS"
Write-Host "INSTALL_PROVER=$INSTALL_PROVER"
Write-Host "INSTALL_DIR=$INSTALL_DIR"

# check environment if exist
# $key env $value value
function check_set_env {
param(
[Parameter(Mandatory=$true)]
[string]$key,
[Parameter(Mandatory=$true)]
[string]$value
)
[string] $env_value = [Environment]::GetEnvironmentVariable($key, 'User')
if($env_value -ne $value){
Write-Host "set $key=$value"
[Environment]::SetEnvironmentVariable($key,$value,'User')
}else{
Write-Host "Environment variable $key is set"
}
}

# set env and path variables
function set_env_path {
Write-Host "Setting environment variables for profile"
check_set_env "Z3_EXE" "$INSTALL_DIR\z3\z3.exe"
check_set_env "CVC5_EXE" "$INSTALL_DIR\cvc5.exe"
check_set_env "BOOGIE_EXE" "$INSTALL_DIR\tools\boogie\"
}

function install_z3 {
$z3pkg = "z3-$Z3_VERSION-x64-win"
# download z3
Invoke-WebRequest -Uri "https://github.com/Z3Prover/z3/releases/download/z3-$z3_version/$z3pkg.zip" -OutFile "$INSTALL_DIR\z3\z3.zip"
# unzip z3
Write-Host "Unzipping z3"
Expand-Archive "$INSTALL_DIR\z3\z3.zip" -DestinationPath "$INSTALL_DIR\z3"
# remove z3.zip
Remove-Item "$INSTALL_DIR\z3\z3.zip" -Force
# mv z3.exe into z3 path
Copy-Item "$INSTALL_DIR\z3\$z3pkg\bin\z3.exe" "$INSTALL_DIR\z3\z3.exe"
}

function install_cvc5 {
Invoke-WebRequest -Uri "https://github.com/cvc5/cvc5/releases/download/cvc5-$CVC5_VERSION/cvc5-Win64.exe" -OutFile "$INSTALL_DIR\cvc5.exe"
}

function install_boogie {
dotnet tool update --tool-path "$INSTALL_DIR\tools\boogie" Boogie --version $BOOGIE_VERSION
}

function install_build_tools {
try {
clang 2>&1>$null
} catch {
Write-Error "Clang not found, installing llvm and clang"
$llvmVersion = "12.0.0"
Write-Host "Installing LLVM $llvmVersion ..." -ForegroundColor Cyan
Write-Host "Downloading..."
$exePath = "$env:temp\LLVM-$llvmVersion-win64.exe"
Invoke-WebRequest -Uri "https://github.com/llvm/llvm-project/releases/download/llvmorg-$llvmVersion/LLVM-$llvmVersion-win64.exe" -OutFile $exePath
Write-Host "Installing..."
cmd /c start $exePath
Write-Host "Installed" -ForegroundColor Green
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\LLVM\bin", 'User')
}
try {
dotnet 2>&1>$null
} catch {
Write-Error "Dotnet sdk not found, installing dotnet sdk!"
$exePath = "$env:temp\dotnet-sdk-6.0.202-win-x64.exe"
Invoke-WebRequest -Uri "https://download.visualstudio.microsoft.com/download/pr/e4f4bbac-5660-45a9-8316-0ffc10765179/8ade57de09ce7f12d6411ed664f74eca/dotnet-sdk-6.0.202-win-x64.exe" -OutFile $exePath
Write-Host "Installing..."
cmd /c start $exePath
Write-Host "Installed" -ForegroundColor Green
}
try {
cargo 2>&1>$null
} catch {
throw "install rust by yourself please"
}
}

if ($INSTALL_PROFILE -eq $true) {
Write-Host "Installing profile"
set_env_path
}
if ($INSTALL_BUILD_TOOLS -eq $true) {
Write-Host "Installing build tools"
install_build_tools
}
if ($INSTALL_PROVER -eq $true) {
Write-Host "Installing prover"
install_z3
install_cvc5
install_boogie
}
8 changes: 0 additions & 8 deletions scripts/install_llvm.ps1

This file was deleted.

0 comments on commit 8bee59b

Please sign in to comment.