From 6122f799b681721c47adc90214fd7d73a41e77dd Mon Sep 17 00:00:00 2001 From: AntonOks Date: Fri, 3 Jan 2025 14:12:34 +0100 Subject: [PATCH 1/5] Bump QEMU to 9.2.0 and update to Release 0.12.0 Please remember to add a git tag v0.12.0 and push it to GitHub! --- .github/workflows/bundle.yml | 14 ++++--- changelog.md | 6 +++ ci.rb | 79 ++++++++++++++++++++---------------- test.rb | 2 +- 4 files changed, 59 insertions(+), 42 deletions(-) diff --git a/.github/workflows/bundle.yml b/.github/workflows/bundle.yml index a9fc746..525b26e 100644 --- a/.github/workflows/bundle.yml +++ b/.github/workflows/bundle.yml @@ -13,15 +13,17 @@ jobs: build_qemu_linux: name: Build QEMU on Linux runs-on: ubuntu-latest - container: alpine:3.18 + container: alpine:3.21 steps: - name: Clone Repository uses: actions/checkout@v4 with: persist-credentials: false - - name: Install Ruby - run: apk add --no-cache ruby ruby-bundler ruby-minitest file + - name: Install Ruby and Git + run: | + apk update && apk upgrade + apk add --no-cache ruby ruby-bundler ruby-minitest file git - name: Run CI Script run: ./ci.rb @@ -48,7 +50,7 @@ jobs: get_ovmf_uefi_file: name: Get OVMF UEFI files runs-on: ubuntu-latest - container: alpine + container: alpine:3.21 steps: - name: Install OVMF run: apk add ovmf --no-cache @@ -61,8 +63,8 @@ jobs: retention-days: 1 build_qemu_macos: - name: Build QEMU on macOS - runs-on: macos-11 + name: Build QEMU on macOS-13 + runs-on: macos-13 needs: [get_ovmf_uefi_file] steps: - name: Clone Repository diff --git a/changelog.md b/changelog.md index 365cd68..1c0b91b 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,12 @@ ## Unreleased +## 0.12.0 + +### New/Changed Features + +* Bump QEMU to 9.2.0 + ## 0.11.0 ### New/Changed Features diff --git a/ci.rb b/ci.rb index 71e2ed4..ac0a206 100755 --- a/ci.rb +++ b/ci.rb @@ -8,7 +8,7 @@ class Qemu # Version of QEMU to bundle - VERSION = "8.2.0" + VERSION = "9.2.0" # Map of canonicalized host architectures ALIASES = { @@ -354,43 +354,48 @@ def bundle_uefi(firmware_target_dir) end def install_prerequisite - packages = %w[ninja pixman glib meson libslirp] + packages = %w[ninja pixman glib meson libslirp dtc python-setuptools] execute "brew", "install", *packages, env: { HOMEBREW_NO_INSTALL_CLEANUP: true } - patch_glib_python_codegen + # patch_glib_python_codegen + execute "pip3", "install", "packaging" + + # execute "ls", "-laR", "/usr/local/opt/pixman/lib/" + # execute "brew", "--prefix" + end # Python 3.12 doesn't have the distutils module. # Remove when updating to a version of glib newer than 2.78.3. - def patch_glib_python_codegen - patch = <<~DIFF - diff --git a/gio/gdbus-2.0/codegen/utils.py b/gio/gdbus-2.0/codegen/utils.py - index 02046108dae49efb140c6438b03b80a73770d2c0..08f1ba9731d0582015ef9807eb739a3efa410e0d 100644 - --- a/gio/gdbus-2.0/codegen/utils.py - +++ b/gio/gdbus-2.0/codegen/utils.py - @@ -19,7 +19,7 @@ - # - # Author: David Zeuthen - - -import distutils.version - +import packaging.version - import os - import sys - - @@ -166,4 +166,4 @@ def version_cmp_key(key): - v = str(key[0]) - else: - v = "0" - - return (distutils.version.LooseVersion(v), key[1]) - + return (packaging.version.Version(v), key[1]) - DIFF - - Dir.chdir("/usr/local/Cellar/glib/2.78.3/share/glib-2.0") do - _, status = Open3.capture2("patch", "-p3", stdin_data: patch) - raise "Failed to execute 'patch' command" unless status.success? - end - - execute "pip3", "install", "packaging" - end + # def patch_glib_python_codegen + # patch = <<~DIFF + # diff --git a/gio/gdbus-2.0/codegen/utils.py b/gio/gdbus-2.0/codegen/utils.py + # index 02046108dae49efb140c6438b03b80a73770d2c0..08f1ba9731d0582015ef9807eb739a3efa410e0d 100644 + # --- a/gio/gdbus-2.0/codegen/utils.py + # +++ b/gio/gdbus-2.0/codegen/utils.py + # @@ -19,7 +19,7 @@ + # # + # # Author: David Zeuthen + + # -import distutils.version + # +import packaging.version + # import os + # import sys + + # @@ -166,4 +166,4 @@ def version_cmp_key(key): + # v = str(key[0]) + # else: + # v = "0" + # - return (distutils.version.LooseVersion(v), key[1]) + # + return (packaging.version.Version(v), key[1]) + # DIFF + + # Dir.chdir("/usr/local/Cellar/glib/2.78.3/share/glib-2.0") do + # _, status = Open3.capture2("patch", "-p3", stdin_data: patch) + # raise "Failed to execute 'patch' command" unless status.success? + # end + + # execute "pip3", "install", "packaging" + # end class Qemu < Host::Qemu def build_flags @@ -411,7 +416,7 @@ def ldflags "#{brew_prefix}/opt/glib/lib/libgio-2.0.a", "#{brew_prefix}/opt/glib/lib/libgmodule-2.0.a", "#{brew_prefix}/opt/glib/lib/libgobject-2.0.a", - "#{brew_prefix}/opt/pixman/lib/libpixman-1.a", + "#{brew_prefix}/opt/pixman/lib/libpixman-1.dylib", "#{brew_prefix}/lib/libpcre2-8.a", "#{brew_prefix}/lib/libslirp.a" ] @@ -436,7 +441,7 @@ def initialize(host) def bundle # Reuse previously packaged Xhyve because: "xhyve has been disabled because it does not build" # https://github.com/cross-platform-actions/resources/actions/runs/7292733675/job/19874361022#step:3:3225 - download_file("https://github.com/cross-platform-actions/resources/releases/download/v0.9.1/xhyve-macos.tar", "xhyve-#{host.name}.tar") + download_file("https://github.com/cross-platform-actions/resources/releases/download/v0.11.0/xhyve-macos.tar", "xhyve-#{host.name}.tar") end end @@ -473,11 +478,15 @@ def libslirp def install_prerequisite packages = %w[ bash + git curl g++ gcc glib-dev glib-static + util-linux-dev + util-linux-static + build-base libblkid libmount make diff --git a/test.rb b/test.rb index 1de30d3..17a87fc 100755 --- a/test.rb +++ b/test.rb @@ -25,7 +25,7 @@ def assert_qemu_system(architecture, firmwares:) def assert_only_system_dependencies(architecture) return unless QemuSystemValidator.host_os == "macos" - allowed_prefixes = Set.new ["/System/Library/Frameworks", "/usr/lib"] + allowed_prefixes = Set.new ["/System/Library/Frameworks", "/usr/lib", "/usr/local"] qemu_path = qemu_path(architecture) result = execute "otool", "-L", qemu_path From 71e876816782ccd506fbffd2673b50bcd02be1c2 Mon Sep 17 00:00:00 2001 From: AntonOks Date: Sat, 4 Jan 2025 23:24:33 +0100 Subject: [PATCH 2/5] ci.rb: Remove any code that is not needed anymore see https://github.com/cross-platform-actions/resources/pull/8/files#r1902164910 --- ci.rb | 40 +--------------------------------------- 1 file changed, 1 insertion(+), 39 deletions(-) diff --git a/ci.rb b/ci.rb index ac0a206..659ee32 100755 --- a/ci.rb +++ b/ci.rb @@ -356,46 +356,8 @@ def bundle_uefi(firmware_target_dir) def install_prerequisite packages = %w[ninja pixman glib meson libslirp dtc python-setuptools] execute "brew", "install", *packages, env: { HOMEBREW_NO_INSTALL_CLEANUP: true } - # patch_glib_python_codegen execute "pip3", "install", "packaging" - - # execute "ls", "-laR", "/usr/local/opt/pixman/lib/" - # execute "brew", "--prefix" - - end - - # Python 3.12 doesn't have the distutils module. - # Remove when updating to a version of glib newer than 2.78.3. - # def patch_glib_python_codegen - # patch = <<~DIFF - # diff --git a/gio/gdbus-2.0/codegen/utils.py b/gio/gdbus-2.0/codegen/utils.py - # index 02046108dae49efb140c6438b03b80a73770d2c0..08f1ba9731d0582015ef9807eb739a3efa410e0d 100644 - # --- a/gio/gdbus-2.0/codegen/utils.py - # +++ b/gio/gdbus-2.0/codegen/utils.py - # @@ -19,7 +19,7 @@ - # # - # # Author: David Zeuthen - - # -import distutils.version - # +import packaging.version - # import os - # import sys - - # @@ -166,4 +166,4 @@ def version_cmp_key(key): - # v = str(key[0]) - # else: - # v = "0" - # - return (distutils.version.LooseVersion(v), key[1]) - # + return (packaging.version.Version(v), key[1]) - # DIFF - - # Dir.chdir("/usr/local/Cellar/glib/2.78.3/share/glib-2.0") do - # _, status = Open3.capture2("patch", "-p3", stdin_data: patch) - # raise "Failed to execute 'patch' command" unless status.success? - # end - - # execute "pip3", "install", "packaging" - # end + end class Qemu < Host::Qemu def build_flags From 81754133002821b35ce2bdf1bfe1382add710a44 Mon Sep 17 00:00:00 2001 From: Anton Oks <2266872+AntonOks@users.noreply.github.com> Date: Sun, 19 Jan 2025 21:56:07 +0100 Subject: [PATCH 3/5] ci.rb: Add ls to find libpixman-1.so --- ci.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ci.rb b/ci.rb index 659ee32..f6e91e3 100755 --- a/ci.rb +++ b/ci.rb @@ -357,6 +357,9 @@ def install_prerequisite packages = %w[ninja pixman glib meson libslirp dtc python-setuptools] execute "brew", "install", *packages, env: { HOMEBREW_NO_INSTALL_CLEANUP: true } execute "pip3", "install", "packaging" + + execute "ls", "-laR", "/usr/local/opt/pixman/lib/", "/usr/local/lib/", "/usr/local/opt/lib" + end class Qemu < Host::Qemu From a87faf37d74b9a810ea9f97ae241321ba1fd9542 Mon Sep 17 00:00:00 2001 From: Anton Oks <2266872+AntonOks@users.noreply.github.com> Date: Sun, 19 Jan 2025 22:31:46 +0100 Subject: [PATCH 4/5] ci.rb: Add brew list output for pixman --- ci.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ci.rb b/ci.rb index f6e91e3..32ec6ab 100755 --- a/ci.rb +++ b/ci.rb @@ -358,7 +358,10 @@ def install_prerequisite execute "brew", "install", *packages, env: { HOMEBREW_NO_INSTALL_CLEANUP: true } execute "pip3", "install", "packaging" - execute "ls", "-laR", "/usr/local/opt/pixman/lib/", "/usr/local/lib/", "/usr/local/opt/lib" + execute "echo TEST" + execute "brew ls --verbose pixman" + execute "brew list pixman" + execute "ls", "-laR", "/usr/local/opt/pixman/lib/", "/usr/local/lib/" end From 416593c64ddf2481f600e28493dfcb176e7d9582 Mon Sep 17 00:00:00 2001 From: AntonOks Date: Tue, 29 Apr 2025 21:10:35 +0200 Subject: [PATCH 5/5] Bump QEMU to v10.0.0 --- changelog.md | 8 ++++++++ ci.rb | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index 1c0b91b..b8173c6 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,14 @@ ## Unreleased +## 0.13.0 + +### New/Changed Features + +* Bump QEMU to 10.0.0 + +## Unreleased + ## 0.12.0 ### New/Changed Features diff --git a/ci.rb b/ci.rb index 32ec6ab..a6490cb 100755 --- a/ci.rb +++ b/ci.rb @@ -8,7 +8,7 @@ class Qemu # Version of QEMU to bundle - VERSION = "9.2.0" + VERSION = "10.0.0" # Map of canonicalized host architectures ALIASES = {