-
-
Notifications
You must be signed in to change notification settings - Fork 14.2k
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
stdenv: prune libtool files by default #51767
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you!
Since it's already a mass rebuild, we could as well enable pruneLibtoolFiles by default. I don't expect any immediate effect, but it will make it easier to add new packages and will make it possible to unpropagate some otherwise private dependencies of existing packages.
👍 on enabling by default. This seems like a pretty common issue, just recently upgrading |
Bit out of my depth here but pushed an amended version that enables this by default. Kept the top-level |
This pull request has been mentioned on Nix community. There might be relevant details there: https://discourse.nixos.org/t/prs-ready-for-review-december/1711/4 |
@matthewbauer I wonder if this would break |
It only prunes .la files where |
It doesn't appear there's consensus / interest to move this forward at this time. Shall this be closed for now? |
I'll do some testing and if there are no issues will merge to staging. |
@pbogdan, thank you! These changes are exactly what I meant to be done. |
Thank you @orivej! |
There were some regressions, but not too many and almost all were trivial to fix: 64edccb. |
As explained by Orivej (reformatted from Markdown): > These (except libsignal-protocol-c) are private dependencies of the > actual dependencies that should neither be propagated nor added > manually to dino. For example, libpsl and brotli come from > libsoup-2.4.pc: > > Requires: glib-2.0 >= 2.38, gobject-2.0 >= 2.38, gio-2.0 >= 2.38 > Requires.private: libxml-2.0, sqlite3, libpsl >= 0.20, libbrotlidec, zlib > > (To be precise, glib uses utillinuxMinimal rather than utillinux.) > > The warnings we see, such as Package 'mount', required by 'gio-2.0', > not found, come from CMake running both pkg-config --libs and > pkg-config --static --libs to populate both <XXX>_LIBRARIES and > <XXX>_STATIC_LIBRARIES[1], but dino has no use for the latter. > Currently these warnings can not be disabled: > https://gitlab.kitware.com/cmake/cmake/issues/18158 > > (They could be prevented by pruning Requires.private from shared-only > libraries akin to <NixOS#51767>, > although it can not be detected if a library is shared-only from the > .pc file alone, and this is just a warning.) > > [1]: docs: https://cmake.org/cmake/help/v3.16/module/FindPkgConfig.html
As explained by Orivej (reformatted from Markdown): > These (except libsignal-protocol-c) are private dependencies of the > actual dependencies that should neither be propagated nor added > manually to dino. For example, libpsl and brotli come from > libsoup-2.4.pc: > > Requires: glib-2.0 >= 2.38, gobject-2.0 >= 2.38, gio-2.0 >= 2.38 > Requires.private: libxml-2.0, sqlite3, libpsl >= 0.20, libbrotlidec, zlib > > (To be precise, glib uses utillinuxMinimal rather than utillinux.) > > The warnings we see, such as Package 'mount', required by 'gio-2.0', > not found, come from CMake running both pkg-config --libs and > pkg-config --static --libs to populate both <XXX>_LIBRARIES and > <XXX>_STATIC_LIBRARIES[1], but dino has no use for the latter. > Currently these warnings can not be disabled: > https://gitlab.kitware.com/cmake/cmake/issues/18158 > > (They could be prevented by pruning Requires.private from shared-only > libraries akin to <#51767>, > although it can not be detected if a library is shared-only from the > .pc file alone, and this is just a warning.) > > [1]: docs: https://cmake.org/cmake/help/v3.16/module/FindPkgConfig.html
Motivation for this change
Spotted in the wild:
which
pruneLibtoolFiles
fails to prune as is./cc @orivej
EDIT: now extended to pruning libtool files by default
Things done
sandbox
innix.conf
on non-NixOS)nix-shell -p nox --run "nox-review wip"
./result/bin/
)nix path-info -S
before and after)