Unverified Commit e659d918 authored by Jon Seager's avatar Jon Seager Committed by GitHub
Browse files

multipass: 1.14.0 -> 1.15.0 (#363626)

parents f8c720e7 be677db1
Loading
Loading
Loading
Loading
+79 −0
Original line number Diff line number Diff line
{
  commonMeta,
  multipass_src,
  multipassd,
  version,

  autoPatchelfHook,
  flutter327,
  gtkmm3,
  keybinder3,
  lib,
  libayatana-appindicator,
  libnotify,
  protobuf,
  protoc-gen-dart,
  qt6,
}:
flutter327.buildFlutterApplication {
  inherit version;
  pname = "multipass-gui";
  src = multipass_src;

  sourceRoot = "${multipass_src.name}/src/client/gui";

  pubspecLock = lib.importJSON ./pubspec.lock.json;

  gitHashes = {
    dartssh2 = "sha256-2pypKwurziwGLZYuGaxlS2lzN3UvJp3bRTvvYYxEqRI=";
    hotkey_manager_linux = "sha256-aO0h94YZvgV/ggVupNw8GjyZsnXrq3qTHRDtuhNv3oI=";
    system_info2 = "sha256-fly7E2vG+bQ/+QGzXk+DYba73RZccltdW2LpZGDKX60=";
    tray_menu = "sha256-riiAiBEms+9ARog8i+MR1fto1Yqx+gwbBWyNbNq6VTM=";
    window_size = "sha256-71PqQzf+qY23hTJvcm0Oye8tng3Asr42E2vfF1nBmVA=";
    xterm = "sha256-h8vIonTPUVnNqZPk/A4ZV7EYCMyM0rrErL9ZOMe4ZBE=";
  };

  buildInputs = [
    gtkmm3
    keybinder3
    libayatana-appindicator
    libnotify
    qt6.qtbase
    qt6.qtwayland
  ];

  nativeBuildInputs = [
    autoPatchelfHook
    protobuf
    protoc-gen-dart
    qt6.wrapQtAppsHook
  ];

  preBuild = ''
    mkdir -p lib/generated

    # Generate the Dart gRPC code for the Multipass GUI.
    protoc \
      --plugin=protoc-gen-dart=${lib.getExe protoc-gen-dart} \
      --dart_out=grpc:lib/generated \
      -I ../../rpc \
      ../../rpc/multipass.proto \
      google/protobuf/timestamp.proto
  '';

  runtimeDependencies = [ multipassd ];

  postFixup = ''
    mv $out/bin/multipass_gui $out/bin/multipass.gui

    install -Dm444 $out/app/multipass-gui/data/flutter_assets/assets/icon.png \
      $out/share/icons/hicolor/256x256/apps/multipass.gui.png

    cp $out/share/applications/multipass.gui.autostart.desktop \
      $out/share/applications/multipass.gui.desktop
  '';

  meta = commonMeta // {
    description = "Flutter frontend application for managing Ubuntu VMs";
  };
}
+21 −40
Original line number Diff line number Diff line
{
  commonMeta,
  multipass_src,
  version,

  cmake,
  dnsmasq,
  fetchFromGitHub,
@@ -10,53 +14,35 @@
  libapparmor,
  libvirt,
  libxml2,
  nixosTests,
  openssl,
  OVMF,
  pkg-config,
  qemu,
  poco,
  protobuf,
  qemu-utils,
  qtbase,
  qtwayland,
  wrapQtAppsHook,
  qemu,
  qt6,
  slang,
  stdenv,
  xterm,
}:

let
  pname = "multipass";
  version = "1.14.1";

  # This is done here because a CMakeLists.txt from one of it's submodules tries
  # to modify a file, so we grab the source for the submodule here, copy it into
  # the source of the Multipass project which allows the modification to happen.
  grpc_src = fetchFromGitHub {
    owner = "CanonicalLtd";
    owner = "canonical";
    repo = "grpc";
    rev = "e3acf245";
    hash = "sha256-tDc2iGxIV68Yi4RL8ES4yglJNlu8yH6FlpVvZoWjoXk=";
    rev = "ba8e7f72a57b9e0b25783a4d3cea58c79379f194";
    hash = "sha256-DS1UNLCUdbipn5w4p2aVa8LgHHhdJiAfzfEdIXNO69o=";
    fetchSubmodules = true;
  };
in
stdenv.mkDerivation {
  inherit pname version;

  src = fetchFromGitHub {
    owner = "canonical";
    repo = "multipass";
    rev = "refs/tags/v${version}";
    hash = "sha256-i6SKiV4jwiBURx85m3u7km1dhi+fRdVpMBanlZo0VK4=";
    fetchSubmodules = true;
    leaveDotGit = true;
    postFetch = ''
      # Workaround for https://github.com/NixOS/nixpkgs/issues/8567
      cd $out
      rm -rf .git
    '';
  };
  inherit version;
  pname = "multipassd";
  src = multipass_src;

  patches = [
    # Multipass is usually only delivered as a snap package on Linux, and it expects that
@@ -86,6 +72,9 @@ stdenv.mkDerivation {
      --replace-fail "determine_version(MULTIPASS_VERSION)" "" \
      --replace-fail 'set(MULTIPASS_VERSION ''${MULTIPASS_VERSION})' 'set(MULTIPASS_VERSION "v${version}")'

    # Don't build the GUI .desktop file, do that in the gui derivation instead
    substituteInPlace ./CMakeLists.txt --replace-fail "add_subdirectory(data)" ""

    # Don't build/use vcpkg
    rm -rf 3rd-party/vcpkg

@@ -118,7 +107,7 @@ stdenv.mkDerivation {
    EOF
  '';

  # We'll build the flutter application seperately using buildFlutterApplication
  # We'll build the flutter application separately using buildFlutterApplication
  cmakeFlags = [ "-DMULTIPASS_ENABLE_FLUTTER_GUI=false" ];

  buildInputs = [
@@ -127,18 +116,18 @@ stdenv.mkDerivation {
    libvirt
    libxml2
    openssl
    qtbase
    qtwayland
    poco.dev
    protobuf
    qt6.qtbase
    qt6.qtwayland
  ];

  nativeBuildInputs = [
    cmake
    git
    pkg-config
    qt6.wrapQtAppsHook
    slang
    wrapQtAppsHook
  ];

  nativeCheckInputs = [ gtest ];
@@ -157,15 +146,7 @@ stdenv.mkDerivation {
    }
  '';

  passthru.tests = {
    multipass = nixosTests.multipass;
  };

  meta = with lib; {
    description = "Ubuntu VMs on demand for any workstation";
    homepage = "https://multipass.run";
    license = licenses.gpl3Plus;
    maintainers = with maintainers; [ jnsgruk ];
    platforms = [ "x86_64-linux" ];
  meta = commonMeta // {
    description = "Backend server & client for managing on-demand Ubuntu VMs";
  };
}
Loading