From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Thu, 29 Aug 2024 07:54:19 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-wm1-f61.google.com (mail-wm1-f61.google.com [209.85.128.61]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 47T5sIoC000378 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 29 Aug 2024 07:54:18 +0200 Received: by mail-wm1-f61.google.com with SMTP id 5b1f17b1804b1-428076fef5dsf2514405e9.2 for ; Wed, 28 Aug 2024 22:54:18 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1724910853; cv=pass; d=google.com; s=arc-20240605; b=QfVQRt9VwtCss36o6Kuy9deFsNpDf+8qBwJa/XL/b2dZS/NheD59SOO9li5gzXtBGj NvDDUTGWKbzdBfZhEWBSiM0ltBzNxnSLHBHC5rledgbZxI3JC9pge9GOVAIyGXUSca/J XlLDL17xxtK06aVQmNWEKGjP/cDSoJPsi2QzRMYAFDH3RyjfBqUMJvDwaNmTmhvRQr4a hvdG9NRcm0HE5XvV3ud+t8w5FIbFEpB6rS0F/uAIkkGVc4NBRlpWEC3r2L4QeF1o7Ec2 MH5EXQ7s/+V635Lo8FFfRGHoi8SFoiTv4TAv6LEmgSSFllewvEaglVRw08qn5VfaX/+c PjWg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:user-agent :content-transfer-encoding:references:in-reply-to:date:to:from :subject:message-id:sender:dkim-signature; bh=k5y/KPrjaKW/97p2BeRlMORgUGy19317KHAp9dELN7g=; fh=XSz4P/A30Pg4LEHwrArnlk64eJkK48gIoy0uPM/nHxI=; b=M0nGwY8UR6syRNRkwQl2TTWFbonQQQFCTNz488aidPV6hkNOdBIsmNCxlkWKLGsE5R lZWJkqden+WNd4YTiDvk29DP6OfULUmxzc9yJ1lO5b6jTh4BAeWGmkqD4JhTfUsAkjoK eh7YTbJWUHnxf7egN5k9RUO93UQtT73VfRp0B+qkmNOXRh1UR7D34e35550CAc89D/M1 d1TWNW9soxd9BkOPEIQAnwBeqM3HY6S9N5HMKaDcOdPOsBYbRU6d6882ddIgTmp2pc2j tL+91k4nUD0ynMR8bhVnXnrdNKw4wOLou/MPxSjSn/9K+VEDKO4K2TE25Njc+u2h0C2b NN5w==; darn=ilbers.de ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=ubely@ilbers.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1724910853; x=1725515653; darn=ilbers.de; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:user-agent:content-transfer-encoding :references:in-reply-to:date:to:from:subject:message-id:sender:from :to:cc:subject:date:message-id:reply-to; bh=k5y/KPrjaKW/97p2BeRlMORgUGy19317KHAp9dELN7g=; b=gEX78939Q2eYaTrMA5RfJ6jJic8R4OIuEIw5VAqnrqBJNvG3mzkmbGiBkoyuGzv3BD /pVzgpKQHw53QPyqfJ3/MY46wL+1xiOUA+w7Ygkl96Ay2fTNA13Vd1jaleVbHQJjh6OZ UepJSXhG1RJdVRrNcMtInF22uJukjPxEEaTjzMQwhtLNlEcMON4yezhMLog2OXeBWsJB nM0Rako98Hdw2wSunl8GtQErjcCaZMbFPzedWLmr0beuKdEyMO/cpiBxpoeYurN7d61C 5mYh1KE37QrGLCLY9iMOxnustrCW3Oq6nNskXJZKJD5H8XWJHMeMVBv4A3xhmkOEx/nP fKBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724910853; x=1725515653; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :user-agent:content-transfer-encoding:references:in-reply-to:date:to :from:subject:message-id:x-beenthere:x-gm-message-state:sender:from :to:cc:subject:date:message-id:reply-to; bh=k5y/KPrjaKW/97p2BeRlMORgUGy19317KHAp9dELN7g=; b=ar6EU+IrA/JDbYVajU8GT1+MZiWvMiET9Zw/PiQi5opvl457ujaoyNlP39eyhiMEEt 9seOtWMN+TA0QchW0aTDnPG5cZIzeENPqRW5q7Sr0RLZccHcJbSSBEswltfm0wPlcZ32 lgOlAJsvqmWWPeKG1b+9UvzLg1RXs+BBljt14WQKrc6J9QpETVjYmIrrPThm4sSPTC8s a3SkjtwyRbZ5EKNFTP87yavY8swt5rMmJeTbKnQa73Nts3Gwo1Az9He62CsdQRYZbIX1 8952wS85V8xJO+kSHKtvxyYjpCjhIk4oY/NlZTxsJSfL67BC5RGpU6yql1FT1wKvHjkf 9yGQ== Sender: isar-users@googlegroups.com X-Forwarded-Encrypted: i=2; AJvYcCWoaPSoNIgynUIYxLwMspWBHvwhz+v2l3+BZmgvGRwnKpUPa09jlMoZmylGanHM6NiKV8nB@ilbers.de X-Gm-Message-State: AOJu0Yzqac3tJDYKORO5ty8373aHanJC49sGh7vzDyc9xwuFXyPHpQFS KUMPgw1ZEI3tswCcPryMXuLSpPjgzZp9Ks2Eg87Vj0mHz0pmEDU1 X-Google-Smtp-Source: AGHT+IHF7BhwnIykC7HqIfCi06KwGEySM3uq8x9lNYlyirnXyRwCA4ZckBUiuJMvSCGgwzPhX0VXjA== X-Received: by 2002:a05:600c:4fd3:b0:428:14b6:ce32 with SMTP id 5b1f17b1804b1-42bb024d773mr13828855e9.9.1724910852388; Wed, 28 Aug 2024 22:54:12 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:600c:3b99:b0:426:6982:f5c6 with SMTP id 5b1f17b1804b1-42bb2a0ad07ls2754715e9.1.-pod-prod-02-eu; Wed, 28 Aug 2024 22:54:10 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWO/mhTslDHVL16O8gDtIvmm4tr+my6Xl2jGEARIcJCe1lSoSka6g2f7KLQ7gglnKrq3QW9IZl5iotE@googlegroups.com X-Received: by 2002:a05:600c:474c:b0:426:59fe:ac2e with SMTP id 5b1f17b1804b1-42bb028cc77mr12673655e9.29.1724910850164; Wed, 28 Aug 2024 22:54:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1724910850; cv=none; d=google.com; s=arc-20240605; b=SwbnPf3mXQX3Z2X+qOBOS4u1MffhVzjGY+d5wfyzwQWK5VsX6lZwjIssWs5DeVQMkS 68VNTnDi/ajyMp/lVghuD1WrI1SgPUFcLPbL4Exqiy0e54ZQDW+NhCD0BaSSAf802LOo lR8NMzrThmE1px4V/NEeAz7uhw12Fx6XyBhjczO8CfAbDSvV4JznrFMKWDJ1QNV8tXCx MmULYRgejbVifPaxNuYgRYVBKJ22DzgXuH3a+6QT8/K5yok0ZJ77NMGCSU8r+gOq2XHK jd3o9McbyJO0FfkE8pSAtFCoj/A2b09ZVJ2M7ejVYdQ4kFs0V5StsnEIETIyuVuWU+I4 coNA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:to:from:subject:message-id; bh=oaHAciRfcPCmJ0BzHP8ptRIxan4ziEw71OZ0jRdncqw=; fh=IxbeHM4vWxalf1XNf2rnGcQL+r1v0Lr0C6ICsGNNkYw=; b=ZbtUYHs1qpTodHN/l7gpenUkKdN82SQ26k3MLH0dmuu/xglarHR64GROAyMuU691v3 MhSKWgs6EbB33bVLiVAKxqJI9iJ/rad1CLogFwYdjqGqNrUErD69DbIF9UvsZTMY0M9W y1N5cZfvESuAENNjmCoydOWnNT6KpG2GxM+b3x7y+cCVgY+V0crh9M7YXjhMMQpCSa2D lcc8IaVKvQWebryevxGgmtwK2LoUnlM6Bq+kTZcuJArbmIzI081NgOKxqknB+JxwOgh+ /vOsymDd4WV4bP/eadE3fz1jQDaQ9cCfeHcO1kkGaJXDY81/n2M42jwfc8DpffFIzjzK THCQ==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=ubely@ilbers.de Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id 5b1f17b1804b1-42b9d94184esi2531685e9.0.2024.08.28.22.54.09 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 28 Aug 2024 22:54:10 -0700 (PDT) Received-SPF: pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) client-ip=85.214.156.166; Received: from [127.0.0.1] (host-80-81-17-52.static.customer.m-online.net [80.81.17.52]) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPSA id 47T5s7JO000369 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 29 Aug 2024 07:54:08 +0200 Message-ID: Subject: Re: [PATCH v2] rootfs: Improve progress reporting From: Uladzimir Bely To: Jan Kiszka , isar-users Date: Thu, 29 Aug 2024 08:54:06 +0300 In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.52.3 (by Flathub.org) MIME-Version: 1.0 X-Spam-Status: No, score=-4.6 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,RCVD_IN_RP_CERTIFIED, RCVD_IN_RP_RNBL,RCVD_IN_RP_SAFE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-Original-Sender: ubely@ilbers.de X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=ubely@ilbers.de Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-TUID: qBSCp6ysNrpN On Sat, 2024-08-24 at 09:24 +0200, 'Jan Kiszka' via isar-users wrote: > From: Jan Kiszka >=20 > Add a custom progress reporter that visualizes the state of the > rootfs_install_pkgs_download and rootfs_install_pkgs_install > functions > by parsing dpkg output. This is achieved by reading the number of > upgraded and new installed packages first and then distributing the > effort equally over each package. >=20 > There is another specialty: As do_rootfs_install already created a > MultiStageProgressReporter, we forward it via the metadata object and > report from functions as stage progress so that the bar moves forward > consistently. >=20 > Signed-off-by: Jan Kiszka > --- >=20 > Changes in v2: > =C2=A0- catch all "Setting up" > =C2=A0- scale down to 99% max to account for that we already progress > before > =C2=A0=C2=A0 a package step is done >=20 > =C2=A0meta/classes/rootfs.bbclass |=C2=A0 9 +++++ > =C2=A0meta/lib/rootfs_progress.py | 67 > +++++++++++++++++++++++++++++++++++++ > =C2=A02 files changed, 76 insertions(+) > =C2=A0create mode 100644 meta/lib/rootfs_progress.py >=20 > diff --git a/meta/classes/rootfs.bbclass > b/meta/classes/rootfs.bbclass > index fdb25eaa..f0abd795 100644 > --- a/meta/classes/rootfs.bbclass > +++ b/meta/classes/rootfs.bbclass > @@ -76,6 +76,12 @@ rootfs_do_qemu() { > =C2=A0BOOTSTRAP_SRC =3D "${DEPLOY_DIR_BOOTSTRAP}/${ROOTFS_DISTRO}- > host_${DISTRO}-${DISTRO_ARCH}" > =C2=A0BOOTSTRAP_SRC:${ROOTFS_ARCH} =3D > "${DEPLOY_DIR_BOOTSTRAP}/${ROOTFS_DISTRO}-${ROOTFS_ARCH}" > =C2=A0 > +def rootfs_extra_import(d): > +=C2=A0=C2=A0=C2=A0 bb.utils._context["rootfs_progress"] =3D > __import__("rootfs_progress") > +=C2=A0=C2=A0=C2=A0 return "" > + > +ROOTFS_EXTRA_IMPORTED :=3D "${@rootfs_extra_import(d)}" > + > =C2=A0rootfs_prepare[weight] =3D "25" > =C2=A0rootfs_prepare(){ > =C2=A0=C2=A0=C2=A0=C2=A0 sudo cp -Trpfx --reflink=3Dauto '${BOOTSTRAP_SRC= }/' '${ROOTFSDIR}' > @@ -153,6 +159,7 @@ rootfs_import_package_cache() { > =C2=A0 > =C2=A0ROOTFS_INSTALL_COMMAND +=3D "rootfs_install_pkgs_download" > =C2=A0rootfs_install_pkgs_download[weight] =3D "600" > +rootfs_install_pkgs_download[progress] =3D > "custom:rootfs_progress.PkgsDownloadProgressHandler" > =C2=A0rootfs_install_pkgs_download[isar-apt-lock] =3D "release-after" > =C2=A0rootfs_install_pkgs_download[network] =3D > "${TASK_USE_NETWORK_AND_SUDO}" > =C2=A0rootfs_install_pkgs_download() { > @@ -178,6 +185,7 @@ rootfs_install_clean_files() { > =C2=A0 > =C2=A0ROOTFS_INSTALL_COMMAND +=3D "rootfs_install_pkgs_install" > =C2=A0rootfs_install_pkgs_install[weight] =3D "8000" > +rootfs_install_pkgs_install[progress] =3D > "custom:rootfs_progress.PkgsInstallProgressHandler" > =C2=A0rootfs_install_pkgs_install[network] =3D "${TASK_USE_SUDO}" > =C2=A0rootfs_install_pkgs_install() { > =C2=A0=C2=A0=C2=A0=C2=A0 sudo -E chroot "${ROOTFSDIR}" \ > @@ -206,6 +214,7 @@ python do_rootfs_install() { > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 for i in cmds] > =C2=A0 > =C2=A0=C2=A0=C2=A0=C2=A0 progress_reporter =3D bb.progress.MultiStageProg= ressReporter(d, > stage_weights) > +=C2=A0=C2=A0=C2=A0 d.rootfs_progress =3D progress_reporter > =C2=A0 > =C2=A0=C2=A0=C2=A0=C2=A0 for cmd in cmds: > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 progress_reporter.next_s= tage() > diff --git a/meta/lib/rootfs_progress.py > b/meta/lib/rootfs_progress.py > new file mode 100644 > index 00000000..f808852f > --- /dev/null > +++ b/meta/lib/rootfs_progress.py > @@ -0,0 +1,67 @@ > +# This software is a part of ISAR. > +# Copyright (c) Siemens AG, 2024 > +# > +# SPDX-License-Identifier: MIT > + > +import bb.progress > +import re > + > + > +class PkgsProgressHandler(bb.progress.ProgressHandler): > +=C2=A0=C2=A0=C2=A0 def __init__(self, d, outfile): > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self._outfile =3D outfile > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self._progress =3D d.rootfs_p= rogress > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self._progress.update(0) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self._linebuffer =3D '' > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self._num_pkgs =3D 0 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self._pkg =3D 0 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self._stage =3D 'prepare' > + > +=C2=A0=C2=A0=C2=A0 def write(self, string): > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self._outfile.write(string) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self._linebuffer +=3D string > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 while True: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 break= pos =3D self._linebuffer.find('\n') + 1 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if br= eakpos =3D=3D 0: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 break > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 line = =3D self._linebuffer[:breakpos] > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self.= _linebuffer =3D self._linebuffer[breakpos:] > + > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if se= lf._stage =3D=3D 'prepare': > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 match =3D re.search( > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 r'^([0-9]+) upgraded, ([0-9]+) n= ewly installed', > line) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 if match: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self._num_pkgs =3D int(match.gro= up(1)) + > int(match.group(2)) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self._stage =3D 'post-prepare' > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 else: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 self.process_line(line) > + > +=C2=A0=C2=A0=C2=A0 def process_line(self, line): > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return > + > + > +class PkgsDownloadProgressHandler(PkgsProgressHandler): > +=C2=A0=C2=A0=C2=A0 def __init__(self, d, outfile, otherargs=3DNone): > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 super().__init__(d, outfile) > + > +=C2=A0=C2=A0=C2=A0 def process_line(self, line): > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if line.startswith('Get:'): > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self.= _pkg +=3D 1 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self.= _progress.update(99 * self._pkg / self._num_pkgs) > + > + > +class PkgsInstallProgressHandler(PkgsProgressHandler): > +=C2=A0=C2=A0=C2=A0 def __init__(self, d, outfile, otherargs=3DNone): > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self._pkg_set_up =3D 0 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 super().__init__(d, outfile) > + > +=C2=A0=C2=A0=C2=A0 def process_line(self, line): > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if line.startswith('Preparing= to unpack'): > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self.= _pkg +=3D 1 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 elif line.startswith('Setting= up'): > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self.= _pkg_set_up +=3D 1 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 else: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 retur= n > + > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 progress =3D 99 * (self._pkg = + self._pkg_set_up) / > (self._num_pkgs * 2) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self._progress.update(progres= s) > --=20 > 2.43.0 >=20 Applied to next, thanks. --=20 Best regards, Uladzimir. --=20 You received this message because you are subscribed to the Google Groups "= isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an e= mail to isar-users+unsubscribe@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/= isar-users/a2db0f4f600e129ff72674662ae2291d5bf8d452.camel%40ilbers.de.