param(
[switch] $SkipCpuLibraries = $false,
[switch] $SkipGpuLibraries = $false
)
function Expand-TarGzFiles {
param
(
[Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [string] $Archive,
[Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [string []] $Files,
[Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [string] $TargetDirectory
)
& 7z e $Archive -o"$TargetDirectory"
$TarArchive = Join-Path $TargetDirectory "libtensorflow.tar"
& 7z e $TarArchive $Files -o"$TargetDirectory"
Remove-Item $TarArchive
}
function Expand-ZipFiles {
param(
[Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [string] $Archive,
[Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [string []] $Files,
[Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [string] $TargetDirectory
)
& 7z e $Archive $Files -o"$TargetDirectory"
}
function Split-ArchiveFromUrl {
param(
[Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [string] $ArchiveUrl
)
$uriParts = $ArchiveUrl.split("/")
$ArchivePath = $uriParts[$uriParts.Count - 1]
return $ArchivePath
}
function Copy-Archive {
param (
[Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
[string] $ArchiveUrl,
[Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
[string] $TargetDirectory
)
$ArchiveName = Split-ArchiveFromUrl $ArchiveUrl
$TargetPath = [IO.Path]::Combine($PSScriptRoot, "..", "packages", $ArchiveName)
if (Test-Path $TargetPath -PathType Leaf) {
Write-Error "$TargetPath already exists, please remove to download againg."
return $TargetPath
}
if (-not (Test-Path $TargetDirectory -PathType Container)) {
Write-Host "Creating missing $TargetDirectory"
New-Item -Path $TargetDirectory -ItemType Directory
}
Write-Host "Downloading $ArchiveUrl, this might take a while..."
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($ArchiveUrl, $TargetPath)
return $TargetPath
}
$LinuxGpuArchive = "https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-gpu-linux-x86_64-1.14.0.tar.gz"
$LinuxCpuArchive = "https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-cpu-linux-x86_64-1.14.0.tar.gz"
$LinuxFiles = @(".\libtensorflow.tar", ".\lib\libtensorflow.so", ".\lib\libtensorflow.so.1", ".\lib\libtensorflow.so.1.14.0", `
".\lib\libtensorflow_framework.so", ".\lib\libtensorflow_framework.so.1", ".\lib\libtensorflow_framework.so.1.14.0")
$WindowsGpuArchive = "https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-gpu-windows-x86_64-1.14.0.zip"
$WindowsCpuArchive = "https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-cpu-windows-x86_64-1.14.0.zip"
$WindowsFiles = @("lib\tensorflow.dll")
$PackagesDirectory = [IO.Path]::Combine($PSScriptRoot, "..", "packages")
if (-not $SkipGpuLibraries) {
$Archive = Copy-Archive -ArchiveUrl $WindowsGpuArchive -TargetDirectory $PackagesDirectory
$TargetDirectory = [IO.Path]::Combine($PSScriptRoot, "..", "redist", "runtime.win-x64.SciSharp.TensorFlow-Gpu.Redist")
Expand-ZipFiles $Archive $WindowsFiles $TargetDirectory
$Archive = Copy-Archive -ArchiveUrl $LinuxGpuArchive -TargetDirectory $PackagesDirectory
$TargetDirectory = [IO.Path]::Combine($PSScriptRoot, "..", "redist", "runtime.linux-x64.SciSharp.Tensorflow-Gpu.Redist")
Expand-TarGzFiles $Archive $LinuxFiles $TargetDirectory
}
if (-not $SkipCpuLibraries) {
$Archive = Copy-Archive -ArchiveUrl $WindowsCpuArchive -TargetDirectory $PackagesDirectory
$TargetDirectory = [IO.Path]::Combine($PSScriptRoot, "..", "redist", "runtime.win-x64.SciSharp.TensorFlow-Cpu.Redist")
Expand-ZipFiles $Archive $WindowsFiles $TargetDirectory
$Archive = Copy-Archive -ArchiveUrl $LinuxCpuArchive -TargetDirectory $PackagesDirectory
$TargetDirectory = [IO.Path]::Combine($PSScriptRoot, "..", "redist", "runtime.linux-x64.SciSharp.Tensorflow-Cpu.Redist")
Expand-TarGzFiles $Archive $LinuxFiles $TargetDirectory
}