diff options
author | Tom Zanussi <tom.zanussi@linux.intel.com> | 2014-02-07 16:19:28 -0600 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-02-09 09:40:01 +0000 |
commit | df634f3b1e02aa18f84b4b74f13c7260a21691aa (patch) | |
tree | 2c8d06bbf3ff8c7f892f803c67db6b8419d3a69c /scripts | |
parent | 8d008aa840a4086ca6b6a17af926c7c601bd5dd9 (diff) | |
download | poky-df634f3b1e02aa18f84b4b74f13c7260a21691aa.tar.gz |
wic: Honor --size for --source partititions
Instead of simply creating partitions large enough to contain the
contents of a --source partition (and adding a pre-specified amount of
padding), use the --size used in the partition .wks statement.
If --size isn't used, or is smaller than the actual --source size,
retain the current behavior.
(From OE-Core rev: 23b6c5ea4d48cdf731e5202991961a0e4b10ff29)
Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/lib/mic/kickstart/custom_commands/partition.py | 57 | ||||
-rw-r--r-- | scripts/lib/mic/plugins/source/bootimg-efi.py | 10 | ||||
-rw-r--r-- | scripts/lib/mic/plugins/source/bootimg-pcbios.py | 10 | ||||
-rw-r--r-- | scripts/lib/mic/utils/oe/misc.py | 1 |
4 files changed, 68 insertions, 10 deletions
diff --git a/scripts/lib/mic/kickstart/custom_commands/partition.py b/scripts/lib/mic/kickstart/custom_commands/partition.py index 4974a87d93..91d751eb16 100644 --- a/scripts/lib/mic/kickstart/custom_commands/partition.py +++ b/scripts/lib/mic/kickstart/custom_commands/partition.py | |||
@@ -56,6 +56,12 @@ class Wic_PartData(Mic_PartData): | |||
56 | 56 | ||
57 | return retval | 57 | return retval |
58 | 58 | ||
59 | def get_size(self): | ||
60 | """ | ||
61 | Accessor for partition size, 0 or --size before set_size(). | ||
62 | """ | ||
63 | return self.size | ||
64 | |||
59 | def set_size(self, size): | 65 | def set_size(self, size): |
60 | """ | 66 | """ |
61 | Accessor for actual partition size, which must be set by source | 67 | Accessor for actual partition size, which must be set by source |
@@ -70,6 +76,29 @@ class Wic_PartData(Mic_PartData): | |||
70 | """ | 76 | """ |
71 | self.source_file = source_file | 77 | self.source_file = source_file |
72 | 78 | ||
79 | def get_extra_block_count(self, current_blocks): | ||
80 | """ | ||
81 | The --size param is reflected in self.size (in MB), and we already | ||
82 | have current_blocks (1k) blocks, calculate and return the | ||
83 | number of (1k) blocks we need to add to get to --size, 0 if | ||
84 | we're already there or beyond. | ||
85 | """ | ||
86 | msger.debug("Requested partition size for %s: %d" % \ | ||
87 | (self.mountpoint, self.size)) | ||
88 | |||
89 | if not self.size: | ||
90 | return 0 | ||
91 | |||
92 | requested_blocks = self.size * 1024 | ||
93 | |||
94 | msger.debug("Requested blocks %d, current_blocks %d" % \ | ||
95 | (requested_blocks, current_blocks)) | ||
96 | |||
97 | if requested_blocks > current_blocks: | ||
98 | return requested_blocks - current_blocks | ||
99 | else: | ||
100 | return 0 | ||
101 | |||
73 | def prepare(self, cr, cr_workdir, oe_builddir, rootfs_dir, bootimg_dir, | 102 | def prepare(self, cr, cr_workdir, oe_builddir, rootfs_dir, bootimg_dir, |
74 | kernel_dir, native_sysroot): | 103 | kernel_dir, native_sysroot): |
75 | """ | 104 | """ |
@@ -147,16 +176,22 @@ class Wic_PartData(Mic_PartData): | |||
147 | """ | 176 | """ |
148 | populate_script = "%s/usr/bin/populate-extfs.sh" % native_sysroot | 177 | populate_script = "%s/usr/bin/populate-extfs.sh" % native_sysroot |
149 | 178 | ||
150 | image_extra_space = 10240 | ||
151 | |||
152 | image_rootfs = rootfs_dir | 179 | image_rootfs = rootfs_dir |
153 | rootfs = "%s/rootfs.%s" % (cr_workdir, self.fstype) | 180 | rootfs = "%s/rootfs.%s" % (cr_workdir, self.fstype) |
154 | 181 | ||
155 | du_cmd = "du -ks %s" % image_rootfs | 182 | du_cmd = "du -ks %s" % image_rootfs |
156 | rc, out = exec_cmd(du_cmd) | 183 | rc, out = exec_cmd(du_cmd) |
157 | actual_rootfs_size = out.split()[0] | 184 | actual_rootfs_size = int(out.split()[0]) |
185 | |||
186 | extra_blocks = self.get_extra_block_count(actual_rootfs_size) | ||
187 | |||
188 | if extra_blocks < IMAGE_EXTRA_SPACE: | ||
189 | extra_blocks = IMAGE_EXTRA_SPACE | ||
190 | |||
191 | rootfs_size = actual_rootfs_size + extra_blocks | ||
158 | 192 | ||
159 | rootfs_size = int(actual_rootfs_size) + image_extra_space | 193 | msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \ |
194 | (extra_blocks, self.mountpoint, rootfs_size)) | ||
160 | 195 | ||
161 | dd_cmd = "dd if=/dev/zero of=%s bs=1024 seek=%d count=0 bs=1k" % \ | 196 | dd_cmd = "dd if=/dev/zero of=%s bs=1024 seek=%d count=0 bs=1k" % \ |
162 | (rootfs, rootfs_size) | 197 | (rootfs, rootfs_size) |
@@ -187,16 +222,22 @@ class Wic_PartData(Mic_PartData): | |||
187 | 222 | ||
188 | Currently handles ext2/3/4 and btrfs. | 223 | Currently handles ext2/3/4 and btrfs. |
189 | """ | 224 | """ |
190 | image_extra_space = 10240 | ||
191 | |||
192 | image_rootfs = rootfs_dir | 225 | image_rootfs = rootfs_dir |
193 | rootfs = "%s/rootfs.%s" % (cr_workdir, self.fstype) | 226 | rootfs = "%s/rootfs.%s" % (cr_workdir, self.fstype) |
194 | 227 | ||
195 | du_cmd = "du -ks %s" % image_rootfs | 228 | du_cmd = "du -ks %s" % image_rootfs |
196 | rc, out = exec_cmd(du_cmd) | 229 | rc, out = exec_cmd(du_cmd) |
197 | actual_rootfs_size = out.split()[0] | 230 | actual_rootfs_size = int(out.split()[0]) |
231 | |||
232 | extra_blocks = self.get_extra_block_count(actual_rootfs_size) | ||
233 | |||
234 | if extra_blocks < IMAGE_EXTRA_SPACE: | ||
235 | extra_blocks = IMAGE_EXTRA_SPACE | ||
236 | |||
237 | rootfs_size = actual_rootfs_size + extra_blocks | ||
198 | 238 | ||
199 | rootfs_size = int(actual_rootfs_size) + image_extra_space | 239 | msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \ |
240 | (extra_blocks, self.mountpoint, rootfs_size)) | ||
200 | 241 | ||
201 | dd_cmd = "dd if=/dev/zero of=%s bs=1024 seek=%d count=0 bs=1k" % \ | 242 | dd_cmd = "dd if=/dev/zero of=%s bs=1024 seek=%d count=0 bs=1k" % \ |
202 | (rootfs, rootfs_size) | 243 | (rootfs, rootfs_size) |
diff --git a/scripts/lib/mic/plugins/source/bootimg-efi.py b/scripts/lib/mic/plugins/source/bootimg-efi.py index 3e0997bacf..1974b062b2 100644 --- a/scripts/lib/mic/plugins/source/bootimg-efi.py +++ b/scripts/lib/mic/plugins/source/bootimg-efi.py | |||
@@ -131,7 +131,15 @@ class BootimgEFIPlugin(SourcePlugin): | |||
131 | rc, out = exec_cmd(du_cmd) | 131 | rc, out = exec_cmd(du_cmd) |
132 | blocks = int(out.split()[0]) | 132 | blocks = int(out.split()[0]) |
133 | 133 | ||
134 | blocks += BOOTDD_EXTRA_SPACE | 134 | extra_blocks = part.get_extra_block_count(blocks) |
135 | |||
136 | if extra_blocks < BOOTDD_EXTRA_SPACE: | ||
137 | extra_blocks = BOOTDD_EXTRA_SPACE | ||
138 | |||
139 | blocks += extra_blocks | ||
140 | |||
141 | msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \ | ||
142 | (extra_blocks, part.mountpoint, blocks)) | ||
135 | 143 | ||
136 | # Ensure total sectors is an integral number of sectors per | 144 | # Ensure total sectors is an integral number of sectors per |
137 | # track or mcopy will complain. Sectors are 512 bytes, and we | 145 | # track or mcopy will complain. Sectors are 512 bytes, and we |
diff --git a/scripts/lib/mic/plugins/source/bootimg-pcbios.py b/scripts/lib/mic/plugins/source/bootimg-pcbios.py index 3cd446f052..fad150f940 100644 --- a/scripts/lib/mic/plugins/source/bootimg-pcbios.py +++ b/scripts/lib/mic/plugins/source/bootimg-pcbios.py | |||
@@ -154,7 +154,15 @@ class BootimgPcbiosPlugin(SourcePlugin): | |||
154 | rc, out = exec_cmd(du_cmd) | 154 | rc, out = exec_cmd(du_cmd) |
155 | blocks = int(out.split()[0]) | 155 | blocks = int(out.split()[0]) |
156 | 156 | ||
157 | blocks += BOOTDD_EXTRA_SPACE | 157 | extra_blocks = part.get_extra_block_count(blocks) |
158 | |||
159 | if extra_blocks < BOOTDD_EXTRA_SPACE: | ||
160 | extra_blocks = BOOTDD_EXTRA_SPACE | ||
161 | |||
162 | blocks += extra_blocks | ||
163 | |||
164 | msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \ | ||
165 | (extra_blocks, part.mountpoint, blocks)) | ||
158 | 166 | ||
159 | # Ensure total sectors is an integral number of sectors per | 167 | # Ensure total sectors is an integral number of sectors per |
160 | # track or mcopy will complain. Sectors are 512 bytes, and we | 168 | # track or mcopy will complain. Sectors are 512 bytes, and we |
diff --git a/scripts/lib/mic/utils/oe/misc.py b/scripts/lib/mic/utils/oe/misc.py index 77dfe03630..6b01955a88 100644 --- a/scripts/lib/mic/utils/oe/misc.py +++ b/scripts/lib/mic/utils/oe/misc.py | |||
@@ -108,6 +108,7 @@ def add_wks_var(key, val): | |||
108 | wks_vars[key] = val | 108 | wks_vars[key] = val |
109 | 109 | ||
110 | BOOTDD_EXTRA_SPACE = 16384 | 110 | BOOTDD_EXTRA_SPACE = 16384 |
111 | IMAGE_EXTRA_SPACE = 10240 | ||
111 | 112 | ||
112 | __bitbake_env_lines = "" | 113 | __bitbake_env_lines = "" |
113 | 114 | ||