]> git.ipfire.org Git - pakfire.git/commitdiff
Add support for ccache.
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 13 Feb 2011 15:04:48 +0000 (16:04 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 13 Feb 2011 15:04:48 +0000 (16:04 +0100)
pakfire/builder.py
pakfire/constants.py

index 97cfe302db89d6e010434b646be8b1dd41334095..fe4663c34998b64136a29c6bb35e7449a749cf3b 100644 (file)
@@ -30,6 +30,7 @@ class Builder(object):
 
                self.settings = {
                        "enable_loop_devices" : True,
+                       "enable_ccache"   : True,
                        "enable_icecream" : True,
                }
                self.settings.update(settings)
@@ -132,6 +133,11 @@ class Builder(object):
                #for p in self.pakfire.repos.get_all():
                #       ds.add_requires(p.name)
 
+               # If we have ccache enabled, we need to extract it
+               # to the build chroot.
+               if self.settings.get("enable_ccache"):
+                       ds.add_requires("ccache")
+
                # If we have icecream enabled, we need to extract it
                # to the build chroot.
                if self.settings.get("enable_icecream"):
@@ -208,6 +214,14 @@ class Builder(object):
                        "tmp",
                        "usr/src",
                ]
+
+               # Create cache dir if ccache is enabled.
+               if self.settings.get("enable_ccache"):
+                       dirs.append("var/cache/ccache")
+
+                       if not os.path.exists(CCACHE_CACHE_DIR):
+                               os.makedirs(CCACHE_CACHE_DIR)
+
                for dir in dirs:
                        dir = self.chrootPath(dir)
                        if not os.path.exists(dir):
@@ -317,6 +331,9 @@ class Builder(object):
                        ("mount -n -t tmpfs pakfire_chroot_shmfs", "dev/shm"),
                ])
 
+               if self.settings.get("enable_ccache"):
+                       ret.append(("mount -n --bind %s" % CCACHE_CACHE_DIR, "var/cache/ccache"))
+
                return ret
 
        @staticmethod
index 7562d640444d84f8000f8be5ea9f99619f59a148..87b70773ac3b2e0550832ba30942163a441d2b61 100644 (file)
@@ -8,6 +8,8 @@ CONFIG_DIR = os.path.join(SYSCONFDIR, "pakfire.repos.d")
 CONFIG_FILE = os.path.join(SYSCONFDIR, "pakfire.conf")
 
 CACHE_DIR = "/var/cache/pakfire"
+CCACHE_CACHE_DIR = os.path.join(CACHE_DIR, "ccache")
+
 LOCAL_BUILD_REPO_PATH = "/var/lib/pakfire/local"
 
 PACKAGES_DB = "var/lib/pakfire/packages.db"