aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xlinaro-hwpack-install8
-rw-r--r--linaro_image_tools/hwpack/builder.py2
-rw-r--r--linaro_image_tools/media_create/boards.py1
-rw-r--r--linaro_image_tools/media_create/tests/test_media_create.py69
4 files changed, 66 insertions, 14 deletions
diff --git a/linaro-hwpack-install b/linaro-hwpack-install
index 494c130..6e885dc 100755
--- a/linaro-hwpack-install
+++ b/linaro-hwpack-install
@@ -53,12 +53,15 @@ die() {
exit 1
}
-usage_msg="Usage: $(basename $0) [--install-latest] [--force-yes] HWPACK_TARBALL"
+usage_msg="Usage: $(basename $0) [--install-latest] [--force-yes] --hwpack-version <version> --hwpack-arch <architecture> --hwpack-name <name> HWPACK_TARBALL"
if [ $# -eq 0 ]; then
die $usage_msg
fi
HWPACK_TARBALL_FOUND="no"
+HWPACK_VERSION=""
+HWPACK_ARCH=""
+HWPACK_NAME=""
while [ $# -gt 0 ]; do
case "$1" in
@@ -91,6 +94,9 @@ while [ $# -gt 0 ]; do
done
[ "$HWPACK_TARBALL_FOUND" = "no" ] && die $usage_msg
+[ "$HWPACK_VERSION" = "" ] && die $usage_msg
+[ "$HWPACK_ARCH" = "" ] && die $usage_msg
+[ "$HWPACK_NAME" = "" ] && die $usage_msg
# Try to acquire fd #9 (i.e. /var/lock/hwpack) for 2 seconds.
# Using 9 as the file descriptor because of https://launchpad.net/bugs/249620
diff --git a/linaro_image_tools/hwpack/builder.py b/linaro_image_tools/hwpack/builder.py
index a22de27..e023249 100644
--- a/linaro_image_tools/hwpack/builder.py
+++ b/linaro_image_tools/hwpack/builder.py
@@ -120,7 +120,7 @@ class HardwarePackBuilder(object):
def find_bootloader_packages(self, bootloaders_config):
"""Loop through the bootloaders dictionary searching for packages
that should be installed, based on known keywords.
-
+
:param bootloaders_config: The bootloaders dictionary to loop through.
:return A list of packages, without duplicates."""
boot_packages = []
diff --git a/linaro_image_tools/media_create/boards.py b/linaro_image_tools/media_create/boards.py
index dbc5565..63ffaf3 100644
--- a/linaro_image_tools/media_create/boards.py
+++ b/linaro_image_tools/media_create/boards.py
@@ -169,7 +169,6 @@ class HardwarepackHandler(object):
if re.search("=", lines[0]) and not re.search(":", lines[0]):
# Probably V2 hardware pack without [hwpack] on the first line
lines = ["[hwpack]\n"] + lines
- print "".join(lines)
parser = Config(StringIO("".join(lines)))
try:
new_data = parser.get_option(field)
diff --git a/linaro_image_tools/media_create/tests/test_media_create.py b/linaro_image_tools/media_create/tests/test_media_create.py
index dc9ac4e..cce7a06 100644
--- a/linaro_image_tools/media_create/tests/test_media_create.py
+++ b/linaro_image_tools/media_create/tests/test_media_create.py
@@ -3224,6 +3224,20 @@ class AtExitRegister(object):
class TestInstallHWPack(TestCaseWithFixtures):
+ def create_minimal_v3_hwpack(self, location, name, version, architecture):
+ metadata = "\n".join([
+ "name: " + name,
+ "version: " + version,
+ "architecture: " + architecture,
+ "format: 3.0"
+ ])
+ print metadata
+ tar_file = tarfile.open(location, mode='w:gz')
+ tarinfo = tarfile.TarInfo("metadata")
+ tarinfo.size = len(metadata)
+ tar_file.addfile(tarinfo, StringIO(metadata))
+ tar_file.close()
+
def mock_prepare_chroot(self, chroot_dir, tmp_dir):
def fake_prepare_chroot(chroot_dir, tmp_dir):
cmd_runner.run(['prepare_chroot %s %s' % (chroot_dir, tmp_dir)],
@@ -3277,12 +3291,23 @@ class TestInstallHWPack(TestCaseWithFixtures):
sys, 'stdout', open('/dev/null', 'w')))
fixture = self.useFixture(MockCmdRunnerPopenFixture())
chroot_dir = 'chroot_dir'
+ hwpack_dir = tempfile.mkdtemp()
+ hwpack_file_name = 'hwpack.tgz'
+ hwpack_tgz_location = os.path.join(hwpack_dir, hwpack_file_name)
+ hwpack_name = "foo"
+ hwpack_version = "4"
+ hwpack_architecture = "armel"
+ self.create_minimal_v3_hwpack(hwpack_tgz_location, hwpack_name,
+ hwpack_version, hwpack_architecture)
force_yes = False
- install_hwpack(chroot_dir, 'hwpack.tgz', force_yes)
+ install_hwpack(chroot_dir, hwpack_tgz_location, force_yes)
self.assertEquals(
- ['%s cp hwpack.tgz %s' % (sudo_args, chroot_dir),
- '%s %s %s linaro-hwpack-install /hwpack.tgz'
- % (sudo_args, chroot_args, chroot_dir)],
+ ['%s cp %s %s' % (sudo_args, hwpack_tgz_location, chroot_dir),
+ '%s %s %s linaro-hwpack-install --hwpack-version %s '
+ '--hwpack-arch %s --hwpack-name %s /%s'
+ % (sudo_args, chroot_args, chroot_dir,
+ hwpack_version, hwpack_architecture, hwpack_name,
+ hwpack_file_name)],
fixture.mock.commands_executed)
fixture.mock.calls = []
@@ -3302,9 +3327,23 @@ class TestInstallHWPack(TestCaseWithFixtures):
prefer_dir = preferred_tools_dir()
+ hwpack_dir = tempfile.mkdtemp()
+ hwpack_file_names = ['hwpack1.tgz', 'hwpack2.tgz']
+ hwpack_tgz_locations = []
+ hwpack_names = []
+ for hwpack_file_name in hwpack_file_names:
+ hwpack_tgz_location = os.path.join(hwpack_dir, hwpack_file_name)
+ hwpack_tgz_locations.append(hwpack_tgz_location)
+ hwpack_names.append(hwpack_file_name)
+ hwpack_version = "4"
+ hwpack_architecture = "armel"
+ self.create_minimal_v3_hwpack(
+ hwpack_tgz_location, hwpack_file_name, hwpack_version,
+ hwpack_architecture)
+
install_hwpacks(
- chroot_dir, tmp_dir, prefer_dir, force_yes, [], 'hwpack1.tgz',
- 'hwpack2.tgz')
+ chroot_dir, tmp_dir, prefer_dir, force_yes, [],
+ hwpack_tgz_locations[0], hwpack_tgz_locations[1])
linaro_hwpack_install = find_command(
'linaro-hwpack-install', prefer_dir=prefer_dir)
expected = [
@@ -3312,19 +3351,27 @@ class TestInstallHWPack(TestCaseWithFixtures):
'cp %(linaro_hwpack_install)s %(chroot_dir)s/usr/bin',
'mount proc %(chroot_dir)s/proc -t proc',
'chroot %(chroot_dir)s true',
- 'cp hwpack1.tgz %(chroot_dir)s',
+ 'cp %(hwpack1)s %(chroot_dir)s',
('%(chroot_args)s %(chroot_dir)s linaro-hwpack-install '
- '--force-yes /hwpack1.tgz'),
- 'cp hwpack2.tgz %(chroot_dir)s',
+ '--hwpack-version %(hp_version)s '
+ '--hwpack-arch %(hp_arch)s --hwpack-name %(hp_name1)s'
+ ' --force-yes /hwpack1.tgz'),
+ 'cp %(hwpack2)s %(chroot_dir)s',
('%(chroot_args)s %(chroot_dir)s linaro-hwpack-install '
- '--force-yes /hwpack2.tgz'),
+ '--hwpack-version %(hp_version)s '
+ '--hwpack-arch %(hp_arch)s --hwpack-name %(hp_name2)s'
+ ' --force-yes /hwpack2.tgz'),
'rm -f %(chroot_dir)s/hwpack2.tgz',
'rm -f %(chroot_dir)s/hwpack1.tgz',
'umount -v %(chroot_dir)s/proc',
'rm -f %(chroot_dir)s/usr/bin/linaro-hwpack-install']
keywords = dict(
chroot_dir=chroot_dir, tmp_dir=tmp_dir, chroot_args=chroot_args,
- linaro_hwpack_install=linaro_hwpack_install)
+ linaro_hwpack_install=linaro_hwpack_install,
+ hwpack1=hwpack_tgz_locations[0],
+ hwpack2=hwpack_tgz_locations[1],
+ hp_version=hwpack_version, hp_name1=hwpack_names[0],
+ hp_name2=hwpack_names[1], hp_arch=hwpack_architecture)
expected = [
"%s %s" % (sudo_args, line % keywords) for line in expected]
self.assertEquals(expected, fixture.mock.commands_executed)