diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5da23742762e..8296c31460e7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,6 +11,9 @@ jobs: strategy: fail-fast: false matrix: + platform: [x86_64-linux-gnu, aarch64-linux-gnu] + #target: [xtensa-softmmu, riscv32-softmmu] + include: #- platform: macos-x86_64 # runs_on: macos-12 @@ -20,15 +23,15 @@ jobs: # 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 + - platform: x86_64-linux-gnu runs_on: ubuntu-20.04 - # Used the blank docker-hub's image instead of the heavy GitHub's one for correct croossbuild prerequisites + # 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: aarch64-linux-gnu + runs_on: ubuntu-20.04 + # Used the minimal docker-hub's image instead of the heavy GitHub's one for correct croossbuild prerequisites container: ubuntu:20.04 #extra_configure_args: "--disable-gtk --cross-prefix=aarch64-linux-gnu-" shell: bash -e {0} @@ -44,8 +47,13 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Install prerequisites (Linux x86_64) + if: ${{ matrix.platform == 'x86_64-linux-gnu' }} + run: | + ./.github/workflows/scripts/prerequisites-linux-amd64.sh + - name: Install prerequisites (Linux arm64) - if: ${{ matrix.platform == 'linux-arm64' }} + if: ${{ matrix.platform == 'aarch64-linux-gnu' }} run: | ./.github/workflows/scripts/prerequisites-cross-linux-arm64.sh @@ -93,8 +101,14 @@ jobs: # 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 (Linux x86_64) + if: ${{ matrix.platform == 'x86_64-linux-gnu' }} + run: | + ./.github/workflows/scripts/configure-cross-linux-arm64.sh + - name: Configure (Linux arm64) - if: ${{ matrix.platform == 'linux-arm64' }} + if: ${{ matrix.platform == 'aarch64-linux-gnu' }} run: | ./.github/workflows/scripts/configure-cross-linux-arm64.sh diff --git a/.github/workflows/scripts/configure-cross-linux-arm64.sh b/.github/workflows/scripts/configure-cross-linux-arm64.sh index 0c55b6004030..70aa9897f531 100755 --- a/.github/workflows/scripts/configure-cross-linux-arm64.sh +++ b/.github/workflows/scripts/configure-cross-linux-arm64.sh @@ -4,16 +4,16 @@ sed -z -i "s/\(.*dependency('libgcrypt'.*method: '\)config-tool\('.*\)/\1pkg-config\2/g" -- meson.build ./configure \ - --prefix=$PWD/install/qemu \ - --target-list=xtensa-softmmu \ - --with-pkgversion="esp_13.1.1_20231107" \ - --enable-gcrypt \ - --enable-slirp \ - --disable-user \ + --cross-prefix=aarch64-linux-gnu- \ --disable-capstone \ - --disable-vnc \ - --disable-sdl \ --disable-docs \ --disable-gtk \ - --cross-prefix=aarch64-linux-gnu- \ + --disable-sdl \ + --disable-user \ + --disable-vnc \ + --enable-gcrypt \ + --enable-slirp \ + --prefix=$PWD/install/qemu \ + --target-list=xtensa-softmmu \ + --with-pkgversion="esp_13.1.1_20231107" \ || { cat meson-logs/meson-log.txt && false; } diff --git a/.github/workflows/scripts/configure-linux-amd64.sh b/.github/workflows/scripts/configure-linux-amd64.sh new file mode 100755 index 000000000000..8fb0ca4e5245 --- /dev/null +++ b/.github/workflows/scripts/configure-linux-amd64.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +#FIXME ? disable-docs + +./configure \ + --disable-capstone \ + --disable-docs \ + --disable-gtk \ + --disable-sdl \ + --disable-user \ + --disable-vnc \ + --enable-gcrypt \ + --enable-slirp \ + --extra-cflags=-Werror \ + --prefix=$PWD/install/qemu \ + --target-list=xtensa-softmmu \ + --with-pkgversion="esp_13.1.1_20231107" \ +|| { cat meson-logs/meson-log.txt && false; } diff --git a/.github/workflows/scripts/prerequisites-cross-linux-arm64.sh b/.github/workflows/scripts/prerequisites-cross-linux-arm64.sh index 87c2989c2496..4155b1a7d340 100755 --- a/.github/workflows/scripts/prerequisites-cross-linux-arm64.sh +++ b/.github/workflows/scripts/prerequisites-cross-linux-arm64.sh @@ -40,4 +40,4 @@ apt-get update \ && : # ? -/usr/bin/pip3 install meson +/usr/bin/pip3 install meson==1.2.3 diff --git a/.github/workflows/scripts/prerequisites-linux-amd64.sh b/.github/workflows/scripts/prerequisites-linux-amd64.sh new file mode 100755 index 000000000000..98c66eca9cf4 --- /dev/null +++ b/.github/workflows/scripts/prerequisites-linux-amd64.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +export DEBIAN_FRONTEND="noninteractive" + +apt-get update \ +&& apt-get install -y -q --no-install-recommends \ + build-essential \ + git \ + libgcrypt-dev \ + libglib2.0-dev \ + libpixman-1-dev \ + libslirp-dev \ + ninja-build \ + python3-pip \ + wget \ + zlib1g-dev \ +&& : + +/usr/bin/pip3 install meson==1.2.3 diff --git a/.github/workflows/scripts/prerequisites-linux-arm64.sh b/.github/workflows/scripts/prerequisites-linux-arm64.sh index 88f11219deaa..46b74d04f649 100755 --- a/.github/workflows/scripts/prerequisites-linux-arm64.sh +++ b/.github/workflows/scripts/prerequisites-linux-arm64.sh @@ -3,7 +3,7 @@ export DEBIAN_FRONTEND="noninteractive" apt-get update \ -&& apt-get install -y -q \ +&& apt-get install -y -q --no-install-recommends\ build-essential \ git \ libgcrypt-dev \ @@ -16,4 +16,4 @@ apt-get update \ zlib1g-dev \ && : -/usr/bin/pip3 install meson +/usr/bin/pip3 install meson==1.2.3