def _sync_macros(s): """Makes all macros present in a string up-to-date in rpm context""" _, macros = _expand_macros(s) for macro in macros: MacroHelper.purge_macro(macro) value = _get_macro_value(macro) if value and MacroHelper.expand(value): rpm.addMacro(macro, value)
def get_rpm_spec(cls, path: str, sourcedir: str, predefined_macros: Dict[str, str]) -> rpm.spec: # reset all macros and settings rpm.reloadConfig() # ensure that %{_sourcedir} macro is set to proper location MacroHelper.purge_macro('_sourcedir') rpm.addMacro('_sourcedir', sourcedir) # add predefined macros for macro, value in predefined_macros.items(): rpm.addMacro(macro, value) try: spec = cls.parse_spec(path, flags=rpm.RPMSPEC_ANYARCH) except RebaseHelperError: # try again with RPMSPEC_FORCE flag (the default) spec = cls.parse_spec(path) return spec