From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6739560601010307072 X-Received: by 2002:adf:cc8a:: with SMTP id p10mr3598151wrj.321.1569348154479; Tue, 24 Sep 2019 11:02:34 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:adf:8bce:: with SMTP id w14ls914657wra.11.gmail; Tue, 24 Sep 2019 11:02:33 -0700 (PDT) X-Google-Smtp-Source: APXvYqyZPuXsVzhAF5dYWfSZvFXEwdKGgq9xvJvlQhpZeFgs/B45ssG3+Qm0WoZ7os4sxWbOKh2A X-Received: by 2002:adf:fb8e:: with SMTP id a14mr3896298wrr.304.1569348153891; Tue, 24 Sep 2019 11:02:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1569348153; cv=none; d=google.com; s=arc-20160816; b=YM/hvo5XuhzuiaF6EjSFYMXuvBWl5yybz1ocH0uJyqldw/gO0Jr5tm5EguZCdMl5ta EFzOv30AgC9j1J9wBTzpl5WagcSZe5XlZnoSMQe4QMPtkN2Lck+kaAUSz66FpWAbqFDS vG4tKaRiLdjVw1rlGCARYaOeOtcjCfIz6WYc1D8ztqSOT4oKsX7qQmPpDabsgs1Vg+F/ d8l3dXUHG2/lOvaDuLc+VUkJizny9pNmyywn7imx+uFm1Kq+mgY/RVBAkZmONihYOfRk wewBdhzljbDef5zbdvzaDb3YvWX99owUhh7qQyHLekc25q02H/7jk87luSgtknu69olp 8THQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:references:to:from:subject; bh=0fOBdZKyXkbi+aHs0CTyWV9xNXCTWVGAaK361W/vxlw=; b=h9jYq0Q/pv5iWk97oK6Rdkxr4nYUpDL/GTJONzrreZf1fv/ZcZVvJmELpjMMTlvaR0 yEwGnjk7rA8GUZ67ncN4U+eTIh5emB9L6FuqGRPX12Wqagewh09klY5O1uDClz6wd+JJ JGBue7DAsD1tHvKeJkYQ20q7t/29VAF7mqXgsatsn/ouQ+urz+EwAKeNlja7JUqGZHOv 2JGsHnf66hjOPzr66TTWUkBeI0QTQ1kpFECK8X5gKO6J16NXR4d8HXRtRMR4p2H0tqwv 6+nFDVz146dIN3xIb3rTlFWECSjRXxMvFkZ1suPYfqLmif18V4kJQAxka9xcpp1aU93F 2igA== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 194.138.37.40 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from gecko.sbs.de (gecko.sbs.de. [194.138.37.40]) by gmr-mx.google.com with ESMTPS id q185si37962wme.1.2019.09.24.11.02.33 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 24 Sep 2019 11:02:33 -0700 (PDT) Received-SPF: pass (google.com: domain of jan.kiszka@siemens.com designates 194.138.37.40 as permitted sender) client-ip=194.138.37.40; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 194.138.37.40 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from mail1.sbs.de (mail1.sbs.de [192.129.41.35]) by gecko.sbs.de (8.15.2/8.15.2) with ESMTPS id x8OI2XWN003585 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 24 Sep 2019 20:02:33 +0200 Received: from [139.25.68.37] (md1q0hnc.ad001.siemens.net [139.25.68.37] (may be forged)) by mail1.sbs.de (8.15.2/8.15.2) with ESMTP id x8OI2XBo015096 for ; Tue, 24 Sep 2019 20:02:33 +0200 Subject: [PATCH v6 12/27] Detect false sharing of recipes From: Jan Kiszka To: isar-users References: <5a2e329b881ec0b392d0f1abd116f1deeee0f66f.1569176231.git.jan.kiszka@siemens.com> Message-ID: Date: Tue, 24 Sep 2019 20:02:26 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <5a2e329b881ec0b392d0f1abd116f1deeee0f66f.1569176231.git.jan.kiszka@siemens.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-TUID: 2CqL2mRX8s/i From: Jan Kiszka When a task is run more than once per build, this indicates a bug, usually (though not only) related to incorrect multiconfig use. Such bugs are hard to find in practice, so they could benefit from some tooling. This adds a very simple but effective check for such re-run scenarios by putting a "once." stamp file into each workdir during a build. If such a file already exists, an error is thrown. The workdirs are purged after the parsing phase on the beginning of each build so that no false positives are raised. The task stamp is also deleted after failures so that no (serialized) retries can cause warnings. Signed-off-by: Jan Kiszka --- Changes in v6: - avoid warnings after build failures of shared tasks - code refactoring meta/classes/isar-events.bbclass | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/meta/classes/isar-events.bbclass b/meta/classes/isar-events.bbclass index 62eb25d..cad1d57 100644 --- a/meta/classes/isar-events.bbclass +++ b/meta/classes/isar-events.bbclass @@ -4,6 +4,40 @@ # Copyright (C) 2015-2017 ilbers GmbH # Copyright (c) Siemens AG, 2018 +addhandler parse_completed + +python parse_completed() { + bb.utils.remove(d.getVar('TMPDIR') + "/work/*/*/*/temp/once.*") +} +parse_completed[eventmask] = "bb.event.ParseCompleted" + +def task_once_stamp(d): + return "{temp}/once.{task}".format(temp=d.getVar('T'), + task=d.getVar('BB_RUNTASK')) + +addhandler task_started + +python task_started() { + try: + f = open(task_once_stamp(d), "x") + f.close() + except FileExistsError: + bb.error("Detect multiple executions of %s in %s" % + (d.getVar('BB_RUNTASK'), d.getVar('WORKDIR'))) + bb.error("Rerun a clean build with empty STAMPCLEAN " \ + "and compare the sigdata files") +} +task_started[eventmask] = "bb.build.TaskStarted" + +addhandler task_failed + +python task_failed() { + # Avoid false positives if a second target depends on this task and retries + # the execution after the first failure. + os.remove(task_once_stamp(d)) +} +task_failed[eventmask] = "bb.build.TaskFailed" + addhandler build_completed python build_completed() { -- 2.16.4