On 23/08/10 20:06, Mike McLean wrote:
> 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.
>
>   

Okies let me try it all again from scratch (this is going to take quite
a while on this box so apologies for the very late reply and bad humour
<> brought on by the long waits between stages)
.
Installing a minimal *fc13* x86_64 ISO in a vm.... <much disk chundering>
yum update fc13.. <at the mercy of the UK BT NOTwork,...>
allocate a virtual disk for to hold the koji system <even more disk IO...>
copy over the src and i386/x86_64 rpms directories to be loaded. <the
disk controller wants a pay rise..>
make copy of the 'clean' fc13 image so I don't have to go through all
that hassle again 8/ <more disk IO ... Zzz.>
setup koji (users/postgres, httpd, ssl, koji* conf files, directories &
permissions, ...)
  [r...@localhost buildsys]# rpm -q mock koji httpd postgresql
  mock-1.1.4-1.fc13.noarch
  koji-1.4.0-2.fc13.noarch
  httpd-2.2.16-1.fc13.x86_64
  postgresql-8.4.4-1.fc13.x86_64
 
  Just check that mock's site defaults aren't modified from it's default
  [r...@koji ~]# rpm -qfV /etc/mock/site-defaults.cfg
  [r...@koji ~]#

check that koji it does what it says on the tin, (ie run simple koji
commands successfully, poke at web interface etc) <looks fine>
.
import the  src and i386/x86_64 rpms <I'm going to die of old age!,... >
make another snaphot backup of the vm <I enjoy the pain, really>
Run threading script to create all the interdependencies between tags
<I'm so glad that's all in a script (140 odd lines)>
.
Finally build src.rpm that creates i386/x86_64 binary <*FAIL*>

<investigate> :

    The build/root and state logs are basically empty. Nothing of use
    can be gleaned from them.

    [r...@builder ~]# cd /etc/mock/koji
    [r...@builder koji]# ls
    el5-ga-build-1-6.cfg

Hurm,.. ok then lets run the init phase manually.

    [r...@builder koji]# mock -r koji/el5-ga-build-1-6 init
    INFO: mock.py version 1.1.4 starting...
    State Changed: init plugins
    INFO: selinux enabled
    State Changed: start
    State Changed: lock buildroot
    State Changed: clean
    State Changed: init
    State Changed: lock buildroot
    Mock Version: 1.1.4
    INFO: Mock Version: 1.1.4
    Traceback (most recent call last):
      File "/usr/sbin/mock", line 748, in <module>
        main(retParams)
      File "/usr/sbin/mock", line 616, in main
        chroot.init()
      File "<peak.util.decorators.rewrap wrapping mock.backend.init at
    0x01EF58C0>", line 3, in init
      File "/usr/lib/python2.6/site-packages/mock/trace_decorator.py",
    line 70, in trace
        result = func(*args, **kw)
      File "/usr/lib/python2.6/site-packages/mock/backend.py", line 195,
    in init
        self._callHooks('initfailed')
      File "<peak.util.decorators.rewrap wrapping
    mock.backend._callHooks at 0x01F51C08>", line 3, in _callHooks
      File "/usr/lib/python2.6/site-packages/mock/trace_decorator.py",
    line 70, in trace
        result = func(*args, **kw)
      File "/usr/lib/python2.6/site-packages/mock/backend.py", line 609,
    in _callHooks
        hook()
      File "<peak.util.decorators.rewrap wrapping
    selinux._selinuxPostBuildHook at 0x01F64758>", line 3, in
    _selinuxPostBuildHook
      File "/usr/lib/python2.6/site-packages/mock/trace_decorator.py",
    line 70, in trace
        result = func(*args, **kw)
      File "/usr/lib/python2.6/site-packages/mock/plugins/selinux.py",
    line 67, in _selinuxPostBuildHook
        os.unlink(self.filesystems)
    OSError: [Errno 2] No such file or directory:
    '*/var/cache/mock*/el5-ga-build-1-6/filesystems'
    [r...@builder koji]# ls -l /var/cache/mock
    total 0

Right ho,.. it's DEFINITELY looking for files in /var/cache/mock. The
only place this is referenced is in /etc/mock/site-defaults.cfg as being
the DEFAULT value so it's not specifically set but mock is filling in
the value anyway (note it's #ed out in the cfg file)

    [r...@builder koji]# grep /var/cache/mock /etc/mock/site-defaults.cfg
    *#* config_opts['cache_topdir'] = '/var/cache/mock'


rpm claims the site-defaults.cfg file is in the default downloaded
state, so not modified.
As stated before, if I quickly edit this variable and point it at
/var/lib/mock instead I can get a successful build. Maybe this is
something that mock-1.1.1 never filled in the blank for.



>
>> 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
>>    [r...@whitebishop ~]# mock -r koji/el5-ga-build-9-44 --rebuild
>> ~/buildsys-macros-5-2.ovs.src.rpm
>>
>>    [r...@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
>>
>>    [r...@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
>>    [r...@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?
>
>   
actually...

    Buildarch:      noarch

is rpm so mean as to be picky about BuildArch: vs Buildarch: ??
I did change it to be studdlycapped but no difference. I'll dig into
this deeper tomorrow (real work getting piled up..)

Phil
=--=



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

Reply via email to