From 56f7840642b9e05240c2ce3ebb0ef99888a5ab1e Mon Sep 17 00:00:00 2001 From: Stephen Gallagher Date: Feb 14 2020 21:28:49 +0000 Subject: BuildSRPMFromSCMTask: Support auto-selecting a matching specfile name There are cases where having two files with the .spec suffix in the same dist-git repository makes sense, such as maintaining a common dist-git structure for different distributions where the package name might be different. This patch would allow the build-system to use the matching spec file name for the current SCM checkout path if it exists. Signed-off-by: Stephen Gallagher --- diff --git a/builder/kojid b/builder/kojid index dc0faba..42e9233 100755 --- a/builder/kojid +++ b/builder/kojid @@ -4813,8 +4813,28 @@ class BuildSRPMFromSCMTask(BaseBuildTask): if len(spec_files) == 0: raise koji.BuildError("No spec file found") elif len(spec_files) > 1: - raise koji.BuildError("Multiple spec files found: %s" % spec_files) - spec_file = spec_files[0] + # If there are multiple spec files, check whether one of them + # matches the SCM repo name + scm_spec_options = [ + "%s/%s.spec".format( + sourcedir, os.path.basename(sourcedir)), + + "%s/SPECS/%s.spec".format( + sourcedir, os.path.basename(sourcedir)) + ] + + for scm_spec in scm_spec_options: + if scm_spec in specs: + # We have a match, so use this one. + spec_file = scm_spec + break + + if not spec_file: + # We didn't find an exact match, so throw an error + raise koji.BuildError( + "Multiple spec files found: %s" % spec_files) + else: + spec_file = spec_files[0] # Run spec file sanity checks. Any failures will throw a BuildError self.spec_sanity_checks(spec_file)