diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2017-12-06 00:45:30 -0800 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2017-12-06 09:49:12 -0800 |
commit | 2ae03a9d8aec8a536656ac45f1426a1f1921e8ae (patch) | |
tree | 68100d3703cd6f2edd7cba55df34b64ed33c6340 | |
parent | kmerge.sh: ensure bc is installed when kerncache is active (diff) | |
download | catalyst-2ae03a9d8aec8a536656ac45f1426a1f1921e8ae.tar.gz catalyst-2ae03a9d8aec8a536656ac45f1426a1f1921e8ae.tar.bz2 catalyst-2ae03a9d8aec8a536656ac45f1426a1f1921e8ae.zip |
Allow unversioned cache directoriesunversioned-cachedir
The generation of cachedirs up to this point includes the version_stamp
from the specfile.
If the version is being automatically incremented (eg daily builds),
then it generates unique cache directories for each build, and doesn't
reuse old cache.
Example versioned cache directories:
/release/buildroot/amd64-dev/packages/default/stage1-amd64-20171203
/release/buildroot/amd64-dev/packages/default/stage1-amd64-20171204
/release/buildroot/amd64-dev/packages/default/stage1-amd64-20171206
This should be using a common cache directory:
/release/buildroot/amd64-dev/packages/default/stage1-amd64
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
-rw-r--r-- | catalyst/base/stagebase.py | 23 | ||||
-rw-r--r-- | catalyst/main.py | 8 | ||||
-rw-r--r-- | doc/catalyst-config.5.txt | 9 |
3 files changed, 35 insertions, 5 deletions
diff --git a/catalyst/base/stagebase.py b/catalyst/base/stagebase.py index 7a41973c..a6a32f5a 100644 --- a/catalyst/base/stagebase.py +++ b/catalyst/base/stagebase.py @@ -318,9 +318,15 @@ class StageBase(TargetBase, ClearBase, GenBase): self.settings["target_profile"] = self.settings["profile"] def set_target_subpath(self): - self.settings["target_subpath"] = self.settings["rel_type"] + "/" + \ - self.settings["target"] + "-" + self.settings["subarch"] + "-" + \ - self.settings["version_stamp"] + '/' + common = self.settings["rel_type"] + "/" + \ + self.settings["target"] + "-" + self.settings["subarch"] + self.settings["target_subpath"] = \ + common + \ + "-" + self.settings["version_stamp"] + \ + "/" + self.settings["target_subpath_unversioned"] = \ + common + \ + "/" def set_source_subpath(self): if not isinstance(self.settings['source_subpath'], str): @@ -333,19 +339,26 @@ class StageBase(TargetBase, ClearBase, GenBase): if not isinstance(self.settings['pkgcache_path'], str): self.settings["pkgcache_path"] = \ normpath(self.settings["pkgcache_path"]) - else: + elif "versioned_cache" in self.settings["options"]: self.settings["pkgcache_path"] = \ normpath(self.settings["storedir"] + "/packages/" + \ self.settings["target_subpath"] + "/") + else: + self.settings["pkgcache_path"] = \ + normpath(self.settings["storedir"] + "/packages/" + \ + self.settings["target_subpath_unversioned"] + "/") def set_kerncache_path(self): if "kerncache_path" in self.settings: if not isinstance(self.settings['kerncache_path'], str): self.settings["kerncache_path"] = \ normpath(self.settings["kerncache_path"]) - else: + elif "versioned_cache" in self.settings["options"]: self.settings["kerncache_path"] = normpath(self.settings["storedir"] + \ "/kerncache/" + self.settings["target_subpath"]) + else: + self.settings["kerncache_path"] = normpath(self.settings["storedir"] + \ + "/kerncache/" + self.settings["target_subpath_unversioned"]) def set_target_path(self): self.settings["target_path"] = normpath(self.settings["storedir"] + \ diff --git a/catalyst/main.py b/catalyst/main.py index b8ae662d..3a428d3a 100644 --- a/catalyst/main.py +++ b/catalyst/main.py @@ -190,6 +190,14 @@ $ catalyst -f stage1-specfile.spec""" group.add_argument('-T', '--purgetmponly', default=False, action='store_true', help='clear tmp dirs and autoresume flags and exit') + group.add_argument('--versioned-cachedir', + dest='versioned_cachedir', action='store_true', + help='use stage version on cache directory name') + group.add_argument('--unversioned-cachedir', + dest='versioned_cachedir', action='store_false', + help='do not use stage version on cache directory name') + group.set_defaults(versioned_cachedir=False) + group = parser.add_argument_group('Target/config file management') group.add_argument('-F', '--fetchonly', diff --git a/doc/catalyst-config.5.txt b/doc/catalyst-config.5.txt index 5c5ad293..957ab0e6 100644 --- a/doc/catalyst-config.5.txt +++ b/doc/catalyst-config.5.txt @@ -145,6 +145,10 @@ Cache the snapshot so that it can be bind-mounted into the chroot. WARNING: moving parts of the portage tree from within fsscript *will* break your cache. The cache is unlinked before any empty or rm processing. + +versioned_cache:: +Name the cache directories (packagecache, kerncache) based on the version of a +spec file. -- Repository settings @@ -240,9 +244,14 @@ sub-slots, you may experience errors like this due to untracked ABI missmatches in binary packages. Packages generated by catalyst builds are currently namespaced: +If versioned_cache is set: --------------------------------- .../packages/<rel_type>/<target>-<subarch>-<version_stamp>/Packages --------------------------------- +Otherwise: +--------------------------------- +.../packages/<rel_type>/<target>-<subarch>/Packages +--------------------------------- so running into these out-of-date packages is unlikely. You may run into problems if: |