On 10/22/2014 03:55 AM, Thomas wrote:
> Hi All,
> 
> I updated your patch so it does not assume sourcedir=chrootdir
> But it's not yet the perfect solution.

This looks reasonable, except that you dropped the directory existence
check, which makes the code /require/ the new layout if
support_rpm_source_layout is enabled. This is something of an interim
solution and I'd rather not break things for other folks (esp since
support_rpm_source_layout defaults to True).

I think the fix is something like this:


> For reference the layout is:
> SPEC/
> SOURCES/
> .metadata-file
> 
> diff --git a/builder/kojid b/builder/kojid
> index 821f19d..4210823 100755
> --- a/builder/kojid
> +++ b/builder/kojid
> @@ -455,6 +455,10 @@ class BuildRoot(object):
> 
>      def build_srpm(self, specfile, sourcedir, source_cmd):
>          self.session.host.setBuildRootState(self.id,'BUILDING')
> +        if self.options.support_rpm_source_layout:
> +            sources_dir = "%s/SOURCES" % sourcedir
> +       else:
> +           sources_dir = sourcedir
>          if source_cmd:
>              # call the command defined by source_cmd in the chroot so
> any required files not stored in
>              # the SCM can be retrieved
> @@ -466,7 +470,7 @@ class BuildRoot(object):
>                  self.expire()
>                  raise koji.BuildError, "error retrieving sources, %s"
> % self._mockResult(rv)
> 
> -        args = ['--no-clean', '--buildsrpm', '--spec', specfile,
> '--sources', sourcedir,
> +        args = ['--no-clean', '--buildsrpm', '--spec', specfile,
> '--sources', sources_dir,
>                  '--target', 'noarch']
> 
>          rv = self.mock(args)
> @@ -3793,10 +3797,7 @@ class BuildSRPMFromSCMTask(BaseBuildTask):
> 
>          #build srpm
>          self.logger.debug("Running srpm build")
> -        sources_dir = "%s/SOURCES" % sourcedir
> -        if not self.options.support_rpm_source_layout or not
> os.path.isdir(sources_dir):
> -            sources_dir = sourcedir
> -        broot.build_srpm(spec_file, sources_dir, scm.source_cmd)
> +        broot.build_srpm(spec_file, sourcedir, scm.source_cmd)
> 
>          srpms = glob.glob('%s/*.src.rpm' % broot.resultdir())
>          if len(srpms) == 0:
> 
> On Fri, Aug 15, 2014 at 12:10 AM, Mike McLean <[email protected]> wrote:
>> On 08/13/2014 06:05 PM, Mike McLean wrote:
>>> This much gets you halfway there, but it looks like the system is just
>>> going to choke later on having the sources under SOURCES instead of the
>>> git root dir.
>>>
>>> I guess you could set up a source_cmd to move or link the sources
>>> around, but that's hardly a clean solution.
>>>
>>> I wouldn't mind teaching koji to handle this layout, but it looks like
>>> it might be a little more involved than just the spec portion (unless
>>> I'm missing something). Did you have a solution for the SOURCES dir?
>>
>> Actually not that complicated after all. I did add an option to turn the
>> support off in case it causes a problem (possible that someone could
>> have a SOURCES dir in their checkout for some other reason).
>>
>> Anyway, here is where I'm at. Seems to be working.
>>
> 
> 
> 

>From 0cad4a5ac0cf25d2f9da03dd567bc9fa055b01d6 Mon Sep 17 00:00:00 2001
From: Mike McLean <[email protected]>
Date: Fri, 24 Oct 2014 11:28:15 -0400
Subject: [PATCH] do not require rpm source layout

---
 builder/kojid | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/builder/kojid b/builder/kojid
index e30ac85..348b26c 100755
--- a/builder/kojid
+++ b/builder/kojid
@@ -455,10 +455,11 @@ class BuildRoot(object):
 
     def build_srpm(self, specfile, sourcedir, source_cmd):
         self.session.host.setBuildRootState(self.id,'BUILDING')
-        if self.options.support_rpm_source_layout:
-            sources_dir = "%s/SOURCES" % sourcedir
-	else:
-	    sources_dir = sourcedir
+        alt_sources_dir = "%s/SOURCES" % sourcedir
+        if self.options.support_rpm_source_layout and os.path.isdir(alt_sources_dir)
+            sources_dir = alt_sources_dir
+        else:
+            sources_dir = sourcedir
         if source_cmd:
             # call the command defined by source_cmd in the chroot so any required files not stored in
             # the SCM can be retrieved
-- 
1.9.3

--
buildsys mailing list
[email protected]
https://admin.fedoraproject.org/mailman/listinfo/buildsys

Reply via email to