Subtle change in default behaviour or did I miss something in the docs?

Mike McLean mikem at redhat.com
Mon Aug 23 19:06:18 UTC 2010


On 08/19/2010 07:05 AM, Bryce wrote:
> In fc13, when koji starts creating the FS structures for the chroot
> under /var/lib/mock, it will attempt to create a
> /var/cache/mock/<tag-X-Y>/filesystems file which it can't do since
> /var/cache/mock/<tag-X-Y>  was never created. The cheap way out of that
> is to set config_opts['cache_topdir'] = '/var/lib/mock' instead of
> /var/cache/mock. That option didn't need fiddling with in fc12 so I'm
> unsure if this was a change in koji's code base or something unrelated.

I've never encountered this problem before. Fedora is running 
mock-1.1.1, is using no such workaround, and does not seem to see this 
issue. I don't see anything in the diff that would explain your issue, 
though I guess it wouldn't hurt to try 1.1.1 and see if that changes 
anything.

Have you by chance set something site-defaults.cfg? If you have, that 
might might be tickling a bug in mock that I'm not seeing.

> The following is the product of being unable to email a notification
> because it can't connect to the mail host... I can think of dozens of
> reasons why this could occur but it may be better to stick in an
> exception to queue them up internally for retry or at least spit out
> 'Hey! I can't talk to your mailhost!" and fail the BuildNotify task
>
> Traceback (most recent call last):
>    File "/usr/sbin/kojid", line 1437, in runTask
>      response = (handler.run(),)
>    File "/usr/sbin/kojid", line 1513, in run
>      return self.handler(*self.params,**self.opts)
>    File "/usr/sbin/kojid", line 3651, in handler
>      *server = smtplib.SMTP(options.smtphost)*
>    File "/usr/lib64/python2.6/smtplib.py", line 239, in __init__
>      (code, msg) = self.connect(host, port)
>    File "/usr/lib64/python2.6/smtplib.py", line 295, in connect
>      self.sock = self._get_socket(host, port, self.timeout)
>    File "/usr/lib64/python2.6/smtplib.py", line 273, in _get_socket
>      return socket.create_connection((port, host), timeout)
>    File "/usr/lib64/python2.6/socket.py", line 514, in create_connection
>      raise error, msg
> error: [Errno 111] Connection refused

Yep, this should be handled better

> The main problem I keep hitting, is mainly with noarch packages.
>     BuildError: error building package (arch noarch), mock exited with
> status 1; see build.log for more information
> however when I go to look all I see in the log is the single line
>    Mock Version: 1.1.3
> The root.log doesn't show anything interesting either
>
> however if I manually poke the rpm through with mock, it works.
> ie
>    [root at whitebishop ~]# mock -r koji/el5-ga-build-9-44 --rebuild
> ~/buildsys-macros-5-2.ovs.src.rpm
>
>    [root at whitebishop ~]# ls -l  /var/lib/mock/el5-ga-build-9-44/result
>    total 48
>    -rw-rw-r--. 1 root mock  2593 Aug 19 11:57 build.log
>    -rw-r--r--. 1 root mock  2283 Aug 19 11:57
> buildsys-macros-5-2.ovs.noarch.rpm
>    -rw-r--r--. 1 root mock  2147 Aug 19 11:57 buildsys-macros-5-2.ovs.src.rpm
>    -rw-rw-r--. 1 root mock 32152 Aug 19 11:57 root.log
>    -rw-rw-r--. 1 root mock   193 Aug 19 11:57 state.log
>
>    [root at whitebishop ~]# cat
> /var/lib/mock/el5-ga-build-9-44/result/build.log
>    Mock Version: 1.1.3
>    ENTER do(['bash', '--login', '-c', 'rpmbuild -bs --target i386
> --nodeps builddir/build/SPECS/buildsys-macros.spec'], False,
> '/var/lib/mock/el5-ga-build-9-44/root/', None, 86400, True, 0, 0, 484,
> None, logger=<mock.trace_decorator.getLog object at 0x1f2abd0>)
>    Executing command: ['bash', '--login', '-c', 'rpmbuild -bs --target
> i386 --nodeps builddir/build/SPECS/buildsys-macros.spec']
>    warning: Could not canonicalize hostname: whitebishop
>    Building target platforms: i386
>    Building for target i386
>    Wrote: /builddir/build/SRPMS/buildsys-macros-5-2.ovs.src.rpm
>    Child returncode was: 0
>    LEAVE do -->
>
> I can't reason out why there would be any difference unless it's passing
> --arch noarch.. in which case
>    [root at whitebishop ~]# mock -r koji/el5-ga-build-9-44 --arch noarch
> --rebuild ~/buildsys-macros-5-2.ovs.src.rpm
>    ERROR: Cannot build target noarch on arch x86_64
> But then I'd expect to have the error line in the build.log which I
> don't... so I'm a bit flummoxed if this is what has happened or not.

koji determines the arch(s) primarily from the initial srpm it creates. 
It reads the buildarchs, exclusivearch, and excludearch values from that 
srpm and attempts to honor them. However this is for determining which 
buildArch tasks to fire off, not for passing to mock.

When kojid handles a noarch buildArch task, it picks a valid actual arch 
to generate the buildroot, since there is no such thing as a "noarch" 
buildroot. This is the arch that is passed to mock (via the custom mock 
config file that kojid writes, not the command line). I don't believe 
koji will ever pass a --arch arg to mock.

Is it possible that you're simply missing "BuildArch: noarch" in your spec?


More information about the buildsys mailing list