-
Notifications
You must be signed in to change notification settings - Fork 57
130 lines (128 loc) · 4.56 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
name: 'build'
on: [push, pull_request]
jobs:
build:
env:
MSYSTEM: MINGW64
CHERE_INVOKING: 'yes'
MSYS: 'winsymlinks:native'
strategy:
fail-fast: false
matrix:
include:
- platform: macos-x86_64
runs_on: macos-12
extra_configure_args: "--disable-cocoa --disable-coreaudio"
shell: bash -e {0}
# - platform: macos-arm64
# runs_on: macos-latest-xlarge
# extra_configure_args: "--disable-cocoa --disable-coreaudio"
# shell: bash -e {0}
- platform: linux-amd64
runs_on: ubuntu-20.04
# Building with -Werror only on Linux as that breaks some features detection
# in meson on macOS.
extra_configure_args: "--extra-cflags=-Werror --disable-gtk"
shell: bash -e {0}
- platform: linux-arm64
runs_on: ubuntu-20.04
extra_configure_args: "--disable-gtk --cross-prefix=aarch64-linux-gnu-"
shell: bash -e {0}
- platform: win-x86_64
runs_on: windows-2022
extra_configure_args: ""
shell: msys2 {0}
runs-on: ${{ matrix.runs_on }}
defaults:
run:
shell: ${{ matrix.shell }}
steps:
- uses: actions/checkout@v3
- name: Install prerequisites (Linux arm64)
if: ${{ matrix.platform == 'linux-arm64' }}
env:
DEBIAN_FRONTEND: "noninteractive"
run: |
sudo cat /etc/apt/apt-mirrors.txt
sudo sed -i '/azure\.archive\.ubuntu\.com/d' /etc/apt/apt-mirrors.txt
sudo sed -i '/security\.ubuntu\.com/d' /etc/apt/apt-mirrors.txt
sudo cat /etc/apt/apt-mirrors.txt
sudo dpkg --add-architecture arm64
sudo apt-get update || true
sudo apt-get install -q --no-install-recommends \
ninja-build \
crossbuild-essential-arm64 \
binutils-dev:arm64 \
libgcrypt-dev:arm64 \
libglib2.0-dev:arm64 \
libpixman-1-dev:arm64 \
libslirp-dev:arm64
- name: Install prerequisites (Linux x86_64)
if: ${{ matrix.platform == 'linux-amd64' }}
env:
DEBIAN_FRONTEND: "noninteractive"
run: |
sudo apt-get install -y -q --no-install-recommends \
binutils-dev \
ninja-build \
libgcrypt-dev \
libglib2.0-dev \
libpixman-1-dev \
libslirp-dev
- name: Install prerequisites (macOS)
if: ${{ matrix.platform == 'macos-x86_64' || matrix.platform == 'macos-arm64' }}
run: |
brew install \
ninja \
libgcrypt \
glib \
pixman \
pkg-config
- name: Install prerequisites (Windows)
if : ${{ matrix.platform == 'win-x86_64' }}
uses: msys2/setup-msys2@v2
with:
cache: true
msystem: mingw64
install: >-
mingw-w64-x86_64-python
mingw-w64-x86_64-ninja
mingw-w64-x86_64-gcc
mingw-w64-x86_64-glib2
mingw-w64-x86_64-pkg-config
mingw-w64-x86_64-pixman
mingw-w64-x86_64-libgcrypt
mingw-w64-x86_64-libslirp
diffutils git
- name: Patch meson.build (macOS)
if: ${{ matrix.platform == 'macos-x86_64' || matrix.platform == 'macos-arm64' }}
run: |
sed -i "s/project('qemu', \['c'\],/project('qemu', ['c', 'objc'],/" meson.build
- name: Configure
run: |
./configure \
--prefix=$PWD/install/qemu \
--target-list=xtensa-softmmu \
--with-pkgversion="${{ github.ref_name }}" \
--enable-gcrypt \
--enable-slirp \
--disable-user \
--disable-capstone \
--disable-vnc \
--disable-sdl \
--disable-docs \
${{ matrix.extra_configure_args }} || (cat meson-logs/meson-log.txt && false)
- name: Build
run: |
ninja -C build
- name: Package distribution archive
run: |
ninja -C build install
find install/qemu/share/qemu -maxdepth 1 -mindepth 1 -not -name 'esp*.bin' -exec rm -rf {} \;
mkdir -p dist
export DIST_DIR=${PWD}/dist
export ARCHIVE_NAME=qemu-${{ github.ref_name }}-${{ matrix.platform }}.tar.bz2
cd install
tar cjvf ${DIST_DIR}/${ARCHIVE_NAME} qemu
cd ${DIST_DIR}
shasum -a 256 *.tar.bz2 > ${ARCHIVE_NAME}.sha256