Skip to content
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

ffado: prevent build tools from leaking into closure #63393

Merged
merged 3 commits into from Jun 18, 2019

Conversation

jtojnar
Copy link
Contributor

@jtojnar jtojnar commented Jun 18, 2019

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.

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.
@jtojnar
Copy link
Contributor Author

jtojnar commented Jun 18, 2019

$ 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 gcc.lib which is in RPATH for some reason (that is legitimate, for libstdc++) and libxml2.dev that is for some reason propagated by libxmlxx3. libxml2.dev pulls in most of the remaining garbage through libxml2.py it propagates in turn.

@jtojnar
Copy link
Contributor Author

jtojnar commented Jun 18, 2019

By splitting libxmlxx3 into even more outputs, I managed to get the size down to 62234864B (62M). I would say that was pretty successful when we started on 914M,

@jtojnar
Copy link
Contributor Author

jtojnar commented Jun 18, 2019

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

@jtojnar jtojnar merged commit 8cef6ec into NixOS:master Jun 18, 2019
@jtojnar jtojnar deleted the ffado-cleanup branch June 18, 2019 09:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant