diff options
-rw-r--r-- | .SRCINFO | 8 | ||||
-rw-r--r-- | PKGBUILD | 9 | ||||
-rw-r--r-- | ovmf.patch | 60 |
3 files changed, 71 insertions, 6 deletions
@@ -1,6 +1,6 @@ pkgbase = canonical-multipass pkgdesc = Multipass is a lightweight VM manager for Linux, Windows and macOS. - pkgver = 1.13.0 + pkgver = 1.13.1 pkgrel = 1 url = https://multipass.run arch = x86_64 @@ -14,11 +14,13 @@ pkgbase = canonical-multipass depends = qemu-base optdepends = qt5-x11extras: for multipass.gui optdepends = libvirt: to use the libvirt driver - source = git+https://github.com/canonical/multipass.git#tag=v1.13.0 + source = git+https://github.com/canonical/multipass.git#tag=v1.13.1 source = multipassd.service source = libssh-static.patch - sha256sums = SKIP + source = ovmf.patch + sha256sums = 78cbf31593a256ad1096e85693cf5552b3ef08229a0a2c48c1e23a004223a42f sha256sums = f7aebd4ab185048ee10e8185ac230c8ac549ff29b2e52722fbf366ad6f3c6b59 sha256sums = 0d131fcba1b73775efc052bb7e7644aa893edddf5ae2f701b045fdbaa02ebd01 + sha256sums = 5a51cd894b9934118a205b055f97f1412a41dc788df6a3efdc4da91db621ae10 pkgname = canonical-multipass @@ -3,7 +3,7 @@ pkgname=canonical-multipass _realname=multipass _builddir=_build -pkgver=1.13.0 +pkgver=1.13.1 pkgrel=1 pkgdesc="Multipass is a lightweight VM manager for Linux, Windows and macOS." arch=('x86_64') @@ -18,12 +18,14 @@ optdepends=( source=("git+https://github.com/canonical/${_realname}.git#tag=v${pkgver}" multipassd.service libssh-static.patch + ovmf.patch ) prepare() { cd "${_realname}" git submodule update --init --recursive patch 3rd-party/libssh/CMakeLists.txt < ${srcdir}/libssh-static.patch + patch src/platform/backends/qemu/qemu_vm_process_spec.cpp < ${srcdir}/ovmf.patch } build() { @@ -43,6 +45,7 @@ package() { install -Dm644 "$srcdir"/multipassd.service "$pkgdir"/usr/lib/systemd/system/multipassd.service } -sha256sums=('SKIP' +sha256sums=('78cbf31593a256ad1096e85693cf5552b3ef08229a0a2c48c1e23a004223a42f' 'f7aebd4ab185048ee10e8185ac230c8ac549ff29b2e52722fbf366ad6f3c6b59' - '0d131fcba1b73775efc052bb7e7644aa893edddf5ae2f701b045fdbaa02ebd01') + '0d131fcba1b73775efc052bb7e7644aa893edddf5ae2f701b045fdbaa02ebd01' + '5a51cd894b9934118a205b055f97f1412a41dc788df6a3efdc4da91db621ae10') diff --git a/ovmf.patch b/ovmf.patch new file mode 100644 index 000000000000..d8729bea040b --- /dev/null +++ b/ovmf.patch @@ -0,0 +1,60 @@ +--- src/platform/backends/qemu/qemu_vm_process_spec.cpp.orig 2024-05-20 18:04:46.308380873 -0400 ++++ src/platform/backends/qemu/qemu_vm_process_spec.cpp 2024-05-20 18:05:36.668903896 -0400 +@@ -87,6 +87,47 @@ + << "chardev:char0" + // TODO Add a debugging mode with access to console + << "-nographic"; ++ ++ // Firmware directories ++ try ++ { ++ mu::snap_dir(); ++ } ++ catch (const mp::SnapEnvironmentException&) ++ { ++ // Add a list of directories to check ++ QStringList dirs = QStringList(); ++ dirs << "/usr/share/seabios/" ++ << "/usr/share/seabios/x64/" ++ << "/usr/share/ovmf/" ++ << "/usr/share/ovmf/x64/" ++ << "/usr/share/qemu/" ++ << "/usr/share/qemu/x64/" ++ << "/usr/share/qemu-efi/" ++ << "/usr/share/qemu-efi/x64/" ++ << "/usr/local/share/seabios/" ++ << "/usr/local/share/seabios/x64/" ++ << "/usr/local/share/ovmf/" ++ << "/usr/local/share/ovmf/x64/" ++ << "/usr/local/share/qemu/" ++ << "/usr/local/share/qemu/x64/" ++ << "/usr/local/share/qemu-efi/" ++ << "/usr/local/share/qemu-efi/x64/"; ++ ++ // Now check every directory in the options, to make sure they exist ++ // If they do, add them to the args ++ for (const auto& value : dirs) ++ { ++ if (QDir(value).exists()) ++ { ++ mpl::log(mpl::Level::debug, desc.vm_name, fmt::format("Adding firmware directory: {}", value)); ++ args << "-L" << value; ++ } ++ } ++ ++ } ++ ++ + // Cloud-init disk + args << "-cdrom" << desc.cloud_init_iso; + } +@@ -203,7 +244,7 @@ + catch (const mp::SnapEnvironmentException&) + { + signal_peer = "unconfined"; +- firmware = "/usr{,/local}/share/{seabios,ovmf,qemu,qemu-efi}/*"; ++ firmware = "/usr{,/local}/share/{seabios,ovmf,qemu,qemu-efi}{,/x64,/ia32}/*"; + } + + return profile_template.arg(apparmor_profile_name(), signal_peer, firmware, root_dir, program(), + |