Re: F36 Change: Remove .la files from buildroot (Self-Contained Change proposal)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux