From: Michael Tremer Date: Sun, 13 Feb 2011 15:04:48 +0000 (+0100) Subject: Add support for ccache. X-Git-Tag: 0.9.3~176 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=33f4679b5f306733de734fe6c2e1080bb6ce1966;p=pakfire.git Add support for ccache. --- diff --git a/pakfire/builder.py b/pakfire/builder.py index 97cfe302d..fe4663c34 100644 --- a/pakfire/builder.py +++ b/pakfire/builder.py @@ -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 diff --git a/pakfire/constants.py b/pakfire/constants.py index 7562d6404..87b70773a 100644 --- a/pakfire/constants.py +++ b/pakfire/constants.py @@ -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"