From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6739560601010307072 X-Received: by 2002:a5d:4102:: with SMTP id l2mr10324128wrp.348.1569176236156; Sun, 22 Sep 2019 11:17:16 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a1c:7502:: with SMTP id o2ls3347772wmc.4.gmail; Sun, 22 Sep 2019 11:17:15 -0700 (PDT) X-Google-Smtp-Source: APXvYqzxA/+o8MjFlzfKwmB154E8ni53ybPOpX6fBoTfqqVRaWEVT/JtFQG0Wr962BSRfn2rWIil X-Received: by 2002:a1c:a90b:: with SMTP id s11mr11851293wme.92.1569176235619; Sun, 22 Sep 2019 11:17:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1569176235; cv=none; d=google.com; s=arc-20160816; b=YnpLxeblO3uPwEa6JQhk2cTtpHCcE+7/LbuDpB6TQeJ/sHZeQw+9f39M0tQJTHVokp v9fFOOoFG9upy8C7uGrH5cbDi1OpNNf0+peJ9m9sAs1RO8uXoHEuOBGywWMbrqexoeNO XkuY7SzcqhWkz7ibjowYvOCuCZlffnrE+8+pL0pKkBjLRf8Hi6N9v4iFnWF4ERBObHiq dku0VYThJyVHzc4dyWvmyMvFKgGmju7hAr1KyVCeKcRZMcGZdZYmbSiznVIK4EQg2JyC crs9La0zYej3Vg7+/AF8pNk30OYLY4VxCWGfi9PtdgfzHAbRLpmTwIUuyfLwNoB2m9dc r9LA== 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; bh=QiMdlW75/PZPj4J/yGFfqXhaKDgbnIM3YDT17MNoT7s=; b=Sg27moBYXvxd0/Zqzbq1pHBpBi1IJhYAqwxwOeP4BCByulmcR/TvxIGPnqVVqjL2hW WfDMGijT1+dKwaXVvzs0sy7B5fZnvu4e2bAqomq20QoxSPtTwKJzG2zQ1z64opJlAZel gLqchicBN1rdqdHPx3kkyyuIl6SzSNQIqcnhoqvPJUZwNEQxudwHoRNmg7oBmgosLm4S cyASmbz2WGemz8mCQ25FZyzjvvmS5EoeQxAOXdK2X4hlCadM0G6iTI7O8NMNaowSxTvL VQgUoi1wSN+XDQZ9mpfWxmyYDfiBe3naWdM2IB/otkeyX8CDIb2s2nXNQG4lFXv2qZfL QgDw== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.2 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 thoth.sbs.de (thoth.sbs.de. [192.35.17.2]) by gmr-mx.google.com with ESMTPS id u16si395242wmj.1.2019.09.22.11.17.15 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 22 Sep 2019 11:17:15 -0700 (PDT) Received-SPF: pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.2 as permitted sender) client-ip=192.35.17.2; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.2 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 thoth.sbs.de (8.15.2/8.15.2) with ESMTPS id x8MIHFYf020146 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Sun, 22 Sep 2019 20:17:15 +0200 Received: from md1f2u6c.ad001.siemens.net ([139.22.37.1]) by mail1.sbs.de (8.15.2/8.15.2) with ESMTP id x8MIHB94005761 for ; Sun, 22 Sep 2019 20:17:15 +0200 From: Jan Kiszka To: isar-users Subject: [PATCH v5 16/27] rootfs: Take isar-apt shared lock during repository operations Date: Sun, 22 Sep 2019 20:17:00 +0200 Message-Id: X-Mailer: git-send-email 2.16.4 In-Reply-To: References: In-Reply-To: References: X-TUID: PVHoKMCe3KVk From: Jan Kiszka We take this lock already for install_imager_deps, but we also need it conceptually for the rootfs installation. Also here, pulling from isar-apt can race with not-yet finished deployments of parallel builds, even if the target package is not shared. See e9a5d8adf6b5 for further details. To avoid holding the lock across the whole lengthy package installation, introduce command flags that define the beginning and the end of the locked section so that do_rootfs_install can manage that. Signed-off-by: Jan Kiszka --- meta/classes/rootfs.bbclass | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass index 5bafe32..9bada0c 100644 --- a/meta/classes/rootfs.bbclass +++ b/meta/classes/rootfs.bbclass @@ -93,6 +93,7 @@ EOSUDO ROOTFS_INSTALL_COMMAND += "rootfs_install_pkgs_update" rootfs_install_pkgs_update[weight] = "5" +rootfs_install_pkgs_update[isar-lock] = "acquire-before" rootfs_install_pkgs_update() { sudo -E chroot '${ROOTFSDIR}' /usr/bin/apt-get update \ -o Dir::Etc::sourcelist="sources.list.d/isar-apt.list" \ @@ -108,6 +109,7 @@ rootfs_install_resolvconf() { ROOTFS_INSTALL_COMMAND += "rootfs_install_pkgs_download" rootfs_install_pkgs_download[weight] = "600" +rootfs_install_pkgs_download[isar-lock] = "release-after" rootfs_install_pkgs_download() { sudo -E chroot '${ROOTFSDIR}' \ /usr/bin/apt-get ${ROOTFS_APT_ARGS} --download-only ${ROOTFS_PACKAGES} @@ -153,7 +155,15 @@ python do_rootfs_install() { for cmd in cmds: progress_reporter.next_stage() + + if (d.getVarFlag(cmd, 'isar-lock') or "") == "acquire-before": + lock = bb.utils.lockfile(d.getVar("REPO_ISAR_DIR") + "/isar.lock", + shared=True) + bb.build.exec_func(cmd, d) + + if (d.getVarFlag(cmd, 'isar-lock') or "") == "release-after": + bb.utils.unlockfile(lock) progress_reporter.finish() } addtask rootfs_install before do_rootfs_postprocess after do_unpack -- 2.16.4