Efraim Flashner <efr...@flashner.co.il> skribis: > On Thu, May 19, 2016 at 02:15:07PM +0200, Ludovic Courtès wrote: >> Efraim Flashner <efr...@flashner.co.il> skribis: >> >> > On Tue, Apr 05, 2016 at 07:22:20AM +0300, Efraim Flashner wrote: >> >> I try very hard to not build qt on my laptop, mostly because of the long >> >> build time (7 hours on hydra [0]). Currently we download and use the big >> >> download of qt[1] and frankly I'd rather not. Qt does also ship in >> >> smaller bits[2], 32 if I counted correctly. I propose we package the >> >> submodules and over time we go through the packages that use qt and >> >> switch out the monolithic qt for just the parts that the program actually >> >> uses. It makes it less daunting to build, should make the closures >> >> smaller, and means that if a submodule fails to build on an architecture >> >> then they only lose that module, not all of qt. >> >> >> >> [0] http://hydra.gnu.org/build/1114596 >> >> [1] >> >> https://download.qt.io/official_releases/qt/5.6/5.6.0/single/qt-everywhere-opensource-src-5.6.0.tar.xz >> >> [2] https://download.qt.io/official_releases/qt/5.6/5.6.0/submodules/ >> >> >> > >> > Finally got around to building qtbase out, took me 6 hours total on my >> > machine. So since hydra[1] says it takes 7:15 it's a bit shorter. I >> > haven't had a chance yet to try out qmake on the other modules or to try >> > to optimize the build yet. One of the things I did want to try was >> > replacing python2 with python-wrapper and enabling parallel-builds. >> > >> > I opted for straight out copying qt-5's build rather than inheriting so >> > it'll be easier to remove it if/when we're ready, and I updated the >> > license based on the text shown during build-time. >> > >> > I've attached what I have so far if anyone else wants to take a look at >> > it while I'm working on it. >> >> Nice! I gather that some applications require more than just qtbase, so >> we’d need to have all the different Qt components before we can fully >> switch to this model, right? >> >> Now, this could be done incrementally: we could start moving packages >> that need nothing beyond qtbase to this new package, and so on. >> >> Thoughts? > > That was my plan. Looking at nix's qt-5 it doesn't look like they even > build all of the packages so hopefully it shouldn't be too long. My > original hope that the base would take significantly less time didn't > pan out, but this is still good. I'm now hoping that since qtbase took > forever the other modules should be quick.
Cool. >> >> > Also very worthy of note, qt-5.5.1 is listed at 288 MB, and qtbase-5.6.0 >> > is all of 85 MB. >> > >> > efraim@debian-netbook:~$ du -sch >> > /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/* >> > 6.6M /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/bin >> > 560K /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/doc >> > 25M /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/examples >> > 20M /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/include >> > 30M /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/lib >> > 2.5M /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/mkspecs >> > 2.6M /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/plugins >> > 85M total >> >> It would be awesome if this would use the various configure flags that >> our qt4 package is using, such that we don’t have weird top-level >> directories such as ’mkspecs’ and ‘plugins’. >> >> If would be worth trying to move doc/ and examples/ to a “doc” output, >> but as noted in a comment in qt4, moving the examples may not be >> possible. >> >> Could you give it a try? >> > > mkspecs we actually might need, it has qmake.conf files for tons of > different architecture/OS options. Sure; I’m not suggesting to remove ‘mkspecs’, just to move it in a more standard place, as done in qt4: "-importdir" (string-append out "/lib/qt-4" "/imports") > Examples hopefully we can split out, but reading the note for qt-4 I'm > not too optimistic. Docs don't look to me like they're big enough to > bother with. Plugins has interface .so files for things like different > sql databases and other stuff. Ludo’.