From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6517147827419742208 X-Received: by 10.46.25.221 with SMTP id 90mr1731494ljz.17.1517391723564; Wed, 31 Jan 2018 01:42:03 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 10.25.59.216 with SMTP id d85ls679259lfl.15.gmail; Wed, 31 Jan 2018 01:42:03 -0800 (PST) X-Google-Smtp-Source: AH8x225QJzN5tA+cmjbZ+J4SpPOAlMqF5rX9sj65zUm+pyfs714XpZAp+VGGISnZPdrT8qA8K/TF X-Received: by 10.25.39.65 with SMTP id n62mr2417272lfn.0.1517391722996; Wed, 31 Jan 2018 01:42:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517391722; cv=none; d=google.com; s=arc-20160816; b=Tw2upd2Fg0Af8XAUO+yrbHt3UqVHuniZsvPp5jN47WXcmQcPRaUi9A8JsGKaPfn4uz YzZQkBqptPDKfJlih44Gk90lkxMzHLYkqOpO4OH7ZU5Vel0fgDlOveMDQfzodt8kvDd4 wzGDVOYAJZq5j3ngyfmzZvpaqUQQXKSUGKqu5a6LmcC/rxNuFjiZnR5AGIGdppWBjs00 8eiEg8Lx4bQBf5my4KaDTocqB9AeS26DMfQGdLIYxZjiqd8rxLFc9moF6JfMrv7XWgdQ FyNwEkgcUx9dw42Zn1r8au3VA6f3ErpwHG2ciYjpCPRoecROwpXy4rZBU1jyBhWsZvBv mcuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=P3WUj7VV4Rfd2W0lekr/a2y/21S+Qg2Yrdgnk2tyYIE=; b=Go4h+vFIPlzaipIF0aAE77URwVh4z49elKtpfu6kQkzWNGo7H/71Z98TrUxyh4tV54 1hzCFRBmUsMxg8h5L4uZnY8tBt3oZuxcYXcLLsNZ6AhG+Y2aRQC4RTCOJihvRj4YyNIq VXarkbcyt0JQb/5qoh6DLvNAtJKYdDVk9eEABHQt8SVXykzT9ltwGkGKQWxJFgQ3fVGa g45XriKdV5F9Hc+tM0o7q/i8eLE03jxqjDKu9xvPi9zMcBb4r3O03oVhPhRVA0elGAIU wEJnWFW3B9vr4jmbKu3qBvsnbFxRrtSPSBVUEBwgV7XckPXBKrRErLhcyP87VPhtcvGm kWtg== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=henning.schild@siemens.com Return-Path: Received: from goliath.siemens.de (goliath.siemens.de. [192.35.17.28]) by gmr-mx.google.com with ESMTPS id m2si64642lfj.2.2018.01.31.01.42.02 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 31 Jan 2018 01:42:02 -0800 (PST) Received-SPF: pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.28 as permitted sender) client-ip=192.35.17.28; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=henning.schild@siemens.com Received: from mail3.siemens.de (mail3.siemens.de [139.25.208.14]) by goliath.siemens.de (8.15.2/8.15.2) with ESMTPS id w0V9g2Zt028821 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 31 Jan 2018 10:42:02 +0100 Received: from md1pvb1c.ad001.siemens.net (md1pvb1c.ad001.siemens.net [139.25.68.40] (may be forged)) by mail3.siemens.de (8.15.2/8.15.2) with ESMTP id w0V9g1aV008484; Wed, 31 Jan 2018 10:42:01 +0100 From: Henning Schild To: isar-users@googlegroups.com Cc: Henning Schild Subject: [PATCH 1/9] classes: image: introduce size measuring function, for before do_*_image Date: Wed, 31 Jan 2018 10:41:52 +0100 Message-Id: X-Mailer: git-send-email 2.13.6 In-Reply-To: References: In-Reply-To: References: X-TUID: kcmuUS1hIBDH Measure the size and export it to the variable ROOTFS_SIZE just before the imaging step. The concept is inspired by OE. Issue: The size of the rootfs is required for all sort of images, at the moment Isar only supports one "real" image. Later patches will introduce another image. And this patch prepares for that by moving the size measurement into our image base class. Impact: - Issue is solved - nothing changes for users Signed-off-by: Henning Schild --- meta/classes/ext4-img.bbclass | 7 ++----- meta/classes/image.bbclass | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/meta/classes/ext4-img.bbclass b/meta/classes/ext4-img.bbclass index 83cb137..78036a2 100644 --- a/meta/classes/ext4-img.bbclass +++ b/meta/classes/ext4-img.bbclass @@ -1,9 +1,6 @@ # This software is a part of ISAR. # Copyright (C) 2015-2017 ilbers GmbH -# Extra space for rootfs in MB -ROOTFS_EXTRA ?= "64" - EXT4_IMAGE_FILE = "${DEPLOY_DIR_IMAGE}/${PN}-${DISTRO}-${MACHINE}.ext4.img" do_ext4_image[stamp-extra-info] = "${DISTRO}-${MACHINE}" @@ -12,8 +9,7 @@ do_ext4_image[stamp-extra-info] = "${DISTRO}-${MACHINE}" do_ext4_image() { rm -f ${EXT4_IMAGE_FILE} - ROOTFS_SIZE=`sudo du -sm ${IMAGE_ROOTFS} | awk '{print $1 + ${ROOTFS_EXTRA};}'` - dd if=/dev/zero of=${EXT4_IMAGE_FILE} bs=1M count=${ROOTFS_SIZE} + dd if=/dev/zero of=${EXT4_IMAGE_FILE} bs=1k count=${ROOTFS_SIZE} sudo mkfs.ext4 -F ${EXT4_IMAGE_FILE} @@ -31,3 +27,4 @@ do_ext4_image() { } addtask ext4_image before do_build after do_copy_boot_files +do_ext4_image[prefuncs] = 'set_image_size' diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index e2cb01b..47fa553 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -5,6 +5,9 @@ IMAGE_INSTALL ?= "" IMAGE_TYPE ?= "ext4-img" IMAGE_ROOTFS = "${WORKDIR}/rootfs" +# Extra space for rootfs in MB +ROOTFS_EXTRA ?= "64" + def get_image_name(d, name_link): S = d.getVar("IMAGE_ROOTFS", True) path_link = os.path.join(S, name_link) @@ -12,6 +15,22 @@ def get_image_name(d, name_link): return os.path.basename(os.path.realpath(path_link)) return "" +def get_rootfs_size(d): + import subprocess + rootfs_extra = int(d.getVar("ROOTFS_EXTRA", True)) + + output = subprocess.check_output(['sudo', 'du', '-s', '--block-size=1k', + d.getVar("IMAGE_ROOTFS", True)]) + base_size = int(output.split()[0]) + + return base_size + rootfs_extra * 1024 + +python set_image_size () { + rootfs_size = get_rootfs_size(d) + d.setVar('ROOTFS_SIZE', str(rootfs_size)) + d.setVarFlag('ROOTFS_SIZE', 'export', '1') +} + # These variables are used by wic and start_vm KERNEL_IMAGE ?= "${@get_image_name(d, 'vmlinuz')}" INITRD_IMAGE ?= "${@get_image_name(d, 'initrd.img')}" -- 2.13.6