Subject: Re: bug#24404: "calibre" package fails to build.

From: Efraim Flashner <[email-masked]>
Date: Thu, 2 Aug 2018 18:00:54 +0300

On Thu, Aug 02, 2018 at 02:30:20PM +0200, Andreas Enge wrote:
> Hello Efraim,
> 
> thanks for all your work on the patch - you should have added a
> "Co-authored-by" line!
> 
> On Wed, Aug 01, 2018 at 07:41:31PM +0300, Efraim Flashner wrote:
> > > The new qtwebkit fails to build for me. This is the tail of the output:
> 
> For me it also fails on x86_64, but due to a lack of disk space. The build
> directory fills 12 GB!!!
> 

How many cores do you have? My 6 core aarch64 board has 4GB of ram and
8GB of swap, and regularly used 4GB of the swap during building. Do you
have any swap?

> $ du -h /tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/lib/libQt5WebKit.so.5.212.0
> 2,6G	/tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/lib/libQt5WebKit.so.5.212.0
> 
> So apparently the resulting library has more then 2 GB?!
> 

$ du -h /gnu/store/n8ml4vp099ffc48i8vv1zjhzn34zfcvb-qtwebkit-5.212.0-alpha2/lib/libQt5WebKit.so.5.212.0
48M     /gnu/store/n8ml4vp099ffc48i8vv1zjhzn34zfcvb-qtwebkit-5.212.0-alpha2/lib/libQt5WebKit.so.5.212.0

It'll probably go down if/when it finishes linking

> $ du -smc /tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/Source/*
> 1	/tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/Source/CMakeFiles
> 1	/tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/Source/CTestTestfile.cmake
> 2034	/tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/Source/JavaScriptCore
> 1	/tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/Source/Makefile
> 1	/tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/Source/Qt5WebKitConfig.cmake
> 1	/tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/Source/Qt5WebKitConfigVersion.cmake
> 1	/tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/Source/Qt5WebKitWidgetsConfig.cmake
> 1	/tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/Source/Qt5WebKitWidgetsConfigVersion.cmake
> 5	/tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/Source/ThirdParty
> 16	/tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/Source/WTF
> 3130	/tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/Source/WebCore
> 140	/tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/Source/WebKit
> 700	/tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/Source/WebKit2
> 1	/tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/Source/cmake_install.cmake
> 1	/tmp/guix-build-qtwebkit-5.212.0-alpha2.drv-0/build/Source/cmake_uninstall.cmake
> 6022	total
> 
> This is also suspicious. Where are these 6 GB of "Source" coming from?
> The source of the package itself has only 13 MB.
> 
> All this time and space just to be able to read and convert a few ebooks!
> 
> Andreas
> 

I've been looking a bit into low resource machines and I've come across
these two posts from the binutils bug tracker:

link fewer items at a time:
https://sourceware.org/bugzilla/show_bug.cgi?id=12682#c2

drop things from memory after linking them:
https://sourceware.org/bugzilla/show_bug.cgi?id=22831#c14

my favorite quote from one of the threads (referring to webkit):
some of debian's smaller build systems now spend SEVERAL DAYS performing the
linker phase for these insanely-large binaries.

I can't think of a package right now that I can test these out on and
watch, with a fast build time and excessively high ram usage, but
qtwebkit seems to be an ok choice actually try it out on. It seems much
much better than turning off parallel building, since I'm pretty sure
there's a high memory to core used ratio for this package.

-- 
Efraim Flashner   <[email-masked]>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted