Skip to content

Commit 4b381bf

Browse files
dmitriysefilmor
authored andcommitted
CoreCLR msbuild (xplat) support. Initial compilable version. (pythonnet#518)
* Full featured xplat build. * .Net 45 TargetingPack System.XML.dll naming fix. (For xplat linux build). * Setup.py --xplat option refactored. Travis-ci build matrix extended. * AppVeyor matrix extended, xplat build added. * appveyor.yml yaml syntax fix. * NUnit dependency upgraded to 3.7. Changelog improved. * Build order improvement. * Mono builds now can be build on Windows. DEBUG;TRACE fix for the case VS + non empty PYTHONNET_DEFINE_CONSTANTS * PYTHONNET_PY3_VERSION, PYTHONNET_PY2_VERSION build related environment vars introduced. * Small compile fixes. * PYTHONNET_WIN_DEFINE_CONSTANTS and PYTHONNET_MONO_DEFINE_CONSTANTS introduced. + Fix for building mono versions under windows.
1 parent 4bac694 commit 4b381bf

16 files changed

+1042
-47
lines changed

.travis.yml

+142-15
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,145 @@
1+
dist: trusty
12
sudo: false
2-
33
language: python
4-
python:
5-
- 2.7
6-
- 3.3
7-
- 3.4
8-
- 3.5
9-
- 3.6
10-
- 3.7-dev
11-
4+
125
matrix:
13-
allow_failures:
14-
- python: 3.7-dev
6+
include:
7+
- python: 2.7
8+
env:
9+
- BUILD_OPTS=--xplat
10+
- NUNIT_PATH=~/.nuget/packages/nunit.consolerunner/3.*/tools/nunit3-console.exe
11+
addons:
12+
apt:
13+
sources:
14+
- sourceline: deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main
15+
key_url: https://packages.microsoft.com/keys/microsoft.asc
16+
- sourceline: deb http://download.mono-project.com/repo/ubuntu trusty main
17+
key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA6A19B38D3D831EF
18+
packages:
19+
- mono-devel
20+
- ca-certificates-mono
21+
- dotnet-hostfxr-2.0.0
22+
- dotnet-runtime-2.0.0
23+
- dotnet-sdk-2.0.0
24+
- python: 3.3
25+
env:
26+
- BUILD_OPTS=--xplat
27+
- NUNIT_PATH=~/.nuget/packages/nunit.consolerunner/3.*/tools/nunit3-console.exe
28+
addons:
29+
apt:
30+
sources:
31+
- sourceline: deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main
32+
key_url: https://packages.microsoft.com/keys/microsoft.asc
33+
- sourceline: deb http://download.mono-project.com/repo/ubuntu trusty main
34+
key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA6A19B38D3D831EF
35+
packages:
36+
- mono-devel
37+
- ca-certificates-mono
38+
- dotnet-hostfxr-2.0.0
39+
- dotnet-runtime-2.0.0
40+
- dotnet-sdk-2.0.0
41+
- python: 3.4
42+
env:
43+
- BUILD_OPTS=--xplat
44+
- NUNIT_PATH=~/.nuget/packages/nunit.consolerunner/3.*/tools/nunit3-console.exe
45+
addons:
46+
apt:
47+
sources:
48+
- sourceline: deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main
49+
key_url: https://packages.microsoft.com/keys/microsoft.asc
50+
- sourceline: deb http://download.mono-project.com/repo/ubuntu trusty main
51+
key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA6A19B38D3D831EF
52+
packages:
53+
- mono-devel
54+
- ca-certificates-mono
55+
- dotnet-hostfxr-2.0.0
56+
- dotnet-runtime-2.0.0
57+
- dotnet-sdk-2.0.0
58+
- python: 3.5
59+
env:
60+
- BUILD_OPTS=--xplat
61+
- NUNIT_PATH=~/.nuget/packages/nunit.consolerunner/3.*/tools/nunit3-console.exe
62+
addons:
63+
apt:
64+
sources:
65+
- sourceline: deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main
66+
key_url: https://packages.microsoft.com/keys/microsoft.asc
67+
- sourceline: deb http://download.mono-project.com/repo/ubuntu trusty main
68+
key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA6A19B38D3D831EF
69+
packages:
70+
- mono-devel
71+
- ca-certificates-mono
72+
- dotnet-hostfxr-2.0.0
73+
- dotnet-runtime-2.0.0
74+
- dotnet-sdk-2.0.0
75+
- python: 3.6
76+
env:
77+
- BUILD_OPTS=--xplat
78+
- NUNIT_PATH=~/.nuget/packages/nunit.consolerunner/3.*/tools/nunit3-console.exe
79+
addons:
80+
apt:
81+
sources:
82+
- sourceline: deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main
83+
key_url: https://packages.microsoft.com/keys/microsoft.asc
84+
- sourceline: deb http://download.mono-project.com/repo/ubuntu trusty main
85+
key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA6A19B38D3D831EF
86+
packages:
87+
- mono-devel
88+
- ca-certificates-mono
89+
- dotnet-hostfxr-2.0.0
90+
- dotnet-runtime-2.0.0
91+
- dotnet-sdk-2.0.0
92+
- python: "3.7-dev"
93+
env:
94+
- BUILD_OPTS=--xplat
95+
- NUNIT_PATH=~/.nuget/packages/nunit.consolerunner/3.*/tools/nunit3-console.exe
96+
addons:
97+
apt:
98+
sources:
99+
- sourceline: deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main
100+
key_url: https://packages.microsoft.com/keys/microsoft.asc
101+
- sourceline: deb http://download.mono-project.com/repo/ubuntu trusty main
102+
key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA6A19B38D3D831EF
103+
packages:
104+
- mono-devel
105+
- ca-certificates-mono
106+
- dotnet-hostfxr-2.0.0
107+
- dotnet-runtime-2.0.0
108+
- dotnet-sdk-2.0.0
15109

110+
- python: 2.7
111+
env:
112+
- BUILD_OPTS=
113+
- NUNIT_PATH=./packages/NUnit.*/tools/nunit3-console.exe
114+
- python: 3.3
115+
env:
116+
- BUILD_OPTS=
117+
- NUNIT_PATH=./packages/NUnit.*/tools/nunit3-console.exe
118+
- python: 3.4
119+
env:
120+
- BUILD_OPTS=
121+
- NUNIT_PATH=./packages/NUnit.*/tools/nunit3-console.exe
122+
- python: 3.5
123+
env:
124+
- BUILD_OPTS=
125+
- NUNIT_PATH=./packages/NUnit.*/tools/nunit3-console.exe
126+
- python: 3.6
127+
env:
128+
- BUILD_OPTS=
129+
- NUNIT_PATH=./packages/NUnit.*/tools/nunit3-console.exe
130+
- python: "3.7-dev"
131+
env:
132+
- BUILD_OPTS=
133+
- NUNIT_PATH=./packages/NUnit.*/tools/nunit3-console.exe
134+
allow_failures:
135+
- python: "3.7-dev"
136+
env:
137+
- BUILD_OPTS=
138+
- NUNIT_PATH=./packages/NUnit.*/tools/nunit3-console.exe
139+
- python: "3.7-dev"
140+
env:
141+
- BUILD_OPTS=--xplat
142+
- NUNIT_PATH=~/.nuget/packages/nunit.consolerunner/3.*/tools/nunit3-console.exe
16143
env:
17144
global:
18145
- LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so
@@ -23,8 +150,8 @@ env:
23150
addons:
24151
apt:
25152
sources:
26-
- mono
27-
- mono-libtiff-compat
153+
- sourceline: deb http://download.mono-project.com/repo/ubuntu trusty main
154+
key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA6A19B38D3D831EF
28155
packages:
29156
- mono-devel
30157
- ca-certificates-mono
@@ -37,11 +164,11 @@ before_install:
37164
install:
38165
- pip install --upgrade setuptools # TEMP - due to setuptools 36.2.0 bug
39166
- pip install --upgrade -r requirements.txt
40-
- coverage run setup.py install
167+
- coverage run setup.py install $BUILD_OPTS
41168

42169
script:
43170
- python -m pytest
44-
- mono ./packages/NUnit.*/tools/nunit3-console.exe src/embed_tests/bin/Python.EmbeddingTest.dll
171+
- mono $NUNIT_PATH src/embed_tests/bin/Python.EmbeddingTest.dll
45172

46173
after_script:
47174
# Uncomment if need to geninterop, ie. py37 final

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ This document follows the conventions laid out in [Keep a CHANGELOG][].
88
## [unreleased][]
99

1010
### Added
11+
- Added new build system (pythonnet.15.sln) based on dotnetcore-sdk/xplat(crossplatform msbuild).
12+
Currently there two side-by-side build systems that produces the same output (net40) from the same sources.
13+
After a some transition time, current (mono/ msbuild 14.0) build system will be removed.
14+
- NUnit upgraded to 3.7 (eliminates travis-ci random bug)
1115
- Added `clr.GetClrType` (#432, #433)
1216
- Allowed passing `None` for nullable args (#460)
1317
- Added keyword arguments based on C# syntax for calling CPython methods (#461)

NuGet.config

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<configuration>
3+
<packageSources>
4+
<add key="dot-net MyGet Feed" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" protocolVersion="3"/>
5+
<add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
6+
</packageSources>
7+
</configuration>

appveyor.yml

+15-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
version: '{branch}-{build}'
22
build: off
33

4+
image:
5+
- Visual Studio 2017
6+
47
platform:
58
- x86
69
- x64
@@ -12,6 +15,16 @@ environment:
1215
CODECOV_ENV: PYTHON_VERSION, PLATFORM
1316

1417
matrix:
18+
- PYTHON_VERSION: 2.7
19+
BUILD_OPTS: --xplat
20+
- PYTHON_VERSION: 3.3
21+
BUILD_OPTS: --xplat
22+
- PYTHON_VERSION: 3.4
23+
BUILD_OPTS: --xplat
24+
- PYTHON_VERSION: 3.5
25+
BUILD_OPTS: --xplat
26+
- PYTHON_VERSION: 3.6
27+
BUILD_OPTS: --xplat
1528
- PYTHON_VERSION: 2.7
1629
- PYTHON_VERSION: 3.3
1730
- PYTHON_VERSION: 3.4
@@ -29,6 +42,7 @@ init:
2942

3043
install:
3144
- pip install --upgrade -r requirements.txt --quiet
45+
- choco install vswhere -y
3246

3347
# Install OpenCover. Can't put on `packages.config`, not Mono compatible
3448
- .\tools\nuget\nuget.exe install OpenCover -OutputDirectory packages -Verbosity quiet
@@ -37,7 +51,7 @@ build_script:
3751
# Create clean `sdist`. Only used for releases
3852
- python setup.py --quiet sdist
3953
# Build `wheel` with coverage of `setup.py`
40-
- coverage run setup.py bdist_wheel
54+
- coverage run setup.py bdist_wheel %BUILD_OPTS%
4155

4256
test_script:
4357
- pip install --no-index --find-links=.\dist\ pythonnet

ci/appveyor_run_tests.ps1

+6-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@ if ($FALSE -and $env:PLATFORM -eq "x86"){
1111
# Executable paths for OpenCover
1212
# Note if OpenCover fails, it won't affect the exit codes.
1313
$OPENCOVER = Resolve-Path .\packages\OpenCover.*\tools\OpenCover.Console.exe
14-
$CS_RUNNER = Resolve-Path .\packages\NUnit.*\tools\"$CS_RUNNER".exe
14+
if ($env:BUILD_OPTS -eq "--xplat"){
15+
$CS_RUNNER = Resolve-Path $env:USERPROFILE\.nuget\packages\nunit.consolerunner\*\tools\"$CS_RUNNER".exe
16+
}
17+
else{
18+
$CS_RUNNER = Resolve-Path .\packages\NUnit.*\tools\"$CS_RUNNER".exe
19+
}
1520
$PY = Get-Command python
1621

1722
# Can't use ".\build\*\Python.EmbeddingTest.dll". Missing framework files.

0 commit comments

Comments
 (0)