Skip to content

[WIP] Always use runtimes folder #68

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

Closed
wants to merge 16 commits into from
Closed
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
27 changes: 23 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,26 @@ git:

language: c

os:
- osx
- linux
matrix:
include:
- os: linux
dist: trusty
sudo: required
env: RID=linux-x64
- os: linux
dist: trusty
sudo: required
env: RID=rhel-x64
- os: linux
dist: trusty
sudo: required
env: RID=fedora-x64
- os: linux
dist: trusty
sudo: required
env: RID=debian.9-x64
- os: osx
env: RID=osx

branches:
only:
Expand All @@ -20,6 +37,8 @@ before_install:

install: true

script: ./build.libgit2.sh
script:
- if [[ $RID == "osx" ]] || [[ $RID == "linux-x64" ]]; then ./build.libgit2.sh ; fi
- if [[ $RID != "osx" ]] && [[ $RID != "linux-x64" ]]; then ./dockerbuild.sh ; fi

after_success: ./uploadbinaries.sh
7 changes: 7 additions & 0 deletions Dockerfile.debian.9-x64
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM debian:9
WORKDIR /nativebinaries
COPY . /nativebinaries/

RUN apt update && apt -y install cmake gcc libcurl4-openssl-dev libssl-dev pkg-config zlib1g-dev

CMD ["/bin/bash", "-c", "./build.libgit2.sh"]
7 changes: 7 additions & 0 deletions Dockerfile.fedora-x64
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM fedora:26
WORKDIR /nativebinaries
COPY . /nativebinaries/

RUN yum -y install cmake gcc libcurl-devel make openssl-devel

CMD ["/bin/bash", "-c", "./build.libgit2.sh"]
7 changes: 7 additions & 0 deletions Dockerfile.rhel-x64
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM centos:7
WORKDIR /nativebinaries
COPY . /nativebinaries/

RUN yum -y install cmake gcc libcurl-devel make openssl-devel

CMD ["/bin/bash", "-c", "./build.libgit2.sh"]
53 changes: 12 additions & 41 deletions UpdateLibgit2ToSha.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -98,46 +98,26 @@ Push-Location $libgit2Directory
<libgit2_hash>$sha</libgit2_hash>
<libgit2_filename>$binaryFilename</libgit2_filename>
</PropertyGroup>
<ItemGroup>
<libgit2_rid Include='"win-x64"' />
<libgit2_rid Include='"win-x86"' />
<libgit2_rid Include='"osx"' />
<libgit2_rid Include='"linux-x64"' />
<libgit2_rid Include='"rhel-x64"' />
<libgit2_rid Include='"fedora-x64"' />
<libgit2_rid Include='"debian.9-x64"' />
</ItemGroup>
</Project>
"@

Set-Content -Encoding UTF8 (Join-Path $projectDirectory "nuget.package\build\LibGit2Sharp.NativeBinaries.props") $buildProperties

$net461BuildProperties = @"
<Project>
<PropertyGroup>
<MSBuildAllProjects>`$(MSBuildAllProjects);`$(MSBuildThisFileFullPath)</MSBuildAllProjects>
<libgit2_propsfile>`$(MSBuildThisFileFullPath)</libgit2_propsfile>
<libgit2_hash>$sha</libgit2_hash>
<libgit2_filename>$binaryFilename</libgit2_filename>
</PropertyGroup>
<Import Project="`$(MSBuildThisFileDirectory)\..\LibGit2Sharp.NativeBinaries.props" />
<ItemGroup>
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\win7-x64\native\$binaryFilename.dll')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\win7-x64\native\$binaryFilename.dll">
<TargetPath>lib\win32\x64\$binaryFilename.dll</TargetPath>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</ContentWithTargetPath>
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\win7-x64\native\$binaryFilename.pdb')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\win7-x64\native\$binaryFilename.pdb">
<TargetPath>lib\win32\x64\$binaryFilename.pdb</TargetPath>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</ContentWithTargetPath>
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\win7-x86\native\$binaryFilename.dll')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\win7-x86\native\$binaryFilename.dll">
<TargetPath>lib\win32\x86\$binaryFilename.dll</TargetPath>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</ContentWithTargetPath>
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\win7-x86\native\$binaryFilename.pdb')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\win7-x86\native\$binaryFilename.pdb">
<TargetPath>lib\win32\x86\$binaryFilename.pdb</TargetPath>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</ContentWithTargetPath>
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\osx\native\lib$binaryFilename.dylib')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\osx\native\lib$binaryFilename.dylib">
<TargetPath>lib\osx\lib$binaryFilename.dylib</TargetPath>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</ContentWithTargetPath>
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\linux-x64\native\lib$binaryFilename.so')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\linux-x64\native\lib$binaryFilename.so">
<TargetPath>lib\linux\x86_64\lib$binaryFilename.so</TargetPath>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</ContentWithTargetPath>
<ContentWithTargetPath Include="`$(MSBuildThisFileDirectory)\..\..\libgit2\LibGit2Sharp.dll.config">
<TargetPath>LibGit2Sharp.dll.config</TargetPath>
<ContentWithTargetPath Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\**\*">
<TargetPath>runtimes\%(RecursiveDir)\%(Filename)%(Extension)</TargetPath>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</ContentWithTargetPath>
</ItemGroup>
Expand All @@ -146,15 +126,6 @@ Push-Location $libgit2Directory

