e416a7b Add %new_package

Authored and Committed by nim 3 years ago
    Add %new_package
    
    %new_package is a wrapper around Name: and %package that abstracts their quirks
    from packagers and macros. Its behavior is controled by the %{source_name}
    global variable:
    – when %{source_name} is not set, the first call to %new_package will create a
      Name: block and set %{source_name} to the %{name} of this block.
    – when %{source_name} is set:
      – a call to %new_package with no arguments creates:
        Name: %{source_name}
      – otherwise, a call to %new_package creates the corresponding:
        %package…
        line, unless the resulting %{name} matches %{source_name}. In that case it
        creates:
        Name: %{source_name}
        as before.
    
    Arguments:
    – -n and %1 like %package
    – -v to print the variables %new_package sets directly.
    
    The intended use-case it to:
    – simplify coordination between macros that create subpackages,
    – make it easy for packagers to declare which of the macro-created packages
      owns the SRPM, and
    – make %{source_name} available within spec files and not just as a dnf
      synthetic variable.
    
    Unlike %{name} %{source_name} matches the SRPM name regardless of its location
    within the spec file.
    
        
file modified
+45 -4
file modified
+36 -1