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