diff options
Diffstat (limited to 'UpdateLibgit2ToSha.ps1')
-rw-r--r-- | UpdateLibgit2ToSha.ps1 | 212 |
1 files changed, 0 insertions, 212 deletions
diff --git a/UpdateLibgit2ToSha.ps1 b/UpdateLibgit2ToSha.ps1 deleted file mode 100644 index 4a90841e..00000000 --- a/UpdateLibgit2ToSha.ps1 +++ /dev/null @@ -1,212 +0,0 @@ -<# -.SYNOPSIS - Builds a version of libgit2 and copies it to Lib/NativeBinaries. -.PARAMETER sha - Desired libgit2 version. This is run through `git rev-parse`, so branch names are okay too. -.PARAMETER vs - Version of Visual Studio project files to generate. Cmake supports "10" (default), "11" and "12". -.PARAMETER libgit2Name - The base name (i.e without the file extension) of the libgit2 DLL to generate. Default is to use git2-$suffix, where $suffix is the first 7 characters of the SHA1 of the corresponding libgi2 commit as the suffix. -.PARAMETER test - If set, run the libgit2 tests on the desired version. -.PARAMETER debug - If set, build the "Debug" configuration of libgit2, rather than "RelWithDebInfo" (default). -#> - -Param( - [string]$sha = 'HEAD', - [string]$vs = '10', - [string]$libgit2Name = '', - [switch]$test, - [switch]$debug -) - -Set-StrictMode -Version Latest - -$self = Split-Path -Leaf $MyInvocation.MyCommand.Path -$libgit2sharpDirectory = Split-Path $MyInvocation.MyCommand.Path -$libgit2Directory = Join-Path $libgit2sharpDirectory "libgit2" -$x86Directory = Join-Path $libgit2sharpDirectory "Lib\NativeBinaries\x86" -$x64Directory = Join-Path $libgit2sharpDirectory "Lib\NativeBinaries\amd64" - -$build_clar = 'OFF' -if ($test.IsPresent) { $build_clar = 'ON' } -$configuration = "RelWithDebInfo" -if ($debug.IsPresent) { $configuration = "Debug" } - -function Run-Command([scriptblock]$Command, [switch]$Fatal, [switch]$Quiet) { - $output = "" - if ($Quiet) { - $output = & $Command 2>&1 - } else { - & $Command - } - - if (!$Fatal) { - return - } - - $exitCode = 0 - if ($LastExitCode -ne 0) { - $exitCode = $LastExitCode - } elseif (!$?) { - $exitCode = 1 - } else { - return - } - - $error = "``$Command`` failed" - if ($output) { - Write-Host -ForegroundColor yellow $output - $error += ". See output above." - } - Throw $error -} - -function Find-CMake { - # Look for cmake.exe in $Env:PATH. - $cmake = @(Get-Command cmake.exe)[0] 2>$null - if ($cmake) { - $cmake = $cmake.Definition - } else { - # Look for the highest-versioned cmake.exe in its default location. - $cmake = @(Resolve-Path (Join-Path ${Env:ProgramFiles(x86)} "CMake *\bin\cmake.exe")) - if ($cmake) { - $cmake = $cmake[-1].Path - } - } - if (!$cmake) { - throw "Error: Can't find cmake.exe" - } - $cmake -} - -function Find-Git { - $git = @(Get-Command git)[0] 2>$null - if ($git) { - $git = $git.Definition - Write-Host -ForegroundColor Gray "Using git: $git" - & $git --version | write-host -ForegroundColor Gray - return $git - } - throw "Error: Can't find git" -} - -Push-Location $libgit2Directory - -function Ensure-Property($expected, $propertyValue, $propertyName, $path) { - if ($propertyValue -eq $expected) { - return - } - - throw "Error: Invalid '$propertyName' property in generated '$path' (Expected: $expected - Actual: $propertyValue)" -} - -function Assert-Consistent-Naming($expected, $path) { - $dll = get-item $path - - Ensure-Property $expected $dll.Name "Name" $dll.Fullname - Ensure-Property $expected $dll.VersionInfo.InternalName "VersionInfo.InternalName" $dll.Fullname - Ensure-Property $expected $dll.VersionInfo.OriginalFilename "VersionInfo.OriginalFilename" $dll.Fullname -} - -& { - trap { - Pop-Location - break - } - - $cmake = Find-CMake - $ctest = Join-Path (Split-Path -Parent $cmake) "ctest.exe" - $git = Find-Git - - Write-Output "Fetching..." - Run-Command -Quiet { & $git fetch } - - Write-Output "Verifying $sha..." - $sha = & $git rev-parse $sha - if ($LASTEXITCODE -ne 0) { - write-host -foregroundcolor red "Error: invalid SHA. USAGE: $self <SHA>" - popd - break - } - - if(![string]::IsNullOrEmpty($libgit2Name)) { - $binaryFilename = $libgit2Name - } else { - $binaryFilename = "git2-" + $sha.Substring(0,7) - } - - Write-Output "Checking out $sha..." - Run-Command -Quiet -Fatal { & $git checkout $sha } - - Write-Output "Building 32-bit..." - Run-Command -Quiet { & remove-item build -recurse -force } - Run-Command -Quiet { & mkdir build } - cd build - Run-Command -Quiet -Fatal { & $cmake -G "Visual Studio $vs" -D ENABLE_TRACE=ON -D "BUILD_CLAR=$build_clar" -D "LIBGIT2_FILENAME=$binaryFilename" -DSTDCALL=ON .. } - Run-Command -Quiet -Fatal { & $cmake --build . --config $configuration } - if ($test.IsPresent) { Run-Command -Quiet -Fatal { & $ctest -V . } } - cd $configuration - Assert-Consistent-Naming "$binaryFilename.dll" "*.dll" - Run-Command -Quiet { & rm *.exp } - Run-Command -Quiet { & rm $x86Directory\* } - Run-Command -Quiet -Fatal { & copy -fo * $x86Directory } - - Write-Output "Building 64-bit..." - cd .. - Run-Command -Quiet { & mkdir build64 } - cd build64 - Run-Command -Quiet -Fatal { & $cmake -G "Visual Studio $vs Win64" -D THREADSAFE=ON -D ENABLE_TRACE=ON -D "BUILD_CLAR=$build_clar" -D "LIBGIT2_FILENAME=$binaryFilename" -DSTDCALL=ON ../.. } - Run-Command -Quiet -Fatal { & $cmake --build . --config $configuration } - if ($test.IsPresent) { Run-Command -Quiet -Fatal { & $ctest -V . } } - cd $configuration - Assert-Consistent-Naming "$binaryFilename.dll" "*.dll" - Run-Command -Quiet { & rm *.exp } - Run-Command -Quiet { & rm $x64Directory\* } - Run-Command -Quiet -Fatal { & copy -fo * $x64Directory } - - pop-location - - $dllNameClass = @" -namespace LibGit2Sharp.Core -{ - internal static class NativeDllName - { - public const string Name = "$binaryFilename"; - } -} -"@ - - sc -Encoding ASCII (Join-Path $libgit2sharpDirectory "Libgit2sharp\Core\NativeDllName.cs") $dllNameClass - sc -Encoding ASCII (Join-Path $libgit2sharpDirectory "Libgit2sharp\libgit2_hash.txt") $sha - - $buildProperties = @" -<?xml version="1.0" encoding="utf-8"?> -<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Condition=" '`$(OS)' == 'Windows_NT' "> - <None Include="`$(MSBuildThisFileDirectory)\..\..\lib\net40\NativeBinaries\amd64\$binaryFilename.dll"> - <Link>NativeBinaries\amd64\$binaryFilename.dll</Link> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </None> - <None Include="`$(MSBuildThisFileDirectory)\..\..\lib\net40\NativeBinaries\amd64\$binaryFilename.pdb"> - <Link>NativeBinaries\amd64\$binaryFilename.pdb</Link> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </None> - <None Include="`$(MSBuildThisFileDirectory)\..\..\lib\net40\NativeBinaries\x86\$binaryFilename.dll"> - <Link>NativeBinaries\x86\$binaryFilename.dll</Link> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </None> - <None Include="`$(MSBuildThisFileDirectory)\..\..\lib\net40\NativeBinaries\x86\$binaryFilename.pdb"> - <Link>NativeBinaries\x86\$binaryFilename.pdb</Link> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </None> - </ItemGroup> -</Project> -"@ - - sc -Encoding UTF8 (Join-Path $libgit2sharpDirectory "nuget.package\build\LibGit2Sharp.props") $buildProperties - - Write-Output "Done!" -} -exit |