Skip to content

Commit 7accc3e

Browse files
authored
Merge pull request #51 from libgit2/multi-dist
Use docker to build for multiple distros
2 parents 9e1a590 + 071d744 commit 7accc3e

14 files changed

+184
-136
lines changed

.travis.yml

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,26 @@ git:
33

44
language: c
55

6-
os:
7-
- osx
8-
- linux
6+
matrix:
7+
include:
8+
- os: linux
9+
dist: trusty
10+
sudo: required
11+
env: RID=linux-x64
12+
- os: linux
13+
dist: trusty
14+
sudo: required
15+
env: RID=rhel-x64
16+
- os: linux
17+
dist: trusty
18+
sudo: required
19+
env: RID=fedora-x64
20+
- os: linux
21+
dist: trusty
22+
sudo: required
23+
env: RID=debian.9-x64
24+
- os: osx
25+
env: RID=osx
926

1027
branches:
1128
only:
@@ -20,6 +37,8 @@ before_install:
2037

2138
install: true
2239

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

2544
after_success: ./uploadbinaries.sh

Dockerfile.debian.9-x64

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
FROM debian:9
2+
WORKDIR /nativebinaries
3+
COPY . /nativebinaries/
4+
5+
RUN apt update && apt -y install cmake gcc libcurl4-openssl-dev libssl-dev pkg-config zlib1g-dev
6+
7+
CMD ["/bin/bash", "-c", "./build.libgit2.sh"]

Dockerfile.fedora-x64

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
FROM fedora:26
2+
WORKDIR /nativebinaries
3+
COPY . /nativebinaries/
4+
5+
RUN yum -y install cmake gcc libcurl-devel make openssl-devel
6+
7+
CMD ["/bin/bash", "-c", "./build.libgit2.sh"]

Dockerfile.rhel-x64

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
FROM centos:7
2+
WORKDIR /nativebinaries
3+
COPY . /nativebinaries/
4+
5+
RUN yum -y install cmake gcc libcurl-devel make openssl-devel
6+
7+
CMD ["/bin/bash", "-c", "./build.libgit2.sh"]

UpdateLibgit2ToSha.ps1

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,19 +112,19 @@ Push-Location $libgit2Directory
112112
<libgit2_filename>$binaryFilename</libgit2_filename>
113113
</PropertyGroup>
114114
<ItemGroup>
115-
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\win7-x64\native\$binaryFilename.dll')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\win7-x64\native\$binaryFilename.dll">
115+
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\win-x64\native\$binaryFilename.dll')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\win-x64\native\$binaryFilename.dll">
116116
<TargetPath>lib\win32\x64\$binaryFilename.dll</TargetPath>
117117
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
118118
</ContentWithTargetPath>
119-
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\win7-x64\native\$binaryFilename.pdb')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\win7-x64\native\$binaryFilename.pdb">
119+
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\win-x64\native\$binaryFilename.pdb')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\win-x64\native\$binaryFilename.pdb">
120120
<TargetPath>lib\win32\x64\$binaryFilename.pdb</TargetPath>
121121
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
122122
</ContentWithTargetPath>
123-
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\win7-x86\native\$binaryFilename.dll')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\win7-x86\native\$binaryFilename.dll">
123+
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\win-x86\native\$binaryFilename.dll')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\win-x86\native\$binaryFilename.dll">
124124
<TargetPath>lib\win32\x86\$binaryFilename.dll</TargetPath>
125125
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
126126
</ContentWithTargetPath>
127-
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\win7-x86\native\$binaryFilename.pdb')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\win7-x86\native\$binaryFilename.pdb">
127+
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\win-x86\native\$binaryFilename.pdb')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\win-x86\native\$binaryFilename.pdb">
128128
<TargetPath>lib\win32\x86\$binaryFilename.pdb</TargetPath>
129129
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
130130
</ContentWithTargetPath>
@@ -133,7 +133,19 @@ Push-Location $libgit2Directory
133133
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
134134
</ContentWithTargetPath>
135135
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\linux-x64\native\lib$binaryFilename.so')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\linux-x64\native\lib$binaryFilename.so">
136-
<TargetPath>lib\linux\x86_64\lib$binaryFilename.so</TargetPath>
136+
<TargetPath>lib\linux-x64\lib$binaryFilename.so</TargetPath>
137+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
138+
</ContentWithTargetPath>
139+
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\rhel-x64\native\lib$binaryFilename.so')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\rhel-x64\native\lib$binaryFilename.so">
140+
<TargetPath>lib\rhel-x64\lib$binaryFilename.so</TargetPath>
141+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
142+
</ContentWithTargetPath>
143+
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\fedora-x64\native\lib$binaryFilename.so')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\fedora-x64\native\lib$binaryFilename.so">
144+
<TargetPath>lib\fedora-x64\lib$binaryFilename.so</TargetPath>
145+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
146+
</ContentWithTargetPath>
147+
<ContentWithTargetPath Condition="Exists('`$(MSBuildThisFileDirectory)\..\..\runtimes\debian.9-x64\native\lib$binaryFilename.so')" Include="`$(MSBuildThisFileDirectory)\..\..\runtimes\debian.9-x64\native\lib$binaryFilename.so">
148+
<TargetPath>lib\debian.9-x64\lib$binaryFilename.so</TargetPath>
137149
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
138150
</ContentWithTargetPath>
139151
<ContentWithTargetPath Include="`$(MSBuildThisFileDirectory)\..\..\libgit2\LibGit2Sharp.dll.config">
@@ -148,7 +160,7 @@ Push-Location $libgit2Directory
148160

