commit: eccdfdfea08de3581b4d6864f560384b97088e50
Author: Alexander Berntsen <bernalex <AT> gentoo <DOT> org>
AuthorDate: Fri Feb 13 17:40:23 2015 +0000
Commit: Alexander Berntsen <bernalex <AT> gentoo <DOT> org>
CommitDate: Fri Feb 13 18:43:36 2015 +0000
URL:
http://sources.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=eccdfdfe
Add early check for broken /dev/s (bug 538980)
Signed-off-by: Alexander Berntsen <bernalex <AT> gentoo.org>
Suggested-by: Zac Medico <zmedico <AT> gentoo.org>
ACKed-by: Zac Medico <zmedico <AT> gentoo.org>
---
pym/_emerge/main.py | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py
index 5d5e936..f1a9e18 100644
--- a/pym/_emerge/main.py
+++ b/pym/_emerge/main.py
@@ -1100,6 +1100,20 @@ def emerge_main(args=None):
# loading to allow new repos with non-existent directories
portage._sync_mode = True
+ # Verify that /dev/null exists and is a device file as a cheap early
+ # filter for obviously broken /dev/s.
+ try:
+ if os.stat(os.devnull).st_rdev == 0:
+ writemsg_level("Failed to validate a sane '/dev'.\n"
+ "'/dev/null' is not a device file.\n",
+ level=logging.ERROR, noiselevel=-1)
+ return 1
+ except OSError:
+ writemsg_level("Failed to validate a sane '/dev'.\n"
+ "'/dev/null' does not exist.\n",
+ level=logging.ERROR, noiselevel=-1)
+ return 1
+
# Portage needs to ensure a sane umask for the files it creates.
os.umask(0o22)
emerge_config = load_emerge_config(