[v2] buildstats: support of custom disk usage command

Message ID 20220111134202.9622-1-ubely@ilbers.de
State New
Headers show
Series [v2] buildstats: support of custom disk usage command | expand

Commit Message

Uladzimir Bely Jan. 11, 2022, 1:42 p.m. UTC
This helps to make buildstats code usage easier in third-party
projects like Isar (https://github.com/ilbers/isar/). In Isar
rootfs is created using 'sudo' and some subpaths like '/proc'
may be mounted. So, "du -sh" on rootfs produces incorrect result
with  multiple 'Permission denied' warnings.

Customizable disk usage command allows to deal with these issues
(e.g., "-x" option or "sudo" can be added) in such cases.

Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
---
Changes in v2:
- Removed wrong [meta-oe] prefix from previously sent patch

 meta/classes/buildstats.bbclass | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Khem Raj Jan. 11, 2022, 4:27 p.m. UTC | #1
Thanks for this patch however it needs to be sent to openembedded-core
mailing list

On Tue, Jan 11, 2022 at 5:42 AM Uladzimir Bely <ubely@ilbers.de> wrote:

> This helps to make buildstats code usage easier in third-party
> projects like Isar (https://github.com/ilbers/isar/). In Isar
> rootfs is created using 'sudo' and some subpaths like '/proc'
> may be mounted. So, "du -sh" on rootfs produces incorrect result
> with  multiple 'Permission denied' warnings.
>
> Customizable disk usage command allows to deal with these issues
> (e.g., "-x" option or "sudo" can be added) in such cases.
>
> Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
> ---
> Changes in v2:
> - Removed wrong [meta-oe] prefix from previously sent patch
>
>  meta/classes/buildstats.bbclass | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/meta/classes/buildstats.bbclass
> b/meta/classes/buildstats.bbclass
> index 0de605200a..9f80cbd75c 100644
> --- a/meta/classes/buildstats.bbclass
> +++ b/meta/classes/buildstats.bbclass
> @@ -8,6 +8,8 @@ BUILDSTATS_BASE = "${TMPDIR}/buildstats/"
>  #
>
>  ################################################################################
>
> +BUILDSTATS_DISK_USAGE_CMD ??= "du -sh"
> +
>  def get_buildprocess_cputime(pid):
>      with open("/proc/%d/stat" % pid, "r") as f:
>          fields = f.readline().rstrip().split()
> @@ -244,7 +246,8 @@ python run_buildstats () {
>                  rootfs = d.getVar('IMAGE_ROOTFS')
>                  if os.path.isdir(rootfs):
>                      try:
> -                        rootfs_size = subprocess.check_output(["du",
> "-sh", rootfs],
> +                        rootfs_size = subprocess.check_output(
> +
> d.getVar('BUILDSTATS_DISK_USAGE_CMD').split() + [rootfs],
>                                  stderr=subprocess.STDOUT).decode('utf-8')
>                          f.write("Uncompressed Rootfs size: %s" %
> rootfs_size)
>                      except subprocess.CalledProcessError as err:
> --
> 2.20.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#94745):
> https://lists.openembedded.org/g/openembedded-devel/message/94745
> Mute This Topic: https://lists.openembedded.org/mt/88348508/1997914
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [
> raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
Uladzimir Bely Jan. 12, 2022, 8:01 a.m. UTC | #2
In the email from вторник, 11 января 2022 г. 19:27:32 +03 user Khem Raj wrote:
> Thanks for this patch however it needs to be sent to openembedded-core
> mailing list

Thanks for the answer. I'll resend it there.

Patch

diff --git a/meta/classes/buildstats.bbclass b/meta/classes/buildstats.bbclass
index 0de605200a..9f80cbd75c 100644
--- a/meta/classes/buildstats.bbclass
+++ b/meta/classes/buildstats.bbclass
@@ -8,6 +8,8 @@  BUILDSTATS_BASE = "${TMPDIR}/buildstats/"
 #
 ################################################################################
 
+BUILDSTATS_DISK_USAGE_CMD ??= "du -sh"
+
 def get_buildprocess_cputime(pid):
     with open("/proc/%d/stat" % pid, "r") as f:
         fields = f.readline().rstrip().split()
@@ -244,7 +246,8 @@  python run_buildstats () {
                 rootfs = d.getVar('IMAGE_ROOTFS')
                 if os.path.isdir(rootfs):
                     try:
-                        rootfs_size = subprocess.check_output(["du", "-sh", rootfs],
+                        rootfs_size = subprocess.check_output(
+                                d.getVar('BUILDSTATS_DISK_USAGE_CMD').split() + [rootfs],
                                 stderr=subprocess.STDOUT).decode('utf-8')
                         f.write("Uncompressed Rootfs size: %s" % rootfs_size)
                     except subprocess.CalledProcessError as err: