jurplel / install-qt-action

Install Qt on your Github Actions workflows with just one simple action
MIT License
455 stars 78 forks source link

Installing just the qtbase archive does not deploy libicu which Qt depends on #174

Closed VioletGiraffe closed 1 year ago

VioletGiraffe commented 1 year ago

Qt needs libicu for its string support in the qtbase module. Invoking the install-qt-action results in the libicu being deployed to Qt/lib as expected. But specifying just one qtbase archive results in libicu not being deployed, so the application cannot run. P. S. Encountered with Qt 5, don't know if the same problem exists for Qt 6.

ddalcino commented 1 year ago

Please see https://github.com/miurahr/aqtinstall/issues/532. Libicu is part of the icu archive; when you omit it from the archive line, you are explicitly requesting that is not installed.

VioletGiraffe commented 1 year ago

I see, thank you. Although I'm not sure if there is any reason not to imply icu when qtbase is specified, would anything work at all besides the qmake binary? Speaking of which, is there a way to install just qmake and nothing else? I have a lot of projects that use qmake as the build system, without actually using Qt.

ddalcino commented 1 year ago

I see, thank you. Although I'm not sure if there is any reason not to imply icu when qtbase is specified, would anything work at all besides the qmake binary?

archives is a very low-level feature that gives you very fine grain control over which archives you want to install. If you know you need something that's in one archive and not any of the others, you should use the archives feature. You have to know what you want ahead of time; that's why archives is designated as an 'advanced' feature. It's not easy to use, and it's not meant to be. The aqtinstall docs are packed with warnings about using it. If you just want a working Qt install, don't use the archives feature.

The icu archive is platform specific (Linux only, I think), and it doesn't exist in every version of Qt.

Speaking of which, is there a way to install just qmake and nothing else?

No, there is not. You can try using the archives feature; just set it to [qtbase, icu]; that might be enough for your purposes. You will need to debug/research this on your own to figure out what works for you.

If you want a structured approach to solving this, start with the complete set of all archives and use binary search to rule out all of the archives that are not required to run qmake.

VioletGiraffe commented 1 year ago

Thanks. qtbase alone is enough for qmake, I was just hoping there's a way to download and build even less stuff (thus, create less load on the Github data center and waste less time and energy).

VioletGiraffe commented 1 year ago

@ddalcino By the way, part of the reason I opened this issue and was generally confused is that icu is not mentioned in the README on the list of supported archives.

ddalcino commented 1 year ago

If you have any helpful suggestions for how to improve the README, then by all means please file a PR. The list of supported archives is intentionally incomplete; every release of Qt has a different list of archives, and the list changes based on which architecture you're using. Run aqt list-qt in a terminal or see https://ddalcino.github.io/aqt-list-server/ for the complete list.

I think that the task of explaining how to use archives properly in a README is beyond me. However, adding a quick note about how to minimally install qmake is probably a really good idea, and I encourage you to do it. Please make sure that your instructions work in most (if not all) situations.

VioletGiraffe commented 1 year ago

Thank you, that is a very useful web service indeed! I wonder if qttools is the package that contains qmake, will test it.