From mboxrd@z Thu Jan 1 00:00:00 1970 From: Efraim Flashner Subject: Re: qt: monolithic or modular? Date: Thu, 19 May 2016 18:55:15 +0300 Message-ID: <20160519155515.GA30912@debian-netbook> References: <20160405072220.1d828a86@debian-netbook> <20160518121757.GD13276@debian-netbook> <87a8jmw8fo.fsf@gnu.org> <20160519131750.GA8287@debian-netbook> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="PEIAKu/WMn1b1Hv9" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:49034) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b3QIP-0003E9-Vc for guix-devel@gnu.org; Thu, 19 May 2016 11:55:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b3QIK-0001Lf-Jy for guix-devel@gnu.org; Thu, 19 May 2016 11:55:32 -0400 Content-Disposition: inline In-Reply-To: <20160519131750.GA8287@debian-netbook> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Ludovic =?utf-8?Q?Court=C3=A8s?= Cc: guix-devel@gnu.org --PEIAKu/WMn1b1Hv9 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, May 19, 2016 at 04:17:50PM +0300, Efraim Flashner wrote: > On Thu, May 19, 2016 at 02:15:07PM +0200, Ludovic Court=C3=A8s wrote: > > Efraim Flashner skribis: > >=20 > > > 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 b= ig download of qt[1] and frankly I'd rather not. Qt does also ship in small= er 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 mon= olithic qt for just the parts that the program actually uses. It makes it l= ess 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 modu= le, not all of qt. > > >>=20 > > >> [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/ > > >>=20 > > > > > > 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. > >=20 > > Nice! I gather that some applications require more than just qtbase, so > > we=E2=80=99d need to have all the different Qt components before we can= fully > > switch to this model, right? > >=20 > > Now, this could be done incrementally: we could start moving packages > > that need nothing beyond qtbase to this new package, and so on. > >=20 > > Thoughts? >=20 > 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. >=20 > >=20 > > > 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/exam= ples > > > 20M /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/incl= ude > > > 30M /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/lib > > > 2.5M /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/mksp= ecs > > > 2.6M /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/plug= ins > > > 85M total > >=20 > > It would be awesome if this would use the various configure flags that > > our qt4 package is using, such that we don=E2=80=99t have weird top-lev= el > > directories such as =E2=80=99mkspecs=E2=80=99 and =E2=80=98plugins=E2= =80=99. > >=20 > > If would be worth trying to move doc/ and examples/ to a =E2=80=9Cdoc= =E2=80=9D output, > > but as noted in a comment in qt4, moving the examples may not be > > possible. > >=20 > > Could you give it a try? > >=20 >=20 > mkspecs we actually might need, it has qmake.conf files for tons of > different architecture/OS options. 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. >=20 > > Thanks, > > Ludo=E2=80=99. >=20 > :) >=20 Actually I just checked ./configure --help again, and I can pass the flag '-nomake examples' and it shouldn't make the examples at all. I'm not sure how much compile time it'll save, but it should save us the 25MB of examples that we didn't really want. --=20 Efraim Flashner =D7=90=D7=A4=D7=A8=D7=99=D7=9D = =D7=A4=D7=9C=D7=A9=D7=A0=D7=A8 GPG key =3D A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted --PEIAKu/WMn1b1Hv9 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCgAGBQJXPeHdAAoJEPTB05F+rO6TEPcP/RhVBe/2+FZaanNFl7OpmxLh T8px6BeS7W/+4B1Eu0S1GCDnuGknY/oPqRlZiDR2Php3sr8pPgG9Ci+/JzMvyhG0 MvJJJAZFJCTwj8WCUH8TUiwD+ZglJ4GqpWdpHj6kd0qR+f/Dzw5FxtRRPTohvb/0 L+5a0hpfST6qdggkR2ljmw/fyiP97qhGmIwegWEZf8/b73Uu+ZOR7KkndYe/FQ8a mYPmilhMrS8NQti7c1jM1mnkEiE2XcKi3S5FPfwskKRlKagkqHnpanLY/+HlWDRV 2otIfvR5XdxSkkBXn++1MFjfYGNlQU+JG1tsZ3oFf73377OAG7MEyoj9VjcrQOvo EmGyonGJp6q9JpSaijQkW7bY5KBuFdRcwDTTyr1A+Cldx5xPj6a6Oky3fz87sKnQ +c8Eqhks2zOSmTulvHeOnHWik/NmYCxZKBSdlr024A0gNIOXWFbxnqW70+Ot89Rs 9ylbusAzbtXzO49tqChSiTu+KpVC8QKIQO56073joqJuntwgcbFEd6PcAHgdqXWu wu+OsbKWy2qJEPVFtJ4yVxiVvG7KKJOwGJMEUqOsDN8H8XE5ODeuRrEkyyUzyY9N Qc9rhmwr27G8KBvcDz0eR758K/3t1BjPGzflnnzZQNwOYqLx+mn9nx2ORuEhZHLx TNd77jjN/HeOPEiQumDt =xRmv -----END PGP SIGNATURE----- --PEIAKu/WMn1b1Hv9--