Hello, On 2024-03-30 14:16:47 -0700, chris wrote: > How does one use `guix size` with a local file package definition? > > I have copied the `vifm` package definition here to a local file https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/vim.scm?id=master#n916 > > Using `guix size --load-path` as described here fails https://guix.gnu.org/manual/en/html_node/Invoking-guix-size.html > ``` > $ guix size --load-path=$HOME/software/vifm-local/ vifm-local > guix size: error: no available substitute information for '/gnu/store/vx189rcgy4b8lw1acw14cki9lm4jz9jn-vifm-local-0.13' > $ guix size --substitute-urls="" --load-path=$HOME/software/vifm-local/ vifm-local > guix size: error: no available substitute information for '/gnu/store/vx189rcgy4b8lw1acw14cki9lm4jz9jn-vifm-local-0.13' > ``` The package needs to be built first: /tmp/xxx $ guix size -L . vifm-local guix size: error: no available substitute information for '/gnu/store/rhvkgakmmf11lpz5jhpciyzramwd69vf-vifm-local-0.13' /tmp/xxx $ guix build --verbosity=0 -L . vifm-local /gnu/store/92xlmlc0m74flrj8jmwfjhx75xada8ad-vifm-local-0.13 /tmp/xxx $ guix size -L . vifm-local store item total self /gnu/store/lj75fc25zx2y9pqvfp95la84rdhlj4f8-perl-5.36.0 152.2 59.4 34.9% /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35 40.6 38.8 22.8% /gnu/store/930nwsiysdvy2x5zv1sf6v7ym75z8ayk-gcc-11.3.0-lib 75.3 34.7 20.4% /gnu/store/a5i8avx826brw5grn3n4qv40g514505c-coreutils-9.1 91.8 16.5 9.7% /gnu/store/gr0sy0m1mv36qv54idm6cn10l3mngshq-file-5.44 85.8 8.1 4.8% /gnu/store/bcc053jvsbspdjr17gnnd9dg85b3a0gy-ncurses-6.2.20210619 81.2 5.9 3.5% /gnu/store/rhvkgakmmf11lpz5jhpciyzramwd69vf-vifm-local-0.13 170.3 2.7 1.6% /gnu/store/zzyywykw7kriln18rxqd82f0k5kidla7-bash-static-5.1.16 1.8 1.8 1.1% /gnu/store/6k1yys9wqrfn4y41ic1win8gpnimncwj-xz-5.2.8 77.7 1.4 0.8% /gnu/store/rib9g2ig1xf3kclyl076w28parmncg4k-bash-minimal-5.1.16 41.6 1.0 0.6% total: 170.3 MiB The error message might be a bit misleading, especially with the empty substitute urls. > > Another question, as guix's vifm input list includes `libx11`, shouldn't x11 appear in the size listing? > https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/vim.scm?id=master#n916 > ``` > $ guix size vifm > store item total self > /gnu/store/lj[...]f8-perl-5.36.0 152.2 59.4 34.9% > /gnu/store/gs[...]i3-glibc-2.35 40.6 38.8 22.8% > /gnu/store/93[...]yk-gcc-11.3.0-lib 75.3 34.7 20.4% > /gnu/store/a5[...]5c-coreutils-9.1 91.8 16.5 9.7% > /gnu/store/gr[...]hq-file-5.44 85.8 8.1 4.8% > /gnu/store/bc[...]gy-ncurses-6.2.20210619 81.2 5.9 3.5% > /gnu/store/gz[...]vg-vifm-0.13 170.3 2.7 1.6% > /gnu/store/zz[...]a7-bash-static-5.1.16 1.8 1.8 1.1% > /gnu/store/6k[...]wj-xz-5.2.8 77.7 1.4 0.8% > /gnu/store/ri[...]4k-bash-minimal-5.1.16 41.6 1.0 0.6% > total: 170.3 MiB > ``` > The libx11 is present in the inputs, but since vifm defaults to dynamic loading of it using dlopen, the store path is not present in the output binary and therefore libx11 is not detected as dependency (I assume). When you add "--with-dyn-X11=no" to #:configure-flags, the size output changes to: store item total self /gnu/store/lj75fc25zx2y9pqvfp95la84rdhlj4f8-perl-5.36.0 152.2 59.4 33.7% /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35 40.6 38.8 22.0% /gnu/store/930nwsiysdvy2x5zv1sf6v7ym75z8ayk-gcc-11.3.0-lib 75.3 34.7 19.7% /gnu/store/a5i8avx826brw5grn3n4qv40g514505c-coreutils-9.1 91.8 16.5 9.4% /gnu/store/gr0sy0m1mv36qv54idm6cn10l3mngshq-file-5.44 85.8 8.1 4.6% /gnu/store/bcc053jvsbspdjr17gnnd9dg85b3a0gy-ncurses-6.2.20210619 81.2 5.9 3.4% /gnu/store/7zgm9y6n8m4isq12iw7izyn5g6z5m5w7-libxcb-1.15 78.5 3.0 1.7% /gnu/store/zyry5d5r6lf2vcffcjwspfnfzh04dil9-vifm-local-0.13 176.1 2.7 1.5% /gnu/store/87rsx9bv801pmspv64hrnxzcjg1fahi5-libx11-1.8.7 81.2 2.7 1.5% /gnu/store/zzyywykw7kriln18rxqd82f0k5kidla7-bash-static-5.1.16 1.8 1.8 1.0% /gnu/store/6k1yys9wqrfn4y41ic1win8gpnimncwj-xz-5.2.8 77.7 1.4 0.8% /gnu/store/rib9g2ig1xf3kclyl076w28parmncg4k-bash-minimal-5.1.16 41.6 1.0 0.6% /gnu/store/qijsw76w8l0zz9k0j3vaal488ixy3w8f-libxdmcp-1.1.3 75.4 0.1 0.1% /gnu/store/q6i6mc09sbklfnv3jbi22mnzbl0wilzx-libxau-1.0.10 75.3 0.0 0.0% total: 176.1 MiB Which seems to be what you expected. I know nothing about this packages, but my guess would be this is just a packaging error instead of intentional optimization (~6MiB do not really matter IMO). Hope this helps, Tomas -- There are only two hard things in Computer Science: cache invalidation, naming things and off-by-one errors.