Jeff Johnson wrote:

Increasingly I'm seeing spec file recipes (and rpmbuild) used in horrendously
complicated ways.

rpm spec file recipes contain "known good" (at least wrto rpmbuild parsing/execution) content that results in successful builds and binary packages to be distributed.

That was the whole design goal behind rpmbuild's "reproducible builds" for OSS.

I've seen the same kind of "abuse" with port file recipes (and Tcl) in MacPorts...

And if the recipes were using say XML (for metadata) and Python (for scripting), I'm very sure that it would still happen and even be "needed" for those packages that refuse any sane way of building or packaging. Like not using autofoo/gnumake. (The "apple way" of inserting a GNUmakefile for those could be explored, though.)

But when the overrides are outnumbering the defaults, then something is wrong...

What is becoming increasingly obvious (to me if not to you) is that the lack of a grammar for spec files, and the abuse of macros, is interfering with the
reliability of building OSS software.

Yes, this interfering is rather evident when "porting" a specfile from say openSUSE (or Mandriva) over to something say like Fedora (or CentOS) or so.

Both the macros, and the tomatoo/tomaato naming of package dependencies... I guess the names could be handled by some kind of "standard" dictionary.

Sure you can accomplish just about any goal you wish by treating existing spec files as a template, and overloading existing tokens to insert additional goop
into a build.

But why bother using spec files for this purpose? If you want a paramaterized template for builds, then why not design a format that is more reliable than spec files are?

There are certainly better templating candidates around than rpm spec files and macros,
autoconf (and m4) and make(1) and ant instantly come to mind.

I usually try to use/patch the Makefile to build and install the software, with all the dirty details, and the Specfile to mostly do the metadata...

I'm not sure that switching one legacy language (spec) for another (make), would help much other than to confuse it even further. But that's just me.

I'm increasingly convinced (see my FOSDEM 2005 presentation abstract) that's its time to eliminate rpmbuild in
favor of more reliable and flexible means to produce *.rpm packages.

But it could still use the command "rpmbuild --rebuild *.src.rpm", right ?
I guess we're more talking about what goes inside the source package...

Maybe something like http://bee.rubyforge.org/ would keep more within
the existing YAML-ish syntax, while still allowing for a Real Language ?

--anders

______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
Developer Communication List                        rpm-devel@rpm5.org

Reply via email to