Google
  Web www.spinics.net

Re: Are brackets around macros required?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


On Sat, 20 Aug 2011 07:16:25 +0200, RC (Ralf) wrote:

> On 08/19/2011 11:45 PM, Göran Uddeborg wrote:
> > Michael Schwendt:
> >> Do you parse them all without testing?
> 
> I sense a misunderstanding.
> 
> People seem to presume rpm.specs to be written in a "well defined 
> programming language" using a lexical scanner and parser underneath.

To clarify my use of the term "parse" above, what I meant is the human
parser. Whether the reader of the spec file is able to _recognise_ a macro
easily/immediately. Especially in situations where they are surrounded by
non-space characters. Brackets not only aid the human reader but also the
machine that substitutes macros with their values. Or the editor that
applies syntax highlighting.

> This does not apply, the "rpm.spec language" is a "macro language", 
> similar to regexes and m4, using macro sets underneath, similar to 
> autoconf or sendmail, with all kind of ambiguities and "historic 
> heritage and historic heuristics" underneath.
> 
> I.e. rpm doesn't actually "parse" spec files in the sense 
> compilers/interpreters would parse/interpret a well "defined language", 
> it expands macros and passes the results to other parties.

What constitutes a macro? What is the grammar? If we restrict ourselves
to using only a subset of the possible expressions that build macro names,
we can avoid errors and increase readability.

Since you talk about "ambiguities", those commonly lead to bugs with
poorly named variables in programming languages, too, not just RPM spec
files.

In a sufficiently large spec file with more than the default set of
macros, it isn't obvious whether %name2 is expected to be %{name}2 instead
and what lib%name_* is meant to match. rpmbuild wouldn't complain. Unexpanded
macros have lead to errors in packages before. Mixed macro usage like
%version and %ver has been seen before, too, a pitfall when replacing %ver
with something else and either messing up %version or forgetting a single
%{ver}.

Btw, do you agree with making explicit brackets a SHOULD?
--
packaging mailing list
packaging@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/packaging



[Home]     [Fedora Legacy]     [Fedora Desktop]     [Red Hat 9 Bible]     [Fedora Bible]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]

Powered by Linux

Google
  Web www.spinics.net