poky/scripts/lib/wic/utils/fs_related.py
Ed Bartosh ea07f0325c wic: use native parted
Used exec_native_cmd instead of find_binary_path to run parted.
Got rid of find_binary_path as it's not used anywhere else.

There are several tools wic is trying to find not only in sysroot,
but also in host root. Parted is a special as on some distros it's
installed in /usr/sbin, which is not in the user's PATH. This makes
wic to fail with error "External command 'parted' not found, exiting."

[YOCTO #7122]

(From OE-Core rev: 76adf38c0d8e0faf04a5ecb3fcfbe831c85bb81f)

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-04-14 12:38:49 +01:00

88 lines
2.3 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 import msger
from wic.utils import runner
from wic.utils.errors import *
from wic.utils.oe.misc import *
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