public inbox for gentoo-catalyst@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-catalyst] Feature Request: mount tmpfs on /var/tmp/portage
@ 2009-08-03  7:15 Tom Stellard
  2009-08-03 15:14 ` Peter Stuge
  2009-08-04  4:51 ` Andrew Gaffney
  0 siblings, 2 replies; 4+ messages in thread
From: Tom Stellard @ 2009-08-03  7:15 UTC (permalink / raw
  To: gentoo-catalyst

[-- Attachment #1: Type: text/plain, Size: 403 bytes --]

I would like to have the ability to mount a tmpfs on /var/tmp/portage
when I am building a stage.  I have attached a patch that adds this
functionality to catalyst.  This patch adds a new option "tmpfs" and
the config value "tmpfs_opts".  tempfs_opts can be used to set the size
of the tmpfs.  It uses the same syntax as options passed to mount -o.
For example tempfs_opts="size=1G,nr_inodes=10".

-Tom

[-- Attachment #2: tmpfs.diff --]
[-- Type: text/plain, Size: 3271 bytes --]

diff --git a/catalyst b/catalyst
index 82b4dc9..71a842e 100755
--- a/catalyst
+++ b/catalyst
@@ -61,7 +61,7 @@ def parse_config(myconfig):
 		"sharedir":"/usr/share/catalyst","distdir":"/usr/portage/distfiles",\
 		"portdir":"/usr/portage","options":"",\
 		"snapshot_cache":"/var/tmp/catalyst/snapshot_cache",\
-		"hash_function":"crc32"}
+		"hash_function":"crc32","tmpfs_opts":""}
 		
 	# first, try the one passed (presumably from the cmdline)
 	if myconfig:
@@ -152,6 +152,10 @@ def parse_config(myconfig):
 		print "Use of metadata_overlay module for portage enabled."
 		conf_values["METADATA_OVERLAY"]="1"
 
+	if "tmpfs" in conf_values["options"].split():
+		print "Use of tmpfs enabled."
+		conf_values["TMPFS"]="1"
+
 #	if "tarball" in string.split(conf_values["options"]):
 #		print "Tarball creation enabled."
 #		conf_values["TARBALL"]="1"
diff --git a/files/catalyst.conf b/files/catalyst.conf
index b4e2385..855ce23 100644
--- a/files/catalyst.conf
+++ b/files/catalyst.conf
@@ -58,6 +58,9 @@ hash_function="crc32"
 # snapcache = 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, though.
+# tmpfs = Mount tmpfs on /var/tmp/portage to speed up builds.  You can set the
+# 	size of the tmpfs by using tmpfs_opts.  If tmpfs_opts is not set the
+# 	tmpfs will be the default size.  EX: tmpfs_opts="size=1G,nr_inodes=10k"
 #
 # (These options can be used together)
 options="autoresume kerncache metadata_overlay pkgcache seedcache snapcache"
diff --git a/modules/generic_stage_target.py b/modules/generic_stage_target.py
index 92ec381..47d9eed 100644
--- a/modules/generic_stage_target.py
+++ b/modules/generic_stage_target.py
@@ -19,7 +19,7 @@ class generic_stage_target(generic_target):
 		self.valid_values.extend(["version_stamp","target","subarch",\
 			"rel_type","profile","snapshot","source_subpath","portage_confdir",\
 			"cflags","cxxflags","ldflags","cbuild","hostuse","portage_overlay",\
-			"distcc_hosts","makeopts","pkgcache_path","kerncache_path"])
+			"distcc_hosts","makeopts","pkgcache_path","kerncache_path","tmpfs_opts"])
 
 		self.set_valid_build_kernel_vars(addlargs)
 		generic_target.__init__(self,myspec,addlargs)
@@ -229,6 +229,10 @@ class generic_stage_target(generic_target):
 			self.mountmap["/var/cache/icecream"]="/var/cache/icecream"
 			self.env["PATH"]="/usr/lib/icecc/bin:"+self.env["PATH"]
 
+		if self.settings.has_key("TMPFS"):
+			self.mounts.append("/var/tmp/portage")
+			self.mountmap["/var/tmp/portage"]="tmpfs"
+
 	def override_cbuild(self):
 		if self.makeconf.has_key("CBUILD"):
 			self.settings["CBUILD"]=self.makeconf["CBUILD"]
@@ -882,6 +886,13 @@ class generic_stage_target(generic_target):
 				else:
 					retval=os.system("mount_nullfs "+src+" "+\
 						self.settings["chroot_path"]+x)
+			elif src == "tmpfs":
+				tmpfs_o=""
+				if self.settings.has_key("tmpfs_opts"):
+					tmpfs_o="-o "+self.settings["tmpfs_opts"]
+				retval=os.system("mount " + tmpfs_o +\
+					" -t tmpfs catalyst_tmpfs "+\
+					self.settings["chroot_path"]+x)
 			else:
 				retval=os.system("mount --bind "+src+" "+\
 					self.settings["chroot_path"]+x)

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-08-04  5:13 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-03  7:15 [gentoo-catalyst] Feature Request: mount tmpfs on /var/tmp/portage Tom Stellard
2009-08-03 15:14 ` Peter Stuge
2009-08-04  4:51 ` Andrew Gaffney
2009-08-04  5:13   ` Tom Stellard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox