f2a0a98523
Here is what PEP8(Style Guide for Python Code) says about this: Wildcard imports (from <module> import *) should be avoided, as they make it unclear which names are present in the namespace, confusing both readers and many automated tools. (From OE-Core rev: 13416c1941f5dc8abcdb0073f2104a89eae2d6f1) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
85 lines
2.2 KiB
Python
85 lines
2.2 KiB
Python
#!/usr/bin/env python -tt
|
|
#
|
|
# Copyright (c) 2007, Red Hat, Inc.
|
|
# Copyright (c) 2009, 2010, 2011 Intel, Inc.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by the Free
|
|
# Software Foundation; version 2 of the License
|
|
#
|
|
# This program is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
# for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with this program; if not, write to the Free Software Foundation, Inc., 59
|
|
# Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
from __future__ import with_statement
|
|
import os
|
|
import errno
|
|
|
|
from wic.utils.oe.misc import exec_cmd
|
|
|
|
def makedirs(dirname):
|
|
"""A version of os.makedirs() that doesn't throw an
|
|
exception if the leaf directory already exists.
|
|
"""
|
|
try:
|
|
os.makedirs(dirname)
|
|
except OSError, err:
|
|
if err.errno != errno.EEXIST:
|
|
raise
|
|
|
|
class Disk:
|
|
"""
|
|
Generic base object for a disk.
|
|
"""
|
|
def __init__(self, size, device=None):
|
|
self._device = device
|
|
self._size = size
|
|
|
|
def create(self):
|
|
pass
|
|
|
|
def cleanup(self):
|
|
pass
|
|
|
|
def get_device(self):
|
|
return self._device
|
|
def set_device(self, path):
|
|
self._device = path
|
|
device = property(get_device, set_device)
|
|
|
|
def get_size(self):
|
|
return self._size
|
|
size = property(get_size)
|
|
|
|
|
|
class DiskImage(Disk):
|
|
"""
|
|
A Disk backed by a file.
|
|
"""
|
|
def __init__(self, image_file, size):
|
|
Disk.__init__(self, size)
|
|
self.image_file = image_file
|
|
|
|
def exists(self):
|
|
return os.path.exists(self.image_file)
|
|
|
|
def create(self):
|
|
if self.device is not None:
|
|
return
|
|
|
|
blocks = self.size / 1024
|
|
if self.size - blocks * 1024:
|
|
blocks += 1
|
|
|
|
# create disk image
|
|
dd_cmd = "dd if=/dev/zero of=%s bs=1024 seek=%d count=1" % \
|
|
(self.image_file, blocks)
|
|
exec_cmd(dd_cmd)
|
|
|
|
self.device = self.image_file
|