[BUG] Koji and Lustre
by Thomas Guthmann
Hey guys,
We found a bug(?) in listTaskOutput (/usr/share/koji-hub/kojihub.py)
when used with a Lustre filesystem. This function parses all attributes
of every file of a build and is used when you want to display
build.log/root.log through the web interface. Everything returned by
listTaskOutput is returned through XML-RPC and as a result we had this :
An error has occurred while processing your request.
Fault: <Fault 1: 'exceptions.OverflowError: long int exceeds XML-RPC
limits'>
Traceback (most recent call last):
File "/usr/share/koji-web/lib/kojiweb/publisher.py", line 16, in
publish_object
return old_publish_object(req, object)
File "/usr/lib64/python2.4/site-packages/mod_python/publisher.py",
line 412, in publish_object
return publish_object(req,util.apply_fs_data(object, req.form,
req=req))
File "/usr/lib64/python2.4/site-packages/mod_python/util.py", line
439, in apply_fs_data
return object(**args)
File "/usr/share/koji-web/scripts/index.py", line 649, in getfile
output = server.listTaskOutput(taskID, stat=True)
File "/usr/lib/python2.4/site-packages/koji/__init__.py", line 1468,
in __call__
return self.__func(self.__name,args,opts)
File "/usr/lib/python2.4/site-packages/koji/__init__.py", line 1718,
in _callMethod
raise err
Fault: <Fault 1: 'exceptions.OverflowError: long int exceeds XML-RPC
limits'>
The issue comes from the st_dev value gathered by getStat (stat). In
Lustre this value can be very high and that's why it complains. To fix
that, we used the same condition than st_size, we cast the value as a
string. See attached patch.
Example (see 'Device:' the value after the '/'):
# stat build.log
File: `build.log'
Size: 106021 Blocks: 208 IO Block: 2097152 regular file
Device: e04ae70eh/3763005198d Inode: 721664 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 48/ apache) Gid: ( 48/ apache)
Access: 2010-07-13 10:44:40.000000000 +1000
Modify: 2010-07-12 12:54:15.000000000 +1000
Change: 2010-07-12 12:54:52.000000000 +1000
# That's what is read by listTaskOutput
relfilename=build.log ATTR=st_atime GETATTR=1278981616
relfilename=build.log ATTR=st_blksize GETATTR=2097152
relfilename=build.log ATTR=st_blocks GETATTR=208
relfilename=build.log ATTR=st_ctime GETATTR=1278903292
relfilename=build.log ATTR=st_dev GETATTR=3763005198 <----- /!\
relfilename=build.log ATTR=st_gid GETATTR=48
relfilename=build.log ATTR=st_ino GETATTR=721664
relfilename=build.log ATTR=st_mode GETATTR=33188
relfilename=build.log ATTR=st_mtime GETATTR=1278903255
relfilename=build.log ATTR=st_nlink GETATTR=1
relfilename=build.log ATTR=st_rdev GETATTR=0
relfilename=build.log ATTR=st_size GETATTR=106021
relfilename=build.log ATTR=st_uid GETATTR=48
Hope it helps, lost a good amount of time on that one :)
Cheers,
Thomas
12 years, 3 months
Custom headers/footers in koji
by Anthony Towns
Hello world,
Attached is a couple of small additions to koji's web code to allow customising the headers/footer a little more (headers are good to customise for linking back to the main site or secondary koji instances; footers are good to customise for web analytics :)
The approach I'm using is just to allow the admin to add a couple of files with custom HTML that get automatically included when they're present -- it's a bit kludgy, but from what I can tell overriding the header/footer Cheetah templates more directly would require some fairly in depth changes to the way koji does templating.
Any thoughts on whether this is plausible to go in koji proper, or if there's a better way to do it? :)
Cheers,
aj (a newbie in Red Hat release engineering, and even newbie-er in Fedora :)
--
Anthony Towns <atowns(a)redhat.com>
12 years, 8 months
Re: buildsys Digest, Vol 73, Issue 10
by xiao li
Recently,when I build the srpms,I met a problem.The root_log shows as
follows.DEBUG util.py:247: ERROR with rpm_check_debug vs depsolve: DEBUG
util.py:247: rpmlib(FileDigests) is needed by tzdata-2010l-1.el6.noarch
DEBUG util.py:247: rpmlib(PayloadIsXz) is needed by
tzdata-2010l-1.el6.noarch
I do not know where to find rpmlib(FileDigests).please help me.Thanks.
12 years, 8 months
Createrepo behavior
by Jacek N
Hi,
I am setting up koji to build my custom RPMs and I have some problems
understanding what happens with newRepo tasks.
Here is what I have and what I want to achieve:
I maintain my own CentOS mirror on dedicated host. It is available
over HTTP (used by my linux servers). I want to use this repo as
source of packages for mock.
I also want to use koji only to build my custom non-CentOS packages
and maintain separate repo containing only packages build by koji.
I configured my tags in koji in the following way:
# tag for my internal rpms
koji add-tag internal-software
koji edit-tag --arches=x86_64 internal-software
# My build tag which I wanted to keep separated
koji add-tag install-tree
koji edit-tag --arches=x86_64 install-tree
# Attached my local CentOS mirror to build tag
koji add-external-repo -t install-tree internal-repo-el5
http://my.local.repo/trees/CentOS-5.5-x86_64/
# Added new build target using install-tree as build root building to
my internal-software tag
koji add-target internal-software install-tree internal-software
Next I added "build" and "srpm-build" groups to my install-tree tag
and populated it with packages.
I am having 2 problems when repos are created:
1. When my install-tree repo is created koji runs:
/usr/bin/createrepo -vd -o /tmp/koji/tasks/xxxx -u
http:/my.local.repo/trees/CentOS-5.5-x86_64 -g
/mnt/koji/repos/xxxxxx/groups/comps.xml /tmp/koji/tasks/xxxx
And next it executes mergerepos command:
/usr/libexec/kojid/mergerepos -a x86_64 -b
/mnt/koji/repos/xxxx/blocklist -o /tmp/koji/tasks/xxxx/repo -g
/mnt/koji/repos/xxxx/groups/comps.xml -r
file:///tmp/koji/tasks/xxxx/repo_16_premerge/ -r
http://my.local.repo/trees/CentOS-5.5-x86_64/
Adding repo: file:///tmp/koji/tasks/xxxx/repo_16_premerge/
Adding repo: http://my.local.repo/trees/CentOS-5.5-x86_64/
<my package list from internal mirror follows>
Once task is finished however repo does not work (mock can download
repodata but then it cannot download rpms). I traced this problem to
invalid content of primary.xml and primary.sqlite files which do not
contain full path to my external repo. Instead of this in baseurl:
"http://my.local.repo/trees/CentOS-5.5-x86_64/CentOS"
there is only:
"CentOS"
and since mock uses "/mnt/koji/xxxx" as repo packages are not there.
Once I manually change content of primary.* files mock works fine and
I can build RPMs
2. Second problem is with my internal-software repo. First of all when
a package (noarch in this case) is built newRepo task it not triggered
automatically. When I trigger internal-software repo rebuild using
koji command line my builder executes:
/usr/bin/createrepo -vd -o /tmp/koji/tasks/xxxx/repo -u
http://my.local.repo/trees/CentOS-5.5-x86_64 -i
/mnt/koji/repos/xxxx/pkglist -g /mnt/koji/xxxx/groups/comps.xml
/mnt/koji/packages/
<my internal rpms follow>
This does not seem correct because "my.local.repo" is added to command
line which then means that my primary.xml and primary.sqlite files
contain full URL to my external repo. Of course this brakes the repo
because my mirror has only CentOS rpms. In this case I would expect
baseurl not to contain URL.
Could somebody explain to me if above behaviour is to be expected and
if so if there is any way to achieve what I want?
Regards
Jacek N
12 years, 8 months
How to make squashfs of 3.1 with mksquash 4.0
by Eric Zhong
I have to make a install.img for F10 on F13
Squashfs Version : F13 = 4.0 ; F10 = 3.1
I can't mount 4.0 on F10.
so How can i make a version of 3.1 on F13 ? Are there any options ?
12 years, 8 months
How to spin F10 on F13
by Eric Zhong
I have to spin F10 on F13.
I have a newest machine, it just can install F13, but i need to spin F10 on
it.
"Buildinstall" is OK , But show some error during installation :
....modprobe: FATAL: Module index corrupt : Bad Magic number (anaconda
not yet startup)
F10 can't mount install.img in F13 DVD, is it cause the error ?
12 years, 8 months
Override Build Host string
by Michael Cronenworth
How does one override the "Build Host" string found in an RPM package
when using Koji to build the RPM? Currently, koji is storing the
hostname, not the FQDN, and I'd like to make it the FQDN.
Thanks,
Michael
12 years, 9 months
Extra output in koji CLI ...
by Dilip M
Hi,
When I do koji list-tags, I am getting _extra_ info. Which
service/config is getting it?
$ koji list-tags
connect: (localhost, 80)
send: 'POST /kojihub HTTP/1.0\r\nHost: localhost\r\nUser-Agent:
xmlrpclib.py/1.0.1 (by www.pythonware.com)\r\nContent-Type:
text/xml\r\nContent-Length: 107\r\n\r\n'
send: "<?xml version='1.0'?>\n<methodCall>\n<methodName>getAPIVersion</methodName>\n<params>\n</params>\n</methodCall>\n"
reply: 'HTTP/1.1 200 OK\r\n'
header: Date: Fri, 11 Mar 2011 08:33:47 GMT
header: Server: Apache/2.2.10 (Fedora)
header: Content-Length: 121
header: Connection: close
header: Content-Type: text/xml
body: "<?xml version='1.0'?>\n<methodResponse>\n<params>\n<param>\n<value><int>1</int></value>\n</param>\n</params>\n</methodResponse>\n"
connect: (localhost, 80)
send: 'POST /kojihub HTTP/1.0\r\nHost: localhost\r\nUser-Agent:
xmlrpclib.py/1.0.1 (by www.pythonware.com)\r\nContent-Type:
text/xml\r\nContent-Length: 178\r\n\r\n'
send: "<?xml version='1.0'?>\n<methodCall>\n<methodName>listTags</methodName>\n<params>\n<param>\n<value><nil/></value></param>\n<param>\n<value><nil/></value></param>\n</params>\n</methodCall>\n"
reply: 'HTTP/1.1 200 OK\r\n'
header: Date: Fri, 11 Mar 2011 08:33:47 GMT
header: Server: Apache/2.2.10 (Fedora)
header: Content-Length: 17589
header: Connection: close
header: Content-Type: text/xml
body: "<?xml version='1.0'?>\n<methodResponse>\n<params>\n<param>\n<value><array><data>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-centos5_2</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>1</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>fedora-epel5</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>2</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><"
body: 'nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-panthor</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>3</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-thunderbolt</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>5</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></'
body: 'value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-centos5_3</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>7</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-centos5_3-updates</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>8</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<me'
body: 'mber>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-panthor-buildroot</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><string>i686
x86_64</string></value>\n</member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>4</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><string>71CF16AD</string></value>\n</member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-thunderbolt-buildroot</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><string>i686</string></value>\n</member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>6</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></'
body: 'member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-fc2</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>9</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>junk</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>10</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member'
body: '>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-fc2-archive</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>11</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-pisa</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>12</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boole'
body: 'an>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-sgme-Sigma</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>14</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-sgme-Tbolt</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>15</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</membe'
body: 'r>\n<member>\n<name>name</name>\n<value><string>dist-sgme-Tbolt2</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>16</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-centos4</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>34</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<v'
body: 'alue><string>FedoraCore2</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>20</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-pisa-buildroot</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><string>i386</string></value>\n</member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>13</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><string>3DF98B15</string></value>\n</member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</na'
body: 'me>\n<value><string>dist-sgme-Sigma-buildroot</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><string>i386</string></value>\n</member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>17</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><string>3DF98B15</string></value>\n</member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-sgme-Tbolt-buildroot</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><string>i386</string></value>\n</member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>18</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><string>3DF98B15</string></value>\n</member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value>'
body: '<boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-sgme-Tbolt2-buildroot</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><string>i386</string></value>\n</member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>19</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><string>3DF98B15</string></value>\n</member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-centos5_4</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>21</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locke'
body: 'd</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-centos5_4-dont_use</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>22</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>1</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>rel-proxyone-2010_10_25</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><string>x86_64</string></value>\n</member>\n<member>\n<name>perm</name>\n<value><string>admin</string></value>\n</member>\n<member>\n<name>id</name>\n<value><int>32</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><string>71CF16AD</string></value>\n</member>\n<member>\n<name>perm_id</name>\n<value><int>1</int></value>\n</member>\n</stru'
body: 'ct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-centos5_5</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>25</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-sledgehammer-buildroot</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><string>i386</string></value>\n</member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>36</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><string>71CF16AD</string></value>\n</member>\n<member>\n<name>perm_id</name>\n<value><nil/></value'
body: '></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-proxyone</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>28</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-proxyone-buildroot</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><string>i386
x86_64</string></value>\n</member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>29</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><string>71CF16AD</string></value>\n</member>\n<member>\n<name>perm_id</name>\n<'
body: 'value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-centos5_5-updates</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>30</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>1</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>rel-proxyone-2010_11_22</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><string>x86_64</string></value>\n</member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>37</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><string>71CF16AD</string></value>\n</member>\n<member>'
body: '\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-proxyone-release</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><nil/></value></member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>38</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-proxyone-release-buildroot</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><string>x86_64
i386</string></value>\n</member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>39</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><nil/></value></m'
body: 'ember>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-sledgehammer</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><string>i386</string></value>\n</member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>35</int></value>\n</member>\n<member>\n<name>sigkey</name>\n<value><string>71CF16AD</string></value>\n</member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n<value><struct>\n<member>\n<name>locked</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>name</name>\n<value><string>dist-proxyone-centos5_5</string></value>\n</member>\n<member>\n<name>arches</name>\n<value><string>x86_64</string></value>\n</member>\n<member>\n<name>perm</name>\n<value><nil/></value></member>\n<member>\n<name>id</name>\n<value><int>40</int></value>\n</member>\n<member>\n<name>sigk'
body: 'ey</name>\n<value><nil/></value></member>\n<member>\n<name>perm_id</name>\n<value><nil/></value></member>\n</struct></value>\n</data></array></value>\n</param>\n</params>\n</methodResponse>\n'
FedoraCore2
dist-centos4
dist-centos5_2
dist-centos5_3
dist-centos5_3-updates
dist-centos5_4
dist-centos5_4-dont_use
dist-centos5_5
dist-centos5_5-updates
dist-fc2
dist-fc2-archive
.
.
.
...Dilip
12 years, 9 months
Mock 'Directory not empty' error during --clean
by Greg Trahair
Hi,
I've recently setup a build machine for staging builds to go into our
in-house koji. I installed mock and setup the build scratch space in
/data/mock (perms set to 2775, root:mock).
I setup an alias for all users for mock so that everybody gets there own
buildroot:
alias mock='mock -r dist-rhel5-x86_64 --uniqueext $LOGNAME'
Creating a buildroot is fine:
$ mock -r dist-rhel5-x86_64 --uniqueext $LOGNAME --init
INFO: mock.py version 1.0.7 starting...
State Changed: init plugins
State Changed: start
State Changed: lock buildroot
State Changed: clean
State Changed: init
State Changed: lock buildroot
Mock Version: 1.0.7
INFO: Mock Version: 1.0.7
INFO: enabled root cache
State Changed: unpacking root cache
INFO: enabled yum cache
State Changed: cleaning yum metadata
INFO: enabled ccache
State Changed: running yum
But when I attempt to clean it, this happens:
$ mock -r dist-rhel5-x86_64 --uniqueext $LOGNAME --clean
INFO: mock.py version 1.0.7 starting...
State Changed: init plugins
State Changed: start
State Changed: lock buildroot
State Changed: clean
Traceback (most recent call last):
File "/usr/sbin/mock", line 693, in ?
main(retParams)
File "/usr/sbin/mock", line 567, in main
chroot.clean()
File "<peak.util.decorators.rewrap wrapping mock.backend.clean at
0x0A926848>", line 3, in clean
File "/usr/lib/python2.4/site-packages/mock/trace_decorator.py", line
70, in trace
result = func(*args, **kw)
File "/usr/lib/python2.4/site-packages/mock/backend.py", line 134, in
clean
mock.util.rmtree(self.basedir)
File "<peak.util.decorators.rewrap wrapping mock.util.rmtree at
0x0A91A2A8>", line 3, in rmtree
File "/usr/lib/python2.4/site-packages/mock/trace_decorator.py", line
70, in trace
result = func(*args, **kw)
File "/usr/lib/python2.4/site-packages/mock/util.py", line 82, in
rmtree
shutil.rmtree(path, *args, **kargs)
File "/usr/lib64/python2.4/shutil.py", line 172, in rmtree
onerror(os.rmdir, path, sys.exc_info())
File "/usr/lib64/python2.4/shutil.py", line 170, in rmtree
os.rmdir(path)
OSError: [Errno 39] Directory not empty: '/data/mock/dist-rhel5-greg'
My mock config looks like this for dist-rhel5-x86_64:
config_opts['chroothome'] = '/builddir'
config_opts['use_host_resolv'] = False
config_opts['basedir'] = '/data/mock'
config_opts['rpmbuild_timeout'] = 86400
config_opts['yum.conf'] =
'[main]\ncachedir=/var/cache/yum\ndebuglevel=1\nlogfile=/var/log/yum.log
\nreposdir=/dev/null\nretries=20\nobsoletes=1\ngpgcheck=0\nassumeyes=1\n
\n#
repos\n\n[build]\nname=build\nbaseurl=http://my-koji-server/repos/dist-r
hel5-build/latest/$basearch\n'
config_opts['chroot_setup_cmd'] = 'groupinstall build'
config_opts['target_arch'] = 'x86_64'
config_opts['root'] = 'dist-rhel5'
Has anyone else encountered/fixed this?
Thanks in advance,
Greg
This e-mail message contains information which is confidential and may be privileged. It is intended for use by the addressee only. If you are not the intended addressee, we request that you notify the sender immediately and delete or destroy this e-mail message and any attachment(s), without copying, saving, forwarding, disclosing or using its contents in any other way. TomTom N.V., TomTom International BV or any other company belonging to the TomTom group of companies will not be liable for damage relating to the communication by e-mail of data, documents or any other information.
12 years, 9 months
[PATCH] Run yum commands without shell, as sequences instead of strings.
by Ville Skyttä
Fixes shell escaping issues like in '--install "perl(Foo::Bar)"'. The
"canonical" syntax for chroot_setup_cmd in configs is now a tuple or a
list, but a string is still accepted for backwards compatibility (it
gets split to list internally).
---
etc/mock/epel-4-i386.cfg | 2 +-
etc/mock/epel-4-ppc.cfg | 2 +-
etc/mock/epel-4-x86_64.cfg | 2 +-
etc/mock/epel-5-i386.cfg | 2 +-
etc/mock/epel-5-ppc.cfg | 2 +-
etc/mock/epel-5-x86_64.cfg | 2 +-
etc/mock/epel-6-i386.cfg | 2 +-
etc/mock/epel-6-ppc64.cfg | 2 +-
etc/mock/epel-6-x86_64.cfg | 2 +-
etc/mock/fedora-13-i386.cfg | 2 +-
etc/mock/fedora-13-ppc.cfg | 2 +-
etc/mock/fedora-13-ppc64.cfg | 2 +-
etc/mock/fedora-13-s390x.cfg | 2 +-
etc/mock/fedora-13-sparc.cfg | 2 +-
etc/mock/fedora-13-sparc64.cfg | 2 +-
etc/mock/fedora-13-x86_64.cfg | 2 +-
etc/mock/fedora-14-i386.cfg | 2 +-
etc/mock/fedora-14-ppc.cfg | 2 +-
etc/mock/fedora-14-ppc64.cfg | 2 +-
etc/mock/fedora-14-s390x.cfg | 2 +-
etc/mock/fedora-14-sparc.cfg | 2 +-
etc/mock/fedora-14-sparc64.cfg | 2 +-
etc/mock/fedora-14-x86_64.cfg | 2 +-
etc/mock/fedora-15-arm.cfg | 2 +-
etc/mock/fedora-15-i386.cfg | 2 +-
etc/mock/fedora-15-ppc.cfg | 2 +-
etc/mock/fedora-15-ppc64.cfg | 2 +-
etc/mock/fedora-15-s390.cfg | 2 +-
etc/mock/fedora-15-s390x.cfg | 2 +-
etc/mock/fedora-15-sparc.cfg | 2 +-
etc/mock/fedora-15-sparc64.cfg | 2 +-
etc/mock/fedora-15-x86_64.cfg | 2 +-
etc/mock/fedora-rawhide-arm.cfg | 2 +-
etc/mock/fedora-rawhide-i386.cfg | 2 +-
etc/mock/fedora-rawhide-ppc.cfg | 2 +-
etc/mock/fedora-rawhide-ppc64.cfg | 2 +-
etc/mock/fedora-rawhide-s390x.cfg | 2 +-
etc/mock/fedora-rawhide-sparc.cfg | 2 +-
etc/mock/fedora-rawhide-sparc64.cfg | 2 +-
etc/mock/fedora-rawhide-x86_64.cfg | 2 +-
etc/mock/site-defaults.cfg | 2 +-
py/mock.py | 2 +-
py/mock/backend.py | 50 +++++++++++++++++++----------------
py/mock/plugins/ccache.py | 2 +-
44 files changed, 70 insertions(+), 66 deletions(-)
diff --git a/etc/mock/epel-4-i386.cfg b/etc/mock/epel-4-i386.cfg
index 1e61efc..1ca05ec 100644
--- a/etc/mock/epel-4-i386.cfg
+++ b/etc/mock/epel-4-i386.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'epel-4-i386'
config_opts['target_arch'] = 'i386'
config_opts['legal_host_arches'] = ('i386', 'i586', 'i686', 'x86_64')
-config_opts['chroot_setup_cmd'] = 'install buildsys-build'
+config_opts['chroot_setup_cmd'] = ('install', 'buildsys-build')
config_opts['dist'] = 'el4' # only useful for --resultdir variable subst
# ccache not available on epel4
diff --git a/etc/mock/epel-4-ppc.cfg b/etc/mock/epel-4-ppc.cfg
index 6c91921..899d26e 100644
--- a/etc/mock/epel-4-ppc.cfg
+++ b/etc/mock/epel-4-ppc.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'epel-4-ppc'
config_opts['target_arch'] = 'ppc'
config_opts['legal_host_arches'] = ('ppc', 'ppc64')
-config_opts['chroot_setup_cmd'] = 'install buildsys-build'
+config_opts['chroot_setup_cmd'] = ('install', 'buildsys-build')
config_opts['dist'] = 'el4' # only useful for --resultdir variable subst
# ccache not available on epel4
diff --git a/etc/mock/epel-4-x86_64.cfg b/etc/mock/epel-4-x86_64.cfg
index 69d93bd..b8de1ec 100644
--- a/etc/mock/epel-4-x86_64.cfg
+++ b/etc/mock/epel-4-x86_64.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'epel-4-x86_64'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
-config_opts['chroot_setup_cmd'] = 'install buildsys-build'
+config_opts['chroot_setup_cmd'] = ('install', 'buildsys-build')
config_opts['dist'] = 'el4' # only useful for --resultdir variable subst
# ccache not available on epel4
diff --git a/etc/mock/epel-5-i386.cfg b/etc/mock/epel-5-i386.cfg
index c6fdb29..fca6068 100644
--- a/etc/mock/epel-5-i386.cfg
+++ b/etc/mock/epel-5-i386.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'epel-5-i386'
config_opts['target_arch'] = 'i386'
config_opts['legal_host_arches'] = ('i386', 'i586', 'i686', 'x86_64')
-config_opts['chroot_setup_cmd'] = 'install buildsys-build'
+config_opts['chroot_setup_cmd'] = ('install', 'buildsys-build')
config_opts['dist'] = 'el5' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/epel-5-ppc.cfg b/etc/mock/epel-5-ppc.cfg
index 02f31dd..5f40c52 100644
--- a/etc/mock/epel-5-ppc.cfg
+++ b/etc/mock/epel-5-ppc.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'epel-5-ppc'
config_opts['target_arch'] = 'ppc'
config_opts['legal_host_arches'] = ('ppc', 'ppc64')
-config_opts['chroot_setup_cmd'] = 'install buildsys-build'
+config_opts['chroot_setup_cmd'] = ('install', 'buildsys-build')
config_opts['dist'] = 'el5' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/epel-5-x86_64.cfg b/etc/mock/epel-5-x86_64.cfg
index d803f26..6440c19 100644
--- a/etc/mock/epel-5-x86_64.cfg
+++ b/etc/mock/epel-5-x86_64.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'epel-5-x86_64'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
-config_opts['chroot_setup_cmd'] = 'install buildsys-build'
+config_opts['chroot_setup_cmd'] = ('install', 'buildsys-build')
config_opts['dist'] = 'el5' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/epel-6-i386.cfg b/etc/mock/epel-6-i386.cfg
index 7cd7419..a78eea1 100644
--- a/etc/mock/epel-6-i386.cfg
+++ b/etc/mock/epel-6-i386.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'epel-6-i386'
config_opts['target_arch'] = 'i686'
config_opts['legal_host_arches'] = ('i386', 'i586', 'i686', 'x86_64')
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'el6' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/epel-6-ppc64.cfg b/etc/mock/epel-6-ppc64.cfg
index 0cdd7cf..6959684 100644
--- a/etc/mock/epel-6-ppc64.cfg
+++ b/etc/mock/epel-6-ppc64.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'epel-6-ppc64'
config_opts['target_arch'] = 'ppc64'
config_opts['legal_host_arches'] = ('ppc64',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'el6' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/epel-6-x86_64.cfg b/etc/mock/epel-6-x86_64.cfg
index b4bdabb..e85d434 100644
--- a/etc/mock/epel-6-x86_64.cfg
+++ b/etc/mock/epel-6-x86_64.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'epel-6-x86_64'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'el6' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-13-i386.cfg b/etc/mock/fedora-13-i386.cfg
index 7d5231c..d360077 100644
--- a/etc/mock/fedora-13-i386.cfg
+++ b/etc/mock/fedora-13-i386.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-13-i386'
config_opts['target_arch'] = 'i686'
config_opts['legal_host_arches'] = ('i386', 'i586', 'i686', 'x86_64')
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc13' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-13-ppc.cfg b/etc/mock/fedora-13-ppc.cfg
index db14448..0ef91b1 100644
--- a/etc/mock/fedora-13-ppc.cfg
+++ b/etc/mock/fedora-13-ppc.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-13-ppc'
config_opts['target_arch'] = 'ppc'
config_opts['legal_host_arches'] = ('ppc', 'ppc64')
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc13' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-13-ppc64.cfg b/etc/mock/fedora-13-ppc64.cfg
index c627ed5..9fb0fc2 100644
--- a/etc/mock/fedora-13-ppc64.cfg
+++ b/etc/mock/fedora-13-ppc64.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-13-ppc64'
config_opts['target_arch'] = 'ppc64'
config_opts['legal_host_arches'] = ('ppc64',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc13' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-13-s390x.cfg b/etc/mock/fedora-13-s390x.cfg
index eb998c0..5122697 100644
--- a/etc/mock/fedora-13-s390x.cfg
+++ b/etc/mock/fedora-13-s390x.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-13-s390x'
config_opts['target_arch'] = 's390x'
config_opts['legal_host_arches'] = ('s390x',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc13' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-13-sparc.cfg b/etc/mock/fedora-13-sparc.cfg
index 0d23cc2..8dd6d92 100644
--- a/etc/mock/fedora-13-sparc.cfg
+++ b/etc/mock/fedora-13-sparc.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-13-sparc'
config_opts['target_arch'] = 'sparcv9'
config_opts['legal_host_arches'] = ('sparc', 'sparcv9', 'sparc64')
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc13' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-13-sparc64.cfg b/etc/mock/fedora-13-sparc64.cfg
index 9591f64..392aa4a 100644
--- a/etc/mock/fedora-13-sparc64.cfg
+++ b/etc/mock/fedora-13-sparc64.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-13-sparc64'
config_opts['target_arch'] = 'sparc64'
config_opts['legal_host_arches'] = ('sparc64',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc13' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-13-x86_64.cfg b/etc/mock/fedora-13-x86_64.cfg
index 9cf892d..2cf0b8c 100644
--- a/etc/mock/fedora-13-x86_64.cfg
+++ b/etc/mock/fedora-13-x86_64.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-13-x86_64'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc13' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-14-i386.cfg b/etc/mock/fedora-14-i386.cfg
index 52b4c7c..f2dc50f 100644
--- a/etc/mock/fedora-14-i386.cfg
+++ b/etc/mock/fedora-14-i386.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-14-i386'
config_opts['target_arch'] = 'i686'
config_opts['legal_host_arches'] = ('i386', 'i586', 'i686', 'x86_64')
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc14' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-14-ppc.cfg b/etc/mock/fedora-14-ppc.cfg
index aec4928..56b1827 100644
--- a/etc/mock/fedora-14-ppc.cfg
+++ b/etc/mock/fedora-14-ppc.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-14-ppc'
config_opts['target_arch'] = 'ppc'
config_opts['legal_host_arches'] = ('ppc', 'ppc64')
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc14' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-14-ppc64.cfg b/etc/mock/fedora-14-ppc64.cfg
index bbcd630..3b05a9b 100644
--- a/etc/mock/fedora-14-ppc64.cfg
+++ b/etc/mock/fedora-14-ppc64.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-14-ppc64'
config_opts['target_arch'] = 'ppc64'
config_opts['legal_host_arches'] = ('ppc64',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc14' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-14-s390x.cfg b/etc/mock/fedora-14-s390x.cfg
index a176e38..68496e0 100644
--- a/etc/mock/fedora-14-s390x.cfg
+++ b/etc/mock/fedora-14-s390x.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-14-s390x'
config_opts['target_arch'] = 's390x'
config_opts['legal_host_arches'] = ('s390x',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc14' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-14-sparc.cfg b/etc/mock/fedora-14-sparc.cfg
index a266e56..9823b1b 100644
--- a/etc/mock/fedora-14-sparc.cfg
+++ b/etc/mock/fedora-14-sparc.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-14-sparc'
config_opts['target_arch'] = 'sparcv9'
config_opts['legal_host_arches'] = ('sparc', 'sparcv9', 'sparc64')
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc14' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-14-sparc64.cfg b/etc/mock/fedora-14-sparc64.cfg
index 4987484..29d1c3a 100644
--- a/etc/mock/fedora-14-sparc64.cfg
+++ b/etc/mock/fedora-14-sparc64.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-14-sparc64'
config_opts['target_arch'] = 'sparc64'
config_opts['legal_host_arches'] = ('sparc64',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc14' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-14-x86_64.cfg b/etc/mock/fedora-14-x86_64.cfg
index 30ea313..3a951c9 100644
--- a/etc/mock/fedora-14-x86_64.cfg
+++ b/etc/mock/fedora-14-x86_64.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-14-x86_64'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc14' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-15-arm.cfg b/etc/mock/fedora-15-arm.cfg
index 186715e..509dcbe 100644
--- a/etc/mock/fedora-15-arm.cfg
+++ b/etc/mock/fedora-15-arm.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-15-arm'
config_opts['target_arch'] = 'armv5tel'
config_opts['legal_host_arches'] = ('armv5tel', 'armv6l', 'armv7l')
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc15' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-15-i386.cfg b/etc/mock/fedora-15-i386.cfg
index 04684aa..b31ee07 100644
--- a/etc/mock/fedora-15-i386.cfg
+++ b/etc/mock/fedora-15-i386.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-15-i386'
config_opts['target_arch'] = 'i686'
config_opts['legal_host_arches'] = ('i386', 'i586', 'i686', 'x86_64')
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc15' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-15-ppc.cfg b/etc/mock/fedora-15-ppc.cfg
index 511c50d..c141abe 100644
--- a/etc/mock/fedora-15-ppc.cfg
+++ b/etc/mock/fedora-15-ppc.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-15-ppc'
config_opts['target_arch'] = 'ppc'
config_opts['legal_host_arches'] = ('ppc', 'ppc64')
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc15' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-15-ppc64.cfg b/etc/mock/fedora-15-ppc64.cfg
index d39a48e..9ce7599 100644
--- a/etc/mock/fedora-15-ppc64.cfg
+++ b/etc/mock/fedora-15-ppc64.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-15-ppc64'
config_opts['target_arch'] = 'ppc64'
config_opts['legal_host_arches'] = ('ppc64',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc15' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-15-s390.cfg b/etc/mock/fedora-15-s390.cfg
index cfb8957..32d1672 100644
--- a/etc/mock/fedora-15-s390.cfg
+++ b/etc/mock/fedora-15-s390.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-15-s390'
config_opts['target_arch'] = 's390'
config_opts['legal_host_arches'] = ('s390x', 's390')
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc15' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-15-s390x.cfg b/etc/mock/fedora-15-s390x.cfg
index 7547116..c6c3e09 100644
--- a/etc/mock/fedora-15-s390x.cfg
+++ b/etc/mock/fedora-15-s390x.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-15-s390x'
config_opts['target_arch'] = 's390x'
config_opts['legal_host_arches'] = ('s390x',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc15' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-15-sparc.cfg b/etc/mock/fedora-15-sparc.cfg
index a8046f8..8758488 100644
--- a/etc/mock/fedora-15-sparc.cfg
+++ b/etc/mock/fedora-15-sparc.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-15-sparc'
config_opts['target_arch'] = 'sparcv9'
config_opts['legal_host_arches'] = ('sparc', 'sparcv9', 'sparc64')
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc15' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-15-sparc64.cfg b/etc/mock/fedora-15-sparc64.cfg
index 6dea995..c8cffc0 100644
--- a/etc/mock/fedora-15-sparc64.cfg
+++ b/etc/mock/fedora-15-sparc64.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-15-sparc64'
config_opts['target_arch'] = 'sparc64'
config_opts['legal_host_arches'] = ('sparc64',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc15' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-15-x86_64.cfg b/etc/mock/fedora-15-x86_64.cfg
index 058ad43..0024e46 100644
--- a/etc/mock/fedora-15-x86_64.cfg
+++ b/etc/mock/fedora-15-x86_64.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-15-x86_64'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'fc15' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-rawhide-arm.cfg b/etc/mock/fedora-rawhide-arm.cfg
index ecbdb87..65fa37e 100644
--- a/etc/mock/fedora-rawhide-arm.cfg
+++ b/etc/mock/fedora-rawhide-arm.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-rawhide-arm'
config_opts['target_arch'] = 'armv5tel'
config_opts['legal_host_arches'] = ('armv5tel', 'armv6l', 'armv7l')
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'rawhide' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-rawhide-i386.cfg b/etc/mock/fedora-rawhide-i386.cfg
index f86a514..8ddb0f1 100644
--- a/etc/mock/fedora-rawhide-i386.cfg
+++ b/etc/mock/fedora-rawhide-i386.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-rawhide-i386'
config_opts['target_arch'] = 'i686'
config_opts['legal_host_arches'] = ('i386', 'i586', 'i686', 'x86_64')
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'rawhide' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-rawhide-ppc.cfg b/etc/mock/fedora-rawhide-ppc.cfg
index 51e12a8..f349e4e 100644
--- a/etc/mock/fedora-rawhide-ppc.cfg
+++ b/etc/mock/fedora-rawhide-ppc.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-rawhide-ppc'
config_opts['target_arch'] = 'ppc'
config_opts['legal_host_arches'] = ('ppc', 'ppc64')
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'rawhide' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-rawhide-ppc64.cfg b/etc/mock/fedora-rawhide-ppc64.cfg
index a9cd48d..68db2b3 100644
--- a/etc/mock/fedora-rawhide-ppc64.cfg
+++ b/etc/mock/fedora-rawhide-ppc64.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-rawhide-ppc64'
config_opts['target_arch'] = 'ppc64'
config_opts['legal_host_arches'] = ('ppc64',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'rawhide' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-rawhide-s390x.cfg b/etc/mock/fedora-rawhide-s390x.cfg
index 2fabb86..91039af 100644
--- a/etc/mock/fedora-rawhide-s390x.cfg
+++ b/etc/mock/fedora-rawhide-s390x.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-rawhide-s390x'
config_opts['target_arch'] = 's390x'
config_opts['legal_host_arches'] = ('s390x',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'rawhide' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-rawhide-sparc.cfg b/etc/mock/fedora-rawhide-sparc.cfg
index c1b8637..7493f77 100644
--- a/etc/mock/fedora-rawhide-sparc.cfg
+++ b/etc/mock/fedora-rawhide-sparc.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-rawhide-sparc'
config_opts['target_arch'] = 'sparcv9'
config_opts['legal_host_arches'] = ('sparc', 'sparcv9', 'sparc64')
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'rawhide' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-rawhide-sparc64.cfg b/etc/mock/fedora-rawhide-sparc64.cfg
index 776b60a..a52eb4e 100644
--- a/etc/mock/fedora-rawhide-sparc64.cfg
+++ b/etc/mock/fedora-rawhide-sparc64.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-rawhide-sparc64'
config_opts['target_arch'] = 'sparc64'
config_opts['legal_host_arches'] = ('sparc64',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'rawhide' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/fedora-rawhide-x86_64.cfg b/etc/mock/fedora-rawhide-x86_64.cfg
index c564092..575907e 100644
--- a/etc/mock/fedora-rawhide-x86_64.cfg
+++ b/etc/mock/fedora-rawhide-x86_64.cfg
@@ -1,7 +1,7 @@
config_opts['root'] = 'fedora-rawhide-x86_64'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
-config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['dist'] = 'rawhide' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
diff --git a/etc/mock/site-defaults.cfg b/etc/mock/site-defaults.cfg
index 81df367..8bf62b3 100644
--- a/etc/mock/site-defaults.cfg
+++ b/etc/mock/site-defaults.cfg
@@ -112,7 +112,7 @@
# config_opts['yum.conf'] = ''
#
# CAN SET, defaults usually work ok:
-# config_opts['chroot_setup_cmd'] = 'install buildsys-build'
+# config_opts['chroot_setup_cmd'] = ('install', 'buildsys-build')
# config_opts['log_config_file'] = 'logging.ini'
# config_opts['more_buildreqs']['srpm_name-version-release'] = 'dependencies'
# config_opts['macros']['Add_your_macro_name_here'] = "add macro value here"
diff --git a/py/mock.py b/py/mock.py
index 57bb173..8168612 100755
--- a/py/mock.py
+++ b/py/mock.py
@@ -325,7 +325,7 @@ def setup_default_config_opts(config_opts, unprivUid):
config_opts['useradd'] = \
'/usr/sbin/useradd -o -m -u %(uid)s -g %(gid)s -d %(home)s -n %(user)s'
config_opts['use_host_resolv'] = True
- config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
+ config_opts['chroot_setup_cmd'] = ('groupinstall', 'buildsys-build')
config_opts['target_arch'] = 'i386'
config_opts['rpmbuild_arch'] = None # <-- None means set automatically from target_arch
config_opts['yum.conf'] = ''
diff --git a/py/mock/backend.py b/py/mock/backend.py
index 3308a42..bf55955 100644
--- a/py/mock/backend.py
+++ b/py/mock/backend.py
@@ -36,7 +36,7 @@ class Root(object):
self._hooks = {}
self.chrootWasCached = False
self.chrootWasCleaned = False
- self.preExistingDeps = ""
+ self.preExistingDeps = []
self.logging_initialized = False
self.buildrootLock = None
self.version = config['version']
@@ -69,6 +69,9 @@ class Root(object):
self.use_host_resolv = config['use_host_resolv']
self.chroot_file_contents = config['files']
self.chroot_setup_cmd = config['chroot_setup_cmd']
+ if isinstance(self.chroot_setup_cmd, basestring):
+ # deprecated, supported for now for old config files and e.g. koji
+ self.chroot_setup_cmd = self.chroot_setup_cmd.split()
self.yum_path = '/usr/bin/yum'
self.yum_builddep_path = '/usr/bin/yum-builddep'
self.macros = config['macros']
@@ -354,7 +357,7 @@ class Root(object):
if self.chrootWasCleaned:
self.yum_init_install_output = self._yum(self.chroot_setup_cmd, returnOutput=1)
if self.chrootWasCached:
- self._yum('update', returnOutput=1)
+ self._yum(('update',), returnOutput=1)
# create user
self._makeBuildUser()
@@ -463,7 +466,7 @@ class Root(object):
self.root_log.info("installing package(s): %s" % " ".join(rpms))
try:
self._mountall()
- output = self._yum('install %s' % ' '.join(rpms), returnOutput=1)
+ output = self._yum(['install'] + list(rpms), returnOutput=1)
self.root_log.info(output)
finally:
self._umountall()
@@ -473,7 +476,7 @@ class Root(object):
"""use yum to update the chroot"""
try:
self._mountall()
- self._yum('update', returnOutput=1)
+ self._yum(('update',), returnOutput=1)
finally:
self._umountall()
@@ -490,20 +493,21 @@ class Root(object):
raise mock.exception.BuildError, "Bad build req: %s. Exiting." % line
# first, install pre-existing deps and configured additional ones
- arg_string = self.preExistingDeps
+ deps = list(self.preExistingDeps)
for hdr in mock.util.yieldSrpmHeaders(srpms, plainRpmOk=1):
# get text buildreqs
- for item in mock.util.getAddtlReqs(hdr, self.more_buildreqs):
- arg_string = arg_string + " '%s'" % item
- if arg_string != "":
+ deps.extend(mock.util.getAddtlReqs(hdr, self.more_buildreqs))
+ if deps:
# everything exists, okay, install them all.
- # pass build reqs (as strings) to installer
- _yum_and_check('resolvedep %s' % arg_string)
+ # pass build reqs to installer
+ args = ['resolvedep'] + deps
+ _yum_and_check(args)
# nothing made us exit, so we continue
- self._yum('install %s' % arg_string, returnOutput=1)
+ args[0] = 'install'
+ self._yum(args, returnOutput=1)
# install actual build dependencies
- _yum_and_check("builddep '%s'" % "' '".join(srpms))
+ _yum_and_check(['builddep'] + list(srpms))
finally:
self.uidManager.restorePrivs()
@@ -732,22 +736,22 @@ class Root(object):
decorate(traceLog())
def _yum(self, cmd, returnOutput=0):
"""use yum to install packages/package groups into the chroot"""
- # mock-helper yum --installroot=rootdir cmd
- cmdOpts = ""
- if not self.online:
- cmdOpts = "-C"
+ yumcmd = [self.yum_path]
+ cmdix = 0
# invoke yum-builddep instead of yum if cmd is builddep
- exepath = self.yum_path
- if cmd.startswith("builddep "):
- exepath = self.yum_builddep_path
- cmd = cmd[len("builddep "):]
- cmd = '%s --installroot %s %s %s' % (exepath, self.makeChrootPath(), cmdOpts, cmd)
- self.root_log.debug(cmd)
+ if cmd[0] == "builddep":
+ yumcmd[0] = self.yum_builddep_path
+ cmdix = 1
+ yumcmd.extend(('--installroot', self.makeChrootPath()))
+ if not self.online:
+ yumcmd.append("-C")
+ yumcmd.extend(cmd[cmdix:])
+ self.root_log.debug(yumcmd)
output = ""
try:
self._callHooks("preyum")
- output = mock.util.do(cmd, returnOutput=returnOutput, shell=True)
+ output = mock.util.do(yumcmd, returnOutput=returnOutput)
self._callHooks("postyum")
return output
except mock.exception.Error, e:
diff --git a/py/mock/plugins/ccache.py b/py/mock/plugins/ccache.py
index 04768f2..661eb5a 100644
--- a/py/mock/plugins/ccache.py
+++ b/py/mock/plugins/ccache.py
@@ -26,7 +26,7 @@ class CCache(object):
self.ccache_opts = conf
self.ccachePath = self.ccache_opts['dir'] % self.ccache_opts
rootObj.ccacheObj = self
- rootObj.preExistingDeps = rootObj.preExistingDeps + " ccache "
+ rootObj.preExistingDeps.append("ccache")
rootObj.addHook("prebuild", self._ccacheBuildHook)
rootObj.addHook("preinit", self._ccachePreInitHook)
rootObj.umountCmds.append('umount -n %s' % rootObj.makeChrootPath("/tmp/ccache"))
--
1.7.4
12 years, 9 months