Closed deeplow closed 8 months ago
We'll have to add support for python 3.12 to support fedora-39
And it looks like we can't really support python 3.12 at the moment because pyside6 is not compatible yet:
- pyside6 requires Python <3.12,>=3.7, so it will not be satisfied for Python >=3.12,<3.13
Fedora 39 was released today, the upgrade caused Dangerzone to be uninstalled for now.
Fedora 39 was released today, the upgrade caused Dangerzone to be uninstalled for now.
That's quite unfortunate. I've been keeping an eye on Fedora 39 but it looks like Dangerzone needs something that Fedora 39 doesn't yet provide. I'm talking about the PySide2 package, the element that shows the graphical user interface of Dangerzone.
Until that's available, I'm not sure there's something we can do about it.
However, if you (or someone else reading this thread) has the technical skill to run from the source code, you can still do it on fedora 39. In this case it'll install pyside2 via poetry instead (the dependency management tool).
Digging a bit more into this it looks like nobody stepped up to package PySide2 for Fedora 39 and so it's now retired. The maintainers state that:
Without upstream support, finding someone with the time and volition to package PySide6 seems to be the way forward.
This is an unfortunate state of affairs which will certainly make us reevaluate our Fedora support.
I took a look at how other packages are affected by the lack of python3-pyside2
in the Fedora 39 repos. First of all, here are the Fedora 38 packages that depend on python3-pyside2
:
$ dnf repoquery --whatdepends python3-pyside2
flent-0:2.1.1-2.fc38.noarch
freecad-1:0.20.2-3.fc38.x86_64
mygnuhealth-0:1.0.5-4.fc38.noarch
pico-wizard-0:0.1.0^git20220929.934dbcf-2.fc38.noarch
python3-qdarkstyle+example-0:3.0.3-2.fc38.noarch
python3-qdarkstyle-0:3.0.2-7.fc38.noarch
python3-usd-0:22.05b-24.fc38.x86_64
ubertooth-specan-ui-0:2020.12.R1-11.fc38.x86_64
And here are the dependencies of the same packages in Fedora 39:
$ for package in $(cat packages); do echo ">>> $package" && dnf repoquery --depends $package 2>/dev/null; done
>>> flent
/usr/bin/bash
/usr/bin/python3
fping
golang-github-heistp-irtt
netperf
python(abi) = 3.12
python3-QtPy
python3-matplotlib
python3-matplotlib-qt5
python3-pyside2
>>> freecad
>>> mygnuhealth
/usr/bin/python3
kf5-kirigami2
python(abi) = 3.12
python3-pyside2
python3.12dist(bcrypt)
python3.12dist(matplotlib)
python3.12dist(requests)
python3.12dist(tinydb)
>>> pico-wizard
>>> python3-qdarkstyle+example
/usr/bin/python3
python(abi) = 3.12
python3-qdarkstyle = 3.0.3-4.fc39
python3-qdarkstyle = 3.1-2.fc39
python3.12dist(pyqt5)
>>> python3-qdarkstyle
/usr/bin/python3
python(abi) = 3.12
python3-qdarkstyle+develop = 3.0.3-4.fc39
python3-qdarkstyle+develop = 3.1-2.fc39
python3.12dist(qtpy) >= 1.9
python3dist(helpdev)
>>> python3-usd
font(roboto)
font(robotoblack)
font(robotolight)
font(robotomono)
libboost_python312.so.1.81.0()(64bit)
libc.so.6(GLIBC_2.34)(64bit)
libgcc_s.so.1()(64bit)
libgcc_s.so.1(GCC_3.0)(64bit)
libgcc_s.so.1(GCC_3.3.1)(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libm.so.6(GLIBC_2.27)(64bit)
libm.so.6(GLIBC_2.29)(64bit)
libpython3.12.so.1.0()(64bit)
libstdc++.so.6()(64bit)
libstdc++.so.6(CXXABI_1.3)(64bit)
libstdc++.so.6(CXXABI_1.3.13)(64bit)
libstdc++.so.6(CXXABI_1.3.3)(64bit)
libstdc++.so.6(CXXABI_1.3.5)(64bit)
libstdc++.so.6(CXXABI_1.3.9)(64bit)
libstdc++.so.6(GLIBCXX_3.4)(64bit)
libstdc++.so.6(GLIBCXX_3.4.11)(64bit)
libstdc++.so.6(GLIBCXX_3.4.14)(64bit)
libstdc++.so.6(GLIBCXX_3.4.15)(64bit)
libstdc++.so.6(GLIBCXX_3.4.17)(64bit)
libstdc++.so.6(GLIBCXX_3.4.18)(64bit)
libstdc++.so.6(GLIBCXX_3.4.21)(64bit)
libstdc++.so.6(GLIBCXX_3.4.22)(64bit)
libstdc++.so.6(GLIBCXX_3.4.26)(64bit)
libstdc++.so.6(GLIBCXX_3.4.29)(64bit)
libstdc++.so.6(GLIBCXX_3.4.30)(64bit)
libstdc++.so.6(GLIBCXX_3.4.32)(64bit)
libstdc++.so.6(GLIBCXX_3.4.9)(64bit)
libtbb.so.2()(64bit)
libusd_ms.so.0.23.8()(64bit)
python(abi) = 3.12
python3dist(jinja2)
python3dist(pyopengl)
rtld(GNU_HASH)
>>> ubertooth-specan-ui
/usr/bin/python3
python(abi) = 3.12
python3-QtPy
python3-pyside2(x86-64)
ubertooth(x86-64) = 2020.12.R1-13.fc39
The interesting thing here is that some of the packages have switched to this project: https://pypi.org/project/QtPy/. If I get this right, this project can use either PySide6, PySide2, or PyQt5 under the hood. PyQt5 is probably the only thing that's working in Fedora 39 for now. Will give it a look and report back.
The interesting thing here is that some of the packages have switched to this project: https://pypi.org/project/QtPy/. If I get this right, this project can use either PySide6, PySide2, or PyQt5 under the hood. PyQt5 is probably the only thing that's working in Fedora 39 for now. Will give it a look and report back.
Looks potentially interesting...
However something strikes me... My GNU Health has python3-pyside2 as a dependency, but that dep is not available on Fedora 39... I wonder what would happen if we install it :thinking:
Right, I forgot to mention this. As one can see, some package still depend on python3-pyside2
. Most of them are broken:
# dnf install mygnuhealth
Error:
Problem: conflicting requests
- nothing provides python3-pyside2 needed by mygnuhealth-1.0.5-6.fc39.noarch from fedora
(try to add '--skip-broken' to skip uninstallable packages)
(I think others have some sort of fallback or optional dependency, but I haven't looked much into it)
Replacing PySide2/6 with QtPy is the easy part. The problem though is that QtPy is just the shim. It still requires proper Qt bindings under the hood. In Fedora 39, if PySide2/6 are not available, this leaves us with PyQt5/6. The issue with these bindings is that they are GPL-licensed, whereas our project is MIT.
FYI, there's a longstanding discussion on the SD Client side to move away from PyQt because they're not the officially supported bindings. (https://github.com/freedomofpress/securedrop-client/issues/1194)
I have some promising news for our Fedora 39 users: we are close to offering a PySide6 RPM of our own. You can read more in our GitHub repo for this package (https://github.com/apyrgio/python3-pyside6-rpm), and follow along the discussion on RedHat's review tracker: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=2255537
Hey @sudwhiwdh. Would you be willing to try out Dangerzone + PySide6 on Fedora 39? We have some candidate packages and we'd be happy to hear some feedback.
@apyrgio Thank you for your request. How can I perform a test?
Thank you for the willingness to help. We are have already wrapped up this week (we're working part-time) so most likely we'll follow up next with with some instructions. Although we already have the PySide6 dependency built, we'll have to build a test version for Fedora 39 since if you were to install Fedora 38 it would fail due to incompatibility with python3.11 and other dependencies (Fedora 39 ships with python 3.12).
Didn't expect such a quick reply, to be honest :star_struck: . Basically, we plan to include the PySide6 package to our YUM repo starting next week. Since you have it already configured, it should be readily available to you. Then, I can provide you with a Dangerzone .rpm through a GitHub branch, and you should be able to install it with dnf install /path/to/dangerzone.rpm
.
If all works well, it should pull the PySide6 dependency, as well as some others, and you'll be able to use it. That's more of a smoke test though. The soak test would be to check if your system becomes degraded somehow, e.g., if other Qt apps misbehave, or if a graphical component crashes, etc. I don't expect this will be the case, but we want to be extra cautious and test under real conditions, since we don't use (pure) Fedora, as a daily driver.
While testing the PySide6 package on a new Fedora 39 system, as installed from a live CD, I see that only the following dependencies need to be installed:
$ sudo dnf install python3-pyside6-6.6.1-1.fc39.x86_64.rpm
==============================================================================================================================================================================================================================================
Package Architecture Version Repository Size
==============================================================================================================================================================================================================================================
Installing:
python3-pyside6 x86_64 6.6.1-1.fc39 @commandline 113 M
Installing dependencies:
community-mysql-common x86_64 8.0.35-1.fc39 updates 76 k
community-mysql-libs x86_64 8.0.35-1.fc39 updates 1.2 M
libpq x86_64 15.3-1.fc39 fedora 215 k
unixODBC x86_64 2.3.11-4.fc39 fedora 482 k
Transaction Summary
==============================================================================================================================================================================================================================================
Install 5 Packages
They seem DB-related, small in size, and most likely won't affect the user's system. Most importantly, there are no extra X11-related packages that the user needs to install. That's great, because it means that there are no Qt programs in our package that require something exotic.
Since you have it already configured, it should be readily available to you. Then, I can provide you with a Dangerzone .rpm through a GitHub branch, and you should be able to install it with dnf install /path/to/dangerzone.rpm .
The package source is currently deactivated. You are welcome to write to me if I can test a new RPM version of Dangerzone.
Will do, I'm waiting on our infra team to enable the Fedora 39 repo. I'll soon be able to provide you with instructions :slightly_smiling_face:
Ok, the Fedora 39 repo should be functional now. Here are some quick instructions on how to install Dangerzone in Fedora 39:
apyrgio/yum-tools-prod
) that contains a Dangerzone 0.5.1 RPM, built specifically to require PySide6 instead of PySide2.
38fa71adf0fa2a8600b9bbb3f654cb139f9e8d3319d3740d3fdbcd1548300f42
.Run the following command to install Dangerzone:
sudo dnf install -y ~/Downloads/dangerzone-0.5.1-1.fc39.x86_64.rpm
This command should download some extra packages, such as python3-pyside6
.
From there on, you can use Dangerzone as you normally would. Of utmost importance is to let us know if you experience any issue with the graphic components, both in the Dangerzone GUI, as well as your system. If it goes well for a week or so, we'll start making it generally available.
Thanks again for helping us out here :slightly_smiling_face:
This command should download some extra packages, such as python3-pyside6.
[user@fedora ~]$ sudo dnf install -y ~/Downloads/dangerzone-0.5.1-1.fc39.x86_64.rpm
[sudo] password for user:
Fedora 39 - x86_64 - Updates 61 kB/s | 19 kB 00:00
Error:
Problem: conflicting requests
- nothing provides python3.12dist(pyside6) needed by dangerzone-0.5.1-1.fc39.x86_64 from @commandline
(try to add '--skip-broken' to skip uninstallable packages)
Oh, I'm sorry, I should have mentioned that you need to enable our repo as well. Once you do so and retry the sudo dnf install -y ...
command, you will be able to pull the python3-pyside6
package.
@apyrgio
I have some initial feedback. Just not so many current occasions to test.
First of all: The installation went smoothly. dangerzone starts and the file conversion worked. So far, I haven't noticed any unusual effects on the rest of the system.
However, there are already some improvements compared to the posted issue at https://github.com/freedomofpress/dangerzone/issues/402:
p.s. Is the app called "dangerzone" or "Dangerzone"? I read different things in the app itself and wonder if clarity would be a good thing. What do you think?
Ok, the fact that your system is stable and Dangerzone does not break is what matters the most. And yeah, we are aware that GUI-wise, Dangerzone does not show up nicely. I can try to give it a check in a Fedora system, if time permits before the next release.
As for the naming it should be "Dangerzone", but I guess that the package name (dangerzone
) somehow leaks to the user :confused:
Thanks a lot for the user testing @sudwhiwdh, and your thorough feedback :slightly_smiling_face:
Thanks for testing!
Appropriate app icon is now also displayed in the window overview instead of the generic app icon.
That's this issue. https://github.com/freedomofpress/dangerzone/issues/645
@deeplow
That's this issue. https://github.com/freedomofpress/dangerzone/issues/645
I have written that it IS displayed correctly in the window overview with the current test RPM ;)
@apyrgio
And yeah, we are aware that GUI-wise, Dangerzone does not show up nicely.
I don't have any programming experience yet. Is this something I can learn to fix with your help? Also when I think of https://github.com/freedomofpress/dangerzone/issues/645.
We have to copy what the rest of the desktop applications in Fedora do. It's just finding an example repo that's not a mess, and see what we're missing. It might be a handful for a non-programmer, so we'll take care of it. Thanks a lot for stepping up though :slightly_smiling_face:
Heads up for those who can't install Dangerzone in Fedora 39 yet: we plan to release Dangerzone 0.6.0 in the coming days, and with that an RPM for Fedora 39. You should then be able to install it in your system. In the meantime, note that you can build a Dangerzone RPM locally by following our build instructions.
@apyrgio I currently still have https://github.com/freedomofpress/dangerzone/issues/606#issuecomment-1881872097 installed. Do I then need anything else or will I automatically receive an update to the new 0.6.0?
You should get an update automatically, but do let us know if this is not the case.
Fedora 39 will be released very soon we should add support for it.