Set-Content -Encoding UTF8 (Join-Path $projectDirectory "nuget.package\build\net461\LibGit2Sharp.NativeBinaries.props") $net461BuildProperties

$dllConfig = @"
<configuration>
<dllmap os="linux" cpu="x86-64" wordsize="64" dll="$binaryFilename" target="lib/linux/x86_64/lib$binaryFilename.so" />
<dllmap os="osx" cpu="x86,x86-64" dll="$binaryFilename" target="lib/osx/lib$binaryFilename.dylib" />
</configuration>
"@

Set-Content -Encoding UTF8 (Join-Path $projectDirectory "nuget.package\libgit2\LibGit2Sharp.dll.config") $dllConfig

Write-Output "Done!"
}
exit
4 changes: 2 additions & 2 deletions build.libgit2.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ Set-StrictMode -Version Latest

$projectDirectory = Split-Path $MyInvocation.MyCommand.Path
$libgit2Directory = Join-Path $projectDirectory "libgit2"
$x86Directory = Join-Path $projectDirectory "nuget.package\runtimes\win7-x86\native"
$x64Directory = Join-Path $projectDirectory "nuget.package\runtimes\win7-x64\native"
$x86Directory = Join-Path $projectDirectory "nuget.package\runtimes\win-x86\native"
$x64Directory = Join-Path $projectDirectory "nuget.package\runtimes\win-x64\native"
$hashFile = Join-Path $projectDirectory "nuget.package\libgit2\libgit2_hash.txt"
$sha = Get-Content $hashFile

Expand Down
28 changes: 14 additions & 14 deletions build.libgit2.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,27 +22,27 @@ popd

OS=`uname`
ARCH=`uname -m`

PACKAGEPATH="nuget.package/libgit2"
LIBEXT="so"

if [ $OS == "Linux" ]; then
if [ "$ARCH" == "x86_64" ]; then
ARCH="x64"
PACKAGEPATH="nuget.package/runtimes"

if [[ $RID == "" ]]; then
if [[ $ARCH == "x86_64" ]]; then
RID="unix-x64"
else
RID="unix-x86"
fi
echo "$(tput setaf 3)RID not defined. Falling back to '$RID'.$(tput sgr0)"
fi

OSPATH="/linux"
ARCHPATH="-$ARCH"
elif [ $OS == "Darwin" ]; then
OSPATH="/osx"
if [[ $OS == "Darwin" ]]; then
LIBEXT="dylib"
else
OSPATH="/unix"
LIBEXT="so"
fi

rm -rf $PACKAGEPATH$OSPATH
mkdir -p $PACKAGEPATH$OSPATH$ARCHPATH/native
rm -rf $PACKAGEPATH/$RID
mkdir -p $PACKAGEPATH/$RID/native

cp libgit2/build/libgit2-$SHORTSHA.$LIBEXT $PACKAGEPATH$OSPATH$ARCHPATH/native
cp libgit2/build/libgit2-$SHORTSHA.$LIBEXT $PACKAGEPATH/$RID/native

exit $?
26 changes: 0 additions & 26 deletions buildpackage.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -8,30 +8,4 @@ $buildDate = (Get-Date).ToUniversalTime().ToString("yyyyMMddHHmmss")
$versionSuffix = ""
if ($pre.IsPresent) { $versionSuffix = "-pre$BuildDate" }

$projectDirectory = Split-Path $MyInvocation.MyCommand.Path
$x86Directory = Join-Path $projectDirectory "nuget.package\runtimes\win7-x86\native"
$x64Directory = Join-Path $projectDirectory "nuget.package\runtimes\win7-x64\native"
$osxDirectory = Join-Path $projectDirectory "nuget.package\runtimes\osx\native"
$linuxDirectory = Join-Path $projectDirectory "nuget.package\runtimes\linux-x64\native"

if ( -Not (Test-Path $x86Directory\*.dll) )
{
mkdir -fo $x86Directory > $null
}

if ( -Not (Test-Path $x64Directory\*.dll) )
{
mkdir -fo $x64Directory > $null
}

if ( -Not (Test-Path $osxDirectory\*.dylib) )
{
mkdir -fo $osxDirectory > $null
}

if ( -Not (Test-Path $linuxDirectory\*.so) )
{
mkdir -fo $linuxDirectory > $null
}

.\nuget.exe Pack nuget.package\NativeBinaries.nuspec -Version $version$versionSuffix -NoPackageAnalysis
9 changes: 9 additions & 0 deletions dockerbuild.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash

docker build -t $RID -f Dockerfile.$RID .

docker run -it -e RID=$RID --name=$RID $RID

docker cp $RID:/nativebinaries/nuget.package/runtimes nuget.package

docker rm $RID
Loading