-
Notifications
You must be signed in to change notification settings - Fork 37
179 lines (176 loc) · 6.01 KB
/
build.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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
---
name: CI Build
on:
push:
branches:
- master
- 'libwpe-*'
pull_request:
branches:
- master
jobs:
linux:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Debian Packages
run: |
sudo apt update
sudo apt install -y cmake flex libjson-glib-dev libxkbcommon-dev \
libegl1-mesa-dev libxml2-dev libxslt1-dev libyaml-dev llvm-dev \
libclang-dev libglib2.0-dev ninja-build
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.6'
- name: Python Package Cache
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('.github/workflows/ci.yml') }}
restore-keys: ${{ runner.os }}-pip-
- name: Install Python Packages
run: |
python -m pip install --upgrade pip setuptools wheel
HOTDOC_BUILD_C_EXTENSION=enabled pip install hotdoc meson==0.55
- name: Meson - Configure
run: |
mkdir -p _work/meson
meson _work/meson/build --prefix /usr -Dbuild-docs=true
- name: Meson - Build
run: |
ninja -C _work/meson/build
- name: Meson - Install
run: |
DESTDIR="$(pwd)/_work/meson/prefix" ninja -C _work/meson/build install
nm -D -P _work/meson/build/libwpe-1.0.so \
| awk '$2 == "T" || $2 == "U" {print $2 " " $1}' \
> _work/meson/symbols
(cd _work/meson/prefix && find lib -type f | sort) > _work/meson/files
- name: Meson - Archive Artifacts
uses: actions/upload-artifact@v4
with:
name: build-meson
path: _work/meson/prefix
- name: CMake - Configure
run: |
mkdir -p _work/cmake/build && cd $_
cmake -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_DOCS=ON ../../..
- name: CMake - Build
run: |
make -C _work/cmake/build -j$(nproc)
- name: CMake - Install
run: |
DESTDIR="$(pwd)/_work/cmake/prefix" make -C _work/cmake/build install
nm -D -P _work/cmake/build/libwpe-1.0.so \
| awk '$2 == "T" || $2 == "U" {print $2 " " $1}' \
> _work/cmake/symbols
(cd _work/cmake/prefix && find lib -type f | sort) > _work/cmake/files
- name: CMake - Archive Artifacts
uses: actions/upload-artifact@v4
with:
name: build-cmake
path: _work/cmake/prefix
- name: Check Installations
run: |
diff -u _work/{cmake,meson}/files
diff -u _work/{cmake,meson}/symbols
diff -Naur _work/{cmake,meson}/prefix/usr/include/
- name: Archive Documentation
uses: actions/upload-artifact@v4
with:
name: docs
path: _work/cmake/build/Documentation/html
publish:
if: ${{ github.ref == 'refs/heads/master' }}
needs: linux
runs-on: ubuntu-20.04
steps:
- name: Fetch Documentation
uses: actions/download-artifact@v4
with:
name: docs
path: html
- name: Deploy Documentation
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
force_orphan: true
publish_dir: html
windows:
runs-on: windows-latest
env:
PYTHONIOENCODING: "utf-8"
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.6'
- name: Setup MSVC
uses: seanmiddleditch/gha-setup-vsdevenv@v4
- name: Install Tools
run: |
choco install winflexbison3 ninja -y --no-progress --stop-on-first-failure
- name: Install Python Packages
run: |
python -m pip install --upgrade pip setuptools wheel
python -m pip install meson==0.56
- name: Meson - Configure
run: >+
meson _build
-Dbuild-docs=false
-Dlibxkbcommon:enable-docs=false
-Dlibxkbcommon:enable-wayland=false
-Dlibxkbcommon:enable-x11=false
-Dlibxkbcommon:enable-xkbregistry=false
- name: Meson - Build
run: |
ninja -C _build
analyze:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Dependencies
run: |
curl -sL https://apt.llvm.org/llvm-snapshot.gpg.key | \
sudo apt-key add -
sudo add-apt-repository \
'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main'
sudo apt update
sudo apt install -y flex libjson-glib-dev libxkbcommon-dev \
libegl1-mesa-dev libxml2-dev libxslt1-dev libyaml-dev llvm-14-dev \
libclang-14-dev libglib2.0-dev ninja-build clang-tools-14
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.6'
- name: Python Package Cache
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('.github/workflows/ci.yml') }}
restore-keys: ${{ runner.os }}-pip-
- name: Install Python Packages
run: |
python -m pip install --upgrade pip setuptools wheel
pip install scan-build meson==0.55
- name: Configure
run: |
meson _work --prefix /usr -Dbuild-docs=false
- name: Analyze
run: |
analyze-build \
--enable-checker nullability.NullablePassedToNonnull \
--enable-checker optin.cplusplus.UninitializedObject \
--enable-checker optin.cplusplus.VirtualCall \
--enable-checker optin.performance.Padding \
--enable-checker optin.portability.UnixAPI \
--enable-checker valist.CopyToSelf \
--enable-checker valist.Uninitialized \
--enable-checker valist.Unterminated \
--cdb _work/compile_commands.json \
-o _work/report