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 <sgallagh@redhat.com>
This commit is contained in:
Stephen Gallagher 2020-02-14 16:28:49 -05:00 committed by Mike McLean
parent 2d27453ac1
commit 47696c8895

View file

@ -4989,8 +4989,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)