On Mon, Nov 01, 2021 at 09:37:40AM -0400, Ben Cotton wrote: > https://fedoraproject.org/wiki/Changes/RemoveLaFiles > > == Summary == > Autools/libtool-based projects frequently install files ending in > `.la` in their `make install`. These files are usually unwanted. Many > projects therefore end up with a variation of `find $RPM_BUILD_ROOT > -name "*.la" -delete` in their `%install section`. > > `*.la` files are "libtool archives" and provide additional metadata > for library files and come from a time before the introduction of the > ELF format. Today, they are only consumed by libtool itself. Refer to > https://autotools.io/libtool/lafiles.html. > > This changes proposes to instead use the `%__brp_remove_la_files` > macro in `redhat-rpm-config`'s `%__os_install_post` to remove the > `*.la` files automatically. This has been added to RPM 4.17. Yes! There are quite a few of these "junk files" left around by build systems that many packages have to remove: - .packlist (Perl) - .dune-keep (OCaml/dune) - *.cmti (OCaml) - *.bs (Perl) - *~ (gcc build removes these) Should we have a more systematic way to remove them? Rich. > > > == Owner == > * Name: [[User:FASAcountName| Timm Bäder]] > * Email: tbaeder@xxxxxxxxxx > > > == Detailed Description == > (not provided) > > == Benefit to Fedora == > This change removes a widely used line of shell script from many spec > files. The advantage is cleaner and easier to maintain spec files as > well as more sensible defaults for rpm package builds. > > While looking at what packages will be affected by this change, I > already found several packages that ship and install `.la` files by > accident. These packages will be fixed to not ship them. > > == Scope == > * Proposal owners: > ** Update packaging guidelines to mention the automatic removal of > `*.la` files and mention the mechanism for opting out of this > behavior. > * Other developers: > ** For the packages already removing their `*.la` files manually, > there should be no change. For packages that want to install such > packages, the package maintainers need to opt out of the automatic > removal. > > * Release engineering: [https://pagure.io/releng/issue/10353 #10353] > * Policies and guidelines: N/A (not needed for this Change) > * Alignment with Objectives: > > == Upgrade/compatibility impact == > The following packages ship `.la` files currently (queried via `$ > repoquery --repo=rawhide -f '*.la' --source | pkgname | sort | uniq`): > > <!-- > * apr > * apr-util > * aqbanking > * arts > * avr-gcc > * binutils > * calf > * cross-gcc > * djview4 > * filezilla > * flatpak > * gambas3 > * gforth > * gnome-do > * gnome-subtitles > * google-authenticator > * GraphicsMagick > * gretl > * gstreamer1-doc > * gutenprint > * gwenhywfar > * chafa > * ImageMagick > * jpilot > * kdebase3 > * kdegames3 > * kdelibs3 > * kdepim3 > * kdewebdev > * kdissert > * kguitar > * koffice-kivio > * libmodsecurity > * libsecp256k1 > * liferea > * mcabber > * mingw-sane-backends > * mingw-speexdsp > * mousepad > * neon > * octave > * opencryptoki > * OpenIPMI > * openldap > * owfs > * pinball > * pragha > * qt5-qtbase > * qt5-qtfeedback > * qt5-qtremoteobjects > * qt5-qttools > * subversion > * taxipilot > * unicornscan > * util-linux > * xfce4-calculator-plugin > * xfce4-timer-plugin > > --> > > `*.la` files explicitly listed in `%files` (this includes packages > that modify the `*.la` file(s) but don't list them in `%files` > explicitly): > * arts > * gambas3 > * chafa > * ImageMagick > * kdebase3 > * kdegames3 > * kdelibs3 > * kdewebdev > * kdissert > * libmodsecurity > * libsecp256k1 > * mingw-sane-backends > * mingw-speexdsp > * neon > * openldap > * pinball > * qt5-qtbase > * qt5-qtfeedback > * qt5-qtremoteobjects > * qt5-qttools > * subversion > * unicornscan > * xfce4-calculator-plugin > > > > No mention of `*.la` files in the spec file: > * gcc-avr > * calf > * cross-gcc > * djview4 > * filezilla > * gforth > * gnome-do > * gnome-subtitles > * google-authenticator > * GraphicsMagick - But probably needs them just like ImageMagick > * gstreamer1-doc > * jpilot > * kguitar > * liferea > * mcabber > * mousepad > * octave > * opencryptoki > * pragha > * taxipilot > * xfce4-timer-plugin > > > > Tries to delete them but fails: > * aqbanking > * binutils (fixed) > * flatpak > * gretl > * gutenprint > * gwenhywfar > * kdepim3 > * koffice-kivio > * OpenIPMI > * owfs > * util-linux > > > > == How To Test == > > Whether a RPM package ships `.la` files can be checked either via the > `repoquery` command from above or via querying a local `.rpm` file > directly: `rpm -q --files ./my-package.rpm | grep '\.la$'`. The latter > command can be used for local testing. > > If a package currently ships any `*.la` files but only does so > accidentally, nothing needs to be done and the package will > automatically stop shipping those files after it is rebuilt with this > change in effect. > > If a package whishes to keep shipping `*.la` files, the package > maintainer can opt out of the automatic removal by setting > `%__brp_remove_la_files` to `%nil`: `%global __brp_remove_la_files > %nil` > > If the package currently removes all `*.la` files manually via some > form of `find $RPM_BUILD_ROOT -name "*.la" -delete` or similar, it is > recommended (but not required) to remove that line. > > > > == User Experience == > > Users should not notice any change. > > == Dependencies == > There are no dependencies. Only `redhat-rpm-config` needs to adapt to > the change. > > == Contingency Plan == > > * Contingency mechanism: The change can simply be reverted in the > `redhat-rpm-config` package. Packages that have already removed the > manual deletion of `*.la` files need to revert this change too. > Packages that have opted out of the automatic `*.la` file removal > don't need to do anything. > > * Contingency deadline: beta freeze > * Blocks release? Yes > > > == Documentation == > Pull request implementing `%__brp_remove_la_files` in the upstream rpm > repository: https://github.com/rpm-software-management/rpm/pull/1674 > > > == Release Notes == > > The [https://rpm.org/wiki/Releases/4.17.0 RPM 4.17 release notes] > simply state "Add policy for removing .la files from buildroot by > default". > > > -- > Ben Cotton > He / Him / His > Fedora Program Manager > Red Hat > TZ=America/Indiana/Indianapolis > _______________________________________________ > devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx > To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx > Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ > List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines > List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx > Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into KVM guests. http://libguestfs.org/virt-v2v _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure