From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6521574337769635840 X-Received: by 10.28.3.11 with SMTP id 11mr387804wmd.4.1518422350676; Sun, 11 Feb 2018 23:59:10 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 10.28.170.1 with SMTP id t1ls880533wme.7.gmail; Sun, 11 Feb 2018 23:59:10 -0800 (PST) X-Google-Smtp-Source: AH8x227pHnZ6tECr0eXmjygE97CT7CYhqGm9jnWumeQaC7HRKwo7M9rfi7YQn8K0WqnMmi3raAPs X-Received: by 10.28.218.16 with SMTP id r16mr400291wmg.11.1518422350136; Sun, 11 Feb 2018 23:59:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518422350; cv=none; d=google.com; s=arc-20160816; b=SjbWxOT3P+X2gix16e1DamtmjLAMceDuKFqPsESn8CyOO483CRUicKRE3g6GlB0SRk H3nJXZnfJ5wPzvHKjHhiu2szWAKKvrXgHW7o+G6QPs6MCWbRkNdrD7le7trRoSeTl9if WP/LrjkwatbSkjJ8o4f8g/5oEN7kVjzFkSkIoQ8L7vXoiQQfLMZ05kSNwQ2rfrlUpVjD YNyV82yb5sZ7hpimDYCL4DGvDsal2n4zfG960HvSEoKb6mGnlmdhrQe1l+bbpJY68QyZ PviL/lS3JacxbbzqJCu99YU23vVyqMCIJUEi5lvW8CcKr85M1WPSv3nqMre8RJrgQl0d hb5g== 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:to:from:arc-authentication-results; bh=MKlTsV3SLrSQRpgjxbOAIGMwUvXkqZulHVLo6wCiRww=; b=gqDhl3Rxbtu35Aed0XQA/QDnePoHhRHpSWU89NZPEYfLBILuKnI266bOxiNW/P/V2E 4WaVV426hUrRuXhAqmly5ZsH4+Ilh7nyP4ovhabYdaFdhPXTINdikTCPqTXLr01hyXHK Ff1ZbBMRJ+dLCiZa9KY4s6xO3vrCyfkRPbgIK1L2Sl2khX6KxVWqAcWB9l57rXs1hPlr 5yeDFZOCZ29XG2IHPPXnbHS/n7gtmL2Fsuj9HO3jSAxSskiSPj22F+/SJ1GY3clTT3EB y58PemToFXH/+WSu5b3vNqlYQzxi2C6arUIbs02+LzCZJ3iCI3aQIpwaTIZtdX07UqIw lTkA== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com Return-Path: Received: from david.siemens.de (david.siemens.de. [192.35.17.14]) by gmr-mx.google.com with ESMTPS id b10si261400wmc.0.2018.02.11.23.59.10 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 11 Feb 2018 23:59:10 -0800 (PST) Received-SPF: pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.14 as permitted sender) client-ip=192.35.17.14; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com Received: from mail3.siemens.de (mail3.siemens.de [139.25.208.14]) by david.siemens.de (8.15.2/8.15.2) with ESMTPS id w1C7x9BL012885 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 12 Feb 2018 08:59:09 +0100 Received: from md1f2u6c.ww002.siemens.net ([167.87.31.168]) by mail3.siemens.de (8.15.2/8.15.2) with ESMTP id w1C7x8RV025201 for ; Mon, 12 Feb 2018 08:59:09 +0100 From: Jan Kiszka To: isar-users Subject: [PATCH 2/6] Add clean and cleanall tasks Date: Mon, 12 Feb 2018 08:59:03 +0100 Message-Id: X-Mailer: git-send-email 2.13.6 In-Reply-To: References: In-Reply-To: References: X-TUID: cOv+ugFmO+VS From: Jan Kiszka Derived from OE, this adds clean and cleanall tasks for Isar. The clean task comes with CLEANFUNCS hook, we just run them prior to cleaning the WORKDIR. This is used by dpkg-base to remove all packages from isar-apt that the build may have deployed. As we are at it, also do a repo clean prior to deploying a package - just in case something triggers a partial rebuild without prior cleaning... Signed-off-by: Jan Kiszka --- meta/classes/base.bbclass | 35 ++++++++++++++++++++++++++++++++++- meta/classes/dpkg-base.bbclass | 14 ++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index 0fa27db..b0e174e 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass @@ -110,4 +110,37 @@ python base_do_build () { bb.note("Try running the 'listtasks' task against a .bb to see what tasks are defined.") } -EXPORT_FUNCTIONS do_clean do_mrproper do_build +EXPORT_FUNCTIONS do_build + +CLEANFUNCS ?= "" + +# Derived from OpenEmbedded Core: meta/classes/utility-tasks.bbclass +addtask clean +do_clean[nostamp] = "1" +python do_clean() { + import subprocess + + for f in (d.getVar('CLEANFUNCS', True) or '').split(): + bb.build.exec_func(f, d) + + dir = d.expand("${WORKDIR}") + subprocess.call('sudo rm -rf ' + dir, shell=True) + + dir = "%s.*" % bb.data.expand(d.getVar('STAMP', False), d) + subprocess.call('sudo rm -rf ' + dir, shell=True) +} + +# Derived from OpenEmbedded Core: meta/classes/base.bbclass +addtask cleanall after do_clean +do_cleanall[nostamp] = "1" +python do_cleanall() { + src_uri = (d.getVar('SRC_URI', True) or "").split() + if len(src_uri) == 0: + return + + try: + fetcher = bb.fetch2.Fetch(src_uri, d) + fetcher.clean() + except bb.fetch2.BBFetchException as e: + bb.fatal(str(e)) +} diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass index 69c8ad5..a45fbce 100644 --- a/meta/classes/dpkg-base.bbclass +++ b/meta/classes/dpkg-base.bbclass @@ -31,8 +31,22 @@ do_build() { sudo rmdir ${BUILDROOT} 2>/dev/null || true } +CLEANFUNCS += "repo_clean" + +repo_clean() { + PACKAGES=$(cd ${WORKDIR}; ls *.deb | sed 's/\([^_]*\).*/\1/') + if [ -n "${PACKAGES}" ]; then + reprepro -b ${DEPLOY_DIR_APT}/${DISTRO} \ + --dbdir ${DEPLOY_DIR_DB}/${DISTRO} \ + -C main \ + remove ${DEBDISTRONAME} \ + ${PACKAGES} + fi +} + # Install package to Isar-apt do_deploy_deb() { + repo_clean reprepro -b ${DEPLOY_DIR_APT}/${DISTRO} \ --dbdir ${DEPLOY_DIR_DB}/${DISTRO} \ -C main \ -- 2.13.6