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

Improve packaging procedure #1682

Open
wvengen opened this issue Aug 23, 2024 · 2 comments
Open

Improve packaging procedure #1682

wvengen opened this issue Aug 23, 2024 · 2 comments

Comments

@wvengen
Copy link

wvengen commented Aug 23, 2024

Artisan is a complex piece of software with many dependencies. To make it work easily for users across various platforms, bundled installations are provided. Recently it was also released as a Flatpak (#1602), which required a somewhat different, out-of-tree, installation procedure.

Also noticing that packaging scripts for the different platforms have some overlap, I'm working out to see how the packaging could be improved. My goal is to:

  • better support non-bundled installations
  • cleanup the Flatpak build steps (moving build steps from its manifest to the Artisan source tree)
  • (hopefully) also improve the packaging scripts (incl. bundling), decrease duplication, make it easier maintainable
  • (as a bonus, maybe) reduce the size of bundled installations (re-using the lessons learned from creating the Flatpak)

Note that this issue will probably take quite some time, as bundling often has many thorny sides to it, and it needs testing on all platforms. But I'd like to try to see if this can be improved.

@wvengen
Copy link
Author

wvengen commented Aug 23, 2024

For a start, I've looked at what some other PyQt-based projects are doing, and put it in a spreadsheet: pyqt-packaging.ods

Projects: Vorta, Ginga, Frescobaldi, ReText Markdown editor, ToirtoiseHg, ViTables, OnionShare, Anki client, RazerCfg, QWebOrf, QR Tools. (Note that I have a bit of a Linux bias, please suggest other projects that we could learn from.)

Some main findings:

  • almost all can relatively easily install from source, many also directly from PyPi
  • Linux packages are usually not bundled, Mac OS and Windows are
  • Linux desktop and Flatpak installation often work with the package/wheel + desktop files
  • bundling scripts are often custom
  • i18n and qrc building is always custom, sometimes part of setup.py
  • applications that also provide a library can usually choose between PyQt5, PyQt6, PySide2, PySide6

@wvengen
Copy link
Author

wvengen commented Aug 23, 2024

Seeing that each has their own way to work with i18n and qrc building, it may be a good idea to make this a Python package.
And there is: setup_qt, pyqt-distutils and distutils-ui, though they're really old and don't support PyQt6.

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

No branches or pull requests

1 participant