149161
$dllConfig = @"
150162
<configuration>
151-
<dllmap os="linux" cpu="x86-64" wordsize="64" dll="$binaryFilename" target="lib/linux/x86_64/lib$binaryFilename.so" />
163+
<dllmap os="linux" cpu="x86-64" wordsize="64" dll="$binaryFilename" target="lib/linux-x64/lib$binaryFilename.so" />
152164
<dllmap os="osx" cpu="x86,x86-64" dll="$binaryFilename" target="lib/osx/lib$binaryFilename.dylib" />
153165
</configuration>
154166
"@

build.libgit2.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ Set-StrictMode -Version Latest
2020

2121
$projectDirectory = Split-Path $MyInvocation.MyCommand.Path
2222
$libgit2Directory = Join-Path $projectDirectory "libgit2"
23-
$x86Directory = Join-Path $projectDirectory "nuget.package\runtimes\win7-x86\native"
24-
$x64Directory = Join-Path $projectDirectory "nuget.package\runtimes\win7-x64\native"
23+
$x86Directory = Join-Path $projectDirectory "nuget.package\runtimes\win-x86\native"
24+
$x64Directory = Join-Path $projectDirectory "nuget.package\runtimes\win-x64\native"
2525
$hashFile = Join-Path $projectDirectory "nuget.package\libgit2\libgit2_hash.txt"
2626
$sha = Get-Content $hashFile
2727

build.libgit2.sh

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,27 +22,27 @@ popd
2222

2323
OS=`uname`
2424
ARCH=`uname -m`
25-
26-
PACKAGEPATH="nuget.package/libgit2"
27-
LIBEXT="so"
2825

29-
if [ $OS == "Linux" ]; then
30-
if [ "$ARCH" == "x86_64" ]; then
31-
ARCH="x64"
26+
PACKAGEPATH="nuget.package/runtimes"
27+
28+
if [[ $RID == "" ]]; then
29+
if [[ $ARCH == "x86_64" ]]; then
30+
RID="unix-x64"
31+
else
32+
RID="unix-x86"
3233
fi
34+
echo "$(tput setaf 3)RID not defined. Falling back to '$RID'.$(tput sgr0)"
35+
fi
3336

34-
OSPATH="/linux"
35-
ARCHPATH="-$ARCH"
36-
elif [ $OS == "Darwin" ]; then
37-
OSPATH="/osx"
37+
if [[ $OS == "Darwin" ]]; then
3838
LIBEXT="dylib"
3939
else
40-
OSPATH="/unix"
40+
LIBEXT="so"
4141
fi
4242

43-
rm -rf $PACKAGEPATH$OSPATH
44-
mkdir -p $PACKAGEPATH$OSPATH$ARCHPATH/native
43+
rm -rf $PACKAGEPATH/$RID
44+
mkdir -p $PACKAGEPATH/$RID/native
4545

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

4848
exit $?

buildpackage.ps1

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,30 +8,4 @@ $buildDate = (Get-Date).ToUniversalTime().ToString("yyyyMMddHHmmss")
88
$versionSuffix = ""
99
if ($pre.IsPresent) { $versionSuffix = "-pre$BuildDate" }
1010

11-
$projectDirectory = Split-Path $MyInvocation.MyCommand.Path
12-
$x86Directory = Join-Path $projectDirectory "nuget.package\runtimes\win7-x86\native"
13-
$x64Directory = Join-Path $projectDirectory "nuget.package\runtimes\win7-x64\native"
14-
$osxDirectory = Join-Path $projectDirectory "nuget.package\runtimes\osx\native"
15-
$linuxDirectory = Join-Path $projectDirectory "nuget.package\runtimes\linux-x64\native"
16-
17-
if ( -Not (Test-Path $x86Directory\*.dll) )
18-
{
19-
mkdir -fo $x86Directory > $null
20-
}
21-
22-
if ( -Not (Test-Path $x64Directory\*.dll) )
23-
{
24-
mkdir -fo $x64Directory > $null
25-
}
26-
27-
if ( -Not (Test-Path $osxDirectory\*.dylib) )
28-
{
29-
mkdir -fo $osxDirectory > $null
30-
}
31-
32-
if ( -Not (Test-Path $linuxDirectory\*.so) )
33-
{
34-
mkdir -fo $linuxDirectory > $null
35-
}
36-
3711
.\nuget.exe Pack nuget.package\NativeBinaries.nuspec -Version $version$versionSuffix -NoPackageAnalysis

dockerbuild.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/bin/bash
2+
3+
docker build -t $RID -f Dockerfile.$RID .
4+
5+
docker run -it -e RID=$RID --name=$RID $RID
6+
7+
docker cp $RID:/nativebinaries/nuget.package/runtimes nuget.package
8+
9+
docker rm $RID

0 commit comments

Comments
 (0)