From 36e877080750fcf0675d04ec2eb546fc13ee33d1 Mon Sep 17 00:00:00 2001 From: Ondrej Nosek Date: May 06 2022 10:15:02 +0000 Subject: Refactoring loading rpmautospec feature This doesn't change the functionality. Moves the current code into one place. It adds another flag for autochangelog. Signed-off-by: Ondrej Nosek --- diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py index 5b1e001..3d48998 100644 --- a/pyrpkg/__init__.py +++ b/pyrpkg/__init__.py @@ -171,6 +171,8 @@ class Commands(object): self._rel = None # Whether the spec file uses %autorelease self._uses_autorelease = None + # Whether the spec file uses %autochangelog + self._uses_autochangelog = None # Whether the spec file uses rpmautospec features (at all) self._uses_rpmautospec = None # The cloned repo object @@ -655,15 +657,40 @@ class Commands(object): @property def uses_autorelease(self): if self._uses_autorelease is None: - self.load_nameverrel() + self.load_rpmautospec() return self._uses_autorelease @property + def uses_autochangelog(self): + if self._uses_autochangelog is None: + self.load_rpmautospec() + return self._uses_autochangelog + + @property def uses_rpmautospec(self): if self._uses_rpmautospec is None: - self.load_nameverrel() + self.load_rpmautospec() return self._uses_rpmautospec + def load_rpmautospec(self): + """ + Set which features and macros are active in the current specfile + """ + specfile_path = os.path.join(self.layout.specdir, self.spec) + if specfile_uses_rpmautospec: + self._uses_autorelease = specfile_uses_rpmautospec( + specfile_path, check_autorelease=True, check_autochangelog=False + ) + self._uses_autochangelog = specfile_uses_rpmautospec( + specfile_path, check_autorelease=False, check_autochangelog=True + ) + self._uses_rpmautospec = specfile_uses_rpmautospec(specfile_path) + else: + # Set to 0 so it evaluates false-ish but differs from (unset) None. + self._uses_autorelease = 0 + self._uses_autochangelog = 0 + self._uses_rpmautospec = 0 + def _parse_output_for_nameverrel(self, output): """Parses an output of the 'rpm' command - extracts fields from the string and set the Command object's properties. @@ -707,18 +734,9 @@ class Commands(object): specfile_path = os.path.join(self.layout.specdir, self.spec) - if specfile_uses_rpmautospec: - self._uses_autorelease = specfile_uses_rpmautospec( - specfile_path, check_autorelease=True, check_autochangelog=False - ) - self._uses_rpmautospec = specfile_uses_rpmautospec(specfile_path) - if self._uses_rpmautospec and rpmautospec_calculate_release_number: - release_number = rpmautospec_calculate_release_number(specfile_path) - cmd.append("--define '_rpmautospec_release_number %d'" % release_number) - else: - # Set to 0 so it evaluates false-ish but differs from (unset) None. - self._uses_autorelease = 0 - self._uses_rpmautospec = 0 + if self.uses_rpmautospec and rpmautospec_calculate_release_number: + release_number = rpmautospec_calculate_release_number(specfile_path) + cmd.append("--define '_rpmautospec_release_number %d'" % release_number) # We make sure there is a space at the end of our query so that # we can split it later. When there are subpackages, we get a @@ -769,18 +787,9 @@ class Commands(object): specfile_path = os.path.join(self.layout.specdir, self.spec) - if specfile_uses_rpmautospec: - self._uses_autorelease = specfile_uses_rpmautospec( - specfile_path, check_autorelease=True, check_autochangelog=False - ) - self._uses_rpmautospec = specfile_uses_rpmautospec(specfile_path) - if self._uses_rpmautospec and rpmautospec_calculate_release_number: - release_number = rpmautospec_calculate_release_number(specfile_path) - rpm_cmd.append("--define '_rpmautospec_release_number %d'" % release_number) - else: - # Set to 0 so it evaluates false-ish but differs from (unset) None. - self._uses_autorelease = 0 - self._uses_rpmautospec = 0 + if self.uses_rpmautospec and rpmautospec_calculate_release_number: + release_number = rpmautospec_calculate_release_number(specfile_path) + rpm_cmd.append("--define '_rpmautospec_release_number %d'" % release_number) # setup the command cmd = ['mock'] @@ -2490,7 +2499,7 @@ class Commands(object): def clog(self, raw=False, subject=None): """Write the latest spec changelog entry to a clog file""" - spec_file = os.path.join(self.path, self.spec) + spec_file = os.path.join(self.layout.specdir, self.spec) # TODO: remove when fixed # Command contains workaround (undefines _changelog_trimtime) described at: # https://github.com/rpm-software-management/rpm/issues/1301