From f081779894e0c8ab60ed3c1dc2524d25bd4601af Mon Sep 17 00:00:00 2001 From: Bobby Rong Date: Thu, 7 Nov 2024 00:07:09 +0800 Subject: [PATCH 1/3] build: Fix build with fwupd 2.0.0 Based on https://gitlab.archlinux.org/archlinux/packaging/packages/switchboard-plug-about/-/commit/d3716abb1a37b88a427a4227bdfb63dcf915f757. The fwupd_release_get_locations migration is also inspired by https://invent.kde.org/plasma/discover/-/blob/v6.2.3/libdiscover/backends/FwupdBackend/FwupdBackend.cpp?ref_type=tags#L203. Offline support is gone https://github.com/fwupd/fwupd/commit/ee40786de8800201e1676355c0709e947bd95474 --- meson.build | 6 +++++- src/Views/FirmwareReleaseView.vala | 4 ++++ src/Views/FirmwareView.vala | 21 +++++++++++++++++++++ src/meson.build | 2 +- 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/meson.build b/meson.build index 3366e41f..a95d7fca 100644 --- a/meson.build +++ b/meson.build @@ -13,7 +13,7 @@ datadir = join_paths(prefix, get_option('datadir')) libdir = join_paths(prefix, get_option('libdir')) glib_dep = dependency('glib-2.0', version: '>=2.64.0') - +fwupd_dep = dependency('fwupd') appstream_dep = dependency ('appstream', version: '>=0.12.10') add_project_arguments( @@ -31,6 +31,10 @@ if glib_dep.version().version_compare ('>=2.73.0') vala_flags += ['--define', 'HAS_GLIB_2_73'] endif +if fwupd_dep.version().version_compare ('>=2.0.0') + vala_flags += ['--define', 'HAS_FWUPD_2_0'] +endif + if appstream_dep.version().version_compare('>=1.0') vala_flags += ['--define', 'HAS_APPSTREAM_1_0'] endif diff --git a/src/Views/FirmwareReleaseView.vala b/src/Views/FirmwareReleaseView.vala index 6efbbec4..64023b34 100644 --- a/src/Views/FirmwareReleaseView.vala +++ b/src/Views/FirmwareReleaseView.vala @@ -194,7 +194,11 @@ public class About.FirmwareReleaseView : Gtk.Box { stack.visible_child = scrolled_window; var release_version = release.get_version (); +#if HAS_FWUPD_2_0 + if (release.get_flags () == Fwupd.ReleaseFlags.IS_UPGRADE && release_version != device.get_version ()) { +#else if (release.get_flags () == Fwupd.RELEASE_FLAG_IS_UPGRADE && release_version != device.get_version ()) { +#endif update_button.label = _("Update"); update_button.sensitive = true; } else { diff --git a/src/Views/FirmwareView.vala b/src/Views/FirmwareView.vala index 7f71fb53..d432e381 100644 --- a/src/Views/FirmwareView.vala +++ b/src/Views/FirmwareView.vala @@ -124,7 +124,11 @@ public class About.FirmwareView : Switchboard.SettingsPage { } private void add_device (Fwupd.Device device) { +#if HAS_FWUPD_2_0 + if (device.has_flag (Fwupd.DeviceFlags.UPDATABLE)) { +#else if (device.has_flag (Fwupd.DEVICE_FLAG_UPDATABLE)) { +#endif FirmwareClient.get_upgrades.begin (fwupd_client, device.get_id (), (obj, res) => { Fwupd.Release? release = null; @@ -253,18 +257,35 @@ public class About.FirmwareView : Switchboard.SettingsPage { } private async void continue_update (Fwupd.Device device, Fwupd.Release release) { +#if HAS_FWUPD_2_0 + var locations = release.get_locations (); + // Typically the first URI will be the main HTTP mirror, + // it's unlikely that we'll be using IPFS/IPNS URLs anyway. + var path = yield download_file (device, locations.length > 0 ? locations[0] : ""); +#else var path = yield download_file (device, release.get_uri ()); +#endif try { var install_flags = Fwupd.InstallFlags.NONE; +#if !HAS_FWUPD_2_0 if (device.has_flag (Fwupd.DEVICE_FLAG_ONLY_OFFLINE)) { install_flags = Fwupd.InstallFlags.OFFLINE; } +#endif if (yield FirmwareClient.install (fwupd_client, device.get_id (), path, install_flags)) { +#if HAS_FWUPD_2_0 + if (device.has_flag (Fwupd.DeviceFlags.NEEDS_REBOOT)) { +#else if (device.has_flag (Fwupd.DEVICE_FLAG_NEEDS_REBOOT)) { +#endif show_reboot_dialog (); +#if HAS_FWUPD_2_0 + } else if (device.has_flag (Fwupd.DeviceFlags.NEEDS_SHUTDOWN)) { +#else } else if (device.has_flag (Fwupd.DEVICE_FLAG_NEEDS_SHUTDOWN)) { +#endif show_shutdown_dialog (); } } diff --git a/src/meson.build b/src/meson.build index 94903366..de2e15d2 100644 --- a/src/meson.build +++ b/src/meson.build @@ -33,7 +33,7 @@ shared_module( config_vala, css_gresource, dependencies: [ - dependency('fwupd'), + fwupd_dep, glib_dep, dependency('gio-2.0'), dependency('gobject-2.0'), From a01bc56ae7fddb012c25ca1714c0d4532a86733a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Tue, 19 Nov 2024 13:17:08 -0800 Subject: [PATCH 2/3] CI: add Fedora Rawhide test --- .github/workflows/main.yml | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8ab9377e..1ad81a91 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -23,7 +23,7 @@ jobs: - name: Install Dependencies run: | apt update - apt install -y meson libadwaita-1-dev libfwupd-dev libgranite-7-dev libgtk-4-dev libgtop2-dev libgudev-1.0-dev libudisks2-dev libswitchboard-3-dev libappstream-dev libpackagekit-glib2-dev libpolkit-gobject-1-dev valac + apt install -y libadwaita-1-dev libfwupd-dev libgranite-7-dev libgtk-4-dev libgtop2-dev libgudev-1.0-dev libudisks2-dev libswitchboard-3-dev libappstream-dev libpackagekit-glib2-dev libpolkit-gobject-1-dev meson valac - name: Build env: DESTDIR: out @@ -32,6 +32,25 @@ jobs: ninja -C build ninja -C build install + fedora: + runs-on: ubuntu-latest + + container: + # Rawhide because we want to test Fwupd 2.0.0 + image: fedora:rawhide + + steps: + - uses: actions/checkout@v4 + - name: Install Dependencies + run: | + dnf install -y libadwaita-devel fwupd-devel granite-7-devel gtk4-devel libgtop2-devel libgudev-devel libudisks2-devel appstream-devel PackageKit-glib-devel polkit-devel meson valac + - name: Build + env: + DESTDIR: out + run: | + meson build + ninja -C build install + lint: runs-on: ubuntu-latest From 16c4e8719cc9233187a8b1bb9d93ca1562752359 Mon Sep 17 00:00:00 2001 From: Ryo Nakano Date: Fri, 27 Dec 2024 14:11:33 +0900 Subject: [PATCH 3/3] Add libsoup3-devel to dependencies --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b5c6cf68..7805c75f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -43,7 +43,7 @@ jobs: - uses: actions/checkout@v4 - name: Install Dependencies run: | - dnf install -y libadwaita-devel fwupd-devel granite-7-devel gtk4-devel libgtop2-devel libgudev-devel libudisks2-devel appstream-devel PackageKit-glib-devel polkit-devel meson valac + dnf install -y libadwaita-devel fwupd-devel granite-7-devel gtk4-devel libgtop2-devel libgudev-devel libudisks2-devel appstream-devel PackageKit-glib-devel polkit-devel libsoup3-devel meson valac - name: Build env: DESTDIR: out