Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Fedora 39 support (released Oct 24th) #606

Closed
deeplow opened this issue Oct 16, 2023 · 30 comments · Fixed by #680
Closed

Add Fedora 39 support (released Oct 24th) #606

deeplow opened this issue Oct 16, 2023 · 30 comments · Fixed by #680
Milestone

Comments

@deeplow
Copy link
Contributor

deeplow commented Oct 16, 2023

Fedora 39 will be released very soon we should add support for it.

@deeplow
Copy link
Contributor Author

deeplow commented Oct 16, 2023

We'll have to add support for python 3.12 to support fedora-39

@deeplow
Copy link
Contributor Author

deeplow commented Oct 16, 2023

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

@sudwhiwdh
Copy link
Contributor

Fedora 39 was released today, the upgrade caused Dangerzone to be uninstalled for now.

@deeplow
Copy link
Contributor Author

deeplow commented Nov 8, 2023

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).

@deeplow
Copy link
Contributor Author

deeplow commented Nov 8, 2023

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.

@apyrgio
Copy link
Contributor

apyrgio commented Nov 13, 2023

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.

@deeplow
Copy link
Contributor Author

deeplow commented Nov 13, 2023

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 🤔

@apyrgio
Copy link
Contributor

apyrgio commented Nov 13, 2023

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)

@apyrgio
Copy link
Contributor

apyrgio commented Nov 13, 2023

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.

@eloquence
Copy link
Member

FYI, there's a longstanding discussion on the SD Client side to move away from PyQt because they're not the officially supported bindings. (freedomofpress/securedrop-client#1194)

@apyrgio apyrgio added this to the 0.6.0 milestone Nov 22, 2023
@apyrgio
Copy link
Contributor

apyrgio commented Dec 21, 2023

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

@apyrgio
Copy link
Contributor

apyrgio commented Jan 4, 2024

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.

@sudwhiwdh
Copy link
Contributor

@apyrgio Thank you for your request. How can I perform a test?

@deeplow
Copy link
Contributor Author

deeplow commented Jan 4, 2024

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).

@apyrgio
Copy link
Contributor

apyrgio commented Jan 4, 2024

Didn't expect such a quick reply, to be honest 🤩 . 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.

@apyrgio
Copy link
Contributor

apyrgio commented Jan 8, 2024

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.

@sudwhiwdh
Copy link
Contributor

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.

@apyrgio
Copy link
Contributor

apyrgio commented Jan 8, 2024

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 🙂

@apyrgio
Copy link
Contributor

apyrgio commented Jan 8, 2024

Ok, the Fedora 39 repo should be functional now. Here are some quick instructions on how to install Dangerzone in Fedora 39:

  • I have a Git branch in my fork of our RPM repo (apyrgio/yum-tools-prod) that contains a Dangerzone 0.5.1 RPM, built specifically to require PySide6 instead of PySide2.

    • This RPM is not signed with the production Dangerzone key, since it's a test RPM.
    • The SHA-256 sum of the RPM is: 38fa71adf0fa2a8600b9bbb3f654cb139f9e8d3319d3740d3fdbcd1548300f42.
  • Click on "Raw ⬇️" to download this RPM locally (e.g., in your Downloads folder).

  • 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 🙂

@sudwhiwdh
Copy link
Contributor

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)

@apyrgio
Copy link
Contributor

apyrgio commented Jan 11, 2024

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.

@sudwhiwdh
Copy link
Contributor

sudwhiwdh commented Jan 16, 2024

@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 #402:

  • Appropriate app icon is now also displayed in the window overview instead of the generic app icon.
  • Dock now shows the appropriate app icon, but the name is now "init.py". Previously it was "python3".
    0
  • App icon is not yet displayed in the GNOME search.
    01
  • "Open with" dialog in the context menu unfortunately does not show dangerzone icon so far.
    02
  • The text is cut off in the standard window size of the application. "Open safe documents after converting..."
    03

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?

@apyrgio
Copy link
Contributor

apyrgio commented Jan 16, 2024

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 😕

Thanks a lot for the user testing @sudwhiwdh, and your thorough feedback 🙂

@deeplow
Copy link
Contributor Author

deeplow commented Jan 16, 2024

Thanks for testing!

Appropriate app icon is now also displayed in the window overview instead of the generic app icon.

That's this issue. #645

apyrgio added a commit that referenced this issue Jan 16, 2024
Now that we can create a Dangerzone RPM that depends on PySide6, we can
officially support Fedora 39 as a platform. Add this platform in our CI
tests, as well as our install/release notes.

Fixes #606
@sudwhiwdh
Copy link
Contributor

@deeplow

That's this issue. #645

I have written that it IS displayed correctly in the window overview with the current test RPM ;)

@sudwhiwdh
Copy link
Contributor

@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 #645.

@apyrgio
Copy link
Contributor

apyrgio commented Jan 18, 2024

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 🙂

apyrgio added a commit that referenced this issue Jan 18, 2024
Now that we can create a Dangerzone RPM that depends on PySide6, we can
officially support Fedora 39 as a platform. Add this platform in our CI
tests, as well as our install/release notes.

Fixes #606
apyrgio added a commit that referenced this issue Jan 18, 2024
Now that we can create a Dangerzone RPM that depends on PySide6, we can
officially support Fedora 39 as a platform. Add this platform in our CI
tests, as well as our install/release notes.

Fixes #606
@apyrgio
Copy link
Contributor

apyrgio commented Feb 8, 2024

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.

@sudwhiwdh
Copy link
Contributor

@apyrgio I currently still have #606 (comment) installed.
Do I then need anything else or will I automatically receive an update to the new 0.6.0?

@apyrgio
Copy link
Contributor

apyrgio commented Feb 8, 2024

You should get an update automatically, but do let us know if this is not the case.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants