Re: F37 Change: RPM 4.18 (System-Wide Change proposal)

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

 



While the autoreconf command is “external,” it does implicitly execute m4 scripts, often including some that are included in the package source distribution, in order to generate the configure script. Note also that autogen.sh is rarely more than a trivial one-to-five-line wrapper around autoreconf.

Sometimes autoreconf also needs m4 scripts that are installed with the -devel packages of various dependencies. For example, gtk2-devel provides /usr/share/aclocal/gtk-2.0.m4, which provides the AM_PATH_GTK_2_0 macro, which can be used in dependent packages’ configure.ac files to generate GTK2 detection code. Such packages would need gtk2-devel installed in order to run autoreconf. Sometimes copies of these m4 files are provided with the dependent package sources, and sometimes they aren’t.

This is why I don’t personally like autoreconf happening in %prep: it can add arbitrary dependencies (not just autoconf/automake/libtool), and I think it is valuable to be able to run “fedpkg prep” or similar without installing extra dependencies on the packager’s system.

On 4/12/22 10:04, Zbigniew Jędrzejewski-Szmek wrote:
On Fri, Apr 08, 2022 at 11:16:59AM +0200, Petr Pisar wrote:
V Thu, Apr 07, 2022 at 12:13:42PM -0400, Ben Cotton napsal(a):
https://fedoraproject.org/wiki/Changes/RPM-4.18

== Summary ==
Update RPM to the [https://rpm.org/wiki/Releases/4.18.0 4.18] release.
[...]
* New `%conf` spec section for build configuration
RPM documenation reads:

	In %conf, the unpacked sources are configured for building.

	Different build- and language ecosystems come with their own helper macros,
	but rpm has helpers for autotools based builds such as itself which
	typically look like this:

	%conf
	%configure

In context of autotools, sources usually bundle a configure script. To follow
the open source way (and ensure portability to new platform and include
autotools fixes), building from the real sources is desired. Hence I do my
best to call "autoreconf -fi" before %configure.

Where should autoreconf be placed? %pre or %conf?
For me the important distinction is that %prep should *not* execute the
code from the package: it should just unpack, apply patches and fixups, change
permissions, etc. This all should be done using external tools, and not
scripts from the package itself. This way it is possible do 'fedpkg prep'
or equivalent and view the sources without executing any commands from
the package. So even if the package does not want to run on a given architecture,
or upstream does something stupid or hostile, %prep remains reliable.
(This also means that %prep should rather do less than more.)

If autoreconf is done using the external 'autoreconf' command, then
%prep seems appropriate. Some packages have ./autogen.sh or similar, and
that I'd put in one of the later sections.

Zbyszek
_______________________________________________
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
_______________________________________________
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