summaryrefslogtreecommitdiffstats
path: root/mock.patch
blob: 09cbfd38f182e4ec4dad0ed40a6155c82fe6d099 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
diff -up mock-1.1.9/py/mock.py.orig mock-1.1.9/py/mock.py
--- mock-1.1.9/py/mock.py.orig	2011-02-18 22:18:59.000000000 +0100
+++ mock-1.1.9/py/mock.py	2011-04-21 10:22:04.599771253 +0200
@@ -253,8 +253,8 @@ def setup_default_config_opts(config_opt
 
     # cleanup_on_* only take effect for separate --resultdir
     # config_opts provides fine-grained control. cmdline only has big hammer
-    config_opts['cleanup_on_success'] = 1
-    config_opts['cleanup_on_failure'] = 1
+    config_opts['cleanup_on_success'] = True
+    config_opts['cleanup_on_failure'] = True
 
     config_opts['createrepo_on_rpms'] = False
     config_opts['createrepo_command'] = '/usr/bin/createrepo -d -q -x *.src.rpm' # default command
@@ -389,10 +389,6 @@ def set_config_opts_per_cmdline(config_o
                 % (i, config_opts['plugins']))
         config_opts['plugin_conf']['%s_enable' % i] = True
 
-    if options.cleanup_after and not options.resultdir:
-        raise mock.exception.BadCmdline(
-            "Must specify --resultdir when using --cleanup-after")
-
     if options.mode in ("rebuild",) and len(args) > 1 and not options.resultdir:
         raise mock.exception.BadCmdline(
             "Must specify --resultdir when building multiple RPMS.")
@@ -405,8 +401,9 @@ def set_config_opts_per_cmdline(config_o
         config_opts['cleanup_on_success'] = True
         config_opts['cleanup_on_failure'] = True
 
-    # cant cleanup unless separate resultdir
-    if not options.resultdir:
+    # cant cleanup unless resultdir is separate from the root dir
+    rootdir = os.path.join(config_opts['basedir'], config_opts['root'])
+    if mock.util.is_in_dir(config_opts['resultdir'] % config_opts, rootdir):
         config_opts['cleanup_on_success'] = False
         config_opts['cleanup_on_failure'] = False
 
diff -up mock-1.1.9/py/mock/util.py.orig mock-1.1.9/py/mock/util.py
--- mock-1.1.9/py/mock/util.py.orig	2011-02-18 22:18:20.000000000 +0100
+++ mock-1.1.9/py/mock/util.py	2011-04-21 10:21:59.005114748 +0200
@@ -340,3 +340,11 @@ class ChildPreExec(object):
         condChroot(self.chrootPath)
         condDropPrivs(self.uid, self.gid)
         condChdir(self.cwd)
+
+def is_in_dir(path, directory):
+    """Tests whether `path` is inside `directory`."""
+    # use realpath to expand symlinks
+    path = os.path.realpath(path)
+    directory = os.path.realpath(directory)
+
+    return os.path.commonprefix([path, directory]) == directory
--- mock-1.1.9/py/mock/plugins/ccache.py.orig	2011-04-30 11:23:04.167083378 +0200
+++ mock-1.1.9/py/mock/plugins/ccache.py	2011-04-30 11:26:58.778589188 +0200
@@ -50,6 +50,8 @@
     def _ccachePreInitHook(self):
         getLog().info("enabled ccache")
         mock.util.mkdirIfAbsent(self.rootObj.makeChrootPath('/tmp/ccache'))
+        self.rootObj.uidManager.dropPrivsTemp()
         mock.util.mkdirIfAbsent(self.ccachePath)
+        self.rootObj.uidManager.restorePrivs()
         os.environ['CCACHE_DIR'] = "/tmp/ccache"
         os.environ['CCACHE_UMASK'] = "002"