egara / buttermanager

ButterManager is a BTRFS tool for managing snapshots, balancing filesystems and upgrading the system safetly.
GNU General Public License v3.0
129 stars 6 forks source link

Small cleanups and adding RPM packaging spec #24

Closed Conan-Kudo closed 3 years ago

Conan-Kudo commented 3 years ago

This pull request makes some minor cleanups and introduces an RPM spec file for building the package on Fedora.

This has been validated on Fedora 33 and should work with newer versions of Fedora and similar other RPM-based distributions.

Conan-Kudo commented 3 years ago

Unfortunately this spec won't work since you reverted my earlier fixes in 1ebfbec4a47422fb4c0b904d7d05341be0f26809.

What was broken? Perhaps me or @michel-slm can help?

michel-slm commented 3 years ago

@egara looks like PyQt5-sip's version numbers became unsynced from sip's version numbers starting with sip 5.0.0: https://pypi.org/project/PyQt5-sip/#history https://pypi.org/project/sip/#history

Could you clarify if buttermanager really depends on sip 4 but PyQt5-sip 12 (which matches sip 5)? Fedora still has a lot of packages that depend on sip 4 / PyQt5-sip 4 and so having this depends on PyQt5-sip 12 (starting with v1.7, https://github.com/egara/buttermanager/commit/051f2313b717c34db9e3cd148f4201ef104c8b2f) will be a bit problematic for us - unless we ship PyQt5-sip with a renamed module and patch buttermanager to use that, but that's a nightmare to maintain long term.

If we can downgrade buttermanager to use PyQt5-sip 4.x that would be ideal. Thanks!

cc @Conan-Kudo

Conan-Kudo commented 3 years ago

Apparently, ButterManager itself may only need PyQt5, and the dependencies on PyQt5-sip and sip are because of packaging bugs in Arch's build of PyQt5, per #13.

Conan-Kudo commented 3 years ago

@michel-slm @egara I think I've fixed the entrypoint change I did before in this PR, but I'm not sure how to adjust the snapcraft.yaml for this. It seems like it should just work, but I'm not terribly familiar with Snapcraft anymore...

egara commented 3 years ago

Hi guys and thak you very much for your help with all these stuff :)

I'll answer your questions and then I'll install ButterManager with all the changes suggested to see if everything works fine.

Unfortunately this spec won't work since you reverted my earlier fixes in 1ebfbec.

What was broken? Perhaps me or @michel-slm can help?

Yes, with the changes you introduced in the previous PR ButterManager didn't run. Sorry, I'm not very familiar with Python packaging (this is my first project) so I had to revert them.

egara commented 3 years ago

Hi @michel-slm and thank you very much for your help too.

My answers below:

@egara looks like PyQt5-sip's version numbers became unsynced from sip's version numbers starting with sip 5.0.0: https://pypi.org/project/PyQt5-sip/#history https://pypi.org/project/sip/#history

Could you clarify if buttermanager really depends on sip 4 but PyQt5-sip 12 (which matches sip 5)? Fedora still has a lot of packages that depend on sip 4 / PyQt5-sip 4 and so having this depends on PyQt5-sip 12 (starting with v1.7, 051f231) will be a bit problematic for us - unless we ship PyQt5-sip with a renamed module and patch buttermanager to use that, but that's a nightmare to maintain long term.

If we can downgrade buttermanager to use PyQt5-sip 4.x that would be ideal. Thanks!

cc @Conan-Kudo

I think sip is not necessary as @Conan-Kudo said before, but PyQT5-sip yes, because I use it to load the XML generated by QT Designer in order to set up the GUI and all its elements. I'm going to test if I can downgrade it to version 4.19 and if works, it is OK for me if it facilitates the packaging in Fedora.

I'll come back to you later when I test it :)

egara commented 3 years ago

Regarding to this point:

@michel-slm @egara I think I've fixed the entrypoint change I did before in this PR, but I'm not sure how to adjust the snapcraft.yaml for this. It seems like it should just work, but I'm not terribly familiar with Snapcraft anymore...

No worries about snapcarft. I tried to bring ButterManager to the Snap Store https://forum.snapcraft.io/t/requesting-classic-confinement-for-buttermanager/9574 but it wasn't possible because of the nature itself of the application and the limitations imposed in the classic mode.

So this is something that I can remove without any problem.

michel-slm commented 3 years ago

@egara so it turns out PyQt5-sip's API level is already 12 even when their version number was stuck at 4.x when it was paired with sip 4:

$ rpm -q --requires python3-qt5-base | grep sip
python3-pyqt5-sip-api(12) >= 12.7

$ rpm -q --whatprovides 'python3-pyqt5-sip-api(12)'
python3-pyqt5-sip-4.19.24-1.fc33.x86_64

So the setup.py after applying this patch set is fine, since PyQt5 would pull in PyQt5-sip automatically anyway.

I'm getting this error launching this app, will try and investigate but probably won't get to it until tomorrow:

$ buttermanager 
Traceback (most recent call last):
  File "/usr/bin/buttermanager", line 33, in <module>
    sys.exit(load_entry_point('buttermanager==2.2', 'console_scripts', 'buttermanager')())
  File "/usr/bin/buttermanager", line 25, in importlib_load_entry_point
    return next(matches).load()
  File "/usr/lib64/python3.9/importlib/metadata.py", line 77, in load
    module = import_module(match.group('module'))
  File "/usr/lib64/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 790, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/usr/lib/python3.9/site-packages/buttermanager/buttermanager.py", line 19, in <module>
    import exception.exception
ModuleNotFoundError: No module named 'exception'
michel-slm commented 3 years ago

PR #25 resolves the issue mentioned. Now the only remaining problem is setup.py does not install the buttermanager/ui.

Conan-Kudo commented 3 years ago

@egara This now has everything from @michel-slm and myself and you. Can you see if it works and merge it?

egara commented 3 years ago

Hi @Conan-Kudo yes, of course!!. I'm on it. I've been testing and doing some adjustments during the last weekend (not included yet in this branch) but I have very few spare time. I'll try to finish this part this weekend in order to continue :)

jwflory commented 3 years ago

Super excited about this! @Conan-Kudo or @michel-slm, is there any chance we might see a Fedora package come out of this work soon? I know there are folks who would be super excited to pilot this out on Fedora.

egara commented 3 years ago

Hi @jwflory and thank you very much for your enthusiasm! We've been working on this during the last few weekends and I think the application is ready to be packaged finally. I've been talking to @michel-slm in order to continue with the packaging process but he is busy now, so he will continue with it when he can, so sooner or later ButterManager will be available on Fedora :)

Meanwhile I'm going to fix some bugs detected #23 and prepare version 2.3. Thank you again for your feedback!!