From a3168e907225dbbcdadbaf71aed84ccb5383571f Mon Sep 17 00:00:00 2001 From: Lyes Saadi Date: Tue, 16 Jul 2024 20:57:20 +0000 Subject: [PATCH 01/15] Removing ExcludeArch s390x --- bottles.spec | 3 --- 1 file changed, 3 deletions(-) diff --git a/bottles.spec b/bottles.spec index 63c38f3..826bc7e 100644 --- a/bottles.spec +++ b/bottles.spec @@ -20,9 +20,6 @@ Patch: ensure_bottles_dir_exists.patch # Don't fail on AttributeError Patch: catch_exception_in_set_manager.patch -# blueprint-compiler does not work on s390x: -# https://gitlab.gnome.org/jwestman/blueprint-compiler/-/issues/96 -ExcludeArch: s390x BuildArch: noarch BuildRequires: desktop-file-utils From d43e685d3089b17a09ab134fe22e8a0d21c37f92 Mon Sep 17 00:00:00 2001 From: Packit Date: Thu, 11 Jul 2024 01:55:55 +0000 Subject: [PATCH 02/15] Update to 51.13 upstream release - Resolves: rhbz#2297253 Upstream tag: 51.13 Upstream commit: 7e60ede5 Commit authored by Packit automation (https://packit.dev/) --- README.packit | 2 +- bottles.spec | 2 +- sources | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.packit b/README.packit index f592284..2499381 100644 --- a/README.packit +++ b/README.packit @@ -1,3 +1,3 @@ This repository is maintained by packit. https://packit.dev/ -The file was generated using packit 0.91.0.post1.dev4+ge6fd4a25. +The file was generated using packit 0.98.0. diff --git a/bottles.spec b/bottles.spec index 826bc7e..3f9dd96 100644 --- a/bottles.spec +++ b/bottles.spec @@ -2,7 +2,7 @@ Name: bottles Epoch: 1 -Version: 51.11 +Version: 51.13 Release: %autorelease Summary: Run Windows in a Bottle diff --git a/sources b/sources index 8baf231..428f608 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (Bottles-51.11.tar.gz) = 42c503a4910a8e6c408caecd723edf1405aa034558d61313937a69c7d5ffb20ba4675fc9022775491cbbe6ba4a35ffac508b4721f9c971c57cbcb888345d546b +SHA512 (Bottles-51.13.tar.gz) = a23b64275721ac890cce5d66ecf8b1a4cb85d00e18b372c27adc9190a1d9314eaed594a16833a5b44f77214c1c183f5e9bf739ee54e722a6997145ddaf8f1e59 From 83556ee0819898d116899e40d343cced995a5440 Mon Sep 17 00:00:00 2001 From: Sandro Date: Sat, 27 Jul 2024 15:23:17 +0200 Subject: [PATCH 03/15] Add optional 32-bit dependencies (RHBZ#2277098) Those may be required fir running 32-bit bottles. --- bottles.spec | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/bottles.spec b/bottles.spec index 3f9dd96..a3b0beb 100644 --- a/bottles.spec +++ b/bottles.spec @@ -66,6 +66,21 @@ Requires: python3dist(pefile) # Requirements not listed in upstream's `requirements.txt` Requires: python3dist(vkbasalt-cli) +# Optional dependencies which may be required for running 32-bit bottles. +# We recommend those in order to allow users to opt out. +Recommends: freetype.i686 +Recommends: mesa-dri-drivers.i686 +Recommends: mesa-filesystem.i686 +Recommends: mesa-libEGL.i686 +Recommends: mesa-libgbm.i686 +Recommends: mesa-libglapi.i686 +Recommends: mesa-libGL.i686 +Recommends: mesa-libGLU.i686 +Recommends: mesa-va-drivers.i686 +Recommends: mesa-vulkan-drivers.i686 +Recommends: SDL2.i686 +Recommends: vulkan-loader.i686 + %description Bottles lets you run Windows software on Linux, such as applications and games. It introduces a workflow that helps you organize by From 6f4306eea74dc73c8527379248a00650582f7c81 Mon Sep 17 00:00:00 2001 From: Packit Date: Thu, 17 Oct 2024 02:23:50 +0000 Subject: [PATCH 04/15] Update to 51.15 upstream release - Resolves: rhbz#2318429 Upstream tag: 51.15 Upstream commit: e93cd189 Commit authored by Packit automation (https://packit.dev/) --- README.packit | 2 +- bottles.spec | 2 +- sources | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.packit b/README.packit index 2499381..2bd3f40 100644 --- a/README.packit +++ b/README.packit @@ -1,3 +1,3 @@ This repository is maintained by packit. https://packit.dev/ -The file was generated using packit 0.98.0. +The file was generated using packit 0.102.1.post1.dev6+g64f7460b. diff --git a/bottles.spec b/bottles.spec index a3b0beb..6fc86e4 100644 --- a/bottles.spec +++ b/bottles.spec @@ -2,7 +2,7 @@ Name: bottles Epoch: 1 -Version: 51.13 +Version: 51.15 Release: %autorelease Summary: Run Windows in a Bottle diff --git a/sources b/sources index 428f608..a420eac 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (Bottles-51.13.tar.gz) = a23b64275721ac890cce5d66ecf8b1a4cb85d00e18b372c27adc9190a1d9314eaed594a16833a5b44f77214c1c183f5e9bf739ee54e722a6997145ddaf8f1e59 +SHA512 (Bottles-51.15.tar.gz) = 8917e519c6b537e54a2492b8b0955589e3d0ee2eddf59ba801e84a9f9790187e9f9d3dce990b90a7eb4fe612aaa59f98bc3368e9f43a298a59825b74b74e7ac2 From 270d92f8e5e0a8cbe0af1ee6e7b13d0ff559447e Mon Sep 17 00:00:00 2001 From: Sandro Date: Sat, 9 Nov 2024 13:56:43 +0100 Subject: [PATCH 05/15] Rename and rebase existing patches For ease of rebasing onto new releases. [skip changelog] --- 0001-Make-sure-Paths.bottles-exists.patch | 34 +++++++++++++++++++ ...-Catch-AttributeError-in-set_manager.patch | 17 ++++++---- bottles.spec | 7 ++-- ensure_bottles_dir_exists.patch | 29 ---------------- 4 files changed, 50 insertions(+), 37 deletions(-) create mode 100644 0001-Make-sure-Paths.bottles-exists.patch rename catch_exception_in_set_manager.patch => 0002-Catch-AttributeError-in-set_manager.patch (68%) delete mode 100644 ensure_bottles_dir_exists.patch diff --git a/0001-Make-sure-Paths.bottles-exists.patch b/0001-Make-sure-Paths.bottles-exists.patch new file mode 100644 index 0000000..6f75c95 --- /dev/null +++ b/0001-Make-sure-Paths.bottles-exists.patch @@ -0,0 +1,34 @@ +From cb8cd4567cd34aac692672362cb87e5f021660cf Mon Sep 17 00:00:00 2001 +From: Sandro +Date: Mon, 4 Mar 2024 20:28:49 +0100 +Subject: [PATCH 1/2] Make sure Paths.bottles exists + +When calling `bottles foo.exe` either from the command line or by +opening the executable from the file browser with Bottles, Bottles will +throw a FileNotFoundError if Paths.bottles does not exist. + +It seems check_app_dirs() is never called in that situation. +--- + bottles/backend/managers/manager.py | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/bottles/backend/managers/manager.py b/bottles/backend/managers/manager.py +index 2a923ec8..42a87167 100644 +--- a/bottles/backend/managers/manager.py ++++ b/bottles/backend/managers/manager.py +@@ -812,7 +812,11 @@ class Manager(metaclass=Singleton): + Check for local bottles and update the local_bottles list. + Will also mark the broken ones if the configuration file is missing + """ +- bottles = os.listdir(Paths.bottles) ++ try: ++ bottles = os.listdir(Paths.bottles) ++ except FileNotFoundError: ++ self.check_app_dirs() ++ bottles = [] + + # Empty local bottles + self.local_bottles = {} +-- +2.47.0 + diff --git a/catch_exception_in_set_manager.patch b/0002-Catch-AttributeError-in-set_manager.patch similarity index 68% rename from catch_exception_in_set_manager.patch rename to 0002-Catch-AttributeError-in-set_manager.patch index 08c1794..8e93336 100644 --- a/catch_exception_in_set_manager.patch +++ b/0002-Catch-AttributeError-in-set_manager.patch @@ -1,10 +1,12 @@ -commit 3e1db3c75fee5eedb2190e7dba71239e923affb7 -Author: Sandro -Date: Mon Mar 4 21:45:51 2024 +0100 +From 5302231bc20db5912349bd3bce27df5a4acf9256 Mon Sep 17 00:00:00 2001 +From: Sandro +Date: Mon, 4 Mar 2024 21:45:51 +0100 +Subject: [PATCH 2/2] Catch AttributeError in set_manager() - Catch AttributeError in set_manager() - - Return empty list if AttributeError is raised. +Return empty list if AttributeError is raised. +--- + bottles/frontend/windows/main_window.py | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/bottles/frontend/windows/main_window.py b/bottles/frontend/windows/main_window.py index 5fb9a15c..cd26408b 100644 @@ -26,3 +28,6 @@ index 5fb9a15c..cd26408b 100644 if len(tmp_runners) == 0: self.show_onboard_view() +-- +2.47.0 + diff --git a/bottles.spec b/bottles.spec index 6fc86e4..bc4e1be 100644 --- a/bottles.spec +++ b/bottles.spec @@ -16,9 +16,12 @@ License: GPL-3.0-or-later AND MIT URL: %{forgeurl} Source0: %{forgesource} # Make sure bottles dir exists when opening executable directly -Patch: ensure_bottles_dir_exists.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=2249922 +# https://bugzilla.redhat.com/show_bug.cgi?id=2257180 +Patch: 0001-Make-sure-Paths.bottles-exists.patch # Don't fail on AttributeError -Patch: catch_exception_in_set_manager.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=2260135 +Patch: 0002-Catch-AttributeError-in-set_manager.patch BuildArch: noarch diff --git a/ensure_bottles_dir_exists.patch b/ensure_bottles_dir_exists.patch deleted file mode 100644 index 12ac255..0000000 --- a/ensure_bottles_dir_exists.patch +++ /dev/null @@ -1,29 +0,0 @@ -commit 7eed7bbfa5d1da924b4c4e0659f0bf86b0fd7d7b -Author: Sandro -Date: Mon Mar 4 20:28:49 2024 +0100 - - Make sure Paths.bottles exists - - When calling `bottles foo.exe` either from the command line or by - opening the executable from the file browser with Bottles, Bottles will - throw a FileNotFoundError if Paths.bottles does not exist. - - It seems check_app_dirs() is never called in that situation. - -diff --git a/bottles/backend/managers/manager.py b/bottles/backend/managers/manager.py -index 01b0039e..9d8ef000 100644 ---- a/bottles/backend/managers/manager.py -+++ b/bottles/backend/managers/manager.py -@@ -811,7 +811,11 @@ class Manager(metaclass=Singleton): - Check for local bottles and update the local_bottles list. - Will also mark the broken ones if the configuration file is missing - """ -- bottles = os.listdir(Paths.bottles) -+ try: -+ bottles = os.listdir(Paths.bottles) -+ except FileNotFoundError: -+ self.check_app_dirs() -+ bottles = [] - - # Empty local bottles - self.local_bottles = {} From b489ab718790afd18d2aa929a9388aabef76f817 Mon Sep 17 00:00:00 2001 From: Sandro Date: Sat, 9 Nov 2024 14:14:45 +0100 Subject: [PATCH 06/15] Apply patch for AttributeError (RHBZ#2313567) --- ...AttributeError-when-window-is-closed.patch | 33 +++++++++++++++++++ bottles.spec | 3 ++ 2 files changed, 36 insertions(+) create mode 100644 0003-Catch-AttributeError-when-window-is-closed.patch diff --git a/0003-Catch-AttributeError-when-window-is-closed.patch b/0003-Catch-AttributeError-when-window-is-closed.patch new file mode 100644 index 0000000..da815cb --- /dev/null +++ b/0003-Catch-AttributeError-when-window-is-closed.patch @@ -0,0 +1,33 @@ +From 25ca897f6a04187cec0e06e4740abf8378cf0d43 Mon Sep 17 00:00:00 2001 +From: Sandro +Date: Sat, 9 Nov 2024 13:42:00 +0100 +Subject: [PATCH] Catch AttributeError when window is closed + +In certain situations Bottles crashes with: + +__quit:AttributeError: 'Bottles' object has no attribute 'win' + +This should allow Bottles to exit without error. +--- + bottles/frontend/main.py | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/bottles/frontend/main.py b/bottles/frontend/main.py +index 5616ab22..7c44b585 100644 +--- a/bottles/frontend/main.py ++++ b/bottles/frontend/main.py +@@ -260,7 +260,10 @@ class Bottles(Adw.Application): + logging.info( + _("[Quit] request received."), + ) +- self.win.on_close_request() ++ try: ++ self.win.on_close_request() ++ except AttributeError: ++ pass + quit() + + @staticmethod +-- +2.47.0 + diff --git a/bottles.spec b/bottles.spec index bc4e1be..a0ba6c4 100644 --- a/bottles.spec +++ b/bottles.spec @@ -22,6 +22,9 @@ Patch: 0001-Make-sure-Paths.bottles-exists.patch # Don't fail on AttributeError # https://bugzilla.redhat.com/show_bug.cgi?id=2260135 Patch: 0002-Catch-AttributeError-in-set_manager.patch +# Catch AttributeError when closing window +# https://bugzilla.redhat.com/show_bug.cgi?id=2313567 +Patch: 0003-Catch-AttributeError-when-window-is-closed.patch BuildArch: noarch From 455823563600fdfa5778b9b03a61d5a7d6e2fc87 Mon Sep 17 00:00:00 2001 From: Sandro Date: Sat, 9 Nov 2024 18:49:37 +0100 Subject: [PATCH 07/15] Handle exceptions from file pickers (RHBZ#2296214) --- ...FileDialog-for-all-file-path-pickers.patch | 79 +++++++++++++++++++ bottles.spec | 3 + 2 files changed, 82 insertions(+) create mode 100644 0004-Use-FileDialog-for-all-file-path-pickers.patch diff --git a/0004-Use-FileDialog-for-all-file-path-pickers.patch b/0004-Use-FileDialog-for-all-file-path-pickers.patch new file mode 100644 index 0000000..31fa7f0 --- /dev/null +++ b/0004-Use-FileDialog-for-all-file-path-pickers.patch @@ -0,0 +1,79 @@ +From 77bc57c6a2468d4c28f9c8e80ca20fd4e2e48dfb Mon Sep 17 00:00:00 2001 +From: Sandro +Date: Sat, 9 Nov 2024 16:59:50 +0100 +Subject: [PATCH] Use FileDialog for all file/path pickers + +- Use `FileDialog` throughout +- Handle whatever `GLib.Error` throws our way +- Handle it the same way regardless of dialog +--- + bottles/frontend/windows/launchoptions.py | 43 ++++++++++++++--------- + 1 file changed, 27 insertions(+), 16 deletions(-) + +diff --git a/bottles/frontend/windows/launchoptions.py b/bottles/frontend/windows/launchoptions.py +index adb122a3..79dbedd6 100644 +--- a/bottles/frontend/windows/launchoptions.py ++++ b/bottles/frontend/windows/launchoptions.py +@@ -279,6 +279,7 @@ class LaunchOptionsDialog(Adw.Window): + else: + # something else happened... + logging.warning("Error selecting post-run script: %s" % error) ++ pass + + dialog = Gtk.FileDialog.new() + dialog.set_title("Select Post-run Script") +@@ -296,25 +297,35 @@ class LaunchOptionsDialog(Adw.Window): + self.btn_post_script_reset.set_visible(False) + + def __choose_cwd(self, *_args): +- def set_path(dialog, response): +- if response != Gtk.ResponseType.ACCEPT: +- self.action_cwd.set_subtitle(self.__default_cwd_msg) +- return +- +- directory_path = dialog.get_file().get_path() +- self.program["folder"] = directory_path +- self.action_cwd.set_subtitle(directory_path) +- self.btn_cwd_reset.set_visible(True) ++ def set_path(dialog, result): + +- dialog = Gtk.FileChooserNative.new( +- title=_("Select Working Directory"), +- parent=self.window, +- action=Gtk.FileChooserAction.SELECT_FOLDER, +- ) ++ try: ++ directory = dialog.select_folder_finish(result) ++ ++ if directory is None: ++ self.action_cwd.set_subtitle( ++ self.__default_cwd_msg) ++ return + ++ directory_path = directory.get_path() ++ self.program["folder"] = directory_path ++ self.action_cwd.set_subtitle(directory_path) ++ self.btn_cwd_reset.set_visible(True) ++ except GLib.Error as error: ++ # also thrown when dialog has been cancelled ++ if error.code == 2: ++ # error 2 seems to be 'dismiss' or 'cancel' ++ if self.program["folder"] is None or self.program["folder"] == "": ++ self.action_cwd.set_subtitle(self.__default_cwd_msg) ++ else: ++ # something else happened... ++ logging.warning("Error selecting folder: %s" % error) ++ raise ++ ++ dialog = Gtk.FileDialog.new() ++ dialog.set_title("Select Working Directory") + dialog.set_modal(True) +- dialog.connect("response", set_path) +- dialog.show() ++ dialog.select_folder(parent=self.window, callback=set_path) + + def __reset_cwd(self, *_args): + """ +-- +2.47.0 + diff --git a/bottles.spec b/bottles.spec index a0ba6c4..7392373 100644 --- a/bottles.spec +++ b/bottles.spec @@ -25,6 +25,9 @@ Patch: 0002-Catch-AttributeError-in-set_manager.patch # Catch AttributeError when closing window # https://bugzilla.redhat.com/show_bug.cgi?id=2313567 Patch: 0003-Catch-AttributeError-when-window-is-closed.patch +# Attempt to prevent segfaults when picking files +# https://bugzilla.redhat.com/show_bug.cgi?id=2296214 +Patch: 0004-Use-FileDialog-for-all-file-path-pickers.patch BuildArch: noarch From a47f19c525d0f168537ef615266c242c330dc82a Mon Sep 17 00:00:00 2001 From: Packit Date: Fri, 13 Dec 2024 01:53:41 +0000 Subject: [PATCH 08/15] Update to 51.16 upstream release - Resolves: rhbz#2332212 Upstream tag: 51.16 Upstream commit: d5f626ed Commit authored by Packit automation (https://packit.dev/) --- README.packit | 2 +- bottles.spec | 2 +- sources | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.packit b/README.packit index 2bd3f40..5c0e101 100644 --- a/README.packit +++ b/README.packit @@ -1,3 +1,3 @@ This repository is maintained by packit. https://packit.dev/ -The file was generated using packit 0.102.1.post1.dev6+g64f7460b. +The file was generated using packit 0.105.0.post1.dev2+g4453c0ec. diff --git a/bottles.spec b/bottles.spec index 7392373..e22e414 100644 --- a/bottles.spec +++ b/bottles.spec @@ -2,7 +2,7 @@ Name: bottles Epoch: 1 -Version: 51.15 +Version: 51.16 Release: %autorelease Summary: Run Windows in a Bottle diff --git a/sources b/sources index a420eac..93e98e4 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (Bottles-51.15.tar.gz) = 8917e519c6b537e54a2492b8b0955589e3d0ee2eddf59ba801e84a9f9790187e9f9d3dce990b90a7eb4fe612aaa59f98bc3368e9f43a298a59825b74b74e7ac2 +SHA512 (Bottles-51.16.tar.gz) = 1383f531eb77848c9a444571ed9de0f209a346ff4457b7e64dbb324c05cee894f8309ef5c7f140e2004f007852f60b22e7112f2188b666216fe03452030f63c3 From 13922b6965f9d17746fa636e69e1fcf7ccbb1da0 Mon Sep 17 00:00:00 2001 From: Sandro Date: Sun, 8 Dec 2024 10:57:44 +0100 Subject: [PATCH 09/15] Group forge macros [skip changelog] --- bottles.spec | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bottles.spec b/bottles.spec index e22e414..956f8e6 100644 --- a/bottles.spec +++ b/bottles.spec @@ -1,11 +1,10 @@ -%global forgeurl https://github.com/bottlesdevs/Bottles - Name: bottles Epoch: 1 Version: 51.16 Release: %autorelease Summary: Run Windows in a Bottle +%global forgeurl https://github.com/bottlesdevs/Bottles %global tag %{version} %forgemeta From 48aba414ba08d05ae7d7b62e259b965c38d7964d Mon Sep 17 00:00:00 2001 From: Sandro Date: Sun, 8 Dec 2024 12:29:54 +0100 Subject: [PATCH 10/15] Add patches reverting denial of service Upstream decided to slam the door shut for non Flatpak users. This will pry it open again, allowing us to continue shipping Bottles as RPM. [skip changelog] --- 1001-Revert-meson-Add-check-for-Flatpak.patch | 33 +++++++++++ 1002-Change-issue-URL-to-Bugzilla.patch | 34 +++++++++++ ...play-warning-regarding-issue-tracker.patch | 58 +++++++++++++++++++ bottles.spec | 4 ++ 4 files changed, 129 insertions(+) create mode 100644 1001-Revert-meson-Add-check-for-Flatpak.patch create mode 100644 1002-Change-issue-URL-to-Bugzilla.patch create mode 100644 1003-Display-warning-regarding-issue-tracker.patch diff --git a/1001-Revert-meson-Add-check-for-Flatpak.patch b/1001-Revert-meson-Add-check-for-Flatpak.patch new file mode 100644 index 0000000..424dd72 --- /dev/null +++ b/1001-Revert-meson-Add-check-for-Flatpak.patch @@ -0,0 +1,33 @@ +From eeb64140ebb693642c1c27689d8f99772bb00106 Mon Sep 17 00:00:00 2001 +From: Sandro +Date: Sun, 8 Dec 2024 11:11:27 +0100 +Subject: [PATCH 1001/1003] Revert "meson: Add check for Flatpak" + +We still want to package Bottle as RPM for our users, despite upstream +having a very strong, almost hostile, preference for Flatpak. + +This reverts commit 6206301992c3218060761e5b574b83da485b759a. +--- + bottles/frontend/meson.build | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/bottles/frontend/meson.build b/bottles/frontend/meson.build +index 6ff7c011..c26ea0b9 100644 +--- a/bottles/frontend/meson.build ++++ b/bottles/frontend/meson.build +@@ -23,12 +23,6 @@ params_file = configure_file( + configuration: conf + ) + +-fs = import('fs') +- +-if not fs.is_file('/' + '.flatpak-info') +- error('file does not exist') +-endif +- + bottles_sources = [ + '__init__.py', + 'main.py', +-- +2.47.0 + diff --git a/1002-Change-issue-URL-to-Bugzilla.patch b/1002-Change-issue-URL-to-Bugzilla.patch new file mode 100644 index 0000000..3b20c02 --- /dev/null +++ b/1002-Change-issue-URL-to-Bugzilla.patch @@ -0,0 +1,34 @@ +From 979dce37851de94d1e82ac5486089c5b67cf5583 Mon Sep 17 00:00:00 2001 +From: Sandro +Date: Sun, 8 Dec 2024 11:22:42 +0100 +Subject: [PATCH 1002/1003] Change issue URL to Bugzilla + +Since upstream does not whish to receive bug reports from non-Flatpak +users, direct them to Bugzilla instead. +--- + data/com.usebottles.bottles.metainfo.xml.in.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/data/com.usebottles.bottles.metainfo.xml.in.in b/data/com.usebottles.bottles.metainfo.xml.in.in +index ee38f806..1b306002 100644 +--- a/data/com.usebottles.bottles.metainfo.xml.in.in ++++ b/data/com.usebottles.bottles.metainfo.xml.in.in +@@ -52,7 +52,7 @@ + @APP_ID@ + + https://usebottles.com +- https://github.com/bottlesdevs/Bottles/issues ++ https://bugz.fedoraproject.org/bottles + https://docs.usebottles.com + https://usebottles.com/funding + https://hosted.weblate.org/engage/bottles +@@ -246,4 +246,4 @@ + + + +- +\ No newline at end of file ++ +-- +2.47.0 + diff --git a/1003-Display-warning-regarding-issue-tracker.patch b/1003-Display-warning-regarding-issue-tracker.patch new file mode 100644 index 0000000..a6e02e7 --- /dev/null +++ b/1003-Display-warning-regarding-issue-tracker.patch @@ -0,0 +1,58 @@ +From 723cdc6bc58c65a4aa6672971ba0f22f2b3523f6 Mon Sep 17 00:00:00 2001 +From: Sandro +Date: Sun, 8 Dec 2024 12:21:57 +0100 +Subject: [PATCH 1003/1003] Display warning regarding issue tracker + +Make sure users know where to report bugs regarding the RPM package of +Bottles. Revert upstream's outright denial of usage. +--- + bottles/frontend/windows/main_window.py | 23 ++++++++++------------- + 1 file changed, 10 insertions(+), 13 deletions(-) + +diff --git a/bottles/frontend/windows/main_window.py b/bottles/frontend/windows/main_window.py +index 79bf0d72..48321e2a 100644 +--- a/bottles/frontend/windows/main_window.py ++++ b/bottles/frontend/windows/main_window.py +@@ -104,29 +104,26 @@ class MainWindow(Adw.ApplicationWindow): + + def response(dialog, response, *args): + if response == "close": +- quit(1) ++ return + + body = _( +- "Bottles is only supported within a sandboxed environment. Official sources of Bottles are available at" ++ "Bottles developers (upstream) only support Flatpak. Please report any issues with the RPM package in" + ) +- download_url = "usebottles.com/download" ++ bug_url = "bugz.fedoraproject.org/bottles" + + error_dialog = Adw.AlertDialog.new( +- _("Unsupported Environment"), +- f"{body} {download_url}.", ++ _("RPM Package Note"), ++ f"{body} Bugzilla." + ) + +- error_dialog.add_response("close", _("Close")) ++ error_dialog.add_response("close", _("Understood")) + error_dialog.set_body_use_markup(True) + error_dialog.connect("response", response) + error_dialog.present(self) +- logging.error( +- _( +- "Bottles is only supported within a sandboxed format. Official sources of Bottles are available at:" +- ) +- ) +- logging.error("https://usebottles.com/download/") +- return ++ logging.warn(_("Bottles is only supported within a sandboxed format. Official sources of Bottles are available at:")) ++ logging.warn("https://usebottles.com/download/") ++ logging.warn(_("Please report any issues using the RPM package to:")) ++ logging.warn("https://bugz.fedoraproject.org/bottles") + + # Loading view + self.page_loading = LoadingView() +-- +2.47.0 + diff --git a/bottles.spec b/bottles.spec index 956f8e6..f3b1cae 100644 --- a/bottles.spec +++ b/bottles.spec @@ -27,6 +27,10 @@ Patch: 0003-Catch-AttributeError-when-window-is-closed.patch # Attempt to prevent segfaults when picking files # https://bugzilla.redhat.com/show_bug.cgi?id=2296214 Patch: 0004-Use-FileDialog-for-all-file-path-pickers.patch +# Downstream only patches counteracting upstream's enforcement of Flatpak +Patch: 1001-Revert-meson-Add-check-for-Flatpak.patch +Patch: 1002-Change-issue-URL-to-Bugzilla.patch +Patch: 1003-Display-warning-regarding-issue-tracker.patch BuildArch: noarch From 4b07b383c8291e6207d4054269897a44c618fd2a Mon Sep 17 00:00:00 2001 From: Sandro Date: Sun, 15 Dec 2024 09:41:05 +0100 Subject: [PATCH 11/15] Update to 51.17 (RHBZ#2332212) --- bottles.spec | 2 +- sources | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bottles.spec b/bottles.spec index f3b1cae..a05405c 100644 --- a/bottles.spec +++ b/bottles.spec @@ -1,6 +1,6 @@ Name: bottles Epoch: 1 -Version: 51.16 +Version: 51.17 Release: %autorelease Summary: Run Windows in a Bottle diff --git a/sources b/sources index 93e98e4..0f2d1a8 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (Bottles-51.16.tar.gz) = 1383f531eb77848c9a444571ed9de0f209a346ff4457b7e64dbb324c05cee894f8309ef5c7f140e2004f007852f60b22e7112f2188b666216fe03452030f63c3 +SHA512 (Bottles-51.17.tar.gz) = ea083cd08cefe6963cd23ef3861427d958fc4da00efda7f8b7d24b8914b3b28c6984a6d4198ebc0dd7e6390693134f082989721ba82325387be4dabc191a82a6 From 8d2e9ed40cc47eb79031ac0f5a21ffbdf630042b Mon Sep 17 00:00:00 2001 From: Sandro Date: Mon, 16 Dec 2024 18:54:38 +0100 Subject: [PATCH 12/15] Lower required Meson version F40 currently has 1.4.1 and probably won't see an update. [skip changelog] --- bottles.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bottles.spec b/bottles.spec index a05405c..a9cc9ef 100644 --- a/bottles.spec +++ b/bottles.spec @@ -113,6 +113,9 @@ Features: %prep %forgeautosetup -p1 +# F40 only has meson 1.4.1. Lower requirement. +sed -r -i 's/(meson_version.*)1\.[0-9]\.[0-9]/\11.4.1/' meson.build + %build %meson From 98a0351048dd7f04cb7b6858cd8c50d4bcfefdb4 Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 8 Jan 2025 09:57:06 +0100 Subject: [PATCH 13/15] Do not require Xdp (RHBZ#2336311) Xdp is used for Flatpak introspection. Since we are distributing this as an RPM package, we do not need to check for Flatpak environment. --- 1004-Do-not-require-Xdp.patch | 93 +++++++++++++++++++++++++++++++++++ bottles.spec | 1 + 2 files changed, 94 insertions(+) create mode 100644 1004-Do-not-require-Xdp.patch diff --git a/1004-Do-not-require-Xdp.patch b/1004-Do-not-require-Xdp.patch new file mode 100644 index 0000000..74d6ba1 --- /dev/null +++ b/1004-Do-not-require-Xdp.patch @@ -0,0 +1,93 @@ +From c198a4c289b16a88c55d90d078ea46d538450947 Mon Sep 17 00:00:00 2001 +From: Sandro +Date: Wed, 8 Jan 2025 09:44:32 +0100 +Subject: [PATCH] Do not require Xdp + +This was used for Flatpak introspection. No need to depend on Xdp in the +RPM package. +--- + bottles/frontend/main.py | 1 - + bottles/frontend/windows/main_window.py | 46 ++++++++++++------------- + 2 files changed, 23 insertions(+), 24 deletions(-) + +diff --git a/bottles/frontend/main.py b/bottles/frontend/main.py +index 9f4a5525..fe1053d8 100644 +--- a/bottles/frontend/main.py ++++ b/bottles/frontend/main.py +@@ -26,7 +26,6 @@ from os import path + gi.require_version("Gtk", "4.0") + gi.require_version("Adw", "1") + gi.require_version("GtkSource", "5") +-gi.require_version("Xdp", "1.0") + # gi.require_version("XdpGtk4", "1.0") + + from gi.repository import Gtk, Gio, GLib, GObject, Adw # type: ignore +diff --git a/bottles/frontend/windows/main_window.py b/bottles/frontend/windows/main_window.py +index 48321e2a..fe28d46b 100644 +--- a/bottles/frontend/windows/main_window.py ++++ b/bottles/frontend/windows/main_window.py +@@ -21,7 +21,7 @@ import webbrowser + from gettext import gettext as _ + from typing import Optional + +-from gi.repository import Gtk, GLib, Gio, Adw, GObject, Gdk, Xdp ++from gi.repository import Gtk, GLib, Gio, Adw, GObject, Gdk + + from bottles.backend.globals import Paths + from bottles.backend.health import HealthChecker +@@ -100,30 +100,30 @@ class MainWindow(Adw.ApplicationWindow): + manager.set_color_scheme(Adw.ColorScheme.FORCE_DARK) + + # Be VERY explicit that non-sandboxed environments are unsupported +- if not Xdp.Portal.running_under_sandbox(): +- +- def response(dialog, response, *args): +- if response == "close": +- return +- +- body = _( +- "Bottles developers (upstream) only support Flatpak. Please report any issues with the RPM package in" +- ) +- bug_url = "bugz.fedoraproject.org/bottles" ++ # Flatpak introspection using Xdp removed for RPM package. ++ # https://bugzilla.redhat.com/show_bug.cgi?id=2336311 ++ def response(dialog, response, *args): ++ if response == "close": ++ return ++ ++ body = _( ++ "Bottles developers (upstream) only support Flatpak. Please report any issues with the RPM package in" ++ ) ++ bug_url = "bugz.fedoraproject.org/bottles" + +- error_dialog = Adw.AlertDialog.new( +- _("RPM Package Note"), +- f"{body} Bugzilla." +- ) ++ error_dialog = Adw.AlertDialog.new( ++ _("RPM Package Note"), ++ f"{body} Bugzilla." ++ ) + +- error_dialog.add_response("close", _("Understood")) +- error_dialog.set_body_use_markup(True) +- error_dialog.connect("response", response) +- error_dialog.present(self) +- logging.warn(_("Bottles is only supported within a sandboxed format. Official sources of Bottles are available at:")) +- logging.warn("https://usebottles.com/download/") +- logging.warn(_("Please report any issues using the RPM package to:")) +- logging.warn("https://bugz.fedoraproject.org/bottles") ++ error_dialog.add_response("close", _("Understood")) ++ error_dialog.set_body_use_markup(True) ++ error_dialog.connect("response", response) ++ error_dialog.present(self) ++ logging.warn(_("Bottles is only supported within a sandboxed format. Official sources of Bottles are available at:")) ++ logging.warn("https://usebottles.com/download/") ++ logging.warn(_("Please report any issues using the RPM package to:")) ++ logging.warn("https://bugz.fedoraproject.org/bottles") + + # Loading view + self.page_loading = LoadingView() +-- +2.47.0 + diff --git a/bottles.spec b/bottles.spec index a9cc9ef..b4f5ead 100644 --- a/bottles.spec +++ b/bottles.spec @@ -31,6 +31,7 @@ Patch: 0004-Use-FileDialog-for-all-file-path-pickers.patch Patch: 1001-Revert-meson-Add-check-for-Flatpak.patch Patch: 1002-Change-issue-URL-to-Bugzilla.patch Patch: 1003-Display-warning-regarding-issue-tracker.patch +Patch: 1004-Do-not-require-Xdp.patch BuildArch: noarch From 635db2c02fa46838b01406ebeabf7c495b7d703e Mon Sep 17 00:00:00 2001 From: Packit Date: Mon, 17 Mar 2025 07:02:14 +0000 Subject: [PATCH 14/15] Update to 51.21 upstream release - Resolves: rhbz#2338098 Upstream tag: 51.21 Upstream commit: c0d6737a Commit authored by Packit automation (https://packit.dev/) --- README.packit | 2 +- bottles.spec | 2 +- sources | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.packit b/README.packit index 5c0e101..f5cc99f 100644 --- a/README.packit +++ b/README.packit @@ -1,3 +1,3 @@ This repository is maintained by packit. https://packit.dev/ -The file was generated using packit 0.105.0.post1.dev2+g4453c0ec. +The file was generated using packit 1.2.0.post1.dev13+g55ed4527. diff --git a/bottles.spec b/bottles.spec index b4f5ead..681669d 100644 --- a/bottles.spec +++ b/bottles.spec @@ -1,6 +1,6 @@ Name: bottles Epoch: 1 -Version: 51.17 +Version: 51.21 Release: %autorelease Summary: Run Windows in a Bottle diff --git a/sources b/sources index 0f2d1a8..cd90561 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (Bottles-51.17.tar.gz) = ea083cd08cefe6963cd23ef3861427d958fc4da00efda7f8b7d24b8914b3b28c6984a6d4198ebc0dd7e6390693134f082989721ba82325387be4dabc191a82a6 +SHA512 (Bottles-51.21.tar.gz) = cfeea2b3ce46305638d2ad7b0778b8a821793e476fc220040469da51b6454547a5189de93d05c7c0bf1d4ec58fabd8a491ab75dd226510e50637ad00c170414a From b252aa1495a567de0d694e31d5a141721e618692 Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 15 Jan 2025 10:22:24 +0100 Subject: [PATCH 15/15] Rebase patches Drop patch that has been merged upstream. Add patch reverting adoption of AdwWrapBox since it needs at least libadwaita 1.7. [skip changelog] --- 0001-Make-sure-Paths.bottles-exists.patch | 8 +- ...-Catch-AttributeError-in-set_manager.patch | 16 +- ...AttributeError-when-window-is-closed.patch | 8 +- ...FileDialog-for-all-file-path-pickers.patch | 79 --------- 1001-Revert-meson-Add-check-for-Flatpak.patch | 6 +- 1002-Change-issue-URL-to-Bugzilla.patch | 21 +-- ...play-warning-regarding-issue-tracker.patch | 20 +-- 1004-Do-not-require-Xdp.patch | 152 +++++++++++++++--- ...Revert-bottle-row-Port-to-AdwWrapBox.patch | 68 ++++++++ bottles.spec | 4 +- 10 files changed, 232 insertions(+), 150 deletions(-) delete mode 100644 0004-Use-FileDialog-for-all-file-path-pickers.patch create mode 100644 1005-Revert-bottle-row-Port-to-AdwWrapBox.patch diff --git a/0001-Make-sure-Paths.bottles-exists.patch b/0001-Make-sure-Paths.bottles-exists.patch index 6f75c95..1507b65 100644 --- a/0001-Make-sure-Paths.bottles-exists.patch +++ b/0001-Make-sure-Paths.bottles-exists.patch @@ -1,7 +1,7 @@ -From cb8cd4567cd34aac692672362cb87e5f021660cf Mon Sep 17 00:00:00 2001 +From f43e05d590e21634e05b5ff836c874237eddede1 Mon Sep 17 00:00:00 2001 From: Sandro Date: Mon, 4 Mar 2024 20:28:49 +0100 -Subject: [PATCH 1/2] Make sure Paths.bottles exists +Subject: [PATCH 1/3] Make sure Paths.bottles exists When calling `bottles foo.exe` either from the command line or by opening the executable from the file browser with Bottles, Bottles will @@ -13,10 +13,10 @@ It seems check_app_dirs() is never called in that situation. 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bottles/backend/managers/manager.py b/bottles/backend/managers/manager.py -index 2a923ec8..42a87167 100644 +index 8b04c30e..970df26d 100644 --- a/bottles/backend/managers/manager.py +++ b/bottles/backend/managers/manager.py -@@ -812,7 +812,11 @@ class Manager(metaclass=Singleton): +@@ -813,7 +813,11 @@ class Manager(metaclass=Singleton): Check for local bottles and update the local_bottles list. Will also mark the broken ones if the configuration file is missing """ diff --git a/0002-Catch-AttributeError-in-set_manager.patch b/0002-Catch-AttributeError-in-set_manager.patch index 8e93336..34537a0 100644 --- a/0002-Catch-AttributeError-in-set_manager.patch +++ b/0002-Catch-AttributeError-in-set_manager.patch @@ -1,18 +1,18 @@ -From 5302231bc20db5912349bd3bce27df5a4acf9256 Mon Sep 17 00:00:00 2001 +From 202a3cd999e8685549aee4b9c206bdcfa003c82a Mon Sep 17 00:00:00 2001 From: Sandro Date: Mon, 4 Mar 2024 21:45:51 +0100 -Subject: [PATCH 2/2] Catch AttributeError in set_manager() +Subject: [PATCH 2/3] Catch AttributeError in set_manager() Return empty list if AttributeError is raised. --- - bottles/frontend/windows/main_window.py | 9 ++++++--- + bottles/frontend/windows/window.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) -diff --git a/bottles/frontend/windows/main_window.py b/bottles/frontend/windows/main_window.py -index 5fb9a15c..cd26408b 100644 ---- a/bottles/frontend/windows/main_window.py -+++ b/bottles/frontend/windows/main_window.py -@@ -178,9 +178,12 @@ class MainWindow(Adw.ApplicationWindow): +diff --git a/bottles/frontend/windows/window.py b/bottles/frontend/windows/window.py +index bddd3f34..c5cf2b37 100644 +--- a/bottles/frontend/windows/window.py ++++ b/bottles/frontend/windows/window.py +@@ -213,9 +213,12 @@ class BottlesWindow(Adw.ApplicationWindow): def set_manager(result: Manager, error=None): self.manager = result diff --git a/0003-Catch-AttributeError-when-window-is-closed.patch b/0003-Catch-AttributeError-when-window-is-closed.patch index da815cb..2777d9e 100644 --- a/0003-Catch-AttributeError-when-window-is-closed.patch +++ b/0003-Catch-AttributeError-when-window-is-closed.patch @@ -1,7 +1,7 @@ -From 25ca897f6a04187cec0e06e4740abf8378cf0d43 Mon Sep 17 00:00:00 2001 +From e2ce1892c557f1f81ba5883eee1d19a120abb2c2 Mon Sep 17 00:00:00 2001 From: Sandro Date: Sat, 9 Nov 2024 13:42:00 +0100 -Subject: [PATCH] Catch AttributeError when window is closed +Subject: [PATCH 3/3] Catch AttributeError when window is closed In certain situations Bottles crashes with: @@ -13,10 +13,10 @@ This should allow Bottles to exit without error. 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/bottles/frontend/main.py b/bottles/frontend/main.py -index 5616ab22..7c44b585 100644 +index f6a07b15..ea3d7ad1 100644 --- a/bottles/frontend/main.py +++ b/bottles/frontend/main.py -@@ -260,7 +260,10 @@ class Bottles(Adw.Application): +@@ -267,7 +267,10 @@ class Bottles(Adw.Application): logging.info( _("[Quit] request received."), ) diff --git a/0004-Use-FileDialog-for-all-file-path-pickers.patch b/0004-Use-FileDialog-for-all-file-path-pickers.patch deleted file mode 100644 index 31fa7f0..0000000 --- a/0004-Use-FileDialog-for-all-file-path-pickers.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 77bc57c6a2468d4c28f9c8e80ca20fd4e2e48dfb Mon Sep 17 00:00:00 2001 -From: Sandro -Date: Sat, 9 Nov 2024 16:59:50 +0100 -Subject: [PATCH] Use FileDialog for all file/path pickers - -- Use `FileDialog` throughout -- Handle whatever `GLib.Error` throws our way -- Handle it the same way regardless of dialog ---- - bottles/frontend/windows/launchoptions.py | 43 ++++++++++++++--------- - 1 file changed, 27 insertions(+), 16 deletions(-) - -diff --git a/bottles/frontend/windows/launchoptions.py b/bottles/frontend/windows/launchoptions.py -index adb122a3..79dbedd6 100644 ---- a/bottles/frontend/windows/launchoptions.py -+++ b/bottles/frontend/windows/launchoptions.py -@@ -279,6 +279,7 @@ class LaunchOptionsDialog(Adw.Window): - else: - # something else happened... - logging.warning("Error selecting post-run script: %s" % error) -+ pass - - dialog = Gtk.FileDialog.new() - dialog.set_title("Select Post-run Script") -@@ -296,25 +297,35 @@ class LaunchOptionsDialog(Adw.Window): - self.btn_post_script_reset.set_visible(False) - - def __choose_cwd(self, *_args): -- def set_path(dialog, response): -- if response != Gtk.ResponseType.ACCEPT: -- self.action_cwd.set_subtitle(self.__default_cwd_msg) -- return -- -- directory_path = dialog.get_file().get_path() -- self.program["folder"] = directory_path -- self.action_cwd.set_subtitle(directory_path) -- self.btn_cwd_reset.set_visible(True) -+ def set_path(dialog, result): - -- dialog = Gtk.FileChooserNative.new( -- title=_("Select Working Directory"), -- parent=self.window, -- action=Gtk.FileChooserAction.SELECT_FOLDER, -- ) -+ try: -+ directory = dialog.select_folder_finish(result) -+ -+ if directory is None: -+ self.action_cwd.set_subtitle( -+ self.__default_cwd_msg) -+ return - -+ directory_path = directory.get_path() -+ self.program["folder"] = directory_path -+ self.action_cwd.set_subtitle(directory_path) -+ self.btn_cwd_reset.set_visible(True) -+ except GLib.Error as error: -+ # also thrown when dialog has been cancelled -+ if error.code == 2: -+ # error 2 seems to be 'dismiss' or 'cancel' -+ if self.program["folder"] is None or self.program["folder"] == "": -+ self.action_cwd.set_subtitle(self.__default_cwd_msg) -+ else: -+ # something else happened... -+ logging.warning("Error selecting folder: %s" % error) -+ raise -+ -+ dialog = Gtk.FileDialog.new() -+ dialog.set_title("Select Working Directory") - dialog.set_modal(True) -- dialog.connect("response", set_path) -- dialog.show() -+ dialog.select_folder(parent=self.window, callback=set_path) - - def __reset_cwd(self, *_args): - """ --- -2.47.0 - diff --git a/1001-Revert-meson-Add-check-for-Flatpak.patch b/1001-Revert-meson-Add-check-for-Flatpak.patch index 424dd72..7f1eb50 100644 --- a/1001-Revert-meson-Add-check-for-Flatpak.patch +++ b/1001-Revert-meson-Add-check-for-Flatpak.patch @@ -1,7 +1,7 @@ -From eeb64140ebb693642c1c27689d8f99772bb00106 Mon Sep 17 00:00:00 2001 +From 387213dd5c1179f1dbf8352ac389cbf8323a0d6f Mon Sep 17 00:00:00 2001 From: Sandro Date: Sun, 8 Dec 2024 11:11:27 +0100 -Subject: [PATCH 1001/1003] Revert "meson: Add check for Flatpak" +Subject: [PATCH 1001/1005] Revert "meson: Add check for Flatpak" We still want to package Bottle as RPM for our users, despite upstream having a very strong, almost hostile, preference for Flatpak. @@ -29,5 +29,5 @@ index 6ff7c011..c26ea0b9 100644 '__init__.py', 'main.py', -- -2.47.0 +2.49.0 diff --git a/1002-Change-issue-URL-to-Bugzilla.patch b/1002-Change-issue-URL-to-Bugzilla.patch index 3b20c02..9806185 100644 --- a/1002-Change-issue-URL-to-Bugzilla.patch +++ b/1002-Change-issue-URL-to-Bugzilla.patch @@ -1,19 +1,19 @@ -From 979dce37851de94d1e82ac5486089c5b67cf5583 Mon Sep 17 00:00:00 2001 +From bd5ebc6dc6ae529c933ae2655b27f9ee04a1dc44 Mon Sep 17 00:00:00 2001 From: Sandro Date: Sun, 8 Dec 2024 11:22:42 +0100 -Subject: [PATCH 1002/1003] Change issue URL to Bugzilla +Subject: [PATCH 1002/1005] Change issue URL to Bugzilla Since upstream does not whish to receive bug reports from non-Flatpak users, direct them to Bugzilla instead. --- - data/com.usebottles.bottles.metainfo.xml.in.in | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + data/com.usebottles.bottles.metainfo.xml.in.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/com.usebottles.bottles.metainfo.xml.in.in b/data/com.usebottles.bottles.metainfo.xml.in.in -index ee38f806..1b306002 100644 +index 52f33b91..d4c1e49d 100644 --- a/data/com.usebottles.bottles.metainfo.xml.in.in +++ b/data/com.usebottles.bottles.metainfo.xml.in.in -@@ -52,7 +52,7 @@ +@@ -70,7 +70,7 @@ @APP_ID@ https://usebottles.com @@ -22,13 +22,6 @@ index ee38f806..1b306002 100644 https://docs.usebottles.com https://usebottles.com/funding https://hosted.weblate.org/engage/bottles -@@ -246,4 +246,4 @@ - - - -- -\ No newline at end of file -+ -- -2.47.0 +2.49.0 diff --git a/1003-Display-warning-regarding-issue-tracker.patch b/1003-Display-warning-regarding-issue-tracker.patch index a6e02e7..eb29c08 100644 --- a/1003-Display-warning-regarding-issue-tracker.patch +++ b/1003-Display-warning-regarding-issue-tracker.patch @@ -1,19 +1,19 @@ -From 723cdc6bc58c65a4aa6672971ba0f22f2b3523f6 Mon Sep 17 00:00:00 2001 +From 946114f3aba1913d4cd9c9498a35cee2da1d0cf0 Mon Sep 17 00:00:00 2001 From: Sandro Date: Sun, 8 Dec 2024 12:21:57 +0100 -Subject: [PATCH 1003/1003] Display warning regarding issue tracker +Subject: [PATCH 1003/1005] Display warning regarding issue tracker Make sure users know where to report bugs regarding the RPM package of Bottles. Revert upstream's outright denial of usage. --- - bottles/frontend/windows/main_window.py | 23 ++++++++++------------- + bottles/frontend/windows/window.py | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) -diff --git a/bottles/frontend/windows/main_window.py b/bottles/frontend/windows/main_window.py -index 79bf0d72..48321e2a 100644 ---- a/bottles/frontend/windows/main_window.py -+++ b/bottles/frontend/windows/main_window.py -@@ -104,29 +104,26 @@ class MainWindow(Adw.ApplicationWindow): +diff --git a/bottles/frontend/windows/window.py b/bottles/frontend/windows/window.py +index 802b08b5..d31d0cf7 100644 +--- a/bottles/frontend/windows/window.py ++++ b/bottles/frontend/windows/window.py +@@ -102,29 +102,26 @@ class BottlesWindow(Adw.ApplicationWindow): def response(dialog, response, *args): if response == "close": @@ -46,7 +46,7 @@ index 79bf0d72..48321e2a 100644 - ) - logging.error("https://usebottles.com/download/") - return -+ logging.warn(_("Bottles is only supported within a sandboxed format. Official sources of Bottles are available at:")) ++ logging.warn(_("Bottles is only supported within a sandboxed environment. Official sources of Bottles are available at:")) + logging.warn("https://usebottles.com/download/") + logging.warn(_("Please report any issues using the RPM package to:")) + logging.warn("https://bugz.fedoraproject.org/bottles") @@ -54,5 +54,5 @@ index 79bf0d72..48321e2a 100644 # Loading view self.page_loading = LoadingView() -- -2.47.0 +2.49.0 diff --git a/1004-Do-not-require-Xdp.patch b/1004-Do-not-require-Xdp.patch index 74d6ba1..806637c 100644 --- a/1004-Do-not-require-Xdp.patch +++ b/1004-Do-not-require-Xdp.patch @@ -1,31 +1,136 @@ -From c198a4c289b16a88c55d90d078ea46d538450947 Mon Sep 17 00:00:00 2001 +From e1c62b61b00b89d0ce39c68cf62556fa38ddc1a3 Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 8 Jan 2025 09:44:32 +0100 -Subject: [PATCH] Do not require Xdp +Subject: [PATCH 1004/1005] Do not require Xdp -This was used for Flatpak introspection. No need to depend on Xdp in the -RPM package. +This is used for Flatpak introspection. No need to depend on Xdp in the +RPM package. We will never run in a sandboxed environment. --- - bottles/frontend/main.py | 1 - - bottles/frontend/windows/main_window.py | 46 ++++++++++++------------- - 2 files changed, 23 insertions(+), 24 deletions(-) + bottles/frontend/main.py | 1 - + bottles/frontend/views/bottle_details.py | 16 +------- + bottles/frontend/views/bottle_preferences.py | 4 +- + bottles/frontend/views/list.py | 5 +-- + bottles/frontend/views/new_bottle_dialog.py | 4 +- + bottles/frontend/windows/window.py | 42 ++++++++++---------- + 6 files changed, 27 insertions(+), 45 deletions(-) diff --git a/bottles/frontend/main.py b/bottles/frontend/main.py -index 9f4a5525..fe1053d8 100644 +index f6a07b15..5bbf548c 100644 --- a/bottles/frontend/main.py +++ b/bottles/frontend/main.py -@@ -26,7 +26,6 @@ from os import path +@@ -34,7 +34,6 @@ from bottles.frontend.params import ( gi.require_version("Gtk", "4.0") gi.require_version("Adw", "1") gi.require_version("GtkSource", "5") -gi.require_version("Xdp", "1.0") # gi.require_version("XdpGtk4", "1.0") - from gi.repository import Gtk, Gio, GLib, GObject, Adw # type: ignore -diff --git a/bottles/frontend/windows/main_window.py b/bottles/frontend/windows/main_window.py -index 48321e2a..fe28d46b 100644 ---- a/bottles/frontend/windows/main_window.py -+++ b/bottles/frontend/windows/main_window.py + # ruff: noqa: E402 +diff --git a/bottles/frontend/views/bottle_details.py b/bottles/frontend/views/bottle_details.py +index 65667ea9..ebf7079a 100644 +--- a/bottles/frontend/views/bottle_details.py ++++ b/bottles/frontend/views/bottle_details.py +@@ -21,7 +21,7 @@ from datetime import datetime + from gettext import gettext as _ + from typing import List, Optional + +-from gi.repository import Gtk, Gio, Adw, Gdk, GLib, Xdp ++from gi.repository import Gtk, Gio, Adw, Gdk, GLib + + from bottles.backend.managers.backup import BackupManager + from bottles.backend.models.config import BottleConfig +@@ -437,19 +437,7 @@ class BottleView(Adw.PreferencesPage): + dialog.show() + + if Xdp.Portal.running_under_sandbox(): +- if self.window.settings.get_boolean("show-sandbox-warning"): +- dialog = Adw.MessageDialog.new( +- self.window, +- _("Be Aware of Sandbox"), +- _( +- "Bottles is running in a sandbox, a restricted permission environment needed to keep you safe. If the program won't run, consider moving inside the bottle (3 dots icon on the top), then launch from there." +- ), +- ) +- dialog.add_response("dismiss", _("_Dismiss")) +- dialog.connect("response", show_chooser) +- dialog.present() +- else: +- show_chooser() ++ show_chooser() + + def __backup(self, widget, backup_type): + """ +diff --git a/bottles/frontend/views/bottle_preferences.py b/bottles/frontend/views/bottle_preferences.py +index 288e693b..4e989fb2 100644 +--- a/bottles/frontend/views/bottle_preferences.py ++++ b/bottles/frontend/views/bottle_preferences.py +@@ -20,7 +20,7 @@ import os + import re + from gettext import gettext as _ + +-from gi.repository import Gtk, Adw, Xdp ++from gi.repository import Gtk, Adw + + from bottles.backend.globals import ( + gamemode_available, +@@ -139,7 +139,7 @@ class PreferencesView(Adw.PreferencesPage): + self.queue = details.queue + self.details = details + +- if not gamemode_available or not Xdp.Portal.running_under_sandbox(): ++ if not gamemode_available: + return + + _not_available = _("This feature is unavailable on your system.") +diff --git a/bottles/frontend/views/list.py b/bottles/frontend/views/list.py +index 43ab9c22..a8f6c587 100644 +--- a/bottles/frontend/views/list.py ++++ b/bottles/frontend/views/list.py +@@ -18,7 +18,7 @@ + from datetime import datetime + from gettext import gettext as _ + +-from gi.repository import Gtk, GLib, Adw, Xdp ++from gi.repository import Gtk, GLib, Adw + + from bottles.backend.models.config import BottleConfig + from bottles.backend.models.result import Result +@@ -82,9 +82,6 @@ class BottlesBottleRow(Adw.ActionRow): + + def run_executable(self, *_args): + """Display file dialog for executable""" +- if not Xdp.Portal.running_under_sandbox(): +- return +- + def set_path(_dialog, response): + if response != Gtk.ResponseType.ACCEPT: + return +diff --git a/bottles/frontend/views/new_bottle_dialog.py b/bottles/frontend/views/new_bottle_dialog.py +index a8b007d4..81fa102e 100644 +--- a/bottles/frontend/views/new_bottle_dialog.py ++++ b/bottles/frontend/views/new_bottle_dialog.py +@@ -17,7 +17,7 @@ + + from gettext import gettext as _ + from typing import Any, Optional +-from gi.repository import Gtk, Adw, Pango, Gio, Xdp, GObject, GLib ++from gi.repository import Gtk, Adw, Pango, Gio, GObject, GLib + + from bottles.backend.models.config import BottleConfig + from bottles.backend.utils.threading import RunAsync +@@ -80,7 +80,7 @@ class BottlesNewBottleDialog(Adw.Dialog): + super().__init__(**kwargs) + # common variables and references + self.window = GtkUtils.get_parent_window() +- if not self.window or not Xdp.Portal.running_under_sandbox(): ++ if not self.window: + return + + self.app = self.window.get_application() +diff --git a/bottles/frontend/windows/window.py b/bottles/frontend/windows/window.py +index d31d0cf7..c8adde1c 100644 +--- a/bottles/frontend/windows/window.py ++++ b/bottles/frontend/windows/window.py @@ -21,7 +21,7 @@ import webbrowser from gettext import gettext as _ from typing import Optional @@ -35,12 +140,15 @@ index 48321e2a..fe28d46b 100644 from bottles.backend.globals import Paths from bottles.backend.health import HealthChecker -@@ -100,30 +100,30 @@ class MainWindow(Adw.ApplicationWindow): +@@ -98,30 +98,28 @@ class BottlesWindow(Adw.ApplicationWindow): manager.set_color_scheme(Adw.ColorScheme.FORCE_DARK) # Be VERY explicit that non-sandboxed environments are unsupported - if not Xdp.Portal.running_under_sandbox(): -- ++ def response(dialog, response, *args): ++ if response == "close": ++ return + - def response(dialog, response, *args): - if response == "close": - return @@ -49,12 +157,6 @@ index 48321e2a..fe28d46b 100644 - "Bottles developers (upstream) only support Flatpak. Please report any issues with the RPM package in" - ) - bug_url = "bugz.fedoraproject.org/bottles" -+ # Flatpak introspection using Xdp removed for RPM package. -+ # https://bugzilla.redhat.com/show_bug.cgi?id=2336311 -+ def response(dialog, response, *args): -+ if response == "close": -+ return -+ + body = _( + "Bottles developers (upstream) only support Flatpak. Please report any issues with the RPM package in" + ) @@ -73,7 +175,7 @@ index 48321e2a..fe28d46b 100644 - error_dialog.set_body_use_markup(True) - error_dialog.connect("response", response) - error_dialog.present(self) -- logging.warn(_("Bottles is only supported within a sandboxed format. Official sources of Bottles are available at:")) +- logging.warn(_("Bottles is only supported within a sandboxed environment. Official sources of Bottles are available at:")) - logging.warn("https://usebottles.com/download/") - logging.warn(_("Please report any issues using the RPM package to:")) - logging.warn("https://bugz.fedoraproject.org/bottles") @@ -81,7 +183,7 @@ index 48321e2a..fe28d46b 100644 + error_dialog.set_body_use_markup(True) + error_dialog.connect("response", response) + error_dialog.present(self) -+ logging.warn(_("Bottles is only supported within a sandboxed format. Official sources of Bottles are available at:")) ++ logging.warn(_("Bottles is only supported within a sandboxed environment. Official sources of Bottles are available at:")) + logging.warn("https://usebottles.com/download/") + logging.warn(_("Please report any issues using the RPM package to:")) + logging.warn("https://bugz.fedoraproject.org/bottles") @@ -89,5 +191,5 @@ index 48321e2a..fe28d46b 100644 # Loading view self.page_loading = LoadingView() -- -2.47.0 +2.49.0 diff --git a/1005-Revert-bottle-row-Port-to-AdwWrapBox.patch b/1005-Revert-bottle-row-Port-to-AdwWrapBox.patch new file mode 100644 index 0000000..00e97f8 --- /dev/null +++ b/1005-Revert-bottle-row-Port-to-AdwWrapBox.patch @@ -0,0 +1,68 @@ +From 4c4f5f2274bfe174e82d7c68627fb6c95b04fd8b Mon Sep 17 00:00:00 2001 +From: Sandro +Date: Wed, 15 Jan 2025 20:59:47 +0100 +Subject: [PATCH 1005/1005] Revert "bottle-row: Port to AdwWrapBox" + +AdwWrapBox is still deemed unstable and only available since 1.7. + +This reverts commit eb81c0306ef20aa5e4c0104a0a6d55779996b027. +--- + bottles/frontend/ui/bottle-row.blp | 16 ++++++++++------ + bottles/frontend/views/list.py | 6 +++--- + 2 files changed, 13 insertions(+), 9 deletions(-) + +diff --git a/bottles/frontend/ui/bottle-row.blp b/bottles/frontend/ui/bottle-row.blp +index 163900ea..2598ed52 100644 +--- a/bottles/frontend/ui/bottle-row.blp ++++ b/bottles/frontend/ui/bottle-row.blp +@@ -5,13 +5,17 @@ template $BottlesBottleRow: Adw.ActionRow { + activatable: true; + use-markup: false; + +- Adw.WrapBox wrap_box { +- valign: center; ++ Box { ++ spacing: 6; + +- styles [ +- "tag", +- "caption", +- ] ++ Label label_env { ++ valign: center; ++ ++ styles [ ++ "tag", ++ "caption", ++ ] ++ } + } + + Button button_run { +diff --git a/bottles/frontend/views/list.py b/bottles/frontend/views/list.py +index a8f6c587..91a52e2b 100644 +--- a/bottles/frontend/views/list.py ++++ b/bottles/frontend/views/list.py +@@ -37,7 +37,7 @@ class BottlesBottleRow(Adw.ActionRow): + + # region Widgets + button_run = Gtk.Template.Child() +- wrap_box = Gtk.Template.Child() ++ label_env = Gtk.Template.Child() + + # endregion + +@@ -74,8 +74,8 @@ class BottlesBottleRow(Adw.ActionRow): + self.set_title(self.config.Name) + if self.window.settings.get_boolean("update-date"): + self.set_subtitle(update_date) +- +- self.wrap_box.append(Gtk.Label.new(self.config.Environment)) ++ self.label_env.set_text(_(self.config.Environment)) ++ self.label_env.add_css_class("tag-%s" % self.config.Environment.lower()) + + # Set tooltip text + self.button_run.set_tooltip_text(_(f"Run executable in “{self.config.Name}”")) +-- +2.49.0 + diff --git a/bottles.spec b/bottles.spec index 681669d..f5edbfb 100644 --- a/bottles.spec +++ b/bottles.spec @@ -24,14 +24,12 @@ Patch: 0002-Catch-AttributeError-in-set_manager.patch # Catch AttributeError when closing window # https://bugzilla.redhat.com/show_bug.cgi?id=2313567 Patch: 0003-Catch-AttributeError-when-window-is-closed.patch -# Attempt to prevent segfaults when picking files -# https://bugzilla.redhat.com/show_bug.cgi?id=2296214 -Patch: 0004-Use-FileDialog-for-all-file-path-pickers.patch # Downstream only patches counteracting upstream's enforcement of Flatpak Patch: 1001-Revert-meson-Add-check-for-Flatpak.patch Patch: 1002-Change-issue-URL-to-Bugzilla.patch Patch: 1003-Display-warning-regarding-issue-tracker.patch Patch: 1004-Do-not-require-Xdp.patch +Patch: 1005-Revert-bottle-row-Port-to-AdwWrapBox.patch BuildArch: noarch