Package: guix;
Reported by: Ludovic Courtès <ludo <at> gnu.org>
Date: Fri, 2 Apr 2021 20:12:01 UTC
Severity: important
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: Ludovic Courtès <ludo <at> gnu.org> Cc: 47569 <at> debbugs.gnu.org Subject: bug#47569: ‘qt-build-system’ retains too many references via wrappers Date: Sat, 03 Apr 2021 23:00:13 -0400
Hi Ludovic! Ludovic Courtès <ludo <at> gnu.org> writes: > I just noticed this: > > $ guix size ktouch | tail -1 > total: 1752.4 MiB > > > Sounds a lot for a touch typing tutor. > > Turns out ktouch references all its build-time dependencies: gcc, > glibc:static, binutils, findutils, everything. It comes from the > wrapper: > > $ grep -r s3dcqzwqaakv1yx37by9chksdbkgih17 /gnu/store/w8i63ghrq64r7f1nxzw50b0j32f2n8v1-ktouch-20.12.1 > /gnu/store/w8i63ghrq64r7f1nxzw50b0j32f2n8v1-ktouch-20.12.1/bin/ktouch:export XDG_DATA_DIRS="/gnu/store/w8i63ghrq64r7f1nxzw50b0j32f2n8v1-ktouch-20.12.1/share:/gnu/store/ah4az84vjkrssdws7ydvdk1f1mcs70i6-cmake-minimal-3.16.5/share:/gnu/store/3x63j4ndhbzkjwr6mhnp4h86r550gs7q-extra-cmake-modules-5.70.0/share:/gnu/store/qcqghpj3550p94pyqwqmwyd3nqcwflpq-kdoctools-5.70.0/share:/gnu/store/krpyb0zi700dcrg9cc8932w4v0qivdg9-pkg-config-0.29.2/share:/gnu/store/v6f44zccwh9z5zk3pjlywjybbi8n2hjh-tar-1.32/share:/gnu/store/ncydgq2znms5n1d2k5yqshhf58nsixwv-gzip-1.10/share:/gnu/store/i8h2pcxqdq07ijm3ibkka8f4smn1w48v-bzip2-1.0.8/share:/gnu/store/9860f1abqj8wjjnwl8a9v54pdcc3bhgf-xz-5.2.4/share:/gnu/store/60g7r3l01fd7c58yjbm6krgcwj1jkpwg-file-5.38/share:/gnu/store/n4n560pfvvw50a9369axw5vj5rrqfj1n-diffutils-3.7/share:/gnu/store/cd5qf3kcnlq35p9k392pjdpdzpsnds70-patch-2.7.6/share:/gnu/store/hic7snhayfl7m6cpfqqr73nmm19bpqkg-findutils-4.7.0/share:/gnu/store/swqdvwri9dbv6zssg6v0by7l05hd6wxp-gawk-5.0.1/share:/gnu/store/ishk7fswcs4gkwcp8mh788z4mvvl9bxh-sed-4.8/share:/gnu/store/bhs4rj58v8j1narb2454raan2ps38xd8-grep-3.4/share:/gnu/store/57xj5gcy1jbl9ai2lnrqnpr0dald9i65-coreutils-8.32/share:/gnu/store/hm40bxnv8jxmbc1lpb7zfimii4xm9m81-make-4.3/share:/gnu/store/pwcp239kjf7lnj5i4lkdzcfcxwcfyk72-bash-minimal-5.0.16/share:/gnu/store/m1z7cdbqsqyp9xnjw5cvlb4a7gkcg3m4-binutils-2.34/share:/gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0/share:/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/share:/gnu/store/s3dcqzwqaakv1yx37by9chksdbkgih17-glibc-2.31-static/share:/gnu/store/nnri2x0mdfm2y2ci0p5jhlf6xkdsf6i6-kcmutils-5.70.0/share:/gnu/store/ybh1br5ghs1brnwvacfj04jx3203m87p-kcompletion-5.70.0/share:/gnu/store/bnfcann370ad38g7v4pzgklmizk69f7j-kconfig-5.70.0/share:/gnu/store/4w9v0jnx74n542v11ikzxbf352xqrpwy-kconfigwidgets-5.70.0/share:/gnu/store/9nr52vkhj99g4mx1rr349wwsm2aflnv4-kcoreaddons-5.70.0/share:/gnu/store/9ln7cv5s813nf4ny5l56qadq0vnkx5g0-kdeclarative-5.70.0/share:/gnu/store/fg8npcm84k5bii5jpmdypqdwq10k5xrf-ki18n-5.70.0/share:/gnu/store/0b7xb35ihp5h5qzfcdymzi7yn5lngsgf-kiconthemes-5.70.0/share:/gnu/store/gdch1j5vjjzzx9qq29zca2w83h8nz9rj-kitemviews-5.70.0/share:/gnu/store/q8wrlw1g0m35syx5sr3hq44sx6fsxicj-kqtquickcharts-20.04.1/share:/gnu/store/xhcgpv14llkcdcdn39vrm12mbl4b4y07-ktextwidgets-5.70.0/share:/gnu/store/f4ibdx1ldiifdjbpyh75py4q8i24b05w-kwidgetsaddons-5.70.0/share:/gnu/store/x27qq3i8c3vifrj1q5y9p8840k5dvk40-kwindowsystem-5.70.0/share:/gnu/store/ybdzlpnswajsq1acp3l768h21bvzif16-kxmlgui-5.70.0/share:/gnu/store/3x6y8kpbwjmzpndjfhdbn654g7dm85cp-libxcb-1.14/share:/gnu/store/c7vrkq864hsxfvll74wlrxv71arkcd5q-libxkbfile-1.1.0/share:/gnu/store/sbf77k7xzwhkx4ygqjzgkviz9vy4qhf6-qtbase-5.15.2/share:/gnu/store/k6kk02q27nbymwajkvzhlil8c7sym74k-qtdeclarative-5.15.2/share:/gnu/store/hpirydj1mlmhj199z1ng3yn9sb0f1jc1-qtgraphicaleffects-5.15.2/share:/gnu/store/8165pcgy2d1l30vipkv5qz40nkg9qdp3-qtquickcontrols2-5.15.2/share:/gnu/store/63g70yiyvz08v16hdxsnj3c2pqdq9bm0-qtx11extras-5.15.2/share:/gnu/store/9hpw67pf9px9zx75nb8bm21pc0gqwyx9-qtxmlpatterns-5.15.2/share:/gnu/store/gfapkk5c6hvl1d94m4sqnhn7f9l5gqyh-linux-libre-headers-5.4.20/share:/gnu/store/lfizifxrrbmb9dd1wdm5yy7rlqp7mmfp-kservice-5.70.0/share:/gnu/store/yqaafdggah0hac4n6dkw69ib94v03w69-kcodecs-5.70.0/share:/gnu/store/1syzh2ky8qgxzg59g0g97pqn1gb6xm1r-kauth-5.70.0/share:/gnu/store/s7a55hh8gd8r9dr6m04sqxg5kgngnqcj-kpackage-5.70.0/share:/gnu/store/cizh7vg0w09izkv07pxdv8csir8p4sdd-python-3.8.2/share:/gnu/store/n9wx4dp68bfsw9bb1bwmklzl34ggrmgm-gettext-minimal-0.20.1/share:/gnu/store/rqsn0is9frgi7jz1633l4ipa07xfgsbx-sonnet-5.70.0/share:/gnu/store/6cdl970wcv4jhvpgbh8sdj54a5gwhmwj-libxdmcp-1.1.3/share:/gnu/store/h7sy4hr7arjknbyy1aq0xwv6fksnzw9n-libxau-1.0.9/share:/gnu/store/klk98l8czl05lvanrr7xl7a9hksac4ak-libpthread-stubs-0.4/share:/gnu/store/k30a2pgmc6b3ifmq3rn0dr5ng9gr8w81-which-2.21/share:/gnu/store/14qgm67plbh8d3m6lc87b9j6s9296vwn-mesa-20.2.4/share:/gnu/store/wxl57nkbqgamfp73b7v62kk3f1hiv0cz-xorgproto-2019.2/share:/gnu/store/qv7x7pz7gi724lkdz8049mjhy1ryg511-libxxf86vm-1.1.4/share:/gnu/store/jwga98k68l0h5c45jx7z4jdjzhfc34vm-libxshmfence-1.3/share:/gnu/store/1v6vap6jaf3hf4ypjx261k44xmc48drc-libxfixes-5.0.3/share:/gnu/store/b67b0a5vda7pv7yqyjjb9736s96hhybi-libxdamage-1.1.5/share:/gnu/store/rwkqxykm91a75w9afhb41saj0dmf30hw-libx11-1.6.12/share:/gnu/store/kx58xc3hxa9b0mp1hl7pzz43bl7gh18h-libdrm-2.4.103/share:/gnu/store/lc8irxnwazq340ygkbqh0ask446jzy9k-util-macros-1.19.2/share:/gnu/store/3rmazp46f6g8w9qs8n3w7qcg8hhs1lig-libxext-1.3.4/share" > > This is bad for the closure size and probably not good for application > startup time either. Oh! Good finding! That probably explains why my experiments producing a guix pack for jami-qt was yielding an archive that'd decompress to 2.7 GiB! > The problem seems that ‘variables-for-wrapping’ in qt-build-system.scm > is too naive: it collects in XDG_DATA_DIRS all the /share directories. > Conversely, ‘data-directories’ in glib-or-gtk-build-system.scm is a bit > more subtle, keeping only meaningful share/ directories. > > I think qt-build-system.scm should copy that strategy. > > Thoughts? I'm not sure why a wrapper is needed in the first place; these environment variables are honored by qtbase and defined as search path specifications. It seems if we were to fix '22138 important Search paths of dependencies are not honored' we might not have to wrap at all, unless we really want to be able to run things outside of a profile (directly from the store) -- which is a nice property, but comes at the cost of wrappers ugliness (e.g., running 'gdb --args sh /path/to/wrapper', then having to load the symbols with 'file /path/to/.the-binary-real; or that wrapper's name appearing in manpages or other places). But for the short term, perhaps it's best to copy that strategy? Thanks for the report! Maxim
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.