Package: mock
Version: 1.3.2-2
Severity: normal

Dear Maintainer,

The mock package ships two commands:
* mock
* mockchain

The mockchain command is not working because it tries to call
/usr/bin/createrepo_c which is not available in any Debian package.

(line 59 and 61 of /usr/bin/mockchain)

Trace:

sudo mockchain --localrepo /tmp -r epel-7-x86_64 -m --rebuild /tmp/nothing.rpm

starting logfile: None
results dir: /var/tmp/mock-chain-kakwa-10886-26_7_a7f/results/epel-7-x86_64
config dir: /var/tmp/mock-chain-kakwa-10886-26_7_a7f/configs/epel-7-x86_64
Traceback (most recent call last):
  File "/usr/bin/mockchain", line 414, in <module>
    sys.exit(main(sys.argv))
  File "/usr/bin/mockchain", line 314, in main
    err = createrepo(opts.local_repo_dir)[1]
  File "/usr/bin/mockchain", line 63, in createrepo
    comm, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  File "/usr/lib/python3.5/subprocess.py", line 676, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.5/subprocess.py", line 1289, in _execute_child
    raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/createrepo_c'

Test I've done:

Replacing /usr/bin/createrepo_c by /usr/bin/createrepo (python implementation) 
seems to
work fine, I've been enable to build rpms, including rpms depending on
other rpms present in the local repo.

Diff:

diff --git a/mock/py/mockchain.py b/mock/py/mockchain.py
index e783bd0..74746cd 100755
--- a/mock/py/mockchain.py
+++ b/mock/py/mockchain.py
@@ -56,9 +56,9 @@ mockconfig_path = '/etc/mock'

 def createrepo(path):
     if os.path.exists(path + '/repodata/repomd.xml'):
-        comm = ['/usr/bin/createrepo_c', '--update', path]
+        comm = ['/usr/bin/createrepo', '--update', path]
     else:
-        comm = ['/usr/bin/createrepo_c', path]
+        comm = ['/usr/bin/createrepo', path]
     cmd = subprocess.Popen(
         comm, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
     out, err = cmd.communicate()


I see two possibilities:

* packaging createrepo_c 
(https://github.com/rpm-software-management/createrepo_c) in Debian.
  I've done a quick test, it builds ok and all the necessary dependencies are 
already available.
* patching mockchain to use createrepo.

In both cases, I think the corresponding createrepo(_c) package should
be added as a dependency of the mock package.

-- System Information:
Debian Release: buster/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.12.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages mock depends on:
ii  python       2.7.13-2
ii  python3      3.5.3-3
ii  python3-rpm  4.12.0.2+dfsg1-2+b1
ii  python3-six  1.10.0-4
ii  usermode     1.109-1+b2
ii  yum          3.4.3-3
ii  yum-utils    1.1.31-2

mock recommends no packages.

Versions of packages mock suggests:
pn  pigz  <none>

-- Configuration Files:
/etc/mock/epel-6-x86_64.cfg changed [not included]
/etc/mock/fedora-25-x86_64.cfg changed [not included]

-- no debconf information

Reply via email to