forked from NixOS/nixpkgs
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
multipass: 1.14.0 -> 1.15.0 (NixOS#363626)
- Loading branch information
Showing
11 changed files
with
240 additions
and
42 deletions.
There are no files selected for viewing
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
{ | ||
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"; | ||
}; | ||
} |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
{ | ||
callPackage, | ||
fetchFromGitHub, | ||
lib, | ||
nixosTests, | ||
stdenv, | ||
symlinkJoin, | ||
}: | ||
|
||
let | ||
name = "multipass"; | ||
version = "1.15.0"; | ||
|
||
multipass_src = fetchFromGitHub { | ||
owner = "canonical"; | ||
repo = "multipass"; | ||
rev = "refs/tags/v${version}"; | ||
hash = "sha256-RoOCh1winDs7BZwyduZziHj6EMe3sGMYonkA757UrIU="; | ||
fetchSubmodules = true; | ||
}; | ||
|
||
commonMeta = { | ||
homepage = "https://multipass.run"; | ||
license = lib.licenses.gpl3Plus; | ||
maintainers = with lib.maintainers; [ jnsgruk ]; | ||
platforms = [ "x86_64-linux" ]; | ||
}; | ||
|
||
multipassd = callPackage ./multipassd.nix { | ||
inherit commonMeta multipass_src version; | ||
}; | ||
|
||
multipass-gui = callPackage ./gui.nix { | ||
inherit | ||
commonMeta | ||
multipass_src | ||
multipassd | ||
version | ||
; | ||
}; | ||
in | ||
symlinkJoin { | ||
inherit version; | ||
pname = name; | ||
|
||
paths = [ | ||
multipassd | ||
multipass-gui | ||
]; | ||
|
||
passthru = { | ||
tests = lib.optionalAttrs stdenv.hostPlatform.isLinux { | ||
inherit (nixosTests) multipass; | ||
}; | ||
updateScript = ./update.sh; | ||
}; | ||
|
||
meta = commonMeta // { | ||
description = "Ubuntu VMs on demand for any workstation"; | ||
}; | ||
} |
Large diffs are not rendered by default.
Oops, something went wrong.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
#!/usr/bin/env nix-shell | ||
#!nix-shell -I nixpkgs=./. -i bash -p curl jq nix-prefetch-github yj git | ||
# shellcheck shell=bash | ||
|
||
set -euo pipefail | ||
|
||
cd $(readlink -e $(dirname "${BASH_SOURCE[0]}")) | ||
|
||
# Download the latest pubspec.lock (which is a YAML file), convert it to JSON and write it to | ||
# the package directory as pubspec.lock.json | ||
update_pubspec_json() { | ||
local version; version="$1" | ||
echo "Updating pubspec.lock.json" | ||
|
||
curl -s \ | ||
"https://raw.githubusercontent.com/canonical/multipass/refs/tags/v${version}/src/client/gui/pubspec.lock" \ | ||
| yj > pubspec.lock.json | ||
} | ||
|
||
# Update the SRI hash of a particular overridden Dart package in the Nix expression | ||
update_dart_pkg_hash() { | ||
local pkg_name; pkg_name="$1" | ||
local owner; owner="$2"; | ||
local repo; repo="$3"; | ||
echo "Updating dart package hash: $pkg_name" | ||
|
||
resolved_ref="$(jq -r --arg PKG "$pkg_name" '.packages[$PKG].description."resolved-ref"' pubspec.lock.json)" | ||
hash="$(nix-prefetch-github --rev "$resolved_ref" "$owner" "$repo" | jq '.hash')" | ||
sed -i "s|${pkg_name} = \".*\";|${pkg_name} = $hash;|" gui.nix | ||
} | ||
|
||
# Update the hash of the multipass source code in the Nix expression. | ||
update_multipass_source() { | ||
local version; version="$1" | ||
echo "Updating multipass source" | ||
|
||
sri_hash="$(nix-prefetch-github canonical multipass --rev "refs/tags/v${version}" --fetch-submodules | jq -r '.hash')" | ||
|
||
sed -i "s|version = \".*$|version = \"$version\";|" package.nix | ||
sed -i "s|hash = \".*$|hash = \"${sri_hash}\";|" package.nix | ||
} | ||
|
||
# Update the version/hash of the grpc source code in the Nix expression. | ||
update_grpc_source() { | ||
local version; version="$1" | ||
echo "Updating grpc source" | ||
|
||
submodule_info="https://raw.githubusercontent.com/canonical/multipass/refs/tags/v${version}/3rd-party/submodule_info.md" | ||
commit_short="$(curl -s "${submodule_info}" | grep -Po "CanonicalLtd/grpc/compare/v[0-9]+\.[0-9]+\.[0-9]+\.\.\K[0-9a-f]+")" | ||
commit_hash="$(curl -s "https://github.com/canonical/grpc/commits/${commit_short}" | grep -Po "${commit_short}[0-9a-f]+" | head -n1)" | ||
sri_hash="$(nix-prefetch-github canonical grpc --rev "${commit_hash}" --fetch-submodules | jq -r '.hash')" | ||
|
||
sed -i "s|rev = \".*$|rev = \"${commit_hash}\";|" multipassd.nix | ||
sed -i "s|hash = \".*$|hash = \"${sri_hash}\";|" multipassd.nix | ||
} | ||
|
||
|
||
LATEST_TAG="$(curl -s ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} https://api.github.com/repos/canonical/multipass/releases/latest | jq -r '.tag_name')" | ||
LATEST_VERSION="$(expr "$LATEST_TAG" : 'v\(.*\)')" | ||
CURRENT_VERSION="$(grep -Po "version = \"\K[^\"]+" package.nix)" | ||
|
||
if [[ "$CURRENT_VERSION" == "$LATEST_VERSION" ]]; then | ||
echo "multipass is up to date: ${CURRENT_VERSION}" | ||
exit 0 | ||
fi | ||
|
||
update_pubspec_json "$LATEST_VERSION" | ||
|
||
update_dart_pkg_hash dartssh2 andrei-toterman dartssh2 | ||
update_dart_pkg_hash hotkey_manager_linux andrei-toterman hotkey_manager | ||
update_dart_pkg_hash system_info2 andrei-toterman system_info | ||
update_dart_pkg_hash tray_menu andrei-toterman tray_menu | ||
update_dart_pkg_hash window_size google flutter-desktop-embedding | ||
update_dart_pkg_hash xterm levkropp xterm.dart | ||
|
||
update_multipass_source "$LATEST_VERSION" | ||
|
||
update_grpc_source "$LATEST_VERSION" |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters