-
Notifications
You must be signed in to change notification settings - Fork 94
163 lines (148 loc) · 5.71 KB
/
ci.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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
name: CI
on:
push:
branches: [master, trying, staging]
pull_request:
branches: [master, trying, staging]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
env:
RUST_BACKTRACE: 1
jobs:
typos:
name: Check spelling using Typos
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Check spelling
uses: crate-ci/typos@6802cc60d4e7f78b9d5454f6cf3935c042d5e1e3 # v1.26.0
gdal:
strategy:
matrix:
version:
- 3.9.3
- 3.8.5
- 3.7.3
- 3.6.4
- 3.5.3
- 3.4.3
runs-on: ubuntu-latest
container:
image: ghcr.io/osgeo/gdal:ubuntu-full-${{ matrix.version }}
name: "ci gdal-${{ matrix.version }}"
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install build deps
shell: bash
run: |
curl -LO https://apache.jfrog.io/artifactory/arrow/ubuntu/apache-arrow-apt-source-latest-$(grep -F VERSION_CODENAME /etc/os-release | cut -d= -f2).deb
apt-get update -y || true
apt-get install gnupg -y
dpkg -i apache-arrow-apt-source-latest-$(grep -F VERSION_CODENAME /etc/os-release | cut -d= -f2).deb
apt-get update -y
apt-get install build-essential curl pkg-config libclang-dev -y
curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused -fsSL "https://sh.rustup.rs" | sh -s -- --profile minimal --default-toolchain none -y
echo "${CARGO_HOME:-$HOME/.cargo}/bin" >> $GITHUB_PATH
- name: Setup building
run: |
export CC="clang-9"
export CXX="clang++-9"
- name: Install stable
run: |
rustup install --no-self-update --profile minimal stable
rustup component add rustfmt clippy
- name: Check with Rustfmt
run: cargo fmt --all --check
- name: Check with Clippy
run: cargo clippy --all-targets -- -D warnings
- name: Check with Clippy (--all-features)
run: cargo clippy --all-targets --features "default bindgen array" -- -D warnings
- name: Build
run: cargo build
- name: Run tests
run: cargo test
- name: Build (--all-features)
run: cargo build --features "default bindgen array"
- name: Run tests (--all-features)
run: cargo test --features "default bindgen array" -- --nocapture
ubuntu_lts:
name: "ci ubuntu-lts"
runs-on: "ubuntu-22.04"
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install build deps
shell: bash
run: |
sudo apt-get update -y
sudo apt-get install libgdal-dev gdal-bin build-essential curl pkg-config libclang-dev valgrind -y
curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused -fsSL "https://sh.rustup.rs" | sh -s -- --profile minimal --default-toolchain none -y
echo "${CARGO_HOME:-$HOME/.cargo}/bin" >> $GITHUB_PATH
- name: Install stable
run: |
rustup install --no-self-update --profile minimal stable
rustup component add rustfmt clippy
- name: Check with Rustfmt
run: cargo fmt --all --check
- name: Check with Clippy
run: cargo clippy --all-targets -- -D warnings
- name: Check with Clippy (--all-features)
run: cargo clippy --all-targets --features "default bindgen array" -- -D warnings
- name: Build
run: cargo build
- name: Run tests
run: cargo test
- name: Build (--all-features)
run: cargo build --features "default bindgen array"
- name: Run tests (--all-features)
run: cargo test --features "default bindgen array" -- --nocapture
- name: Install cargo-valgrind
run: cargo install cargo-valgrind
- name: Run --lib tests under valgrind
run: cargo valgrind test --lib
gdal_static:
name: "ci gdal-static"
strategy:
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-13 # x86_64
- macos-14 # aarch64
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: true
- name: Install stable
run: |
rustup install --no-self-update --profile minimal stable
rustup component add rustfmt clippy
# we need to have the sqlite binary in path for building proj from source
- name: Install Sqlite (Windows)
if: runner.os == 'Windows'
run: |
choco install sqlite
echo "C:\ProgramData\chocolatey\lib\SQLite\tools" >> $GITHUB_PATH
sqlite3 --version
- name: Install Sqlite (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y sqlite3
# use the minimal driver set for clippy as the other
# drivers do not change the rust code
# enable `driver_sqlite` to force statically linking libsqlite3 for proj
- name: Check with Clippy (bundled)
run: cargo clippy --all-targets --features "gdal-sys/bundled gdal-src gdal-src/driver_sqlite" -- -D warnings
# we only build tests here as we have disabled features
# that are required for running tests
- name: Build bundled gdal (minimal features)
# we use cargo test --no-run here because
# tests do not pass due to missing libgeos but we want to have a complete build (including linking)
run: cargo test --features "gdal-sys/bundled gdal-src gdal-src/driver_sqlite" --no-run
- name: Test bundled (all features)
run: cargo test --features "gdal-sys/bundled gdal-src gdal-src/all_drivers gdal-src/geos_static"