Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Dev] add powershell for setup #3343

Merged
merged 5 commits into from
Apr 15, 2022
Merged
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
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.