Compare commits

...
Sign in to create a new pull request.

17 commits

Author SHA1 Message Date
Sandro
dc21781e07
Add vkbasalt-cli dependency (RHBZ#2277182)
It was accidentally dropped when switching to generated dependencies in
commit 60f51c6.
2024-04-25 19:00:33 +02:00
Sandro
3a764068e0
Add .git-blame-ignore-revs
Use with `git blame --ignore-revs-file` or set the git config option
`blame.ignoreRevsFile`.

[skip changelog]
2024-04-21 16:45:58 +02:00
Sandro
307cb5d136
Properly line out sections
Whitespace changes only.

[skip changelog]
2024-04-21 16:45:58 +02:00
Sandro
f2e90931b0
Generate Python requirements
- Fix RHBZ#2276256

Use upstream's `requirements.txt` to generate Python runtime
requirements. Meson isn't helping us in keeping the list of requirements
complete and up to date. With the added script this becomes semi
automated.
2024-04-21 16:45:58 +02:00
Sandro
41b36c93a4
Catch AttributeError in set_manager()
Return empty list if AttributeError is raised (RHBZ#2260135).
2024-03-10 20:26:09 +01:00
Sandro
5886322d24
Make sure Paths.bottles exists
Fixes a FileNotFoundError when opening an executable directly in
Bottles (RHBZ#2257180).

Earlier reported in RHBZ#2249922, RHBZ#2252369 and RHBZ#2249986.
2024-03-10 20:26:09 +01:00
Packit
ba3e6329c7
[packit] 51.11 upstream release
- Resolves rhbz#2264828

Upstream tag: 51.11
Upstream commit: 89abf684
2024-03-10 20:26:09 +01:00
Sandro
0a7e2e162c
Update meta info (summary, description)
Also re-order spec file a little (pedantic).
2024-01-02 18:43:18 +01:00
Sandro
eb26f5222b
Update to 51.10 (RHBZ#2255734)
- Close RHBZ#2247856 RHBZ#2249922 RHBZ#2254894
2024-01-02 18:43:18 +01:00
Sandro
f54334cda4
Fix Packit configuration
Bottles doesn't munge version ('v' prefix). Tell packit to use the plain
version for computing the download URL.
2024-01-02 18:42:46 +01:00
35ef5736a2
Fix %forgesource
Signed-off-by: Nikola Forró <nforro@redhat.com>
2024-01-02 18:42:46 +01:00
Sandro
a57f888361
Add Packit config 2023-09-30 22:50:15 +02:00
Sandro
1e5c89290f
Add python3-chardet (RHBZ#2240292) 2023-09-30 22:50:15 +02:00
Sandro
bcaf1e0c2a
Drop obsolete macro 2023-09-30 22:50:15 +02:00
Sandro
cc6bd153ea
Use forge macros properly
No need to define tag since we have releases on GitHub. That
makes the `gh_name` macro obsolete.
Also setup using forge magic.
2023-09-30 22:49:11 +02:00
Sandro
a5315fda7c
Update to 51.9 (RHBZ#2233358)
- Update License: value
- Update requirements
- Close RHBZ#2229175 RHBZ#2227538 RHBZ#2224722 RHBZ#2222906
- Close RHBZ#2221500
2023-09-17 22:24:02 +02:00
Lyes Saadi
b1256e12ce
blueprint-compiler: ExcludeArch s390x 2023-09-17 22:23:44 +02:00
9 changed files with 180 additions and 129 deletions

2
.git-blame-ignore-revs Normal file
View file

@ -0,0 +1,2 @@
# Line out sections
53d45d3de51c20d134e62146a0ff82a3114cdeda

62
.gitignore vendored
View file

@ -1,60 +1,2 @@
/bottles-2.0.9.7.tar.gz
/bottles-2.0.9.8.tar.gz
/bottles-2.0.9.9.tar.gz
/bottles-2.1.0.tar.gz
/bottles-2.1.0.2.tar.gz
/bottles-2.1.0.4.tar.gz
/bottles-2.1.0.5.tar.gz
/bottles-2.1.0.6.tar.gz
/bottles-2.1.0.7.tar.gz
/bottles-2.1.1.tar.gz
/bottles-2.1.2.tar.gz
/bottles-3.0.1.1.tar.gz
/bottles-3.0.2.tar.gz
/bottles-3.0.5.tar.gz
/bottles-3.0.6.tar.gz
/bottles-3.0.8.tar.gz
/bottles-3.0.9.tar.gz
/bottles-3.1.0.tar.gz
/bottles-3.1.1.tar.gz
/bottles-3.1.2.tar.gz
/bottles-3.1.3.tar.gz
/bottles-3.1.4.tar.gz
/bottles-3.1.5.tar.gz
/bottles-3.1.6.tar.gz
/bottles-3.1.7.tar.gz
/bottles-3.1.8.tar.gz
/bottles-3.1.9.tar.gz
/bottles-3.1.10.tar.gz
/bottles-3.1.11.tar.gz
/bottles-3.1.12.tar.gz
/bottles-3.1.13.tar.gz
/bottles-3.1.14.tar.gz
/bottles-3.1.15.tar.gz
/bottles-2021.7.3.tar.gz
/bottles-2021.7.14.tar.gz
/bottles-2021.7.28.tar.gz
/bottles-2021.8.14.tar.gz
/bottles-2021.8.28.tar.gz
/bottles-2021.9.14.tar.gz
/bottles-2021.9.28.tar.gz
/bottles-2021.10.14.tar.gz
/bottles-2021.10.28.tar.gz
/bottles-2021.11.14.tar.gz
/bottles-2021.11.28.tar.gz
/bottles-2021.12.14.tar.gz
/bottles-2021.12.28.tar.gz
/bottles-2022.1.14.tar.gz
/bottles-2022.1.28.tar.gz
/bottles-2022.2.14.tar.gz
/bottles-2022.2.28.tar.gz
/bottles-2022.3.14.tar.gz
/bottles-2022.3.28.tar.gz
/bottles-2022.4.14.tar.gz
/bottles-2022.4.28.tar.gz
/bottles-2022.5.2.tar.gz
/bottles-2022.5.14.tar.gz
/bottles-2022.5.28-trento-3.tar.gz
/bottles-2022.6.14-brescia-1.tar.gz
/bottles-2022.7.14-brescia-3.tar.gz
/Bottles-51.6.tar.gz
/Bottles*tar.gz
require*.txt

17
.packit.yaml Normal file
View file

@ -0,0 +1,17 @@
upstream_project_url: https://github.com/bottlesdevs/Bottles
upstream_package_name: Bottles
upstream_tag_template: "{version}"
downstream_package_name: bottles
copy_upstream_release_description: false
jobs:
- job: pull_from_upstream
trigger: release
dist_git_branches:
- fedora-rawhide
- job: koji_build
trigger: commit
dist_git_branches:
- fedora-all

3
README.packit Normal file
View file

@ -0,0 +1,3 @@
This repository is maintained by packit.
https://packit.dev/
The file was generated using packit 0.91.0.post1.dev4+ge6fd4a25.

View file

@ -1,91 +1,93 @@
%global uuid pm.mirko.%{name}
%global gh_name Bottles
%global forgeurl https://github.com/bottlesdevs/%{gh_name}
%global tag 51.6
%global forgeurl https://github.com/bottlesdevs/Bottles
Name: bottles
Epoch: 1
Version: %{tag}
Version: 51.11
Release: %autorelease
BuildArch: noarch
Summary: Run Windows in a Bottle
%global tag %{version}
%forgemeta
License: GPL-3.0-or-later
Summary: Easily manage Wine prefix in a new way
# The following two files are licensed as MIT:
# bottles/backend/models/vdict.py
# bottles/backend/utils/vdf.py
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
# Don't fail on AttributeError
Patch: catch_exception_in_set_manager.patch
BuildRequires: desktop-file-utils
BuildRequires: libappstream-glib
BuildRequires: meson
BuildRequires: python3
# blueprint-compiler does not work on s390x:
# https://gitlab.gnome.org/jwestman/blueprint-compiler/-/issues/96
ExcludeArch: s390x
BuildArch: noarch
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gtk4)
BuildRequires: pkgconfig(libadwaita-1) >= 1.1.99
BuildRequires: desktop-file-utils
BuildRequires: libappstream-glib
BuildRequires: meson
BuildRequires: python3
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gtk4)
BuildRequires: pkgconfig(libadwaita-1) >= 1.1.99
BuildRequires: blueprint-compiler
BuildRequires: blueprint-compiler
Requires: cabextract
Requires: glibc(x86-32) %dnl # https://github.com/bottlesdevs/Bottles/issues/601#issuecomment-936772762
Requires: gtk4
Requires: gtksourceview5
Requires: hicolor-icon-theme
Requires: libadwaita >= 1.1.99
Requires: p7zip p7zip-plugins %dnl # needed by the dependencies manager
Requires: patool
Requires: xdpyinfo %dnl # needed by the display util
Requires: ImageMagick %dnl # https://bugzilla.redhat.com/show_bug.cgi?id=2227538
Requires: cabextract
Requires: glibc(x86-32) %dnl # https://github.com/bottlesdevs/Bottles/issues/601#issuecomment-936772762
Requires: gtk4
Requires: gtksourceview5
Requires: hicolor-icon-theme
Requires: libadwaita >= 1.1.99
Requires: p7zip p7zip-plugins %dnl # needed by the dependencies manager
Requires: patool
Requires: python3-gobject
Requires: python3-icoextract %dnl # icons support
Requires: python3-markdown
Requires: python3-patool
Requires: python3-pefile %dnl # icons support
Requires: python3-pyyaml
Requires: python3-requests %dnl # needed by the download manager
Requires: python3-urllib3 %dnl # needed by the download manager
Requires: xdpyinfo %dnl # needed by the display util
Requires: python3-pathvalidate
Requires: python3-fvs
Requires: python3-vkbasalt-cli
# Use `generate_requires.sh` to generate Python runtime dependencies
# using upstream's `requirements.txt`, which is included in the tarball,
# but not used by Meson.
Requires: python3dist(pyyaml)
Requires: python3dist(pycurl)
Requires: python3dist(chardet)
Requires: python3dist(requests)
Requires: python3dist(markdown)
Requires: python3dist(icoextract)
Requires: python3dist(patool)
Requires: python3dist(pathvalidate)
Requires: python3dist(fvs)
Requires: python3dist(orjson)
Requires: python3dist(pycairo)
Requires: python3dist(pygobject)
Requires: python3dist(charset-normalizer)
Requires: python3dist(idna)
Requires: python3dist(urllib3)
Requires: python3dist(certifi)
Requires: python3dist(pefile)
# Requirements not listed in upstream's `requirements.txt`
Requires: python3dist(vkbasalt-cli)
%description
Easily manage Wine prefix in a new way! (Run Windows software and games on
Linux).
Bottles lets you run Windows software on Linux, such as applications
and games. It introduces a workflow that helps you organize by
categorizing each software to your liking. Bottles provides several
tools and integrations to help you manage and optimize your
applications.
Features:
* Create bottles based on environments (a set of rule and dependencies for
better software compatibility)
* Access to a customizable environment for all your experiments
* Run every executable (.exe/.msi) in your bottles, using the context menu
in your file manager
* Integrated management and storage for executable file arguments
* Support for custom environment variables
* Simplified DLL overrides
* On-the-fly runner change for any Bottle
* Various optimizations for better gaming performance (esync, fsync, dxvk,
cache, shader compiler, offload .. and much more.)
* Tweak different wine prefix settings, without leaving Bottles
* Automated dxvk installation
* Automatic installation and management of Wine and Proton runners
* System for checking runner updates for the bottle and automatic repair in
case of breakage
* Integrated Dependencies installer with compatibility check based on a
community-driver repository
* Detection of installed programs
* Integrated Task manager for wine processes
* Easy access to ProtonDB and WineHQ for support
* Configurations update system across Bottles versions
* Backup bottles as configuration file or full archive
* Import backup archive
* Importer from Bottles v1 (and other wineprefix manager)
* Bottles versioning (experimental)
* .. and much more that you can find by installing Bottles!
- Use pre-configured environments as a base
- Change runners for any bottle
- Various optimizations and options for gaming
- Repair in case software or bottle is broken
- Install various known dependencies
- Integrated task manager to manage and monitor processes
- Backup and restore
%prep
%autosetup -n %{gh_name}-%{version}
%forgeautosetup -p1
%build

View file

@ -0,0 +1,28 @@
commit 3e1db3c75fee5eedb2190e7dba71239e923affb7
Author: Sandro <devel@penguinpee.nl>
Date: Mon Mar 4 21:45:51 2024 +0100
Catch AttributeError in set_manager()
Return empty list if AttributeError is raised.
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):
def set_manager(result: Manager, error=None):
self.manager = result
- tmp_runners = [
- x for x in self.manager.runners_available if not x.startswith("sys-")
- ]
+ try:
+ tmp_runners = [
+ x for x in self.manager.runners_available if not x.startswith("sys-")
+ ]
+ except AttributeError:
+ tmp_runners = []
if len(tmp_runners) == 0:
self.show_onboard_view()

View file

@ -0,0 +1,29 @@
commit 7eed7bbfa5d1da924b4c4e0659f0bf86b0fd7d7b
Author: Sandro <devel@penguinpee.nl>
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 = {}

28
generate_requires.sh Executable file
View file

@ -0,0 +1,28 @@
#!/bin/bash
SPEC_FILE="bottles.spec"
REQUIREMENTS_FILE="requirements.txt"
REQUIREMENTS_SPEC="requires.txt"
# Remove file(s) from previous run
[ -f ${REQUIREMENTS_SPEC} ] && rm -vf ${REQUIREMENTS_SPEC}
[ -f ${REQUIREMENTS_FILE} ] && rm -vf ${REQUIREMENTS_FILE}
# Make sure sources are present
spectool -gSf ${SPEC_FILE} 2>/dev/null
TARBALL="$(rpmspec --parse bottles.spec 2>/dev/null | grep Source0 | sed -r 's/^.*(Bottles.*)/\1/')"
TAR_REQ_FILE="$(tar tzf ${TARBALL} | grep ${REQUIREMENTS_FILE})"
tar -x ${TAR_REQ_FILE} --strip-components=1 -zf ${TARBALL}
# Remove version pinning from listed dependencies
# Require `requests`. The `use_chardet_on_py3` extra is not packaged in
# Fedora, but we have the required version of `chardet` present.
# Remove `wheel` from list - not a runtime requirement.
sed -r -i \
-e 's/(^.*)==.*$/\1/g' \
-e 's/(^requests)\[.*\]/\1/' \
-e '/wheel/d' \
requirements.txt
# Transform requirements for inclusion in spec file
for REQ in $(grep -v '^#' ${REQUIREMENTS_FILE}); do
echo "Requires: python3dist(${REQ@L})" >> ${REQUIREMENTS_SPEC}
done

View file

@ -1 +1 @@
SHA512 (Bottles-51.6.tar.gz) = 0190744b3a99d791ffbd1b7a104565c2fd1f5aa110afe329897d4b29f0f5d669a6ec145468fea85e88b2f20bb2f7f075522760fd7ced94eea1afc0667780b288
SHA512 (Bottles-51.11.tar.gz) = 42c503a4910a8e6c408caecd723edf1405aa034558d61313937a69c7d5ffb20ba4675fc9022775491cbbe6ba4a35ffac508b4721f9c971c57cbcb888345d546b