Menu

Qt5 and AppVeyor

2016-05-28
2016-05-28
  • Massimo Callegari

    Hello everyone, please let me start by saying that I am a big fan of MSYS2 and I'm not here to complain, but more to bring a real usage case and possibly start a contructive discussion.

    I recently started to play with AppVeyor, to build my Qt-based application with it. Obvisouly I was so happy to see MSYS2 support but soon I realized the very tight CPU and time limits (just 1 hour for a build !)

    Unfortunately MSYS2 doesn't help with time consumption and it eats more than 6 minutes to get prepared. Meaning 10% of my whole time slot on AppVeyor.
    The causes are:
    1) the fontconfig package: it takes a couple of minutes to install and I don't understand the reason of it. It just says:
    installing mingw-w64-i686-fontconfig...

    Fontconfig configuration is done via /mingw32/etc/fonts/conf.avail and conf.d.
    Read /mingw32/etc/fonts/conf.d/README for more information.

    updating font cache... done.

    2) the qt5 package. It's been packed with debug+release libraries, with examples and docs. Total of 700MB in XZ and more than 4GB when installed. In my opinion it doesn't make any sense in a CI environment.
    I also have a few doubts that debug libraries are even needed in a desktop environment. If you really need the debug version of the Qt libraries, most likely it means you have found a bug in Qt.
    Usually you will just need release libraries and eventually build YOUR software with debug information. I'd say 90% of users will be just fine with release libraries.

    So, to mitigate Qt eating my time, I built Qt myself with MSYS and packed a 34MB package that I wget from AppVeyor and it's lighting fast to install.

    So, my proposal to the MSYS team is either to:
    1) provide a CI suitable package to the AppVeyor guys (basically like the one I built)
    2) separate debug and release builds of the qt5 package

    I know you will answer me "who has time to do that ?", but since I recently contributed to MSYS with the qt5-git package, I know that this would just mean to create a qt5-debug package, exactly the same of the current qt5 package, where one is built with -release and the other with -debug. That's just a tiny difference, but it makes a huge difference in the end.

    What do you guys think ?

     
  • Alexx83

    Alexx83 - 2016-05-28

    About fontconfig package. After installing it run post-install script https://github.com/Alexpux/MINGW-packages/blob/master/mingw-w64-fontconfig/fontconfig-i686.install that create font cache installed on system. So this is time that fontconfig eat.

    Splitting Qt5 to debug/release is possible I think - you can try to fix PKGBUILD for it. But need lot of attention here as many Qt packages also builded with debug and release.

     
  • Massimo Callegari

    Hi Alexey, thanks for the quick reply.

    fontconfig: I suspected something like that and I'm afraid there's not much that can be done, right ?
    Probably in AppVeyor the post-install process would not be needed, but I understand that providing a custom package to them would be too cumbersome to maintain.

    qt5: I see. I'm trying to imagine how a qt5-debug package could be and I suspect there would be a lot of installation conflicts if it is not done properly.
    A release and a debug build share a lot of common binaries (e.g. qmake, translation tools, etc) so after building and installing the debug version, it should be cleaned up from everything except for the d version of the DLLs. And obviously, it would require the qt5 package as dependency.
    If you want I can attempt to do it and come up with a pull request on GitHub, but right now I don't have much time to do it, sorry.

     
  • Alexx83

    Alexx83 - 2016-05-28

    I think for Qt package we don't need build it twice because this is really too much time. Instead split current build in two parts

     
  • Massimo Callegari

    Ah, that's interesting.
    If that is possible, then it's wonderful !
    Then I'm afraid I don't know the Arch package system well enough to do it myself :(

     
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.