]> code.ossystems Code Review - openembedded-core.git/commitdiff
isoimage-isohybrid: don't include cpio in cpio image
authorIoan-Adrian Ratiu <adrian.ratiu@ni.com>
Tue, 18 Sep 2018 16:17:52 +0000 (19:17 +0300)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 19 Sep 2018 13:31:33 +0000 (06:31 -0700)
Because the find | cpio processes execute in parallel connected via
the pipe, and the cpio outputs in the same dir find searches for
source files, the cpio will be included in itself partially, depending
on how fast the build machine creates the cpio file before cpio
gobbles it up.

This bloats the ISO image, though compression reduces the .iso file size,
once the kernel decompresses the cpio image and boots it live, it uses
up to double the RAM memory.

Fix this by creating the initrd.cpio file directly inside cr_workdir.

Signed-off-by: Ioan-Adrian Ratiu <adrian.ratiu@ni.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
scripts/lib/wic/plugins/source/isoimage-isohybrid.py

index 25a695da1700f2d69e2dde33b71ac83616569f93..170077c22c21ee2320065beaa9d7068875af665b 100644 (file)
@@ -191,10 +191,9 @@ class IsoImagePlugin(SourcePlugin):
             else:
                 raise WicError("Couldn't find or build initrd, exiting.")
 
-            exec_cmd("cd %s && find . | cpio -o -H newc -R root:root >./initrd.cpio " \
-                    % initrd_dir, as_shell=True)
-            exec_cmd("gzip -f -9 -c %s/initrd.cpio > %s" \
-                    % (initrd_dir, initrd), as_shell=True)
+            exec_cmd("cd %s && find . | cpio -o -H newc -R root:root >%s/initrd.cpio " \
+                     % (initrd_dir, cr_workdir), as_shell=True)
+            exec_cmd("gzip -f -9 %s/initrd.cpio" % cr_workdir, as_shell=True)
             shutil.rmtree(initrd_dir)
 
         return initrd