|
2 | 2 | # Copyright (c) Microsoft Corporation. |
3 | 3 | # Licensed under the MIT License. |
4 | 4 |
|
| 5 | +from collections import defaultdict |
| 6 | +from os import path |
5 | 7 | from typing import FrozenSet, List, Set |
6 | | -from pyrpm.spec import Spec |
7 | | - |
8 | 8 | import argparse |
9 | | -from collections import defaultdict |
10 | | -from pathlib import Path |
11 | 9 | import pprint |
12 | 10 | import sys |
13 | 11 |
|
| 12 | +from pyrpm.spec import replace_macros, Spec |
| 13 | + |
14 | 14 | version_release_matching_groups = [ |
15 | 15 | frozenset([ |
16 | 16 | "SPECS-SIGNED/kernel-signed/kernel-signed.spec", |
@@ -75,10 +75,10 @@ def check_spec_tags(base_path: str, tags: List[str], groups: List[FrozenSet]) -> |
75 | 75 | variants = defaultdict(set) |
76 | 76 |
|
77 | 77 | for spec_filename in group: |
78 | | - parsed_spec = Spec.from_file(Path(base_path, spec_filename)) |
| 78 | + parsed_spec = Spec.from_file(path.join(base_path, spec_filename)) |
79 | 79 | for tag in tags: |
80 | | - variants[tag].add(getattr( |
81 | | - parsed_spec, tag)) |
| 80 | + tag_value = get_tag_value(parsed_spec, tag) |
| 81 | + variants[tag].add(tag_value) |
82 | 82 |
|
83 | 83 | for tag in tags: |
84 | 84 | if len(variants[tag]) > 1: |
@@ -118,6 +118,13 @@ def check_matches(base_path: str): |
118 | 118 | sys.exit(1) |
119 | 119 |
|
120 | 120 |
|
| 121 | +def get_tag_value(spec: "Spec", tag: str) -> str: |
| 122 | + value = getattr(spec, tag) |
| 123 | + if value: |
| 124 | + value = replace_macros(value, spec) |
| 125 | + return value |
| 126 | + |
| 127 | + |
121 | 128 | if __name__ == '__main__': |
122 | 129 | parser = argparse.ArgumentParser() |
123 | 130 | parser.add_argument( |
|
0 commit comments