Using rpmspec to query .spec file macros
Panu Matilainen
pmatilai at laiskiainen.org
Thu Mar 5 20:15:35 UTC 2015
On 03/05/2015 09:44 PM, Philip Prindeville wrote:
> I'm trying to write some build automation using mock, etc. and I need to
> be able to query a .spec file for some values. I did a "rpmspec --help"
> and tried to go by the output but it never mentions where the spec file
> goes in the arguments, for instance!
>
> I tried:
>
> target=fedora-21-x86_64
> ...
> rpmspec --target=$target *.spec --eval="%version"
>
> but this just prints "%version" as the output. How do you query a .spec
> file for the macros it defines?
You dont, basically. It queries header tags of packages, not macros, ie
--queryformat just like any other rpm queries.
So to query a package version from a spec, you'd use --qf "%{version}",
not --eval. There's a gotcha involved in that by default, rpmspeq
queries all the binary packages that would be created from the spec,
which probably isn't what you wanted in this case:
[pmatilai at mursu popt]$ rpmspec -q --qf "%{version}\n" popt.spec
1.13
1.13
1.13
1.13
[pmatilai at mursu popt]$
Regardless of how many sub-packages there might be, there can only ever
be exactly one source package per spec, so querying that instead helps
in these kind of situations:
[pmatilai at mursu popt]$ rpmspec -q --srpm --qf "%{version}\n" popt.spec
1.13
[pmatilai at mursu popt]$
>
> I did a quick search for "rpmspec" "--eval" but this didn't turn up
> anything useful.
>
> Is there a tutorial on using rpmdevtools?
rpmspec is part of rpm itself, not rpmdevtools.
I'm not aware of any tutorials on it, but
http://www.rpm.org/wiki/Docs/QueryFormat has info on general rpm query
formatting.
- Panu -
More information about the devel
mailing list