-
Notifications
You must be signed in to change notification settings - Fork 14
138 lines (134 loc) · 7.14 KB
/
pythonpackage.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
name: Python tests
on: [push, pull_request]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ['3.10', '3.11', '3.12', '3.9', '3.13']
os: [ubuntu-latest]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Work out subversion version
run: |
VER=$(curl -L https://downloads.apache.org/subversion | grep -oP 'subversion-(\K[0-9]+\.[0-9]+\.[0-9]+)' | head -1)
echo "SVN_VERSION=$VER" >> $GITHUB_ENV
- name: Install dependencies (apt)
run: |
sudo apt update
sudo apt install libapr1-dev libaprutil1-dev libdb5.3-dev liblz4-dev libsasl2-dev libperl-dev libserf-dev libsqlite3-dev libtool python-all-dev libneon27-gnutls-dev libutf8proc-dev
if: "matrix.os == 'ubuntu-latest'"
- name: Install dependencies (brew)
run: |
brew install subversion apr-util apr pkg-config utf8proc lz4
echo "$(brew --prefix)/opt/subversion/libexec" >> $GITHUB_PATH
echo "$(brew --prefix)/opt/apr-util/bin" >> $GITHUB_PATH
echo "$(brew --prefix)/opt/apr/bin" >> $GITHUB_PATH
echo "$(brew --prefix)/opt/pkg-config/bin" >> $GITHUB_PATH
if: "matrix.os == 'macos-latest'"
- name: Install dependencies (Windows)
run: |
vcpkg install apr:x64-windows apr-util:x64-windows sqlite3:x64-windows zlib:x64-windows utf8proc:x64-windows openssl:x64-windows berkeleydb:x64-windows lz4:x64-windows python2:x64-windows expat:x64-windows lz4:x64-windows
vcpkg integrate install
echo "APR_INCLUDE_DIR=$env:VCPKG_INSTALLATION_ROOT/packages/apr_x64-windows/include" >> $env:GITHUB_ENV
echo "APR_LINK_FLAGS=/LIBPATH:$env:VCPKG_INSTALLATION_ROOT/packages/apr_x64-windows/lib libapr-1.lib" >> $env:GITHUB_ENV
Get-ChildItem -Path "$env:VCPKG_INSTALLATION_ROOT/packages/apr_x64-windows/lib/*" -Recurse -Filter "*.dll" | Copy-Item -Destination "$env:GITHUB_WORKSPACE/subvertpy"
echo "APU_INCLUDE_DIR=$env:VCPKG_INSTALLATION_ROOT/packages/apr-util_x64-windows/include" >> $env:GITHUB_ENV
Get-ChildItem -Path "$env:VCPKG_INSTALLATION_ROOT/packages/apr-util_x64-windows/lib/*" -Recurse -Filter "*.dll" | Copy-Item -Destination "$env:GITHUB_WORKSPACE/subvertpy"
echo "APU_LINK_FLAGS=/LIBPATH:$env:VCPKG_INSTALLATION_ROOT/packages/apr-util_x64-windows/lib libaprutil-1.lib" >> $env:GITHUB_ENV
if: "matrix.os == 'windows-latest'"
- name: Locate & Exec vcvarsall.bat
run: |
$VCVarsAll = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -find "VC\Auxiliary\Build\vcvarsall.bat"
if (-not $VCVarsAll) {
Write-Error "vcvarsall.bat not found" -Category NotInstalled
exit 1
}
$Token = "#####ENV#####"
$enc = [Console]::OutputEncoding
[Console]::OutputEncoding = [Text.Encoding]::Unicode
$VCVarsAllResult = cmd /U /C "`"$VCVarsAll`" x64 && echo $TOKEN&& set"
[Console]::OutputEncoding = $enc
$TokenIndex = $VCVarsAllResult.IndexOf($Token)
if ($TokenIndex -eq -1) {
Write-Error "vcvarsall failed."
exit 1
}
$VCVarsAllResult | Select-Object -Skip ($TokenIndex + 1) | ForEach-Object {
$k, $v = $_ -split "=", 2
Write-Output "$k=$v" >> $GITHUB_ENV
}
shell: pwsh
if: "matrix.os == 'windows-latest'"
- name: Install serf (Windows)
run: |
curl -L https://downloads.apache.org/serf/serf-1.3.9.zip -o serf.zip
unzip -q serf.zip
cd serf-1.3.9
curl -L http://prdownloads.sourceforge.net/scons/scons-local-2.3.0.zip -o scons-local.zip
unzip -q scons-local.zip
python2 ./scons.py --debug=stacktrace
if: "matrix.os == 'windows-latest'"
continue-on-error: true
- name: Add msbuild to PATH
uses: microsoft/[email protected]
if: "matrix.os == 'windows-latest'"
- name: Install Subversion (Windows)
run: |
curl -L https://downloads.apache.org/subversion/subversion-$env:SVN_VERSION.zip -o subversion.zip
unzip -q subversion.zip
cd subversion-$env:SVN_VERSION
cp $env:VCPKG_INSTALLATION_ROOT/packages/expat_x64-windows/include/* $env:VCPKG_INSTALLATION_ROOT/packages/apr-util_x64-windows/include
cp $env:VCPKG_INSTALLATION_ROOT/packages/expat_x64-windows/lib/* $env:VCPKG_INSTALLATION_ROOT/packages/apr-util_x64-windows/lib
cp $env:VCPKG_INSTALLATION_ROOT/packages/expat_x64-windows/bin/* $env:VCPKG_INSTALLATION_ROOT/packages/apr-util_x64-windows/bin
python2 gen-make.py --debug --vsnet-version=2019 --with-apr=$env:VCPKG_INSTALLATION_ROOT/packages/apr_x64-windows --with-apr-util=$env:VCPKG_INSTALLATION_ROOT/packages/apr-util_x64-windows --with-zlib=$env:VCPKG_INSTALLATION_ROOT/packages/zlib_x64-windows --with-sqlite=$env:VCPKG_INSTALLATION_ROOT/packages/sqlite3_x64-windows
msbuild subversion_vcnet.sln /t:__MORE__ /p:Configuration=Release
Copy-Item -Recurse -Path $env:GITHUB_WORKSPACE/subversion-$env::SVN_VERSION/subversion/include -Destination $env:VCPKG_INSTALLATION_ROOT/installed/x64-windows/include/subversion-1
Get-ChildItem -Path "$env:GITHUB_WORKSPACE/subversion-$env:SVN_VERSION/Release/subversion/libsvn_*/*" -Recurse | Copy-Item -Destination "$env:VCPKG_INSTALLATION_ROOT/installed/x64-windows/lib"
Get-ChildItem -Path "$env:GITHUB_WORKSPACE/subversion-$env:SVN_VERSION/Release/subversion/libsvn_*/*" -Recurse -Filter "*.dll" | Copy-Item -Destination "$env:GITHUB_WORKSPACE/subvertpy"
echo "SVN_HEADER_PATH=$env:VCPKG_INSTALLATION_ROOT/installed/x64-windows/include/subversion-1" >> $env:GITHUB_ENV
echo "SVN_LIBRARY_PATH=$env:VCPKG_INSTALLATION_ROOT/installed/x64-windows/lib" >> $env:GITHUB_ENV
if: "matrix.os == 'windows-latest'"
- name: Install Subversion (Linux)
run: |
curl -L https://downloads.apache.org/subversion/subversion-$SVN_VERSION.tar.gz -o subversion.tar.gz
tar xfz subversion.tar.gz
pushd subversion-$SVN_VERSION
./configure
make
sudo make install
sudo ldconfig -v
popd
if: "matrix.os == 'ubuntu-latest'"
- name: Install other dependencies
run: |
python -m pip install --upgrade pip
pip install -U pip coverage codecov fastimport setuptools setuptools_rust
- name: Style checks
run: |
pip install ".[dev]"
python -m ruff check subvertpy tests examples
continue-on-error: true
- name: Build (Linux)
run: |
pkg-config --cflags --libs apr-1 apr-util-1
pkg-config --cflags --libs libsvn_client
python setup.py build_ext -i
if: "matrix.os == 'ubuntu-latest'"
- name: Build (Mac OS X)
run: |
python setup.py build_ext -i
if: "matrix.os == 'macos-latest'"
- name: Build (Windows)
run: |
python setup.py build_ext -i
- name: Coverage test suite run
run: |
python -m coverage run -p -m unittest tests.test_suite
- name: Check rust formatting
run: |
cargo fmt --all -- --check