On 11/02/2014 09:33 PM, Peter Lemenkov wrote:
Hello All! One of my packages defines an essential information regarding the API (API version string) during the %build stage. It's possible to extract this information by invoking a binary from the %{buildroot} with certain parameters. I'd love to add this information to the spec-file during to Provides. Something like Provides: %{name}_api_ver = %(%{buildroot}/bin/app --some params) Unfortunately it seems that rpmbuild tries to expand all macros at the very initial stage when this binary isn't available yet (not built yet). I've tied playing with %{eval: ...} but without any luck. Could anyone tell me if it's possible at all? And if possible how could this be achieved?
Macros are necessarily expanded at the time of reading the spec, and tags such as Provides are processed at that time as well. So the time of macro expansion is actually irrelevant here - the provides (and requires) declared in the spec are added long before the package is built.
You'll need to use the automatic dependency generator for generating dependencies from buildroot contents:
http://rpm.org/wiki/PackagerDocs/DependencyGenerator
Also I wonder why even rpmbuild -bs performs macro expansion? I thought it should just pack spec-file and sources/patches together.
Macro expansion is a very integral part of spec parsing, it cannot be turned off. Also its a rare package where even sources and patches can addressed be done without expanding macros.
- Panu - _______________________________________________ Rpm-list mailing list Rpm-list@xxxxxxxxxxxxx http://lists.rpm.org/mailman/listinfo/rpm-list