-
-
Notifications
You must be signed in to change notification settings - Fork 15.4k
ffado: prevent build tools from leaking into closure #63393
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
FFADO stored paths to various build dependencies and libraries like gcc or pyuic5 (from PyQT) in $out/lib/libffado/static_info.txt, thus bringing them into the runtime closure. With Nix, this information is not really critical, as we can find out the exact dependencies from .drv files in Nix store. This alone reduced the closure size from 914866184B to 132341176B.
$ nix-store --query --requisites result
/nix/store/db2fz1d8hka8xcyw4755ks081ljxwgac-glibc-2.27
/nix/store/dz6dhbkhnkndl7a32jy8kqrvs5g9fvq5-attr-2.4.48
/nix/store/3zh8j07mmv95n9qp2148rfsjhrkcz58x-acl-2.2.53
/nix/store/cm6x466hzrwcq61rsh3453fsph0ck1dd-zlib-1.2.11
/nix/store/8kf59z8q8g3hyc59pf0ixm5k3mm310fl-libxml2-2.9.9
/nix/store/7hq0wxbhazg19h4wgh5v5dqbm0z9f7vh-libxml2-2.9.9-bin
/nix/store/6m9adqfdcb7x6n6hhnyfafmpadwwni0v-gdbm-1.18.1
/nix/store/fffhmcqg5rm4r725k460q2cbdjyipsp7-ncurses-6.1-20190112
/nix/store/fyxcppddjg7abrand8n10gwzm5gknc48-bash-4.4-p23
/nix/store/lzr52znq4d5cmsh78igfpazn3yqcsz7w-bzip2-1.0.6.0.1
/nix/store/qpp08241qa4bs89grb4m5nvh62xkp1wb-sqlite-3.28.0
/nix/store/rf0vravaj1hw37jhvg2lcjpp6h28z308-openssl-1.0.2r
/nix/store/sszpfjnh35jqgkngj83h1y0s7p61vy05-readline-6.3p08
/nix/store/5pjs9xxfafd44falpdb84i83979bm6fv-gcc-7.4.0-lib
/nix/store/vj0db3ypvnllkdk4ivnnhm7il5gcc56p-db-5.3.28
/nix/store/wpjdad5wpylnpqbjw4dbnih8f6q32l43-coreutils-8.31
/nix/store/9yi3j41iwz045cn8h6brghi3lzsd886k-python-2.7.16
/nix/store/9879dlarsbvck0k51vgdgikna6mywr30-libxml2-2.9.9-py
/nix/store/grkzwylk1avdfcwsqjwsnpqykpvj7kcn-hook
/nix/store/i019wrkx4xn76j1bxv3mmsc7d07a35gl-zlib-1.2.11-dev
/nix/store/5b5i4fs55wyr7gnawrmqcvjlb220zl9s-libxml2-2.9.9-dev
/nix/store/8rp92p5ymdbb2rxj614m01g0ny9zpv3r-libsigc++-2.10.1
/nix/store/a8i076fl02y0p7bnbiii7f17ggm14lxy-pcre-8.43
/nix/store/avw23jg806xzlcbqqq6chgc3i899mhba-libconfig-1.7.2
/nix/store/kwl4klw1a0mqgarxqa8bq25kf7i6c5k9-libffi-3.2.1
/nix/store/v9fq83x2a11sv1hq4jb01yj5bfnidfd0-util-linux-2.33.2
/nix/store/qf3rwf9pzzsnaxn2iizwcqj1nm9w11l5-glib-2.60.2
/nix/store/f0i55s1fk9dgmlfjg0v39cn0s0l0aryb-glibmm-2.60.0
/nix/store/fxzma5h494cnnjfm819i9ag9q6i6ixwm-libxml++-3.0.1
/nix/store/gx27x5g28kbv9ap9avw9k9hmrgwi4cqc-libraw1394-2.1.2
/nix/store/hxkrphb3b6420msb95zbka1jhx22xm6j-libiec61883-1.2.0
/nix/store/z289spadcv4k0vd89dsz0229hg41xfrs-libavc1394-0.5.4
/nix/store/jj58kypzaq2raixr9af9zcshp2viccm7-ffado-2.4.1 The last few offenders are |
By splitting |
Yes, this looks reasonable. Everything using JACK (including PulseAudio) will thank us. $ nix-store --query --requisites result
/nix/store/db2fz1d8hka8xcyw4755ks081ljxwgac-glibc-2.27
/nix/store/5pjs9xxfafd44falpdb84i83979bm6fv-gcc-7.4.0-lib
/nix/store/cm6x466hzrwcq61rsh3453fsph0ck1dd-zlib-1.2.11
/nix/store/8kf59z8q8g3hyc59pf0ixm5k3mm310fl-libxml2-2.9.9
/nix/store/8rp92p5ymdbb2rxj614m01g0ny9zpv3r-libsigc++-2.10.1
/nix/store/a8i076fl02y0p7bnbiii7f17ggm14lxy-pcre-8.43
/nix/store/kwl4klw1a0mqgarxqa8bq25kf7i6c5k9-libffi-3.2.1
/nix/store/v9fq83x2a11sv1hq4jb01yj5bfnidfd0-util-linux-2.33.2
/nix/store/qf3rwf9pzzsnaxn2iizwcqj1nm9w11l5-glib-2.60.2
/nix/store/f0i55s1fk9dgmlfjg0v39cn0s0l0aryb-glibmm-2.60.0
/nix/store/4wdkh0g4iw3k71s4a3wih0660b01lb5i-libxml++-3.0.1
/nix/store/avw23jg806xzlcbqqq6chgc3i899mhba-libconfig-1.7.2
/nix/store/gx27x5g28kbv9ap9avw9k9hmrgwi4cqc-libraw1394-2.1.2
/nix/store/hxkrphb3b6420msb95zbka1jhx22xm6j-libiec61883-1.2.0
/nix/store/z289spadcv4k0vd89dsz0229hg41xfrs-libavc1394-0.5.4
/nix/store/9nw5danx7b02gbxl96jc8hzr1mwnlyfk-ffado-2.4.1 |
FFADO stored paths to various build dependencies and libraries like gcc or pyuic5 (from PyQT) in
$out/lib/libffado/static_info.txt
, thus bringing them into the runtime closure.With Nix, this information is not really critical, as we can find out the exact dependencies from .drv files in Nix store.
This alone reduced the closure size from 914866184B to 132341176B.