Repository navigation
Expand file tree
/
Copy pathwindows-build-wheels.ps1
More file actions
99 lines (76 loc) · 3.12 KB
/
Copy pathwindows-build-wheels.ps1
File metadata and controls
99 lines (76 loc) · 3.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
$scriptDir = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition
$rootDir = Resolve-Path "$scriptDir\\.."
$standaloneDir = Join-Path $rootDir "standalone-build"
if (![System.IO.Directory]::Exists($standaloneDir)) {
[System.IO.Directory]::CreateDirectory($standaloneDir)
}
function Pip-Install {
param (
[string]$pythonDir,
[string]$package
)
$pip = Join-Path $pythonDir "Scripts\\pip.exe"
Write-Host "Installing $package using $pip"
Start-Process $pip -ArgumentList "install `"$package`"" -NoNewWindow -Wait
}
function Prepare-Build-Env {
param (
[string]$pythonVersion
)
$pythonDir = "C:\\Python$pythonVersion"
If (![System.IO.Directory]::Exists($pythonDir)) {
Write-Host "Aborting. pythonDir [$pythonDir] does not exist."
return
}
$venv = Join-Path $pythonDir "Scripts\\virtualenv.exe"
$venvDir = Join-Path $rootDir "venv-$pythonVersion"
If (![System.IO.Directory]::Exists($venvDir)) {
Start-Process $venv -ArgumentList "$venvDir" -NoNewWindow -Wait
}
Pip-Install "$venvDir" "scikit-build"
}
function Build-Wheel {
param (
[string]$pythonVersion
)
$venvDir = Join-Path $rootDir "venv-$pythonVersion"
$PYTHON_EXECUTABLE = Join-Path $venvDir "Scripts\\python.exe"
$PYTHON_INCLUDE_DIR = Join-Path $venvDir "Include"
# XXX It should be possible to query skbuild for the library dir associated
# with a given interpreter.
$xy_ver = $pythonVersion.split("-")[0]
$PYTHON_LIBRARY = "C:\\Python$pythonVersion\\libs\\python$xy_ver.lib"
Write-Host ""
Write-Host "PYTHON_EXECUTABLE:${PYTHON_EXECUTABLE}"
Write-Host "PYTHON_INCLUDE_DIR:${PYTHON_INCLUDE_DIR}"
Write-Host "PYTHON_LIBRARY:${PYTHON_LIBRARY}"
$pip = Join-Path $venvDir "Scripts\\pip.exe"
$NINJA_EXECUTABLE = Join-Path $rootDir "venv-27-x64\Scripts\ninja.exe"
Write-Host "NINJA_EXECUTABLE:${NINJA_EXECUTABLE}"
# Update PATH
$old_path = $env:PATH
$env:PATH = "$venvDir\\Scripts;$env:PATH"
Start-Process $pip -ArgumentList "install -r $rootDir\\requirements-dev.txt" -NoNewWindow -Wait
Start-Process $PYTHON_EXECUTABLE -ArgumentList "setup.py bdist_wheel --build-type Release -G Ninja -- -DCMAKE_MAKE_PROGRAM:FILEPATH=$NINJA_EXECUTABLE -DITK_SOURCE_DIR:PATH=$standaloneDir\\ITK-source -DPYTHON_EXECUTABLE:FILEPATH=$PYTHON_EXECUTABLE -DPYTHON_INCLUDE_DIR:PATH=$PYTHON_INCLUDE_DIR -DPYTHON_LIBRARY:FILEPATH=$PYTHON_LIBRARY" -NoNewWindow -Wait
Start-Process $PYTHON_EXECUTABLE -ArgumentList "setup.py clean" -NoNewWindow -Wait
# Restore PATH
$env:PATH = $old_path
}
Prepare-Build-Env "27-x64"
Prepare-Build-Env "35-x64"
Prepare-Build-Env "36-x64"
Pushd $standaloneDir
$CMAKE_EXECUTABLE = "cmake.exe"
$toolsVenv = Join-Path $rootDir "venv-27-x64"
Pip-Install $toolsVenv "ninja"
$NINJA_EXECUTABLE = Join-Path $toolsVenv "Scripts\ninja.exe"
Start-Process $CMAKE_EXECUTABLE -ArgumentList `
"-DITKPythonPackage_BUILD_PYTHON:PATH=0 `
-G Ninja `
-DCMAKE_MAKE_PROGRAM:FILEPATH=$NINJA_EXECUTABLE $rootDir" -NoNewWindow -Wait
Start-Process $NINJA_EXECUTABLE -NoNewWindow -Wait
Popd
# Compile wheels re-using standalone project and archive cache
Build-Wheel "27-x64"
Build-Wheel "35-x64"
Build-Wheel "36-x64"