build.ps1 2.3 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# Build script for Windows
# Requires: PowerShell, Python 3, Visual Studio 15 2017

$TOP_DIR=$pwd.PATH
$FRONTEND_DIR="$TOP_DIR/frontend"
$BACKEND_DIR="$TOP_DIR/visualdl"
$BUILD_DIR="$TOP_DIR/build"

mkdir $BUILD_DIR -ErrorAction Ignore

function check_duplicated($filename_format) {
    $files = ls dist/$filename_format -ErrorAction Ignore
    if (Get-TypeName($files.Length) -ne "FileInfo") {
      Write-Error "dist have duplicate file for $filename_format, please clean and rerun"
      exit(1)
    }
}

19
function build_frontend_from_source() {
20
    cd $FRONTEND_DIR
21 22 23 24 25
    # TODO:
    # ./scripts/build.sh
}

function build_frontend() {
26
    $PACKAGE_NAME="@visualdl/serverless"
27 28 29 30
    $SRC=npm view $PACKAGE_NAME dist.tarball
    Invoke-WebRequest -Uri "$SRC" -OutFile "$BUILD_DIR/$PACKAGE_NAME.tar.gz"
    # Need Windows 10 Insider Build 17063 and later
    tar -zxf "$BUILD_DIR/$PACKAGE_NAME.tar.gz" -C "$BUILD_DIR"
31 32 33
}

function build_frontend_fake() {
34
    mkdir -p "$BUILD_DIR/package/dist"
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
}

function build_backend() {
    cd $BUILD_DIR
    cmake -G "Visual Studio 15 2017 Win64" `
        -DCMAKE_BUILD_TYPE=Release `
        -DON_RELEASE=ON `
        -DWITH_PYTHON3=ON `
        -DWITH_TESTING=OFF `
        -DBUILD_FOR_HOST:BOOL=YES ..
    cmake --build . --config Release
}

function build_onnx_graph() {
    $env:PATH = "$BUILD_DIR/third_party/protobuf/src/extern_protobuf-build/Release;" + $env:PATH
W
wuzewu 已提交
50
    cd $TOP_DIR/visualdl/server/model/onnx
51
    protoc onnx.proto --python_out .
W
wuzewu 已提交
52 53
    cd $TOP_DIR/visualdl/server/model/paddle
    protoc framework.proto --python_out .
54 55 56 57 58 59 60 61
}

function clean_env() {
    rm -Recurse -Force -ErrorAction Ignore $TOP_DIR/visualdl/server/dist
    rm -Recurse -Force -ErrorAction Ignore $BUILD_DIR/bdist*
    rm -Recurse -Force -ErrorAction Ignore $BUILD_DIR/lib*
    rm -Recurse -Force -ErrorAction Ignore $BUILD_DIR/temp*
    rm -Recurse -Force -ErrorAction Ignore $BUILD_DIR/scripts*
62 63
    rm -Recurse -Force -ErrorAction Ignore $BUILD_DIR/*.tar.gz
    rm -Recurse -Force -ErrorAction Ignore $BUILD_DIR/package
64 65 66
}

function package() {
67
    cp -Recurse $BUILD_DIR/package/dist $TOP_DIR/visualdl/server/
68 69 70 71 72
    cp $BUILD_DIR/visualdl/logic/Release/core.pyd $TOP_DIR/visualdl
    cp $BUILD_DIR/visualdl/logic/Release/core.pyd $TOP_DIR/visualdl/python/
}

clean_env
73
build_frontend
74 75 76
build_backend
build_onnx_graph
package