summaryrefslogtreecommitdiffstats
path: root/scripts/lib/wic
Commit message (Collapse)AuthorAgeFilesLines
* wic: fix calculation of partition numberEd Bartosh2017-08-291-1/+1
| | | | | | | | | | | | | | | | Total number of partitions should be taken into account when calculating real partition number for msdos partition table. The number can be different for the 4th partition: it can be 4 if there are 4 partitions in the table and 5 if there are more than 4 partitions in the table. In the latter case number 4 is occupied by extended partition. [YOCTO #11790] (From OE-Core rev: a1d18c00b8c9ce800a5147eaa71372083b8ae91e) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: partition: Run fsck on EXT file systemsDaniel Schultz2017-08-291-0/+3
| | | | | | | | | | | | | | Mkfs may create EXT file systems which can only be optimized by fsck and not by itself, e.g. directory optimization (in Pass 3A). To prevent those optimizations during runtime, it will be performed after the creation of an EXT file system. (From OE-Core rev: b8af7c10637c14b2c226fb7063b736755ee46802) Signed-off-by: Daniel Schultz <d.schultz@phytec.de> Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: plugins: rawcopy: Fixed wrong variable typeDaniel Schultz2017-05-181-1/+1
| | | | | | | | | | | | | | | | | | | Without the int() function this variable will be a string. This will led to a error in Filemap on line 545 due wrong types. > [...] > File > ".../poky/scripts/lib/wic/filemap.py", line 545, in sparse_copy > if start < skip < end: > TypeError: unorderable types: int() < str() (From OE-Core rev: 5b9bcfef9086c19a4577d36729b7b339f959d5c4) Signed-off-by: Daniel Schultz <d.schultz@phytec.de> Signed-off-by: Ross Burton <ross.burton@intel.com> (cherry picked from commit 46b5814bcdc0e7e3cb293e877e2aa949baf5fef8) Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: filemap: Fixed spared_copy skipDaniel Schultz2017-05-181-3/+3
| | | | | | | | | | | | | | This patches removes the empty space in front of the copied file which was skipped. Without this reduction it's not possible to place a partition with rawcopy and skip parameter on a desired alignment. (From OE-Core rev: e29deac69ed29226b68001db2fcfb3ed24c0568a) Signed-off-by: Daniel Schultz <d.schultz@phytec.de> Signed-off-by: Ross Burton <ross.burton@intel.com> (cherry picked from commit 5c024d71f9413b81ee1707dbc41f0721f8f27bdb) Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Create a logical partition only when it is really mandatoryAlessio Igor Bogani2017-01-111-3/+4
| | | | | | | | | | | | | | | Don't worth bother with logical partition on MBR partition type (aka msdos) if disk image generated by wic should have 4 partitions. (From OE-Core rev: 36a558fbdc96094626e7de1a3510691e30885368) (From OE-Core rev: 98a3e096eaa6cfdf1532c7c03c57222ae8cd6533) Signed-off-by: Alessio Igor Bogani <alessio.bogani@elettra.eu> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: fix function comment typosMaciej Borzecki2017-01-111-2/+2
| | | | | | | | | | | | | | | Fix typos in documentation of Image.add_partition() and Image.__format_disks(). (From OE-Core rev: f5bf7bf253224912c66bab89f48ff63a73e0d698) (From OE-Core rev: 44ce5b4bb0873d5a2dec25f2dc489a6ab8f7995e) Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: check that filesystem is specified for a rootfs partitionMaciej Borzecki2017-01-111-0/+4
| | | | | | | | | | | | | | | | | We explicitly check for --fstype if no source was provided for a partition. However, this was not the case for rootfs partitions. Make sure to raise an error if filesystem was left unspecified when preparing a rootfs partition image. (From OE-Core rev: b8c35fcad57810a87aa25ebeb533adf286eed565) (From OE-Core rev: dc4d1cfc4d6bd01432857448f66af5492cad7574) Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: make sure that partition size is always an integer in internal processingMaciej Borzecki2017-01-113-6/+12
| | | | | | | | | | | | | | | | The size field of Partition class is expected to be an integer and ought to be set inside prepare_*() method. Make sure that this is always the case. (From OE-Core rev: a37838f995ae642b0b8bdd47a605a264fb3bf200) (From OE-Core rev: 4e869343952aef8748b40e538c14ad8b94221910) Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* systemd-bootdisk.wks: use PARTUUIDEd Bartosh2017-01-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Root device name in systemd-bootdisk.wks is 'sda'. This can cause images, produced using this wks to refuse booting if real device name is not 'sda'. For example, when booting MinnowBoard MAX from MicroSD card the boot process stucks with this message on the boot console output: Waiting for root device /dev/sda2... This happens because real device name of MicroSD card on this device is mmcblk1. Used --use-uuid option for root partition. This should make wic to put partiion UUID instead of device name into kernel command line. [YOCTO #10485] (From OE-Core rev: 5b73d5f484cc844affe91ec19d881d42e187f30c) (From OE-Core rev: 71a365d57359dd8d9bfce66985975b1533e983d7) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* canned-wks: use GPT partition tableEd Bartosh2016-10-113-3/+3
| | | | | | | | | | | | | | | | | | | | | | | According to UEFI specification all EFI platforms must support GUID Partition Table(GPT) disk layout. Here is a list of advantages of using GPT disk layout over the legacy MBR partitioning: - Logical Block Addresses (LBAs) are 64 bits (rather than 32 bits). - Supports many partitions (rather than just four primary partitions). - Provides both a primary and backup partition table for redundancy. - Uses version number and size fields for future expansion. - Uses CRC32 fields for improved data integrity. - Defines a GUID for uniquely identifying each partition. - Uses a GUID and attributes to define partition content type. - Each partition contains a 36 character human readable name. Used GPT partitioning in all EFI kickstart files. Tested result images on NUC, MinnowBoard MAX and MinnowBoard Turbot. (From OE-Core rev: 66d4efeb0face5fc8a1755dcd2ed3a611997a04d) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* systemd-bootdisk.wks: update kernel command lineEd Bartosh2016-10-111-1/+1
| | | | | | | | | | | | | Used ttyS0 console. Removed usage of ttyPCH0 (FRI2 leftover) Decreased bootloader timeout to 5 seconds Removed 'vmalloc=256MB snd-hda-intel.enable_msi=0' as it's not needed for any of reference BSPs. (From OE-Core rev: ee16a283d695112236906338887c6eba109c9fb5) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* mkgummidisk.wks: update kernel command lineEd Bartosh2016-10-091-1/+1
| | | | | | | | | | | | | Used ttyS0 console. Removed usage of ttyPCH0 (FRI2 leftover) Decreased bootloader timeout to 5 seconds Removed 'vmalloc=256MB snd-hda-intel.enable_msi=0' as it's not needed for any of reference BSPs. (From OE-Core rev: 7b2443364a42c731bc9eefa6bb460262464e26b6) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* mkefidisk.wks: update kernel command lineEd Bartosh2016-10-071-1/+1
| | | | | | | | | | | | | Used ttyS0 console. Removed usage of ttyPCH0 (FRI2 leftover) Decreased bootloader timeout to 5 seconds Removed 'vmalloc=256MB snd-hda-intel.enable_msi=0' as it's not needed for any of reference BSPs. (From OE-Core rev: b46825a6ce5cecd24fed814bae48f9cfd0b97568) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* mkefidisk.wks: use MSDOS partition tableEd Bartosh2016-10-071-1/+1
| | | | | | | | | | Stopped using GPT partition table in mkefidisk.wks as it's not supported by all reference hardware. (From OE-Core rev: 07bb11b097a67ff89ae633fa1992db5494d75c0c) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: rewrite MBR disk identifierEd Bartosh2016-10-072-3/+11
| | | | | | | | | | | | | | | Disk identifier created by parted doesn't match the one we generated and used in bootloader config. We need to rewrite it to make our image bootable. Modified involved API and data structures to access previously generated disk identifiers after MBR is initialized. Written disk identifiers to MBR. (From OE-Core rev: 221d3bdd6e0ab8a4d25e2c96bd976cbec4e76681) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: generate PARTUUID for MDOS partitionsEd Bartosh2016-10-072-4/+13
| | | | | | | | | | | | | | | | | | Added generation of partition UUIDs for MSDOS partitions. UUID for MSDOS partitions is <disk identifier>-<partition number>, where disk identifier is a random 4 bytes long number. It's usually generated when MBR/partition table is initialized. As UUID is used to point to the root partition in bootloader config we need to generate it before the MBR is initialized. After MBR is created we need to rewrite system identifier to match it with what is used in bootloader config. This will be implemented in the next commit. (From OE-Core rev: 6ecc6addf4080eda75a15af077816c81c6bf70a5) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: set PARTUUID only for gpt partition tableEd Bartosh2016-10-071-1/+1
| | | | | | | | | | | | | sgdisk fails to set PARTUUID for msdos partitions as it's only supported for GPT partitions. Checked partition table format to run sgdisk --partition-guid only for GPT partitions. (From OE-Core rev: 0c1804821917d6d3a062ca19b63667d030138f21) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* mkefidisk.wks: use partition UUID and GPT partition tableEd Bartosh2016-10-011-2/+2
| | | | | | | | | | | | | This is a preparation to use mkefidisk as a default wks for genericx86* BSPs. This change enables usage of partition UUID instead of device name to specify root partition in kernel command line. It should make images to boot on devices with boot device names that differ from what's mentioned in wks file. (From OE-Core rev: 23cca700870230b46d251086441136e99659ef12) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: rename and amend systemd-boot wks fileJianxun Zhang2016-10-011-2/+2
| | | | | | | | | | | | Rename wks for systemd-boot per the suggestion from community. Also amend description to distinguish it from others when running "wic list images". (From OE-Core rev: 6303dbbaa08214a37caf38e3b6b5a30a108bd3b7) Signed-off-by: Jianxun Zhang <jianxun.zhang@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: remove partition imagesEd Bartosh2016-09-241-1/+8
| | | | | | | | | | | Preserving images for every partition doubles disk space consumed by an image build. As those images are not used, so it's better to remove them after assembling final image. (From OE-Core rev: 51171b4aa10f2218c5e27d785ca7bf4f3949a4b4) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* directdisk*.wks: add serial console supportEd Bartosh2016-09-223-3/+3
| | | | | | | | | | | | | Added serial console to kernel command line to to make it easier to boot wic images on devices without display. Tested on MinnowBoard MAX. (From OE-Core rev: 9a774e3bcd5dc4c85d642acc7bf26095b8c620e4) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: rawcopy: make source filenames uniqueEd Bartosh2016-07-211-1/+1
| | | | | | | | | | | | | | | | | | | | Rawcopy plugin copies source files to build folder before using them to assemble result image. After assembling the image wic renames source files to <image>.p<partition number>. If the same source file is used in multiple partitions wic breaks trying to rename file that doesn't exist. Added <line number> suffix to the files when copying them to the build dir. This should make filename unique even if the same source file is used for multiple partitions. [YOCTO #9826] (From OE-Core rev: 43a809bfe99024083b4ab4eb9895b084c9c4fa80) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: mountpoint is an optional argumentMaciej Borzecki2016-07-201-1/+1
| | | | | | | | | | | | | | According to wic documentation partition mount point is an optional argument. Skipping mount point also makes sense in certain configurations when one needs to specify a partition that is not mounted by the running system, such as a recovery or a mirror partition (in dual rootfs setups). (From OE-Core rev: 5e063a4c6bb0e0623a4d25bb2bf6eecd9ad6b9f1) Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: clone gummiboot wks for systemd-bootJianxun Zhang2016-07-201-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This wks is just a copy of gummiboot wks with bootloader changed to systemd-boot. A very basic boot test on a X86 target is done with a direct-boot image generated by: wic create mksystemd-bootdisk -e core-image-minimal Because we plan to replace gummiboot with systemd-boot at any time in the future, we summarize history (as much as I can) of the current gummiboot wks before it's gone: ----------------------------------------------------------------- commit 7d4bb40905fab38fb3db1d0e17afbc803622f00c Author: Ed Bartosh <ed.bartosh@linux.intel.com> Date: Wed Sep 2 13:58:02 2015 +0300 wic: get rid of scripts/lib/image Moved content of scripts/lib/image/ to scripts/lib/wic as one directory with the same name as a tool is self-explanatory and less confusing than two. (From OE-Core rev: 5dc02d572794298b3362378cea3d7da654456c44) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> commit 77561e719181d58289687373eebadce764f838a7 Author: Ed Bartosh <ed.bartosh@linux.intel.com> Date: Wed Sep 2 13:58:01 2015 +0300 wic: use ext4 in canned .wks files Latest kernel doesn't have ext3 compiled in. Wic images produced from canned .wks can't boot because of that. Switching to ext4 fixes this issue. (From OE-Core rev: d281a65a81f369fc8d75023b8f911ce4106969c1) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> commit 072657ce98414afdd6f68941847e21fc5ce496c7 Author: Tom Zanussi <tom.zanussi@linux.intel.com> Date: Mon Aug 11 20:35:41 2014 -0500 wic: Add mkgummidisk kickstart file This is the same as mkefidisk but uses gummiboot instead of grub-efi. (From OE-Core rev: 5979409ebfab0bb07b3c2b2fcf14a722c441f07b) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> ----------------------------------------------------------------- (From OE-Core rev: 546cd8352b8adce074831ec31cfa3bb2bf2f0084) Signed-off-by: Jianxun Zhang <jianxun.zhang@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: add systemd-boot option in EFI boot image pluginJianxun Zhang2016-07-201-3/+5
| | | | | | | | | | | | | | | | | | | | | The new systemd-boot enabled in OE is the old gummiboot merged into systemd project. Our intention is to replace gummiboot with systemd-boot in OE once every feature based on gummiboot is supported with systemd-boot. Before we can purge gummiboot, we temporarily keep both of the two bootloaders supported. Patch doesn't do replacement for every "gummi" occurrence. We think cleaning can be done in background after we disable people to use gummiboot, so we just keep change small and safe this time. (From OE-Core rev: daa5f8b886408eb6a17898b18ac97d5a0d76d2cc) Signed-off-by: Jianxun Zhang <jianxun.zhang@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* image-live, image-vm, wic: Remove fs size workaroundJussi Kukkonen2016-06-034-26/+0
| | | | | | | | | | | | Since mtools has been patched to live with filesystems with sizes not divisible by sectors-per-track, we no longer need to try to set the size based on our guess of the sectors-per-track dosfstools is going to use. (From OE-Core rev: 334e32af88b310ff1ed950d127a6dedeb460f8d0) Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: encode help textEd Bartosh2016-06-021-1/+1
| | | | | | | | | | | | Encoded help text before sending it to pager.communicate as it expects binary. [YOCTO #9412] (From OE-Core rev: 23c27d9d936efaa17da00525f1d2e2f98c53abc7) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: bootimg-efi: include startup.nsh if it's availableChristopher Larson2016-05-301-0/+5
| | | | | | | | | | | | | We want the system to boot on its own, rather than the user having to manually input the correct file at the EFI prompt. [YOCTO #9556] (From OE-Core rev: aa215c12d729c001ad3b8b98a7e203a9ad192211) Signed-off-by: Christopher Larson <chris_larson@mentor.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: fix path parsing, use last occurrenceGeorge McCollister2016-05-201-1/+1
| | | | | | | | | | | If the path contains 'scripts' more than once the first occurrence will be incorrectly used. Use rfind instead of find to find the last occurrence. (From OE-Core rev: f30c486c17060d2f21618612804a692512ad6a57) Signed-off-by: George McCollister <george.mccollister@gmail.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: add help for --bmap commandline optionEd Bartosh2016-05-191-1/+4
| | | | | | | | | | | | Included description of -m/--bmap option to the help page produced by 'wic help create'. [YOCTO #9413] (From OE-Core rev: 7c749d4cfe1642d70a6b3643422ef69dec1775fe) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: implement --bmap optionEd Bartosh2016-05-194-12/+26
| | | | | | | | | | | | This option enables generation of <image>.bmap file for the result image using native bmaptool. [YOCTO #9413] (From OE-Core rev: d64c7b37c40b052510419b4d6629b83319c833e4) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: add bmaptool to the list of utilitiesEd Bartosh2016-05-191-1/+2
| | | | | | | | | | | | | Added bmaptool -> bmap-tools pair to the dictionary executable -> recipe as bmaptool is going to be used by wic to generate .bmap file. [YOCTO #9413] (From OE-Core rev: 4684ac5f4d823a6afedc57aad0aa417bb17ba950) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: use next builtin instead of .next methodEd Bartosh2016-05-142-2/+2
| | | | | | | | | | | | | Generators in Python 3 don't have .next method. It's recommended to use 'next' builtin instead. As it also present in Python >= 2.6 it should make wic code compatible with both Python 2 and Python 3. [YOCTO #9412] (From OE-Core rev: 9b7ab632e47d786dd979262015dbfb1254103f83) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: don't encode unicode stringsEd Bartosh2016-05-141-7/+0
| | | | | | | | | | | | | Removed check for unicode type as it doesn't work in Python 3. This check is not needed for wic as all its output seem to be strings. This allows to run code under both pythons. [YOCTO #9412] (From OE-Core rev: a56924b4a0102e401b5e37d857a08bab15da974e) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: decode output of subprocess.communicateEd Bartosh2016-05-141-2/+2
| | | | | | | | | | | | | | stdeout and stderr content returned by communicate API has different types in Python 3(bytes) and Python 2(string). Decoding it to 'utf-8' makes it unicode on both pythons. Decoded stdout and stderr output to utf-8 to make the code working under both Python 2 and Python 3. (From OE-Core rev: 5b556f58a171e3d45107bb56a1f780e5c1abba37) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: use // operator instead of /Ed Bartosh2016-05-142-10/+10
| | | | | | | | | | | | | | | Division operator works differently in Python 3. It results in float unlike in Python 2, where it results in int. Explicitly used "floor division" operator instead of 'division' operator. This should make the code to result in integer under both pythons. [YOCTO #9412] (From OE-Core rev: 997ff239bd753a7957cc14c6829b2f093d9bcef6) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: use find_executable in favor of bb.utils.whichEd Bartosh2016-05-141-8/+2
| | | | | | | | | | | | | | As bitbake is not ported to Python 3 yet it's better to avoid using its APIs as much as possible to be able to test wic under Python 3 at least partially. Used distutils.spawn.find_executable API in favor of bb.utils.which to get path of the command to run. (From OE-Core rev: 9658956bf8a5da779e06f71941de9b3e89415cdc) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: don't use L suffix for integersEd Bartosh2016-05-141-4/+4
| | | | | | | | | | | | This suffix is not supported by Python 3. Wic code works without it on Python 2 too, so it's safe to remove it. [YOCTO #9412] (From OE-Core rev: 296db7e33bd71585cac63dc78c2c95bc619b4a86) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: refactor pluginbaseEd Bartosh2016-05-141-28/+14
| | | | | | | | | | | | | | | | | | | Wic plugin machinery implemented using metaclasses. Reimplemented plugin machinery using this advice from https://wiki.python.org/moin/PortingToPy3k/BilingualQuickRef Syntax for creating instances with different metaclasses is very different between Python 2 and 3. Use the ability to call type instances as a way to portably create such instances. Now it should work under both Python 2 and Python 3. [YOCTO #9412] (From OE-Core rev: e62fe5a41bdcdd72b9b257fecff7ccdc59c76d33) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: remove unused functionsEd Bartosh2016-05-141-68/+1
| | | | | | | | | | | | | Removed 'raw', 'ask', 'choice' and 'pause' functions from msger.py as they're not used in wic code and some of them use raw_input, which is not present in Python 3. [YOCTO #9412] (From OE-Core rev: eb87d591ef67f1953b2689430ef6c5a6a27a5b6e) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: use new syntax of 'except' statementEd Bartosh2016-05-143-3/+3
| | | | | | | | | | | | | | New syntax 'except Exception as err' is supported by Python >= 2.7. Old syntax 'except Exception, err' is not supported by Python 3. Used new syntax to be able to run wic on Python 3. [YOCTO #9412] (From OE-Core rev: 15e88714d6b0a93f72e8a19b083fcc1f2006e128) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: remove with_statement importsEd Bartosh2016-05-141-1/+0
| | | | | | | | | | | | | | 'with' statement is not used in baseimager.py It's supported by Python 2.7, which is included into all target distros. Other wic modules use this statement. Removed useless 'from __future__ import with_statement' from wic code. (From OE-Core rev: 528a1f20939589949831efbb4de6336776efe7d5) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: don't inherit classes from objectEd Bartosh2016-05-146-6/+6
| | | | | | | | | | | | | | All classes in Python3 are new style classes and don't need to be inherited from object. Wic code works fine without this inheritance even with Python2, so it's harmless to remove it. [YOCTO #9412] (From OE-Core rev: a146b03ee7d0aa5bc1722da5977a5952782b69bf) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: don't use dict.keys and dict.has_keyEd Bartosh2016-05-143-5/+5
| | | | | | | | | | | | | Replaced calls of dict.keys and dict.has_key methods with the 'key in dict' statement. 'key in dict' is more pythonic, faster and readable. dict.has_key doesn't exist in Python 3. [YOCTO #9412] (From OE-Core rev: 003df7dfb932c551953fbf1bd769b3c31bd16fb4) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: use items instead of iteritemsEd Bartosh2016-05-144-5/+5
| | | | | | | | | | | | | Dictionary method 'iteritems' doesn't exist in Python 3. Replaced 'iteritems' with 'items' to be able to run the code under both Python 3 and Python 2. [YOCTO #9412] (From OE-Core rev: 5b14eb8d68aaca82de4f8f6bcb28ad6f4a5125d0) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: replace print statements with print functionEd Bartosh2016-05-143-15/+15
| | | | | | | | | | | | | Print statements have been replaced with print function in Python 3. Replaced them in wic code to be able to run it under both Python 2 and Python 3. [YOCTO #9412] (From OE-Core rev: ee6979a19c77931c3cf6368e695e370d46192fef) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: use sparse_copy to preserve sparsenessEd Bartosh2016-05-061-4/+3
| | | | | | | | | | | | Used sparse_copy API in favor of dd/cp in rawcopy plugin to preserve sparseness of the copied raw content. [YOCTO #9099] (From OE-Core rev: 04eca59068a79ae6a9969be495c4cdf0c5c3e466) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: use sparse_copy to copy partitionsEd Bartosh2016-05-061-4/+2
| | | | | | | | | | | | | | Copied partition images into final partitioned image using sparse_copy API. This method preserves sparseness of the final image. It also makes wic much faster, as unmapped blocks of the partition images are not copied. [YOCTO #9099] (From OE-Core rev: 7f21427aca5df81d8881027fd98f71b821cf31d7) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: add sparse_copy APIEd Bartosh2016-05-061-0/+30
| | | | | | | | | | | | | | | | | | In order to make wic images sparse sparse_copy function has been copied from meta-ostro: https://github.com/kad/meta-ostro/blob/master/meta-ostro/lib/image-dsk.py This function uses filemap APIs to copy source sparse file into destination file preserving sparseness. The function has been modified to satisfy wic requirements: parameter 'skip' has been added. [YOCTO #9099] (From OE-Core rev: bfde62bdc03152a4d3d383512479b974fa867f94) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: add FIEMAP and SEEK_HOLE / SEEK_DATA APIsEd Bartosh2016-05-061-0/+531
| | | | | | | | | | | | | | | | | | | | | | In order to make wic images sparse set of APIs has been copied from bmap-tools project. filemap.py module is taken from bmap-tools project: https://github.com/01org/bmap-tools/blob/master/bmaptools/Filemap.py It implements two ways of get information about file block: FIEMAP ioctl and the 'SEEK_HOLE / SEEK_DATA' features of the file seek syscall. Note that this module will be removed as soon as bmaptool utility supports copying sparse source file into destination file (this is already agreed with the maintainer of bmap-tools project). [YOCTO #9099] (From OE-Core rev: 182639ddc9cda85c896a54c1c64fd1fb145071a1) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>