Skip to main content

specfile.macros

Macro

class Macro(collections.abc.Hashable)

Class that represents a RPM macro.

Attributes:

  • name - Name of the macro.
  • options - Options (parameters) of the macro.
  • body - Macro body.
  • level - Macro level (source).
  • used - Indicates that the macro has been used (expanded).

Macros

class Macros()

dump

@classmethod
def dump(cls) -> List[Macro]

Dumps all macros defined in the global context.

This is not 100% accurate, since macros can be defined multiple times, but only the last definition is listed.

Returns:

List of Macro instances.

expand

@staticmethod
def expand(expression: str) -> str

Expands an expression in the global context.

Arguments:

  • expression - Expression to expand.

Returns:

Expanded expression.

Raises:

  • RPMException - If expansion error occurs.

remove

@classmethod
def remove(cls, macro: str) -> None

Removes all definitions of a macro in the global context.

Arguments:

  • macro - Macro name.

Raises:

  • MacroRemovalException - If there were too many unsuccessful retries to remove the macro.

define

@classmethod
def define(cls, macro: str, body: str) -> None

Defines a macro in the global context.

Removes all existing definitions first. It is not possible to define a macro with options. The new macro will always have MacroLevel.OLDSPEC level.

Arguments:

  • macro - Macro name.
  • body - Macro body.

reinit

@classmethod
def reinit(cls, level_threshold: MacroLevel = MacroLevel.RPMRC) -> None

Reinitializes macros in the global context.

Arguments:

  • level_threshold - Only macros up to this level remain defined.