[CentOS-devel] build-from-scratch: pre-processor/parser for .spec files?
Jeff Johnson
n3npq at mac.com
Sat Aug 16 01:23:16 UTC 2008
On Aug 15, 2008, at 7:57 PM, Brian Schüler wrote:
> Hi,
>
> does anybody know a tool/script which pre-processes/parse and dumps
> a .spec
> file with preloaded RPM macros?
>
What is "preloaded macros"?
If you want expanded macros, then
rpm -E "`cat foo.spec`"
will do all the expansions.
If you want all macros use duriong a build (with rpm-5.x), then
rpmbuild ... --macrosused foo.spec
will list all macros used during a build. These are also added to a
*.src.rpm
rpm -qp --qf '[%{buildmacros}\n]' foo*.src.rpm
> I'm working on a script which will build a set of source RPMs (or
> even a whole
> distribution) on a mock build server. The aim of it is to get well
> defined source
> RPMs with exact requirements (BuildReqs and Requres by running
> installation
> tests in mock in conjunction with ldd on multilib systems). The
> goal of this is
> to get all Packages mock-buildable and "certified".
>
> I will have to shorten the build duration by calculating the
> package order with
> correlation algorythms on the package names.
>
> But there are cases where correlation does not work - especially
> when SRPMs
> creates packages named different (e.g. mplayer(src) creates mencoder
> (bin))
> and when scanning for "%files" or "%files -n" in the .spec returns
> unresolved
> macros. (Example: %files -n vdr-%{pname}-server)
>
> When my build-from-scratch script is finished I will release it to
> the CentOS
> project, because it will be very important for automation and
> shorten the
> release time when (re)building the Distro.
>
> Current features:
> - Building binary packages from SRPMS (in a repository) on a mock
> server via ssh
> - Creating root-logs, build-logs and missingdeps-logs
> - Bypassing bad packages (missdeps, build-failures) on next turns
> - Semi-"brute-force"-build: re-running as so long as no more
> packages are built.
>
> Planned features:
> - Certification tests (post-install tests, respin/updates
> integration tests)
> - Handling cross-build issues in RPM
> - Exact build order and circular dependencies detection.
>
>
> I think the solution for my problem can be found in the internals
> of the
> rpmbuild utility - if someone has a hint or solution of a .spec
> parser, he/she is
> welcome (Google did not satisfy me right now).
>
There aren't any parsers for spec files other than rpmbuild afaik.
But (again rpm-5.0), there is
rpm -q --yaml --specsrpm foo.spec
which is at least more predictable YAML output than grammar-less spec
files.
Note that the --specsrpm --yaml also spews the build dependencies
that you need
for what you are calling "correlation".
73 de Jeff
More information about the CentOS-devel
mailing list