On 2/28/22 16:32, Richard W.M. Jones wrote:
On Mon, Feb 28, 2022 at 04:26:02PM +0200, Panu Matilainen wrote:
> On 2/28/22 16:12, Richard W.M. Jones wrote:
>> On Mon, Feb 28, 2022 at 01:46:38PM +0000, Richard W.M. Jones wrote:
>>>
>>> I'm writing a simple provides generator. The documentation is a bit
>>> light on detail:
>>>
>>>
https://rpm-software-management.github.io/rpm/manual/dependency_generator...
>>>
>>> How do I get the version-release of the package currently being built?
>>> At the moment I can only print simple provides like:
>>>
>>> Provides: foo
>>>
>>> but I want to include the version of the package being built, eg:
>>>
>>> Provides: foo = 1.2-3.fc36
>>>
>>> In theory it seems like the environment variables $RPM_PACKAGE_VERSION
>>> and $RPM_PACKAGE_RELEASE should be set in the dependency generator,
>>> but I just confirmed they are not set.
>>
>> I dumped out the environment from the dependency generator and the
>> only RPM-specific environment variable is $RPM_BUILD_ROOT. I could
>> get the version from that, but it would be a bit of a hack.
>
> Name, epoch, version and release are available as macros in the
> .attr file so you can pass what you need from there, eg to pass
> version and release as arguments to the provides generator, you can
> do:
>
> %__my_provides /path/to/my/depgen %{version} %{release}
>
> This seems to be missing in the docs, will fix.
Ah nice, I didn't realise you could add parameters there.
Yup, what's in there is entirely up to you, rpm only cares about the
output. Those lines are macro-expanded at the time of launching the
script and can have arbitrarily complex macros in them. In fact you can
nowadays generate dependencies directly from macro where it makes sense
("parametric macro generators" in the docs)
And actually the per-package exported macros *are* documented (just
above parametric generators), it just doesn't explain how to use them.
Something to fix anyway :)
- Panu -