Bug 1396283

Summary: Mock SCM unable to build Rawhide packages which use new RPM features.
Product: [Community] Copr Reporter: Carlos O'Donell <codonell>
Component: backendAssignee: clime
Status: CLOSED CURRENTRELEASE QA Contact:
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: unspecifiedCC: clime, fweimer
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-11-03 05:19:00 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Carlos O'Donell 2016-11-17 21:20:56 UTC
Description of problem:

Builds fail with:
2. Task: 478271-master, importing the package: None
Build via Mock
/usr/bin/mock -r epel-7-x86_64 --uniqueext 478271-master --scm-enable --scm-option method=git --scm-option package=glibc --scm-option branch= --scm-option write_tar=True --scm-option spec=glibc.spec --scm-option git_get=git clone --depth 1 git://pkgs.fedoraproject.org/rpms/glibc.git glibc --buildsrpm --resultdir=/tmp/tmpWfiyrC
Exception raised during srpm import:
Traceback (most recent call last):
  File "/usr/share/copr/dist_git/dist_git_importer.py", line 526, in do_import
    provider.get_srpm()
  File "/usr/share/copr/dist_git/dist_git_importer.py", line 170, in get_srpm
    self.provider.get_srpm()
  File "/usr/share/copr/dist_git/dist_git_importer.py", line 321, in get_srpm
    raise SrpmBuilderException(error)
SrpmBuilderException: INFO: mock.py version 1.2.21 starting (python version = 3.4.3)...
Start: init plugins
INFO: selinux enabled
Finish: init plugins
Start: run
cat: /builddir/build/SOURCES/SUPPORTED: No such file or directory
cat: /builddir/build/SOURCES/SUPPORTED: No such file or directory
INFO: Start(/tmp/tmpctz2os43.mock-scm.glibc/glibc/glibc.spec)  Config(epel-7-x86_64)
Start: clean chroot
Finish: clean chroot
Start: chroot init
INFO: calling preinit hooks
INFO: enabled root cache
Start: unpacking root cache
Finish: unpacking root cache
INFO: enabled yum cache
Start: cleaning yum metadata
Finish: cleaning yum metadata
Mock Version: 1.2.21
INFO: Mock Version: 1.2.21
Start: yum update
Finish: yum update
Finish: chroot init
Start: buildsrpm
Start: rpmbuild -bs
Finish: rpmbuild -bs
Finish: buildsrpm
ERROR: Exception(/tmp/tmpctz2os43.mock-scm.glibc/glibc/glibc.spec) Config(epel-7-x86_64) 0 minutes 47 seconds
INFO: Results and/or logs in: /tmp/tmpWfiyrC
INFO: Cleaning up build root ('cleanup_on_failure=True')
Start: clean chroot
Finish: clean chroot
ERROR: Command failed. See logs for output.
 # bash --login -c /usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/glibc.spec

Sending back: 
{"task_id": "478271-master", "error": "srpm_build_error"}


Version-Release number of selected component (if applicable):


How reproducible:
The issue reproduces repeatably.

Steps to Reproduce:

mock -r epel-7-x86_64 --scm-enable --scm-option method=git --scm-option branch= --scm-option write_tar=True --scm-option spec=glibc.spec --scm-option package=glibc --scm-option git_get="git clone --depth 1 git://pkgs.fedoraproject.org/rpms/glibc.git glibc" --buildsrpm

Actual results:
Mock Version: 1.2.21
ENTER ['do'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/glibc.spec'], user='mockbuild'env={'SHELL': '/bin/bash', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'HOME': '/builddir', 'TERM': 'vt100', 'LANG': 'en_US.utf8', 'PS1': '<mock-chroot> \\s-\\v\\$ '}gid=135timeout=0chrootPath='/home/carlos/scratch/mock/epel-7-x86_64/root'printOutput=Trueuid=1000shell=Falselogger=<mockbuild.trace_decorator.getLog object at 0x7f1d80e2eda0>)
Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/glibc.spec'] with env {'SHELL': '/bin/bash', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'HOME': '/builddir', 'TERM': 'vt100', 'LANG': 'en_US.utf8', 'PS1': '<mock-chroot> \\s-\\v\\$ '} and shell False
error: line 340: Unknown tag: Recommends: libcrypt-nss(x86-64)
Building target platforms: x86_64
Building for target x86_64
Child return code was: 1
EXCEPTION: [Error()]
Traceback (most recent call last):
  File "/usr/lib/python3.4/site-packages/mockbuild/trace_decorator.py", line 88, in trace
    result = func(*args, **kw)
  File "/usr/lib/python3.4/site-packages/mockbuild/util.py", line 562, in do
    raise exception.Error("Command failed. See logs for output.\n # %s" % (command,), child.returncode)
mockbuild.exception.Error: Command failed. See logs for output.
 # bash --login -c /usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/glibc.spec


Expected results:
glibc rawhide builds just fine.

Additional info:
An EPEL7 mock chroot can't be used to build an SRPM that could have features it doesn't know about.

Any reason why we don't use a rawhide mock chroot to build the SRPM?

Comment 1 Carlos O'Donell 2016-11-18 00:07:30 UTC
In summary: I can't use Mock SCM to build glibc Fedora Rawhide pacakges in COPR.

I can however do the normal `copr build glibc-sysroot ./glibc-2.24.90-17.fc26.0.0.testfix.2.sysroot.src.rpm` using a pre-built SRPM.

Comment 2 Miroslav Suchý 2016-11-18 08:35:17 UTC
I can confirm this. It is needed to build SRPM in chroot for target for which it was submitted. There was some work done this way, but not finished. Right now we use epel7 for all mock-scm.

Comment 3 clime 2017-08-03 13:13:29 UTC
This should be fixed now as we use rpm of host system on copr-dist-git which runs on f25 currently. Can you confirm that, please?

Comment 4 clime 2017-11-03 05:19:00 UTC
Hey Carlos,

we now build SRPMs for (new) SCM source type (that should be used for this purpose) on the latest released Fedora systems so it should work for you. If you need some rpm feature that are only in rawhide, you can use, that's a bit of an issue right now but you could use `make srpm` method (in SCM tab) for that (or just build srpm locally and submit it to COPR by upload or URL method). Let me know if there are any further problems.