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 ?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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 ?
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.
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.
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
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 :(