Bug 1386544

Summary: bind mounting a dir to homedir wipes the dir (outside chroot) when cleaning
Product: [Fedora] Fedora Reporter: Michael Simacek <msimacek>
Component: mockAssignee: Michael Simacek <msimacek>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 24CC: jdisnard, mebrown, msimacek, msuchy, praiskup, williams
Target Milestone: ---Keywords: Reopened
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: mock-1.3.3-1.fc25 mock-1.3.3-1.fc24 mock-1.3.3-1.el7 mock-1.3.3-1.el6 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-01-06 07:51:59 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:
Embargoed:

Description Michael Simacek 2016-10-19 08:47:57 UTC
Description of problem:
If I mount a directory into chroot using bind_mount plugin that has the target within build users home (/builddir by default), the directory contents get wiped when the buildroot is cleaned.

Version-Release number of selected component (if applicable):
mock-1.2.21-1.fc24.noarch

How reproducible:
always

Steps to Reproduce:
1. mkdir ~/somedir; touch ~/somedir/foo
2. Add the following to mock config:
config_opts['plugin_conf']['bind_mount_enable'] = True
import os
config_opts['plugin_conf']['bind_mount_opts']['dirs'].append((os.path.expanduser('~/.somedir'), '/builddir/somedir' ))
3. build something in given chroot

Actual results:
~/somedir/foo gets deleted

Expected results:
~/somedir contents are left untouched

Additional info:
I think mock should either move the mount execution to later phase (after cleaning) or use an equivalent of rm --one-filesystem when deleting.

Comment 1 Miroslav Suchý 2016-10-20 14:18:35 UTC
This is expected behaviour. See relevant part from siteconfig.cfg

# The build user's homedir is partially cleaned up even when --no-clean is
# specified in order to prevent garbage from previous builds from altering
# successive builds. Mock can be configured to exclude certain files/directories
# from this. Default is SOURCES directory to support nosrc rpms. Paths are
# relative to build user's homedir
# config_opts['exclude_from_homedir_cleanup'] = ['build/SOURCES']

I will rather add this information to wiki documenting mount plugin.

Comment 2 Miroslav Suchý 2016-10-20 14:27:40 UTC
Done. See https://github.com/rpm-software-management/mock/wiki/Plugin-Mount

Comment 3 Michael Simacek 2016-10-21 08:30:36 UTC
(In reply to Miroslav Suchý from comment #1)
> This is expected behaviour. See relevant part from siteconfig.cfg
> 
> # The build user's homedir is partially cleaned up even when --no-clean is
> # specified in order to prevent garbage from previous builds from altering
> # successive builds. Mock can be configured to exclude certain
> files/directories
> # from this. Default is SOURCES directory to support nosrc rpms. Paths are
> # relative to build user's homedir
> # config_opts['exclude_from_homedir_cleanup'] = ['build/SOURCES']
> 
> I will rather add this information to wiki documenting mount plugin.

I don't think that documenting is enough. After all, I'm the one who was reimplementing the cleanup logic (and the exclusions) during GSoC, so I knew all that already. And yet, I deleted my data this way. Because when using something as simple as mount plugin, people don't expect it will rm -rf their data outside of mock chroot. If you don't want to work on this, I'll try to prepare a solution myself.

Comment 4 Miroslav Suchý 2016-10-24 07:37:27 UTC
> I'll try to prepare a solution myself.

Fair enough.

Comment 5 Michael Simacek 2016-10-24 09:51:21 UTC
Submitted: https://github.com/rpm-software-management/mock/pull/13

BTW, the exclusions didn't help with the problem, so you should revert the suggestion in the docs.

Comment 6 Fedora Update System 2017-01-01 12:25:21 UTC
mock-1.3.3-1.el6 has been submitted as an update to Fedora EPEL 6. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2017-1c15f1fddc

Comment 7 Fedora Update System 2017-01-01 12:25:52 UTC
mock-1.3.3-1.fc24 has been submitted as an update to Fedora 24. https://bodhi.fedoraproject.org/updates/FEDORA-2017-5947ef9fd1

Comment 8 Fedora Update System 2017-01-01 12:26:24 UTC
mock-1.3.3-1.fc25 has been submitted as an update to Fedora 25. https://bodhi.fedoraproject.org/updates/FEDORA-2017-77cb570c74

Comment 9 Fedora Update System 2017-01-01 12:26:57 UTC
mock-1.3.3-1.el7 has been submitted as an update to Fedora EPEL 7. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2017-3b5bb282f4

Comment 10 Fedora Update System 2017-01-02 00:46:30 UTC
mock-1.3.3-1.el6 has been pushed to the Fedora EPEL 6 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2017-1c15f1fddc

Comment 11 Fedora Update System 2017-01-02 00:48:14 UTC
mock-1.3.3-1.el7 has been pushed to the Fedora EPEL 7 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2017-3b5bb282f4

Comment 12 Fedora Update System 2017-01-02 01:19:58 UTC
mock-1.3.3-1.fc25 has been pushed to the Fedora 25 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2017-77cb570c74

Comment 13 Fedora Update System 2017-01-02 01:50:16 UTC
mock-1.3.3-1.fc24 has been pushed to the Fedora 24 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2017-5947ef9fd1

Comment 14 Fedora Update System 2017-01-06 07:51:59 UTC
mock-1.3.3-1.fc25 has been pushed to the Fedora 25 stable repository. If problems still persist, please make note of it in this bug report.

Comment 15 Fedora Update System 2017-01-09 01:20:50 UTC
mock-1.3.3-1.fc24 has been pushed to the Fedora 24 stable repository. If problems still persist, please make note of it in this bug report.

Comment 16 Fedora Update System 2017-01-16 17:21:54 UTC
mock-1.3.3-1.el7 has been pushed to the Fedora EPEL 7 stable repository. If problems still persist, please make note of it in this bug report.

Comment 17 Fedora Update System 2017-01-20 20:47:43 UTC
mock-1.3.3-1.el6 has been pushed to the Fedora EPEL 6 stable repository. If problems still persist, please make note of it in this bug report.