commit: 237fccb622b92f4feabf89ac9ecb5c2a1b9b5e5c
Author: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Mon Dec 30 23:57:28 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Fri Apr 18 16:50:36 2014 +0000
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/catalyst.git;a=commit;h=237fccb6
catalyst/targets/generic_stage_target.py: mount /dev/shm on linux
Add shm targets defaults. Anthony G. Basile <blueness <AT> gentoo.org>
Some build systems require /dev/shm to be mounted, like python's
build system. We make sure that on Linux systems, /dev/shm is
mounted in the stage chroots. See bug #496328.
Douglas Freed <dwfreed <AT> mtu.edu> :
Mount /dev/shm in the chroot with the right options
Bind mounting /dev/shm into the chroot isn't a good idea, as there may
be collisions and result in weird side effects. Instead, we can just
mount a new tmpfs there, with the right options to ensure security.
(Forward ported to 3.0 branch from 2.X Brian Dolbec)
---
catalyst/base/stagebase.py | 6 +++++-
catalyst/defaults.py | 2 ++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/catalyst/base/stagebase.py b/catalyst/base/stagebase.py
index 31b5779..2cce2f7 100644
--- a/catalyst/base/stagebase.py
+++ b/catalyst/base/stagebase.py
@@ -209,6 +209,7 @@ class StageBase(TargetBase, ClearBase, GenBase):
#self.mountmap["portdir"] = None
if os.uname()[0] == "Linux":
self.mounts.append("devpts")
+ self.mounts.append("shm")
self.set_mounts()
@@ -930,7 +931,7 @@ class StageBase(TargetBase, ClearBase, GenBase):
ensure_dirs(target, mode=0755)
if not os.path.exists(self.mountmap[x]):
- if not self.mountmap[x] == "tmpfs":
+ if self.mountmap[x] not in ["tmpfs", "shmfs"]:
ensure_dirs(self.mountmap[x], mode=0755)
src=self.mountmap[x]
@@ -951,6 +952,9 @@ class StageBase(TargetBase, ClearBase, GenBase):
self.settings["var_tmpfs_portage"] + "G " + \
src + " " + target
retval=os.system(cmd)
+ elif src == "shmfs":
+ cmd = "mount -t tmpfs -o
noexec,nosuid,nodev shm " + target
+ retval=os.system(cmd)
else:
cmd = "mount --bind " + src + " " +
target
#print "bind(); cmd =", cmd
diff --git a/catalyst/defaults.py b/catalyst/defaults.py
index 27bcff4..1f86c1d 100644
--- a/catalyst/defaults.py
+++ b/catalyst/defaults.py
@@ -92,6 +92,7 @@ TARGET_MOUNT_DEFAULTS = {
"port_tmpdir": "/var/tmp/portage",
"port_logdir": "/var/log/portage",
"proc": "/proc",
+ "shm": "/dev/shm",
}
SOURCE_MOUNT_DEFAULTS = {
@@ -101,6 +102,7 @@ SOURCE_MOUNT_DEFAULTS = {
"portdir": None, # set from settings options
"port_tmpdir": "tmpfs",
"proc": "/proc",
+ "shm": "shmfs",
}
# legend: key: message