-
-
Notifications
You must be signed in to change notification settings - Fork 113
135 lines (110 loc) · 4.4 KB
/
windows.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
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
name: Windows
jobs:
gvsbuild:
name: build GTK binaries with gvsbuild
runs-on: windows-2022
env:
# git revision of gvsbuild we use for to build GLib and the other dependencies
gvsbuildref: bb1d2691d25c7bb1239118a907c8e21b1aa24e03
# bump this number if you want to force a rebuild of gvsbuild with the same revision
gvsbuildupdate: 1
outputs:
cachekey: ${{ steps.output.outputs.cachekey }}
steps:
# this is needed for the cache restore to work
- name: (GTK binaries) create dir
run: mkdir C:\gtk-build\gtk\x64\release
- name: (GTK binaries) get from cache
uses: actions/cache@v4
id: cache
with:
path: C:\gtk-build\gtk\x64\release\**
key: gvsbuild-${{ env.gvsbuildupdate }}-${{ env.gvsbuildref }}
- name: (GTK binaries) checkout gvsbuild
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
repository: wingtk/gvsbuild
ref: ${{ env.gvsbuildref }}
path: gvsbuild
# Temporarily move the preinstalled git, it causes errors related to cygwin.
- name: (GTK binaries) move git binary
if: steps.cache.outputs.cache-hit != 'true'
run: |
move "C:\Program Files\Git\usr\bin" "C:\Program Files\Git\usr\notbin"
move "C:\Program Files\Git\bin" "C:\Program Files\Git\notbin"
shell: cmd
- name: (GTK binaries) install gvsbuild
if: steps.cache.outputs.cache-hit != 'true'
working-directory: gvsbuild
run: python -m pip install .
- name: (GTK binaries) run gvsbuild
if: steps.cache.outputs.cache-hit != 'true'
run: gvsbuild build --platform=x64 --vs-ver=17 --msys-dir=C:\msys64 gtk3 graphene
- name: (GTK binaries) restore git binary
if: steps.cache.outputs.cache-hit != 'true'
run: |
move "C:\Program Files\Git\usr\notbin" "C:\Program Files\Git\usr\bin"
move "C:\Program Files\Git\notbin" "C:\Program Files\Git\bin"
shell: cmd
- name: (GTK binaries) output cache key
id: output
run: echo "::set-output name=cachekey::gvsbuild-${{ env.gvsbuildupdate }}-${{ env.gvsbuildref }}"
build:
name: build gtk-rs on Windows
runs-on: windows-2022
needs: gvsbuild
strategy:
matrix:
conf:
- { name: "cairo", test: true, args: "--features png,pdf,svg,ps,use_glib,v1_16,freetype,script,win32-surface" }
- { name: "gdk-pixbuf", test: true, args: "--features v2_42" }
- { name: "gio", test: true, args: "--features v2_80" }
- { name: "glib", test: true, args: "--features v2_80" }
- { name: "glib-build-tools", test: false, args: "" }
- { name: "graphene", test: false, args: "" }
- { name: "pango", test: true, args: "--features v1_52" }
- { name: "pangocairo", test: true, args: "" }
- { name: "examples", test: false, args: "--bins --examples --all-features" }
steps:
# this is needed for the cache restore to work
- name: Create GTK binaries dir
run: mkdir C:\gtk-build\gtk\x64\release
- name: Get GTK binaries from cache
uses: actions/cache@v4
id: cache
with:
path: C:\gtk-build\gtk\x64\release\**
key: ${{needs.gvsbuild.outputs.cachekey}}
- name: Set up env
run: |
echo "PKG_CONFIG=C:\gtk-build\gtk\x64\release\bin\pkgconf.exe" >> $GITHUB_ENV
echo "C:\gtk-build\gtk\x64\release\bin" >> $GITHUB_PATH
shell: bash
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
- name: test
uses: actions-rs/cargo@v1
with:
command: test
args: --manifest-path ${{ matrix.conf.name }}/Cargo.toml ${{ matrix.conf.args }}
if: matrix.conf.test
- name: test sys
uses: actions-rs/cargo@v1
with:
command: test
args: --manifest-path ${{ matrix.conf.name }}/sys/Cargo.toml ${{ matrix.conf.args }}
if: matrix.conf.name != 'examples' && matrix.conf.name != 'glib-build-tools'
- name: build
uses: actions-rs/cargo@v1
with:
command: build
args: --manifest-path ${{ matrix.conf.name }}/Cargo.toml ${{ matrix.conf.args }}