diff options
-rwxr-xr-x | linaro-android-media-create | 8 | ||||
-rwxr-xr-x | linaro-media-create | 7 | ||||
-rw-r--r-- | linaro_image_tools/__version__.py | 2 | ||||
-rw-r--r-- | linaro_image_tools/media_create/android_boards.py | 14 | ||||
-rw-r--r-- | linaro_image_tools/media_create/boards.py | 5 | ||||
-rw-r--r-- | linaro_image_tools/media_create/tests/test_android_boards.py | 8 | ||||
-rw-r--r-- | linaro_image_tools/media_create/tests/test_media_create.py | 38 | ||||
-rw-r--r-- | linaro_image_tools/utils.py | 43 |
8 files changed, 91 insertions, 34 deletions
diff --git a/linaro-android-media-create b/linaro-android-media-create index 62ed8da..b31e126 100755 --- a/linaro-android-media-create +++ b/linaro-android-media-create @@ -44,7 +44,9 @@ from linaro_image_tools.utils import ( additional_android_option_checks, andorid_hwpack_in_boot_tarball, ensure_command, - get_logger + get_logger, + disable_automount, + enable_automount, ) @@ -117,6 +119,10 @@ if __name__ == '__main__': ensure_required_commands(args) + # Do this by default, disable automount options and re-enable them at exit. + disable_automount() + atexit.register(enable_automount) + media = Media(args.device) if media.is_block_device: if not confirm_device_selection_and_ensure_it_is_ready(args.device): diff --git a/linaro-media-create b/linaro-media-create index 2871614..8feb4ed 100755 --- a/linaro-media-create +++ b/linaro-media-create @@ -57,6 +57,9 @@ from linaro_image_tools.utils import ( path_in_tarfile_exists, prep_media_path, get_logger, + UnableToFindPackageProvidingCommand, + disable_automount, + enable_automount, ) # Just define the global variables @@ -136,6 +139,10 @@ if __name__ == '__main__': logger.error(e.value) sys.exit(1) + # Do this by default, disable automount options and re-enable them at exit. + disable_automount() + atexit.register(enable_automount) + board_config = get_board_config(args.dev) board_config.set_metadata(args.hwpacks, args.bootloader, args.dev) board_config.add_boot_args(args.extra_boot_args) diff --git a/linaro_image_tools/__version__.py b/linaro_image_tools/__version__.py index 47ab9d6..e84b6ec 100644 --- a/linaro_image_tools/__version__.py +++ b/linaro_image_tools/__version__.py @@ -1 +1 @@ -__version__ = "2013.02.1" +__version__ = "2013.03.1" diff --git a/linaro_image_tools/media_create/android_boards.py b/linaro_image_tools/media_create/android_boards.py index 52a92b4..578e0b1 100644 --- a/linaro_image_tools/media_create/android_boards.py +++ b/linaro_image_tools/media_create/android_boards.py @@ -508,9 +508,9 @@ class AndroidArndaleConfig(AndroidSamsungConfig, ArndaleConfig): self.initrd_addr = '0x41000000' self.dtb_addr = '0x41f00000' self.dtb_name = 'exynos5250-arndale.dtb' - self._android_specific_args = ('init=/init ' - 'androidboot.console=ttySAC2 console=ttySAC2 ' - 'initrd=%s' % self.initrd_addr) + self._android_specific_args = ( + 'init=/init androidboot.console=ttySAC2 console=ttySAC2 initrd=%s' + % self.initrd_addr) self._extra_serial_options = 'ttySAC2,115200n8' self._extra_boot_args_options = 'rootdelay=3' @@ -533,8 +533,8 @@ class AndroidArndaleConfig(AndroidSamsungConfig, ArndaleConfig): if d_img_data is not None: assert self.dtb_addr is not None, ( "Need a dtb_addr when passing d_img_data") - boot_script += (("%(fatload_command)s mmc %(mmc_option)s " - "%(dtb_addr)s ")) % replacements + boot_script += ("%(fatload_command)s mmc %(mmc_option)s " + "%(dtb_addr)s " % replacements) boot_script += "%s; " % d_img_data boot_script += (("bootm %(kernel_addr)s")) % replacements if i_img_data is not None: @@ -559,8 +559,8 @@ class AndroidArndaleConfig(AndroidSamsungConfig, ArndaleConfig): name = boot_bin['name'] file_path = os.path.join(chroot_dir, boot_partition, name) if not os.path.exists(file_path): - raise BoardException("File '%s' does not exists. Cannot " - "proceed." % name) + raise BoardException( + "File '%s' does not exists. Cannot proceed." % name) _dd(file_path, boot_device_or_file, seek=boot_bin['seek']) diff --git a/linaro_image_tools/media_create/boards.py b/linaro_image_tools/media_create/boards.py index 9361118..e0d14ba 100644 --- a/linaro_image_tools/media_create/boards.py +++ b/linaro_image_tools/media_create/boards.py @@ -1098,6 +1098,7 @@ class SnowballEmmcConfig(SnowballSdConfig): # puts the MBR, so the boot loader skips that address. self.supports_writing_to_mmc = False self.snowball_startup_files_config = 'startfiles.cfg' + self.mmc_option = '0:2' def get_v1_sfdisk_cmd(self, should_align_boot_part=None): """Return the sfdisk command to partition the media. @@ -1604,8 +1605,8 @@ class OrigenQuadConfig(SamsungConfig): name = boot_bin['name'] file_path = os.path.join(chroot_dir, boot_partition, name) if not os.path.exists(file_path): - raise BoardException("File '%s' does not exists. Cannot " - "proceed." % name) + raise BoardException( + "File '%s' does not exists. Cannot proceed." % name) _dd(file_path, boot_device_or_file, seek=boot_bin['seek']) diff --git a/linaro_image_tools/media_create/tests/test_android_boards.py b/linaro_image_tools/media_create/tests/test_android_boards.py index 758aa94..c1b5bb4 100644 --- a/linaro_image_tools/media_create/tests/test_android_boards.py +++ b/linaro_image_tools/media_create/tests/test_android_boards.py @@ -489,10 +489,10 @@ class TestAndroidBoardsHwpack(TestCaseWithFixtures): 'init=/init androidboot.console=ttySAC2 ' 'console=ttySAC2 initrd=0x41000000', 'bootcmd': 'fatload mmc 0:1 0x40007000 uImage; fatload mmc 0:1 ' - '0x41000000 uInitrd; fatload mmc 0:1 0x41f00000 ' - 'exynos5250-arndale.dtb; bootm 0x40007000 0x41000000 ' - '0x41f00000', + '0x41000000 uInitrd; fatload mmc 0:1 0x41f00000 ' + 'exynos5250-arndale.dtb; bootm 0x40007000 0x41000000 ' + '0x41f00000', 'fdt_high': '0xffffffff', 'initrd_high': '0xffffffff', - } + } self.assertBootEnv(expected, board='arndale') 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 8709e1b..48f9740 100644 --- a/linaro_image_tools/media_create/tests/test_media_create.py +++ b/linaro_image_tools/media_create/tests/test_media_create.py @@ -1525,8 +1525,8 @@ class TestPopulateRawPartition(TestCaseWithFixtures): def test_origen_quad_raw(self): # Need to mock this since files do not exist here, and # an Exception is raised. - self.useFixture(MockSomethingFixture(os.path, 'exists', - lambda exists: True)) + self.useFixture( + MockSomethingFixture(os.path, 'exists', lambda exists: True)) self.populate_raw_partition(boards.OrigenQuadConfig()) expected = ['_dd', '_dd', '_dd', '_dd', '_dd'] @@ -1534,8 +1534,8 @@ class TestPopulateRawPartition(TestCaseWithFixtures): def test_origen_quad_raises(self): board_conf = boards.OrigenQuadConfig() - self.assertRaises(boards.BoardException, - board_conf.populate_raw_partition, '', '') + self.assertRaises( + boards.BoardException, board_conf.populate_raw_partition, '', '') def test_arndale_raw(self): self.useFixture(MockSomethingFixture(os.path, 'getsize', @@ -1659,20 +1659,20 @@ class TestPopulateRawPartitionAndroid(TestCaseWithFixtures): fixture = MockCmdRunnerPopenFixture() self.useFixture(fixture) expected_commands = [ - ('sudo -E dd if=/dev/zero of= bs=512 conv=notrunc count=32 ' - 'seek=1601'), - ('sudo -E dd if=boot/origen_quad.bl1.bin of= bs=512 ' - 'conv=notrunc seek=1'), - ('sudo -E dd if=boot/origen_quad-spl.bin.signed of= bs=512 ' - 'conv=notrunc seek=31'), - ('sudo -E dd if=boot/u-boot.bin of= bs=512 conv=notrunc ' - 'seek=63'), - ('sudo -E dd if=boot/exynos4x12.tzsw.signed.img of= bs=512 ' - 'conv=notrunc seek=761') - ] + ('sudo -E dd if=/dev/zero of= bs=512 conv=notrunc count=32 ' + 'seek=1601'), + ('sudo -E dd if=boot/origen_quad.bl1.bin of= bs=512 ' + 'conv=notrunc seek=1'), + ('sudo -E dd if=boot/origen_quad-spl.bin.signed of= bs=512 ' + 'conv=notrunc seek=31'), + ('sudo -E dd if=boot/u-boot.bin of= bs=512 conv=notrunc ' + 'seek=63'), + ('sudo -E dd if=boot/exynos4x12.tzsw.signed.img of= bs=512 ' + 'conv=notrunc seek=761') + ] - self.useFixture(MockSomethingFixture(os.path, 'exists', - lambda exists: True)) + self.useFixture( + MockSomethingFixture(os.path, 'exists', lambda exists: True)) self.populate_raw_partition(android_boards.AndroidOrigenQuadConfig()) expected = [] @@ -2127,8 +2127,8 @@ class TestGetBootCmd(TestCase): 'mem_modem=32M@96M mem=44M@128M pmem=22M@172M ' 'mem=30M@194M mem_mali=32M@224M pmem_hwb=54M@256M ' 'hwmem=48M@302M mem=152M@360M', - 'bootcmd': 'fatload mmc 1:1 0x00100000 uImage; ' - 'fatload mmc 1:1 0x08000000 uInitrd; ' + 'bootcmd': 'fatload mmc 0:2 0x00100000 uImage; ' + 'fatload mmc 0:2 0x08000000 uInitrd; ' 'bootm 0x00100000 0x08000000', 'fdt_high': '0xffffffff', 'initrd_high': '0xffffffff'} diff --git a/linaro_image_tools/utils.py b/linaro_image_tools/utils.py index 277c072..b247297 100644 --- a/linaro_image_tools/utils.py +++ b/linaro_image_tools/utils.py @@ -35,6 +35,10 @@ BOOT_DIR_IN_TARBALL = "boot" # The name of the hwpack file found in the boot tarball. HWPACK_NAME = "config" +# dconf keys to disable automount options. +AUTOMOUNT_DCONF_KEY = '/org/gnome/desktop/media-handling/automount' +AUTOMOUNT_OPEN_DCONF_KEYU = '/org/gnome/desktop/media-handling/automount-open' + # try_import was copied from python-testtools 0.9.12 and was originally # licensed under a MIT-style license but relicensed under the GPL in Linaro @@ -406,3 +410,42 @@ def get_logger(name=DEFAULT_LOGGER_NAME, debug=False): logger.addHandler(ch) return logger + + +def disable_automount(): + """Disables the desktop environment automount option. + + This will work only under GNOME with dconf installed. + """ + logger = logging.getLogger(DEFAULT_LOGGER_NAME) + + if has_command('dconf'): + logger.info("Disabling desktop environment automount option.") + try: + cmd_runner.run( + ['dconf', 'write', AUTOMOUNT_DCONF_KEY, 'false'], + stdout=open('/dev/null', 'w')).wait() + cmd_runner.run( + ['dconf', 'write', AUTOMOUNT_OPEN_DCONF_KEYU, 'false'], + stdout=open('/dev/null', 'w')).wait() + except cmd_runner.SubcommandNonZeroReturnValue: + logger.error("Error disabling desktop environemnt automount.") + + +def enable_automount(): + """Re-enables back the desktop environment automount option. + + This will work only under GNOME with dconf installed. It should be run + as an atexit function. + """ + logger = logging.getLogger(DEFAULT_LOGGER_NAME) + if has_command('dconf'): + try: + cmd_runner.run( + ['dconf', 'write', AUTOMOUNT_DCONF_KEY, 'true'], + stdout=open('/dev/null', 'w')).wait() + cmd_runner.run( + ['dconf', 'write', AUTOMOUNT_OPEN_DCONF_KEYU, 'true'], + stdout=open('/dev/null', 'w')).wait() + except cmd_runner.SubcommandNonZeroReturnValue: + logger.error("Error enabling back desktop environemnt automount.") |